如何使用Python调用ZLG设备,ZLG CAN卡Python开发教程有哪些?

在 Python 中使用 ZLG CAN 适配器开发指南

ZLG (周立功) CAN 适配器是工业自动化和嵌入式开发中常用的总线通信工具,在 Python 中调用 ZLG 设备,可以实现自动化测试、数据记录和协议分析,通常有两种主要实现路径:使用 python-can 库或直接通过 ctypes 调用官方动态链接库 (DLL)。

准备工作

在开始编码前,请确保完成以下基础配置:

Python +pytest 做参数化,调用 CANoe 中自定义CAPL 函数,触发指令;获取总线信号进行断言   实现自动化测试
加载中
Python +pytest 做参数化,调用 CANoe 中自定义CAPL 函数,触发指令;获取总线信号进行断言 实现自动化测试
  • 安装驱动:确保计算机已正确安装 ZLG 官方提供的 USB-CAN 驱动程序
  • 环境匹配:Python 解释器的位数(32位或64位)必须与 ControlCAN.dll 文件保持一致,DLL 是 32 位的,请使用 32 位 Python,否则会报错。
  • 获取库文件:从 ZLG 官网下载对应的开发包,获取 ControlCAN.dll (Windows) 或 libcontrolcan.so (Linux)。

使用 python-can 库(推荐)

python-can

如何使用Python调用ZLG设备,ZLG CAN卡Python开发教程有哪些?

是 Python 处理 CAN 总线的标准库,它通过接口插件支持 ZLG 设备,开发效率最高。

安装库

使用 pip 安装:

pip install python-can

代码示例

import can
# 配置 ZLG 接口参数
# channel: 通道号 (0, 1...)
# bustype: 使用 zlg
# bitrate: 波特率
bus = can.interface.Bus(bustype='zlg', channel=0, bitrate=500000)
# 发送消息
msg = can.Message(arbitration_id=0x123, data=[0x01, 0x02, 0x03], is_extended_id=False)
bus.send(msg)
# 接收消息
msg = bus.recv(timeout=1.0)
if msg:
    print(f"收到数据: {msg}")

使用 ctypes 直接调用 ControlCAN.dll

python-can 无法满足特定需求,或者需要调用 ZLG 提供的底层 API,可以使用 Python 的 ctypes 模块加载 DLL。

定义结构体

ZLG 的 API 需要定义对应的 C 语言结构体,VCI_CAN_OBJ

如何使用Python调用ZLG设备,ZLG CAN卡Python开发教程有哪些?

import ctypes class VCI_CAN_OBJ(ctypes.Structure): _fields_ = [ ("ID", ctypes.c_uint), ("TimeStamp", ctypes.c_uint), ("TimeFlag", ctypes.c_byte), ("SendType", ctypes.c_byte), ("RemoteFlag", ctypes.c_byte), ("ExternFlag", ctypes.c_byte), ("DataLen", ctypes.c_byte), ("Data", ctypes.c_ubyte 8), ("Reserved", ctypes.c_ubyte 3) ]

调用流程

# 加载 DLL
zlg_dll = ctypes.windll.LoadLibrary("ControlCAN.dll")
# 核心流程
# 1. VCI_OpenDevice 打开设备
# 2. VCI_InitCAN 初始化通道
# 3. VCI_StartCAN 启动通道
# 4. VCI_Transmit 发送数据 / VCI_Receive 接收数据
# 5. VCI_CloseDevice 关闭设备

常见问题与注意事项

  • DLL 路径问题:如果程序找不到 DLL,请将 ControlCAN.dll 放置在 Python 脚本的同级目录,或者将其路径添加到系统环境变量

    如何使用Python调用ZLG设备,ZLG CAN卡Python开发教程有哪些?

    PATH 中。

  • 数据接收循环:CAN 通信是实时性要求很高的任务,建议将 接收逻辑放在独立的线程中,避免阻塞主程序。
  • 波特率设置:ZLG 设备的波特率设置通常需要参考官方手册中的定时器参数(Timing0 和 Timing1),如果使用 python-can,可以直接输入常用波特率数值(如 500000),库会自动转换。
  • 多通道支持:如果使用双通道适配器,channel 参数的索引(通常为 0 和 1),确保在初始化时正确配置对应的通道。

调试建议

  • 使用 ZLG 官方测试软件 先行测试硬件连接是否正常,如果官方软件无法通信,说明驱动或硬件连接存在问题,与 Python 代码无关。
  • 检查 终端电阻:如果通信报错或无数据,请确认 CAN 总线两端是否并联了 120 欧姆终端电阻。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/488216.html

(0)
Linux系统怎么查看日志文件,Linux常用查看日志命令有哪些?
上一篇 2026年7月12日 18:50
服务器与手机客户端如何实现通信,两者连接常见问题有哪些?
下一篇 2026年7月12日 18:52

相关推荐

  • 服务器提供安全吗?服务器安全防护怎么做

    服务器安全的核心在于构建纵深防御体系,而非依赖单一的安全工具或策略,企业必须从物理环境、网络架构、系统主机、应用数据以及运维管理五个维度建立动态安全机制,才能有效抵御日益复杂的网络威胁,确保业务连续性与数据完整性,服务器提供安全不仅仅是技术部门的职责,更是企业生存与发展的基石,任何环节的疏漏都可能导致毁灭性的数……

    2026年3月13日
    12100
  • gbk编码网站怎么解决乱码?gbk编码转utf8方法

    GBK编码网站的核心在于确保中文内容在老旧系统和特定服务器环境下能正确显示,避免因字符集不匹配导致的乱码问题,建议在处理遗留系统或特定国内老旧平台时优先采用GBK,而新项目则应全面转向UTF-8以兼顾国际化,在数字化建设的漫长演进中,字符编码的选择往往被忽视,直到乱码出现时才被紧急补救,对于许多运维人员、网站开……

    2026年6月25日
    1400
  • 个人建站需要购买哪些?个人建站必备软硬件清单

    个人建站核心只需购买域名、服务器空间和网站程序,其中域名是身份标识,服务器是存放数据的硬盘,程序是构建网站的骨架,三者缺一不可,很多人以为建站是个高深技术活,其实只要理清逻辑,它就像搭积木一样简单,在2026年的今天,随着云计算技术的成熟和AI辅助工具的普及,个人建站的门槛已经降到了历史最低点,你不需要成为代码……

    服务器运维 2026年6月1日
    5600
  • Python如何添加两个数字?python两个数相加代码

    在Python中给两个数字相加,最核心的方法就是直接使用加号(+)运算符,或者调用内置的sum()函数配合列表,这是处理数值求和最高效且通用的标准做法,很多刚接触编程的朋友,看到“add two numbers”这个需求,第一反应是去翻找复杂的库或者写一大段逻辑,Python的设计哲学就是“简单优于复杂”,对于……

    2026年7月7日
    12900
  • ftp自动上传文件到服务器怎么做,有哪些方法?

    通过编写脚本配合系统任务计划(如Windows任务计划程序或Linux cron),或使用自动化工具的命令行模式,即可实现FTP自动上传文件到服务器,无需人工干预,FTP自动上传的核心思路FTP自动上传的本质是将手动操作分解为三个步骤,再用程序或脚本串联起来,第一步建立连接,第二步传输文件,第三步断开连接,自动……

    2026年7月23日
    1600
  • 服务器操作系统价位是多少,正版服务器系统多少钱?

    企业在规划IT基础设施时,核心结论非常明确:服务器操作系统的成本差异主要取决于授权模式(开源与商业)、技术支持级别以及虚拟化需求,而非单一软件价格, 在评估服务器操作系统价位时,必须引入总拥有成本(TCO)概念,综合考量软件授权费、管理维护成本、安全更新及人员培训费用,盲目追求“免费”可能导致后期维护成本激增……

    2026年2月26日
    13300
  • 高级负载均衡是什么意思,企业如何配置高级负载均衡

    2026年高级负载均衡的核心价值在于通过AI驱动的流量预测与多维度动态调度,彻底消除传统架构的性能瓶颈,实现业务系统毫秒级故障自愈与99.995%以上的高可用保障,2026高级负载均衡的底层逻辑演进从“被动分发”到“主动预测”的范式跃迁传统四七层调度依赖固定规则,面对突发洪峰往往措手不及,高级负载均衡已全面接入……

    2026年4月24日
    4800
  • 服务器怎么关闭盾?服务器防御盾关闭方法详解

    服务器关闭防御盾(如防火墙、安全软件或云盾服务)的核心在于精准定位防御层级,通过系统命令、控制面板或服务商后台进行针对性操作,关闭前必须备份关键数据并确认业务风险,这一操作直接暴露服务器于公网,需谨慎执行,通常用于故障排查或特定服务部署, 服务器防御盾的层级与定位在执行关闭操作前,必须明确“盾”的具体形态,服务……

    2026年3月20日
    12000
  • 防火墙参考资料,如何有效应对网络安全挑战?

    防火墙是现代网络安全架构不可或缺的基石,它充当着网络边界的安全卫士,依据预定义的安全策略,监控并控制进出网络的数据流,其核心目标是阻止未经授权的访问,同时允许合法的通信畅通无阻, 深入理解防火墙:类型与演进防火墙技术并非一成不变,它随着网络威胁的演变和业务需求的发展而不断进化,了解其类型是选择正确解决方案的关键……

    2026年2月4日
    12630
  • 服务器的创始人都有哪些?,服务器推荐哪个品牌好

    服务器的创始人并非某一个人,而是包括蒂姆·伯纳斯-李、肯·汤普森、林纳斯·托瓦兹等在内的多位技术先驱共同奠定了现代服务器的基础,从软硬件到协议生态,每一步都离不开他们的贡献,服务器概念的诞生与早期奠基者从大型机到专用服务器服务器这个概念最早可以追溯到上世纪六七十年代的大型机时代,IBM 推出的 System/3……

    2026年8月17日
    600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注