一,功能概述:
python界面发送诊断请求报文后, 可以收到一帧诊断响应报文。
TI bb black充当usb转CAN测试工具。
二,功能详述
python端
- 三个线程:一个GUI交互及TCP client发送线程,一个TCP接收线程, 一个TCP心跳发送线程。send分布在2个线程中,所以加了一对互斥锁。
- GUI界面点击send可以发送请求报文,并且更新treeview窗口。
- GUI界面的cycle打钩后,可以按设置的周期,自动发送报文,更新窗口。
- python为TCP client,每隔3s在后台发送一帧心跳数据。
- python后台接收TCP响应数据,会更新时间,若15s内没有收到服务器发来的响应报文,则断开连接,重新连接。
arm端
- arm端3个线程,一个TCP发,一个TCP收(select方式20s接收超时)。一个socketCAN。socketCAN和TCP的收发数据buf和通知flag加了互斥锁。tcp的收和发flag加了一对互斥锁。
- arm端为TCP server,开启后不退出,20s内没有收到客户端发的消息则断开重新等待新的客户端连接。
- arm端收可以接收心跳报文,然后恢复一帧4个byte的心跳报文。
- arm端收到TCP的client诊断报文,则设置flag通知socketCAN转发给TC275。等socketCAN接收TC275的报文后,会通过flag通知TCP发送给client。
- socketCAN用阻塞write和read方式。
TC275
- 单片机程序,收到一帧721后才能发送一帧729。UDS协议还没添加,仅完成底层通信。
验证成功
ip link set can0 type can bitrate 500000
ip link set can0 up
candump can0 &
./DiagCAN
python放在ubuntu上运行的
源码上传gitee路径
https://gitee.com/applecai/DiagTool
网友评论