Python_arm_TC275诊断小系统完成--Apple的学习笔记

一,功能概述:

python界面发送诊断请求报文后, 可以收到一帧诊断响应报文。
TI bb black充当usb转CAN测试工具。

二,功能详述

python端

  1. 三个线程:一个GUI交互及TCP client发送线程,一个TCP接收线程, 一个TCP心跳发送线程。send分布在2个线程中,所以加了一对互斥锁。
  2. GUI界面点击send可以发送请求报文,并且更新treeview窗口。
  3. GUI界面的cycle打钩后,可以按设置的周期,自动发送报文,更新窗口。
  4. python为TCP client,每隔3s在后台发送一帧心跳数据。
  5. python后台接收TCP响应数据,会更新时间,若15s内没有收到服务器发来的响应报文,则断开连接,重新连接。

arm端

  1. arm端3个线程,一个TCP发,一个TCP收(select方式20s接收超时)。一个socketCAN。socketCAN和TCP的收发数据buf和通知flag加了互斥锁。tcp的收和发flag加了一对互斥锁。
  2. arm端为TCP server,开启后不退出,20s内没有收到客户端发的消息则断开重新等待新的客户端连接。
  3. arm端收可以接收心跳报文,然后恢复一帧4个byte的心跳报文。
  4. arm端收到TCP的client诊断报文,则设置flag通知socketCAN转发给TC275。等socketCAN接收TC275的报文后,会通过flag通知TCP发送给client。
  5. socketCAN用阻塞write和read方式。

TC275

  1. 单片机程序,收到一帧721后才能发送一帧729。UDS协议还没添加,仅完成底层通信。

验证成功

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

你可能感兴趣的:(Python_arm_TC275诊断小系统完成--Apple的学习笔记)