如何使用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

相关推荐

  • 服务器如何实时推送消息给客户端?,实现原理是什么?

    服务器实时推送消息给客户端,最可靠的方案是WebSocket,它解决了HTTP轮询的延迟和资源浪费问题,但在高并发场景下仍需结合消息队列和连接管理做架构优化,服务器推送消息方案选型:从轮询到WebSocket的演进路径实时推送需求在IM、在线协同、行情播报、物联网设备状态同步等场景中非常普遍,早期开发人员习惯用……

    2026年8月9日
    900
  • 服务器更新时间函数怎么写,如何获取服务器当前时间?

    在分布式架构与高并发业务场景下,时间不仅仅是记录日志的辅助信息,更是维持数据一致性、保障业务逻辑正确性的核心坐标,精准、统一且可追溯的时间管理机制,是构建高可用服务器系统的基石, 无论是处理金融交易的毫秒级排序,还是解决多节点间的数据冲突,底层的时间处理逻辑都起着决定性作用,对于开发者与运维人员而言,深入理解并……

    2026年2月21日
    12900
  • Python求导怎么做?python求导函数derivative怎么用

    在Python中处理金融衍生品时,核心在于利用pandas进行数据清洗,结合numpy进行矩阵运算,并借助scipy或专用库如QuantLib实现期权定价与风险对冲计算,Python处理衍生品的基础生态与选型金融衍生品市场瞬息万变,从外汇远期到复杂的奇异期权,数据处理的效率直接决定了策略的响应速度,Python……

    2026年7月8日
    2800
  • 服务器换账号密码是什么?服务器账号密码修改方法

    服务器更换账号密码的本质,是一套保障系统安全与权限管理的标准化运维流程,其核心在于通过定期更新凭证,阻断非法入侵路径,同时确保业务连续性不受影响,服务器换账号密码是什么?从专业运维角度来看,这不仅仅是简单的字符替换,而是涉及权限审计、加密传输、服务联动以及合规性检查的系统性操作,这一过程直接关系到企业数据资产的……

    2026年3月9日
    9700
  • 高考录取大数据分析怎么看?哪些省份录取率最高

    2026年高考录取大数据分析揭示:新高考选科壁垒加剧专业分化,省内重点高校本地录取率持续微降,精准匹配位次与专业梯度已成志愿填报唯一制胜法则,2026高考录取全局洞察:数据背后的博弈报考规模与计划增幅的“剪刀差”根据教育部与各省市考试院2026年最新公开数据,全国高考报名人数预计突破1450万,而本专科招生总计……

    服务器运维 2026年4月24日
    4400
  • 服务器病毒软件有哪些?如何查杀清除?

    服务器本身并不像个人电脑那样“中病毒”后弹窗提醒,它的威胁主要来自恶意木马、勒索病毒、挖矿程序、WebShell后门以及Rootkit等,应对这些威胁,单靠装一个“杀毒软件”远远不够,行业内已形成“主机加固+流量检测+云安全组”分层防护的共识,服务器安全防护与PC端杀毒的本质区别个人电脑的杀毒软件追求“查杀率……

    2026年9月3日
    000
  • 2万人的服务器有哪些配置和型号值得推荐,怎么选

    支撑2万人同时在线的服务器,关键在于并发架构设计和带宽规划,而非某一硬件的堆砌,解码2万人的并发压力在线人数的技术含义“2万人”在服务器世界里是一个具体的压力场景,这通常指同一秒内活跃的连接请求数,而非注册用户总数,服务器需要处理这些连接的数据交换、逻辑运算和存储读写,如果业务是网页访问,2万人同时请求首页,重……

    2026年8月3日
    1900
  • FTP服务器地址修改方法是什么?,怎么修改

    修改FTP服务器地址的核心在于找准配置入口:如果是客户端,直接在连接设置中更换主机地址;如果是服务器端,需修改FTP服务的监听地址或域名绑定,无论哪种方式,修改后必须重启服务并验证防火墙规则,否则极易导致连接失败,FTP服务器地址怎么修改?先分清修改对象修改FTP服务器地址前,首先要明确修改的是客户端还是服务器……

    2026年8月5日
    900
  • 服务器开机进系统蓝屏重启怎么办,服务器蓝屏无限重启解决方法

    服务器开机进系统蓝屏重启的核心诱因集中在硬件故障、驱动冲突及系统文件损坏三个维度,解决该问题需遵循“先软后硬、由简入繁”的排查逻辑,优先通过安全模式或恢复环境修复软件层面问题,若无效则针对性检测内存、硬盘等核心硬件,企业级服务器作为业务承载核心,其稳定性直接关系到数据安全与服务连续性,面对蓝屏重启故障,切忌盲目……

    2026年3月27日
    12300
  • 淄博化工数据平台租服务器怎么选存储和内存?需要注意什么?

    淄博化工数据平台租服务器时,存储和内存的配置不是越大越好,而是要根据数据量、并发用户数、计算任务类型以及预算来综合确定,通常建议从4核8G内存和500GB SSD起步,再根据实际负载动态调整,淄博化工数据平台服务器配置怎么选?不同化工数据平台的核心业务差异很大,选配置前先搞清楚平台是干什么的,是实时监控生产参数……

    2026年8月11日
    600

发表回复

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