CAN read

 1'''
 2CAN - CAN_read.py with synchronous mode.
 3
 4This example demonstrates how to read data from another device with CAN interface from USBDAQF1CD.
 5
 6First, it shows how to open CAN port and configure CAN parameters.
 7Second, read bytes from another device.
 8Last, stop and close CAN port.
 9
10-------------------------------------------------------------------------------------
11Please change correct serial number or IP and port number BEFORE you run example code.
12
13For other examples please check:
14    https://github.com/WPC-Systems-Ltd/WPC_Python_driver_release/tree/main/examples
15See README.md file to get detailed usage of this example.
16
17Copyright (c) 2022-2025 WPC Systems Ltd. All rights reserved.
18'''
19
20## WPC
21from wpcsys import pywpc
22
23## Python
24import time
25
26
27def main():
28    ## Get python driver version
29    print(f'{pywpc.PKG_FULL_NAME} - Version {pywpc.__version__}')
30
31    ## Create device handle
32    dev = pywpc.USBDAQF1CD()
33
34    ## Connect to device
35    try:
36        dev.connect("default")  ## Depend on your device
37    except Exception as err:
38        pywpc.printGenericError(err)
39        ## Release device handle
40        dev.close()
41        return
42
43    try:
44        ## Parameters setting
45        port = 1  ## Depend on your device
46        speed = 0  ## 0: 125 KHz, 1: 250 kHz, 2: 500 kHz, 3: 1 MHz
47        delay = 0.005  ## [sec]
48        timeout = 3  ## [sec]
49
50        ## Get firmware model & version
51        driver_info = dev.Sys_getDriverInfo(timeout)
52        print(f"Model name: {driver_info[0]}, Firmware version: {driver_info[-1]} ")
53
54        ## Open CAN
55        err = dev.CAN_open(port, timeout)
56        print(f"CAN_open in port {port}, status: {err}")
57
58        ## Set CAN port and set speed to 0
59        err = dev.CAN_setSpeed(port, speed, timeout)
60        print(f"CAN_setSpeed in port {port}, status: {err}")
61
62        ## Set CAN port and start CAN
63        err = dev.CAN_start(port, timeout)
64        print(f"CAN_start in port {port}, status: {err}")
65
66        ## Read 5 frames for 1000 times
67        for i in range(1000):
68            frame_list = dev.CAN_read(port, 5, delay=delay)
69            if len(frame_list) > 0:
70                for frame in frame_list:
71                    print(frame)
72            else:
73                ## Wait for 0.01 seconds
74                time.sleep(0.01)  ## delay [sec]
75
76        ## Set CAN port and stop CAN
77        err = dev.CAN_stop(port, timeout)
78        print(f"CAN_stop in port {port}, status: {err}")
79
80        ## Close CAN
81        err = dev.CAN_close(port, timeout)
82        print(f"CAN_close in port {port}, status: {err}")
83    except Exception as err:
84        pywpc.printGenericError(err)
85
86    finally:
87        ## Disconnect device
88        dev.disconnect()
89
90        ## Release device handle
91        dev.close()
92
93
94if __name__ == '__main__':
95    main()