Python_arm_TC275診斷小系統(tǒng)完成--Apple的學(xué)習(xí)筆記

一,功能概述:

python界面發(fā)送診斷請求報文后, 可以收到一幀診斷響應(yīng)報文。
TI bb black充當(dāng)usb轉(zhuǎn)CAN測試工具。

二,功能詳述

python端

  1. 三個線程:一個GUI交互及TCP client發(fā)送線程,一個TCP接收線程, 一個TCP心跳發(fā)送線程。send分布在2個線程中,所以加了一對互斥鎖。
  2. GUI界面點擊send可以發(fā)送請求報文,并且更新treeview窗口。
  3. GUI界面的cycle打鉤后,可以按設(shè)置的周期,自動發(fā)送報文,更新窗口。
  4. python為TCP client,每隔3s在后臺發(fā)送一幀心跳數(shù)據(jù)。
  5. python后臺接收TCP響應(yīng)數(shù)據(jù),會更新時間,若15s內(nèi)沒有收到服務(wù)器發(fā)來的響應(yīng)報文,則斷開連接,重新連接。

arm端

  1. arm端3個線程,一個TCP發(fā),一個TCP收(select方式20s接收超時)。一個socketCAN。socketCAN和TCP的收發(fā)數(shù)據(jù)buf和通知flag加了互斥鎖。tcp的收和發(fā)flag加了一對互斥鎖。
  2. arm端為TCP server,開啟后不退出,20s內(nèi)沒有收到客戶端發(fā)的消息則斷開重新等待新的客戶端連接。
  3. arm端收可以接收心跳報文,然后恢復(fù)一幀4個byte的心跳報文。
  4. arm端收到TCP的client診斷報文,則設(shè)置flag通知socketCAN轉(zhuǎn)發(fā)給TC275。等socketCAN接收TC275的報文后,會通過flag通知TCP發(fā)送給client。
  5. socketCAN用阻塞write和read方式。

TC275

  1. 單片機(jī)程序,收到一幀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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容