CAN write

  1'''
  2CAN - CAN_write.py with synchronous mode.
  3
  4This example demonstrates how to write data to another device with CAN interface from USBDAQF1CD.
  5
  6First, it shows how to open CAN port and configure CAN parameters.
  7Second, write bytes to 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        timeout = 3  ## [sec]
 48
 49        ## Get firmware model & version
 50        driver_info = dev.Sys_getDriverInfo(timeout)
 51        print(f"Model name: {driver_info[0]}, Firmware version: {driver_info[-1]} ")
 52
 53        ## Open CAN
 54        err = dev.CAN_open(port, timeout)
 55        print(f"CAN_open in port {port}, status: {err}")
 56
 57        ## Set CAN port and set speed to 0
 58        err = dev.CAN_setSpeed(port, speed, timeout)
 59        print(f"CAN_setSpeed in port {port}, status: {err}")
 60
 61        ## Set CAN port and start CAN
 62        err = dev.CAN_start(port, timeout)
 63        print(f"CAN_start in port {port}, status: {err}")
 64
 65        ## CAN_length: True: Extended, False: Standard
 66        ## CAN_type:   True: Remote, False: Data
 67
 68        ## ID: 10, data with 8 bytes, Standard & Data
 69        err = dev.CAN_write(port, 10, [33, 22, 11, 88, 77, 55, 66, 22], False, False, timeout)
 70        print(f"CAN_write in port {port}, status: {err}")
 71
 72        ## Wait for 1 sec
 73        time.sleep(1)  ## delay [sec]
 74
 75        ## ID: 20, data less than 8 bytes, Standard & Data
 76        err = dev.CAN_write(port, 20, [1, 2, 3], False, False, timeout)
 77        print(f"CAN_write in port {port}, status: {err}")
 78
 79        ## Wait for 1 sec
 80        time.sleep(1)  ## delay [sec]
 81
 82        ## Set CAN port and stop CAN
 83        err = dev.CAN_stop(port, timeout)
 84        print(f"CAN_stop in port {port}, status: {err}")
 85
 86        ## Close CAN
 87        err = dev.CAN_close(port, timeout)
 88        print(f"CAN_close in port {port}, status: {err}")
 89    except Exception as err:
 90        pywpc.printGenericError(err)
 91
 92    finally:
 93        ## Disconnect device
 94        dev.disconnect()
 95
 96        ## Release device handle
 97        dev.close()
 98
 99
100if __name__ == '__main__':
101    main()