参考前篇 周立功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调用相关推荐

  1. Python基于周立功盒子的二次开发的封装和调用

    Python基于周立功盒子的二次开发的封装和调用 一.介绍     前面我们介绍如何拿到官网给的例程并使用起来,但在使用的过程中,我们发现官网给的例子非常的冗长,可读性不好,于是我进行分解和封装,使得 ...

  2. Python调用周立功CAN接口卡接口库函数

    偶尔会用到周立功CAN接口卡,于是试着使用Python调用其接口函数.查阅CAN测试软件与接口函数使用手册,只讲述了VC和VB的调用方法.在这里通过ctypes模块导入动态链接库并访问动态链接库中的函 ...

  3. Python调用周立功CAN接口卡接口库函数(接收数据)

    上篇博文<Python调用周立功CAN接口卡接口库函数>仅做了发送数据例程,有网友在测试接收时出现了问题,在此给出自己的接收数据代码. 在此需要强调的是,因为经济水平有限,自己所使用的CA ...

  4. 周立功 zlg PCIe-9120I CAN卡无法使用python开启

    2018年走了- 2019年来了- 工作日第一天就排了一颗打雷- 前两天领导指派任务做一个仪表的上位机, 公司用的都是zlg的USB-CAN盒或者PCIe-CAN卡, 且官方提供的接口\例程都是非py ...

  5. Python基于周立功盒子的二次开发的准备工作

    Python基于周立功盒子的二次开发的准备工作 一.基本介绍     基于周立功的二次开发是python通过调用zlgcan.dll,来实现CAN卡的通讯收发报文的,在python中通过ctypes模 ...

  6. Python基于周立功盒子接收特定报文信号并实时绘制折线图(二)

    Python基于周立功盒子接收特定报文信号并实时绘制折线图(二) 一.背景     根据在上一篇文件Python基于周立功盒子接收特定报文信号并实时绘制折线图(一)的基础上需要做一些优化,原因是,因为 ...

  7. Python基于周立功盒子接收特定报文信号并实时绘制折线图(一)

    Python基于周立功盒子接收特定报文信号并实时绘制折线图(一) 一.背景     为了节省成本,最大限度利用资源,放弃了用Vector的盒子,采用周立功盒子来做二次开发,以方便来进行压力测试 二.需 ...

  8. python解析can报文,Python实现Can接收发送 DBC分析报文 周立功ZLG 绘制曲线 支持离线回放.rar...

    [实例简介] Python实现Can接收发送 DBC分析报文 绘制曲线 支持离线回放 CAN分析工具 环境:windows & python3 设备:周立功USBCAN-I(可在源码中修改支持 ...

  9. 调用python-can库使用周立功CAN接口卡发送数据

    查阅python-can文档,知晓其支持部分周立功CAN接口卡,故写例程验证数据的发送.另外,使用的python版本为3.4,在安装python-can时提示找不到windows-curses对应版本 ...

  10. labview can通讯上位机,调用周立功库文件

    labview can通讯上位机,调用周立功库文件. 能够基本通讯,可供学习参考. 适合小白上手,后期可以根据自己需求更改 ID:6917618516632702

最新文章

  1. 超详细中文预训练模型ERNIE使用指南-源码
  2. 【哲学百科】文艺复兴及唯理主义时期(公元1500~公元1750)
  3. PAT甲级1102 Invert a Binary Tree:[C++题解]反转二叉树、递归
  4. 喜报 | 链家签约神策数据,让数据“说话”更精准
  5. hybris backoffice搜索时遇到could not execute full-text query的解决方案
  6. 去死吧!USB转串口!!!
  7. 《Effective Java》 第二讲:对于所有对象都通用的方法
  8. SVN1.6.5详细配置
  9. 老话长谈:通过windows下共享看第六代青年
  10. 获取微信的access_tokey,处理json格式的数据
  11. oracle配置控制文件快照的位置以及名称为,Oracle 快照控制文件(snapshot control file)...
  12. 无传感FOC控制中的转子位置和速度确定方法一
  13. java kindeditor ssh,typecho KindEditor插件
  14. STM32+GM65二维码识别模块
  15. C# 选择文件(读取文件时)、选择路径(保存文件时)
  16. 企业微信端开启debug模式
  17. 网站安全扫描工具,举荐6个网站安全扫描工具
  18. matlab计算纹波电压,如何估算开关电源纹波电压?
  19. Vue实战中的一些小魔法
  20. 网络安全“攻防战”:“魔”“道”大盘点

热门文章

  1. windows 安装apex_《Apex英雄》:如何在你的PC上下载安装玩到它
  2. MFC——SetTimer函数的用法
  3. Log4j(三)——Log4j配置文件位置详解
  4. 软考中级-软件设计师-查缺补漏
  5. mysql自定义序号_mysql序列号生成器 mysql自定义函数生成序列号的例子
  6. 3ds Max2021安装步骤详解
  7. 如何生成UTF-16汉字编码表
  8. matlab数学实验 课件,MATLAB数学实验课件.PPT
  9. 《图论及其应用》学习笔记(匹配和因子分解)
  10. 新萝卜家园Ghost XP SP3电脑城装机版2013.08