张宁的个人博客
莫道君行早,更有早行人。
好好上网
业余无线电
效率提升
软硬件知识
新能源汽车
短波频率清单
关于
个人项目
摄影作品集
说说动态
图书影音
收音机
文章归档
张宁的个人博客
上一篇
下一篇
Python-can库 ②接收/发送CANFD报文(PCAN)
张宁的个人博客
2023-05-20
阅读 17277
软件&硬件
我们可以使用Python-can库直接接收或者发送报文信息,下面以实车报文信息为例。通过此代码,可以实时接收整车CAN上的报文信息,用于其他需求。 ## 1. 不使用DBC文件 ```python import time import can from can.bit_timing import BitTimingFd def send_fd_test(): #首先基于CAN协议设置波特率,此处设置的为CANFD数据的波特率参数 timingFD = BitTimingFd( f_clock=24000000, #时钟频率 nom_brp=3, #仲裁场分频系数 nom_tseg1=13, #仲裁场TSeg1 nom_tseg2=2, #仲裁场TSeg2 nom_sjw=1, #仲裁场同步跳变宽度 data_brp=2, #数据场分频系数 data_tseg1=4, #数据场TSeg1 data_tseg2=1, #数据场TSeg2 data_sjw=1 #数据场同步跳变宽度 ) #实例化CAN总线bus1,使用PCAN接收和发送CANFD数据 bus1 = can.interface.Bus(channel='PCAN_USBBUS1',interface='pcan',fd=True,timing=timingFD) #实例化发送的报文消息 msg1 = can.Message(timestamp=0,arbitration_id=0x124,data=[1,0,15,0,1,3,1,4,9,8,8,9,10,11,12,12,15],is_extended_id=False, is_fd=True) for i in range(5): print(msg1) #打印接收的硬件报文消息 bus1.send(msg1) #发送报文消息 time.sleep(0.1) ``` 但是因为获取到的数据没有和DBC文件相结合,所以获取到的数据是原始的十六进制数据,无法直接使用,后续可以使用cantools库解析DBC文件,以有针对性的读取和筛选自己需要的数据。 ## 2. 使用DBC文件 待完善
文章关键词
Python
Python-can
CAN
CANFD
上一篇文章
Python-can库 ①快速了解入门
下一篇文章
Python-can库 ③API库-Bus的使用
发表评论
让交流带来新的灵感
取消回复
友善表达,认真交流
评论
1
访客
2024-12-17 10:51:16
老哥牛~ 这个方法帮助到了我~就是时钟频率花了我很久才找到~
回复
链接