一,功能概述:
python界面發(fā)送診斷請求報文后垫卤, 可以收到一幀診斷響應(yīng)報文威彰。
TI bb black充當usb轉(zhuǎn)CAN測試工具。
二穴肘,功能詳述
python端
- 三個線程:一個GUI交互及TCP client發(fā)送線程歇盼,一個TCP接收線程, 一個TCP心跳發(fā)送線程评抚。send分布在2個線程中豹缀,所以加了一對互斥鎖。
- GUI界面點擊send可以發(fā)送請求報文慨代,并且更新treeview窗口邢笙。
- GUI界面的cycle打鉤后,可以按設(shè)置的周期侍匙,自動發(fā)送報文氮惯,更新窗口。
- python為TCP client想暗,每隔3s在后臺發(fā)送一幀心跳數(shù)據(jù)妇汗。
- python后臺接收TCP響應(yīng)數(shù)據(jù),會更新時間说莫,若15s內(nèi)沒有收到服務(wù)器發(fā)來的響應(yīng)報文铛纬,則斷開連接,重新連接唬滑。
arm端
- arm端3個線程告唆,一個TCP發(fā)棺弊,一個TCP收(select方式20s接收超時)。一個socketCAN擒悬。socketCAN和TCP的收發(fā)數(shù)據(jù)buf和通知flag加了互斥鎖模她。tcp的收和發(fā)flag加了一對互斥鎖。
- arm端為TCP server懂牧,開啟后不退出侈净,20s內(nèi)沒有收到客戶端發(fā)的消息則斷開重新等待新的客戶端連接。
- arm端收可以接收心跳報文僧凤,然后恢復(fù)一幀4個byte的心跳報文畜侦。
- arm端收到TCP的client診斷報文,則設(shè)置flag通知socketCAN轉(zhuǎn)發(fā)給TC275躯保。等socketCAN接收TC275的報文后旋膳,會通過flag通知TCP發(fā)送給client。
- socketCAN用阻塞write和read方式途事。
TC275
- 單片機程序验懊,收到一幀721后才能發(fā)送一幀729。UDS協(xié)議還沒添加尸变,僅完成底層通信义图。
驗證成功
ip link set can0 type can bitrate 500000
ip link set can0 up
candump can0 &
./DiagCAN
python放在ubuntu上運行的
image.png
源碼上傳gitee路徑
https://gitee.com/applecai/DiagTool