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()