周立功USBCANFD_200U的Python调用
参考前篇 周立功USBCAN-II的Python调用
当普通CAN用, 500K, 程序参考如下(未验证, 如需CANFD Fast传输, 把发送函数的BRS参数提出来, 采样点设置暂无)
from zlgcan import *
import time
import platformzcanlib = ZCAN() def open_usbcan2():device_handle = zcanlib.OpenDevice(ZCAN_USBCANFD_200U, 0,0)if device_handle == INVALID_DEVICE_HANDLE:print("Open Device failed!")exit(0)print("device handle:%d." %(device_handle))# info = zcanlib.GetDeviceInf(device_handle)# print("Device Information:\n%s" %(info))return device_handledef open_channel(device_handle, channel):chn_init_cfg = ZCAN_CHANNEL_INIT_CONFIG()chn_init_cfg.can_type = ZCAN_TYPE_CANFDchn_init_cfg.config.canfd.mode = 0# From dev_info.jsonchn_init_cfg.config.canfd.abit_timing = 104286 # 500Kchn_init_cfg.config.canfd.dbit_timing = 4260362 # 2Mchn_handle = zcanlib.InitCAN(device_handle, channel, chn_init_cfg)if chn_handle is None:return Nonezcanlib.StartCAN(chn_handle)return chn_handledef transmit_can(chn_handle, stdorext, id, data, len):transmit_num = 1msgs = (ZCAN_TransmitFD_Data * transmit_num)()for i in range(transmit_num):msgs[i].transmit_type = 0 #Send Selfmsgs[i].frame.eff = 0if stdorext:msgs[i].frame.eff = 1 #extern framemsgs[i].frame.rtr = 0 #remote framemsgs[i].frame.can_id = idmsgs[i].frame.brs = 0 # 1: fast, for examplt: 2Mmsgs[i].frame.len = lenfor j in range(len):msgs[i].frame.data[j] = data[j]ret = zcanlib.TransmitFD(chn_handle, msgs, transmit_num)def receive_can(chn_handle):rcv_num = zcanlib.GetReceiveNum(chn_handle, ZCAN_TYPE_CANFD)if rcv_num:print("Receive CAN message number:%d" % rcv_num)rcv_msg, rcv_num = zcanlib.ReceiveFD(chn_handle, rcv_num)for i in range(rcv_num):print("[%d]:ts:%d, id:0x%x, dlc:%d, eff:%d, rtr:%d, data:%s" %(i, rcv_msg[i].timestamp, rcv_msg[i].frame.can_id, rcv_msg[i].frame.can_dlc, rcv_msg[i].frame.eff, rcv_msg[i].frame.rtr,''.join(hex(rcv_msg[i].frame.data[j])[2:] + ' ' for j in range(rcv_msg[i].frame.can_dlc))))if __name__ == "__main__":# dll supportif platform.python_version()>='3.8.0':import osos.add_dll_directory(os.getcwd())# open device and channel 0dev_handle = open_usbcan2()chn_handle = open_channel(dev_handle, 0)chn1_handle = open_channel(dev_handle, 1)print("channel 0 handle:%d." %(chn_handle))print("channel 1 handle:%d." %(chn_handle))# send can messagedata = [0,1,2,3,4,5,6,0xFF]for i in range(2):transmit_can(chn_handle, 0, 0x100, data, 6)transmit_can(chn1_handle, 0, 0x101, data, 7)transmit_can(chn_handle, 1, 0x12345678, data, 8)transmit_can(chn1_handle, 1, 0x12345679, data, 8)data[0] = data[0] + 1time.sleep(0.1)# receive can messagezcanlib.ClearBuffer(chn_handle)time.sleep(3)receive_can(chn_handle)receive_can(chn1_handle)#Close Channelzcanlib.ResetCAN(chn_handle)zcanlib.ResetCAN(chn1_handle)#Close Devicezcanlib.CloseDevice(dev_handle)print("Finished")
欢迎扫描二维码关注本人微信公众号, 及时获取最新文章:
周立功USBCANFD_200U的Python调用相关推荐
- Python基于周立功盒子的二次开发的封装和调用
Python基于周立功盒子的二次开发的封装和调用 一.介绍 前面我们介绍如何拿到官网给的例程并使用起来,但在使用的过程中,我们发现官网给的例子非常的冗长,可读性不好,于是我进行分解和封装,使得 ...
- Python调用周立功CAN接口卡接口库函数
偶尔会用到周立功CAN接口卡,于是试着使用Python调用其接口函数.查阅CAN测试软件与接口函数使用手册,只讲述了VC和VB的调用方法.在这里通过ctypes模块导入动态链接库并访问动态链接库中的函 ...
- Python调用周立功CAN接口卡接口库函数(接收数据)
上篇博文<Python调用周立功CAN接口卡接口库函数>仅做了发送数据例程,有网友在测试接收时出现了问题,在此给出自己的接收数据代码. 在此需要强调的是,因为经济水平有限,自己所使用的CA ...
- 周立功 zlg PCIe-9120I CAN卡无法使用python开启
2018年走了- 2019年来了- 工作日第一天就排了一颗打雷- 前两天领导指派任务做一个仪表的上位机, 公司用的都是zlg的USB-CAN盒或者PCIe-CAN卡, 且官方提供的接口\例程都是非py ...
- Python基于周立功盒子的二次开发的准备工作
Python基于周立功盒子的二次开发的准备工作 一.基本介绍 基于周立功的二次开发是python通过调用zlgcan.dll,来实现CAN卡的通讯收发报文的,在python中通过ctypes模 ...
- Python基于周立功盒子接收特定报文信号并实时绘制折线图(二)
Python基于周立功盒子接收特定报文信号并实时绘制折线图(二) 一.背景 根据在上一篇文件Python基于周立功盒子接收特定报文信号并实时绘制折线图(一)的基础上需要做一些优化,原因是,因为 ...
- Python基于周立功盒子接收特定报文信号并实时绘制折线图(一)
Python基于周立功盒子接收特定报文信号并实时绘制折线图(一) 一.背景 为了节省成本,最大限度利用资源,放弃了用Vector的盒子,采用周立功盒子来做二次开发,以方便来进行压力测试 二.需 ...
- python解析can报文,Python实现Can接收发送 DBC分析报文 周立功ZLG 绘制曲线 支持离线回放.rar...
[实例简介] Python实现Can接收发送 DBC分析报文 绘制曲线 支持离线回放 CAN分析工具 环境:windows & python3 设备:周立功USBCAN-I(可在源码中修改支持 ...
- 调用python-can库使用周立功CAN接口卡发送数据
查阅python-can文档,知晓其支持部分周立功CAN接口卡,故写例程验证数据的发送.另外,使用的python版本为3.4,在安装python-can时提示找不到windows-curses对应版本 ...
- labview can通讯上位机,调用周立功库文件
labview can通讯上位机,调用周立功库文件. 能够基本通讯,可供学习参考. 适合小白上手,后期可以根据自己需求更改 ID:6917618516632702
最新文章
- 超详细中文预训练模型ERNIE使用指南-源码
- 【哲学百科】文艺复兴及唯理主义时期(公元1500~公元1750)
- PAT甲级1102 Invert a Binary Tree:[C++题解]反转二叉树、递归
- 喜报 | 链家签约神策数据,让数据“说话”更精准
- hybris backoffice搜索时遇到could not execute full-text query的解决方案
- 去死吧!USB转串口!!!
- 《Effective Java》 第二讲:对于所有对象都通用的方法
- SVN1.6.5详细配置
- 老话长谈:通过windows下共享看第六代青年
- 获取微信的access_tokey,处理json格式的数据
- oracle配置控制文件快照的位置以及名称为,Oracle 快照控制文件(snapshot control file)...
- 无传感FOC控制中的转子位置和速度确定方法一
- java kindeditor ssh,typecho KindEditor插件
- STM32+GM65二维码识别模块
- C# 选择文件(读取文件时)、选择路径(保存文件时)
- 企业微信端开启debug模式
- 网站安全扫描工具,举荐6个网站安全扫描工具
- matlab计算纹波电压,如何估算开关电源纹波电压?
- Vue实战中的一些小魔法
- 网络安全“攻防战”:“魔”“道”大盘点
热门文章
- windows 安装apex_《Apex英雄》:如何在你的PC上下载安装玩到它
- MFC——SetTimer函数的用法
- Log4j(三)——Log4j配置文件位置详解
- 软考中级-软件设计师-查缺补漏
- mysql自定义序号_mysql序列号生成器 mysql自定义函数生成序列号的例子
- 3ds Max2021安装步骤详解
- 如何生成UTF-16汉字编码表
- matlab数学实验 课件,MATLAB数学实验课件.PPT
- 《图论及其应用》学习笔记(匹配和因子分解)
- 新萝卜家园Ghost XP SP3电脑城装机版2013.08