RTC trigger AI continuous

  1
  2'''
  3RTC_AI - RTC_trigger_AI_continuous.py with synchronous mode.
  4
  5This example demonstrates how to use RTC to trigger AI with continuous mode from EthanA.
  6
  7-------------------------------------------------------------------------------------
  8Please change correct serial number or IP and port number BEFORE you run example code.
  9
 10For other examples please check:
 11    https://github.com/WPC-Systems-Ltd/WPC_Python_driver_release/tree/main/examples
 12See README.md file to get detailed usage of this example.
 13
 14Copyright (c) 2022-2025 WPC Systems Ltd. All rights reserved.
 15'''
 16
 17## WPC
 18from wpcsys import pywpc
 19
 20## Python
 21import time
 22import sys
 23sys.path.insert(0, 'src/')
 24
 25
 26def main():
 27    ## Get Python driver version
 28    print(f'{pywpc.PKG_FULL_NAME} - Version {pywpc.__version__}')
 29
 30    ## Create device handle
 31    dev = pywpc.EthanA()
 32
 33    ## Connect to device
 34    try:
 35        dev.connect("192.168.1.110")  ## Depend on your device
 36    except Exception as err:
 37        pywpc.printGenericError(err)
 38        ## Release device handle
 39        dev.close()
 40        return
 41
 42    try:
 43        ## Parameters setting
 44        port = 0  ## Depend on your device
 45        mode = 2  ## 1 : N-samples, 2 : Continuous
 46        trigger_mode = 1   ## 1 : Use RTC to start AI streaming
 47        sampling_rate = 1000
 48        read_points = 200
 49        read_delay = 0.5  ## [sec]
 50        timeout = 3  ## [sec]
 51        mode_alarm = 0
 52        year = 2024
 53        month = 4
 54        day = 2
 55        hour = 15
 56        minute = 8
 57        second = 50
 58
 59        ## Get firmware model & version
 60        driver_info = dev.Sys_getDriverInfo(timeout)
 61        print(f"Model name: {driver_info[0]}, Firmware version: {driver_info[-1]} ")
 62
 63        ## Open AI
 64        err = dev.AI_open(port, timeout)
 65        print(f"AI_open in port {port}, status: {err}")
 66
 67        ## Set AI mode
 68        err = dev.AI_setMode(port, mode, timeout)
 69        print(f"AI_setMode {mode} in port {port}, status: {err}")
 70
 71        ## Set AI trigger mode
 72        err = dev.AI_setTriggerMode(port, trigger_mode, timeout)
 73        print(f"AI_setTriggerMode {trigger_mode} in port {port}, status: {err}")
 74
 75        ## Set AI sampling rate
 76        err = dev.AI_setSamplingRate(port, sampling_rate, timeout)
 77        print(f"AI_setSamplingRate {sampling_rate} in port {port}, status: {err}")
 78
 79        ## Set RTC
 80        err = dev.Sys_setRTC(year, month, day, hour, minute, second - 10, timeout)
 81        print(f"Set RTC to {year}-{month}-{day}, {hour}:{minute}:{second - 10}, status: {err}")
 82
 83        ## Open AI streaming
 84        err = dev.AI_openStreaming(port, timeout)
 85        print(f"AI_openStreaming in port {port}, status: {err}")
 86
 87        ## Start RTC alarm after 10 seconds
 88        err = dev.Sys_startRTCAlarm(mode_alarm, day, hour, minute, second, timeout)
 89        print(f"Alarm RTC to {year}-{month}-{day}, {hour}:{minute}:{second}, status: {err}")
 90
 91        stop_flag = 1
 92        for i in range(15):
 93            ## Read data acquisition
 94            ai_2Dlist = dev.AI_readStreaming(port, read_points, read_delay)
 95            print(f"len: {len(ai_2Dlist)}, {dev.Sys_getRTC()}")
 96            if len(ai_2Dlist) > 0 and stop_flag == 1:
 97                ## Close AI streaming
 98                err = dev.AI_closeStreaming(port, timeout)
 99                print(f"AI_closeStreaming in port {port}, status: {err}")
100                stop_flag = 0
101            time.sleep(1)
102
103        ## Close AI
104        err = dev.AI_close(port, timeout)
105        print(f"AI_close in port {port}, status: {err}")
106    except Exception as err:
107        pywpc.printGenericError(err)
108
109    finally:
110        ## Disconnect device
111        dev.disconnect()
112
113        ## Release device handle
114        dev.close()
115
116
117if __name__ == '__main__':
118    main()