Skip to content

zhuyu4839/zlgcan-driver

Repository files navigation

ZLGCAN驱动及集成到python-can(因内存模型不同,目前Windows下32位python会报内存非法访问的错误)

  1. 安装python-can

    pip install python-can
    
  2. 找到python-can安装路径

    1. windows下一般不用虚拟环境安装则在python安装路径下Lib/site-packages
    2. linux下一般不用虚拟环境安装则在用户home目录./locals/lib/PythonVersion/Lib目录下
    3. 使用虚拟环境则在虚拟环境下Lib/site-packages
  3. 修改python-can路径下的can/interfaces/__init__.py文件, 在BACKENDS字典中添加一行:

    "zlgcan": ("can.interfaces.zlgcan", "ZCanBus"),
    
    
  4. zlgcan文件夹拷贝到can/interfaces/文件夹下

  5. 安装zlgcan-driver-py库:

    pip install zlgcan-driver-py
    
  6. 准备

    • 确保安装相关驱动(USBCAN-I/II驱动得额外安装)
    • 确保安装相VC++运行环境
    • libary文件夹及bitrate.cfg.yaml文件拷贝到当前工程根目录下(v0.1.5前版本)
    • 在当前工程目录下新建一个zcan.env文件, 中间配置ZCAN_LIBRARYZCAN_BITRATE两个环境变量(相对路径/绝对路径),否则使用v0.1.5前版本默认路径:
      • ZCAN_LIBRARYlibrary父目录
      • ZCAN_BITRATEbitrate.cfg.yaml文件的路径
    • 以下为示例
    ZCAN_LIBRARY="C:/your_library_path"
    ZCAN_BITRATE="C:/your_path/bitrate.cfg.yaml"
  7. 使用:

    import can
    from can.interfaces.zlgcan import ZCanTxMode, ZCANDeviceType
    
    with can.Bus(interface="zlgcan", device_type=ZCANDeviceType.ZCAN_USBCANFD_200U,
                 configs=[{'bitrate': 500000, 'resistance': 1}, {'bitrate': 500000, 'resistance': 1}]) as bus:
        bus.send(can.Message(
            arbitration_id=0x123,
            is_extended_id=False,
            channel=0,
            data=[0x01, 0x02, 0x03, ],
            dlc=3,
        ), tx_mode=ZCanTxMode.SELF_SR)
    
        # time.sleep(0.1)
        _msg = bus.recv()
        print(_msg)
  8. CAN测试列表:

    • USBCAN-I-mini - ZCAN_USBCAN1, ZCAN_USBCAN2
    • USBCAN-4E-U - ZCAN_USBCAN_4E_U
    • USBCANFD-100U-mini - ZCAN_USBCANFD_MINI
    • USBCANFD-100U - ZCAN_USBCANFD_100U
    • USBCANFD-200U - ZCAN_USBCANFD_200U
    • USBCANFD-800U - ZCAN_USBCANFD_800U
  9. 注意事项:

    • ZCAN_USBCAN1及ZCAN_USBCAN2类型的设备无论是windows还是Linux, 波特率支持均在bitrate.cfg.yaml中配置
    • 其他CANFD类型的CAN卡仅仅在Linux上使用时bitrate.cfg.yaml中配置
      • 此时计算相关值可以通过ZCANPRO软件
    • 在Linux上使用ZCAN_USBCAN1衍生CAN卡时, 请在初始化时候设置ZCanDeriveInfo信息
    • 该库主要依赖zlgcan-driver-rs,如有问题,请提issue
  10. 官方工具及文档: