当前位置: 首页 > news >正文

python pyqt5开发DoIP上位机【介绍】


目录

      • 文章合集
      • 一、核心功能概述
      • 二、主要模块解析
        • 1. 导入的库
        • 2. 辅助函数
        • 3. DOIP协议处理(DOIPProtocol类)
        • 4. 网络工具(NetworkUtils类)
        • 5. 通信线程(DOIPCommunicationThread类)
        • 6. UDS命令输入组件(UDSCommandInput类)
        • 7. 自动化测试线程(AutomationTestThread类)
        • 8. UI组件(MainWindowUI类)
        • 9. 主窗口控制器(DOIPDiagnosticTool类)
        • 10. 程序入口
      • 三、关键功能流程
      • 四、代码特点


在这里插入图片描述

在这里插入图片描述

文章合集

python pyqt5开发DoIP上位机【介绍】

python pyqt5开发DoIP上位机【代码里发送常用uds命令是怎么实现的?】

python pyqt5开发DoIP上位机【代码里是怎么获取诊断回复的?】

python pyqt5开发DoIP上位机【诊断回复的函数都是怎么调用的?】

python pyqt5开发DoIP上位机【自动化测试的逻辑是怎么实现的?】

python pyqt5开发DoIP上位机【源码】

这个代码实现了一个功能完整的DOIP(Diagnostic Over IP)诊断工具,主要用于汽车电子领域与ECU(电子控制单元)进行通信。让我分模块为你详细解读:

一、核心功能概述

这是一个基于PyQt5的GUI应用程序,用于通过网络(TCP/IP)与汽车ECU进行诊断通信,支持发送UDS(统一诊断服务)命令,并具备自动化测试功能。

二、主要模块解析

1. 导入的库
import sys
import time
import socket
import traceback
import platform
from datetime import datetime
import pandas as pd
import openpyxl
from PyQt5.QtWidgets import (...)  # GUI组件
from PyQt5.QtCore import Qt, pyqtSlot, QMutex, QThread, QTimer, pyqtSignal
from PyQt5.QtGui import QColor, QFont, QTextCursor
  • 系统和网络相关库:sys, socket, platform
  • 数据处理库:pandasopenpyxl用于处理Excel测试用例
  • GUI库:PyQt5用于构建图形界面
  • 多线程相关:QThread, QMutex等用于处理并发通信
2. 辅助函数
def get_timestamp():"""获取格式为HH:MM:SS.XXX的时间戳(XXX为毫秒)"""now = datetime.now()return now.strftime("%H:%M:%S.%f")[:-3]

用于生成带毫秒精度的时间戳,用于日志记录。

3. DOIP协议处理(DOIPProtocol类)

定义了DOIP协议的核心常量和方法:

  • 协议版本号
  • 各种载荷类型(路由激活请求/响应、诊断消息等)
  • 路由激活响应码
  • 构建和解析DOIP消息头部的方法

这是实现DOIP协议通信的基础。

4. 网络工具(NetworkUtils类)

主要提供跨平台的本地IP地址获取功能,确保在不同操作系统上都能正确获取本机IP。

5. 通信线程(DOIPCommunicationThread类)

这是核心的通信处理线程,继承自QThread:

  • 支持两种工作模式:客户端模式(主动连接ECU)和服务器模式(等待ECU连接)
  • 负责建立和维护与ECU的连接
  • 处理路由激活流程
  • 发送和接收DOIP消息
  • 通过信号与主线程通信,传递接收的数据、连接状态等

使用独立线程处理网络通信,避免阻塞GUI界面。

6. UDS命令输入组件(UDSCommandInput类)

自定义的文本输入框,专门用于输入十六进制的UDS命令:

  • 自动格式化输入(每两个字符一组,16字节换行)
  • 过滤非十六进制字符
  • 提供获取格式化命令的方法
7. 自动化测试线程(AutomationTestThread类)

处理自动化测试流程:

  • 从Excel加载测试用例并按顺序执行
  • 支持暂停、恢复和停止操作
  • 记录每个命令的执行结果和耗时
  • 通过信号更新测试进度和状态
8. UI组件(MainWindowUI类)

构建整个应用程序的界面:

  • 左侧控制面板:包含连接配置、诊断命令按钮、会话控制等
  • 右侧Trace面板:显示通信记录和原始数据包
  • 自动化测试区域:包含测试用例表格和测试结果表格
  • 提供各种UI操作方法(添加记录、更新状态等)
9. 主窗口控制器(DOIPDiagnosticTool类)

应用程序的主控制器:

  • 初始化窗口和绑定信号槽
  • 实现连接/断开ECU的功能
  • 处理诊断命令的发送
  • 管理会话保持功能(定时发送心跳包)
  • 处理自动化测试的加载、执行和结果保存
10. 程序入口
if __name__ == "__main__":# 全局异常处理sys.excepthook = handle_exceptionapp = QApplication(sys.argv)window = DOIPDiagnosticTool()window.show()sys.exit(app.exec_())

设置全局异常处理,创建应用实例并启动主窗口。

三、关键功能流程

  1. 连接建立流程

    • 用户输入ECU IP和端口(或选择ECU主动连接模式)
    • 点击连接按钮,创建DOIPCommunicationThread线程
    • 线程建立TCP连接并发送路由激活请求
    • 收到路由激活响应后,确认连接成功
  2. 命令发送流程

    • 用户点击预设命令按钮或输入自定义命令
    • 命令被格式化为符合DOIP协议的消息
    • 通过通信线程发送到ECU
    • 接收并显示ECU的响应
  3. 自动化测试流程

    • 从Excel文件加载测试用例
    • 启动AutomationTestThread线程
    • 线程按顺序发送测试用例中的命令
    • 记录每个命令的响应和执行结果
    • 测试完成后可将结果保存为Excel文件
      在这里插入图片描述

四、代码特点

  1. 模块化设计:功能分离到不同类中,结构清晰
  2. 多线程处理:网络通信和自动化测试在独立线程中进行,保证UI响应流畅
  3. 健壮的错误处理:包含详细的异常捕获和错误提示
  4. 用户友好的界面:提供直观的操作界面和详细的状态显示
  5. 兼容性考虑:支持不同的DOIP版本和连接模式

这个工具主要用于汽车电子诊断,可以与支持DOIP协议的ECU进行通信,执行诊断命令和自动化测试。

http://www.dtcms.com/a/358230.html

相关文章:

  • 【Big Data】AI赋能的ClickHouse 2.0:从JIT编译到LLM查询优化,下一代OLAP引擎进化路径
  • 【具身智能】【机械臂】机械臂轨迹规划项目以及资料汇总【持续更新】
  • PLC中的指令:LDP,ANDP,ORP这几个英文全称是什么
  • Pmp项目管理方法介绍|权威详解与实战指南
  • 【Python】国内可用的高速pip镜像源大全
  • 虚幻基础:角色动画
  • 网络初识及网络编程
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(七)
  • 构建坚不可摧的数据堡垒:深入解析 Oracle 高可用与容灾技术体系
  • 【物联网】bleak (scan)扫描在干什么? BLE 广播(Advertising)
  • 【Zephyr炸裂知识系列】11_手撸内存泄露监测算法
  • HoloLens2是如何扫描周边环境生成三角面片的,跟周边光线强弱关系
  • 基于单片机甲醛浓度检测报警系统Proteus仿真(含全部资料)
  • 深入理解C++中的返回值优化与流插入操作符
  • Java试题-选择题(22)
  • U盘作为系统启动盘之后格式化恢复
  • 一文了解大模型微调
  • 【开题答辩全过程】以 靖西市旅游网站为例,包含答辩的问题和答案
  • 基于EcuBus-Pro实现LIN UDS升级
  • 《C++——makefile》
  • 日志ELK、ELFK、EFK
  • 使用Python和GitHub构建京东数据自动化采集项目
  • 线程相关问题(AI回答)
  • 营业执照经营范围行业提取工具库项目方案解读(php封装库)
  • 【学Python自动化】 4. Python 控制流与函数学习笔记
  • FlowUs AI-FlowUs息流推出的AI创作助手
  • DAY 18 推断聚类后簇的类型 - 2025.8.30
  • ADB常用命令大全
  • Linux驱动开发重要操作汇总
  • 1.8 Memory