python处理车辆can通信

背景  

最近做智能驾驶域控制器,量产车型线控适配的过程中总结了一些经验。域控是orin+tc397,orin跑上层算法,以网络通信的方式将控制报文发给tc397 mcu,mcu连接底盘can做can通信,完成车辆控制。在orin上层算法还没完成开发的时候,可以先用canoe写capl来验证简单的握手协议和验证控制响应,也可以在orin中用python来开发工具来实现快速调试。

介绍几个重要的py库

1. python-can 这个库集成了多个主流的can通道接口,环境中安装好相应的can驱动,这个库就能调用相应的can接口。如windows中的canoe、zlg、vspy,linux或windows中的pcan、kvaser,linux中的socketcan等等。能用里面的notifier接口实现回调函数。还能记录成asc,blf,csv等标准数据文件。

2. cantools 这个库是用来解析dbc,cdd等can通信标准协议文件的。可以将can报文数据场按dbc定义去解析成物理值。还有一些拓展功能,如实时监控can数据,类似canoe中的trace窗口;将dbc文件的内容生成c代码,可用于嵌入式开发中。(之前看过baidu开源的Apollo项目,里面有通过正则解析dbc来生成proto的工具。如果用cantools这个库,可能会更实现得简单)

3. scapy 这个是网络通信协议相关的库,可以用来抓包和发包,但这个库的io效率不高,实测过周期性高频发送udp包,真实发送周期会有较大的时延,性能不如socket库。但这个库的好处是支持除了IP,TCP,UDP,时间同步的PTP/GPTP等基本通用协议,还支持在基础协议之上自定义通信协议,如实现UDP包数据场的decode和encode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值