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-2024 WPC Systems Ltd. All rights reserved.
18'''
19
20## Python
21import time
22
23## WPC
24
25from wpcsys import pywpc
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 ## second
48        timeout = 3 ## second
49
50        ## Get Firmware model & version
51        driver_info = dev.Sys_getDriverInfo(timeout)
52        print("Model name: " + driver_info[0])
53        print("Firmware version: " + driver_info[-1])
54
55        ## Open CAN
56        err = dev.CAN_open(port, timeout)
57        print(f"CAN_open in port {port}, status: {err}")
58
59        ## Set CAN port and set speed to 0
60        err = dev.CAN_setSpeed(port, speed, timeout)
61        print(f"CAN_setSpeed in port {port}, status: {err}")
62
63        ## Set CAN port and start CAN
64        err = dev.CAN_start(port, timeout)
65        print(f"CAN_start in port {port}, status: {err}")
66
67        ## Read 5 frames for 1000 times
68        for i in range(1000):
69            frame_list = dev.CAN_read(port, 5, delay=delay)
70            if len(frame_list) > 0 :
71                for frame in frame_list:
72                    print(frame)
73            else:
74                ## Wait for 0.01 seconds
75                time.sleep(0.01) ## delay [s]
76
77        ## Set CAN port and stop CAN
78        err = dev.CAN_stop(port, timeout)
79        print(f"CAN_stop in port {port}, status: {err}")
80
81        ## Close CAN
82        err = dev.CAN_close(port, timeout)
83        print(f"CAN_close in port {port}, status: {err}")
84    except Exception as err:
85        pywpc.printGenericError(err)
86
87    ## Disconnect device
88    dev.disconnect()
89
90    ## Release device handle
91    dev.close()
92
93    return
94
95if __name__ == '__main__':
96    main()