摘要: 目前关于CAN
通讯报文解析使用的编程语言有很多,比如:Labviewer、C#、C语言
等。但是很少有人用Python
进行开发,使用Python
进行开发该上位机可大大节省开发时间。本篇博客主要介绍一下基于Python
的周立功CAN
上位机。
使用的CAN分析仪: 《创芯科技》的CAN
分析仪,型号为USB_CAN-2A
或者CANalyst-II
。
使用的下位机: STM32F407
正点原子开发板
使用的测试用上位机:《创芯科技》开发的上位机
工具具备之后,我们正式开始用python
进行测试开发。
为了节省开发时间,我们选用的源码为github开源代码。
程序针对Windows X64
进行开发,如果使用linux
会很麻烦,所以本文主要介绍windows
下的应用。该开源文件的主要程序如下所示:
#新建对象
c = Communication()
#配置CAN卡, 型号:USB_CAN_2EU, CAN卡索引: 0, CAN卡通道:channel_0, 波特率: 500kbps
c.set_can_board_configuration(can_type="usb_can_2eu",can_idx=0,chn=0,baud_rate=500)
#打开CAN卡'
c.open_new()
# 注意发送函数默认发送数据长度为8个字节
# 发送标准帧 id 为0x110
data = [1,2,3,4,5,6,7,8]
c.Transmit(0x110,data)
# 发送拓展帧
data = [1,2,3,4,5,6,7,8]
c.Transmit(0x110,data,extern_flag = True)
# 发送长度为6的帧 , 根据周立功官方手册,CAN帧最大发送数据长度为8,当然我对此表示怀疑,
# 但既然周立功所提供驱动貌似只能发送最大长度为8 byte的帧,因此,请保证数据长度不大于8即可。
data = [1,2,3,4,5,6]
c.Transmit(0x110,data,data_len=6)
# 新建线程,不断读取CAN卡上的报文并且打印出来
cycle_read_thread = threading.Thread(target=c.PrintReceiveData)
cycle_read_thread.start()
针对《创芯科技》型号为USB_CAN-2A
或者CANalyst-II
的两款CAN分析仪,Python制作的上位机源码可参考:https://download.csdn.net/download/RNG_uzi_/12919532
当然,《创芯科技》厂家也提供了上位机和基于C#、Labview
等开源程序(包含了详细的使用说明),下载地址:https://download.csdn.net/download/RNG_uzi_/12526373
发布者:全栈程序员栈长,转转请注明出处:https://javaforall.cn/2132.html原文链接: