如何使用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://test.idctop.com/article/488216.html

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

相关推荐

  • 服务器租售哪家靠谱?马云推荐品牌优惠中

    马云与阿里云的深远影响马云作为阿里巴巴集团的主要创始人,其战略远见深刻改变了中国乃至全球的科技产业格局,尤其在服务器租售领域,他推动创立的阿里云,不仅是中国最大的云计算服务提供商,更是全球云计算市场的重要一极,阿里云彻底革新了企业和个人获取计算资源的方式,将传统的服务器“购买”或“物理租赁”模式,转向了更灵活……

    2026年2月6日
    12000
  • 个人机怎么搭建云主机?个人电脑搭建云服务器教程

    个人搭建云主机并非只有购买公有云一种选择,利用闲置旧电脑或低成本NAS设备组建私有云,在数据隐私、长期成本及定制化方面具有显著优势,是极客与家庭用户的高性价比方案,在2026年的今天,云计算的门槛已经大幅降低,对于普通用户而言,传统的公有云虽然省心,但高昂的带宽费用和严格的数据合规限制往往让人望而却步,相比之下……

    2026年5月28日
    4000
  • brainfuck用python怎么实现?python写brainfuck教程

    Brainfuck是一种极简的编程挑战语言,而Python是通用高效的生产力工具,两者结合通常用于在Python中解释执行Brainfuck代码或进行底层逻辑教学,而非直接替代开发工作,很多人第一次听到Brainfuck这个名字时,都会觉得这像是一个玩笑,毕竟,它只有八种字符:<、&gt……

    2026年7月6日
    12000
  • 魔兽世界哪些服务器公用一个位面,怎么查?

    魔兽世界正式服以“连接组”为单位共享位面,常见组如安苏-格瑞姆巴托-弗塞雷克等;怀旧服则按服务器类型划分,同类型服务器在区域共享位面,魔兽世界正式服哪些服务器共用位面在正式服中,暴雪将多个服务器绑定为“连接组”,组内所有服务器共享同一野外位面,玩家可以组队、交易、完成世界任务,甚至加入跨服公会,连接组的存在让老……

    2026年7月25日
    1500
  • 分组管理员怎么添加新成员,怎么设置权限?

    分组管理员是企业级管理软件中用于分权管理的关键角色,通过设置分组管理员,企业可以在实现精细权限管控的同时,提升组织协同效率并降低安全风险,分组管理员怎么设置设置分组管理员的第一步是登录管理后台,进入权限管理模块,不同平台的操作路径略有差异,但核心逻辑一致:先确定管理范围,再分配具体权限,以企业微信为例,路径如下……

    2026年7月19日
    1000
  • IBM服务器报价单有哪些项目,买IBM服务器要注意什么?

    IBM服务器报价单项目主要包括硬件配置、软件许可及技术支持服务三大块,每项都需根据企业实际场景精细定制,IBM服务器报价单的核心构成模块硬件配置:性能与扩展性的基础当你拿到一份IBM服务器报价单,硬件部分往往是重头戏,这不仅仅是列出一堆参数,而是关乎未来几年业务能不能跑得顺畅,具体来看:- **处理器选型……

    2026年7月30日
    500
  • 如何查看服务器FTP端口号?服务器FTP端口号查看方法

    什么是服务器查看FTP端口号?在服务器管理中,查看FTP(文件传输协议)端口号是确保文件传输服务正常运行的关键步骤,核心结论是:FTP端口号通常为21(默认控制端口)和20(数据端口),但可能因配置而异;查看方法包括检查配置文件、使用命令行工具或网络监控软件,以快速诊断问题并优化安全,下面分层展开论证,从基础概……

    2026年2月16日
    15600
  • 服务器搭建两个tomcat,服务器如何部署多个tomcat

    在同一台服务器上同时运行两个Tomcat实例,核心策略在于实现端口冲突隔离与环境变量独立,通过修改配置文件中的Server端口、HTTP连接器端口以及AJP端口,并配合CATALINA_HOME与CATALINA_BASE的环境变量分离,可以确保两个实例互不干扰、独立运行,从而最大化利用服务器资源,实现应用隔离……

    2026年3月4日
    11900
  • 为什么服务器检测不到外网网卡 | 服务器网卡故障排查指南

    深度排查与专业解决方案服务器操作系统(如Linux的ifconfig、ip addr或Windows的网络连接设置)中无法识别或显示用于连接外网的物理网卡或虚拟网卡, 这导致服务器完全丧失或无法正常使用外部网络连接,核心故障点深度解析:硬件层检测失效物理连接异常: 网卡未正确插入主板PCIe插槽(松动、金手指氧……

    2026年2月7日
    16230
  • Python channelfile怎么用?python channelfile模块详解

    在 Python 中,channelfile 并不是一个标准的内置模块或常见库的名称,它可能是指以下几种情况之一:自定义模块或项目中的文件:channelfile 可能是你或某个团队自定义的一个 Python 模块或文件,用于处理“频道”相关的功能(例如聊天频道、数据通道、音视频流等),第三方库中的组件:某些第……

    2026年7月10日
    3300

发表回复

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