在这里插入图片描述图一:Receive 界面

在这里插入图片描述图二:Send 界面
在这里插入图片描述图三:Waveform 界面

在这里插入图片描述图四:Filtered Log Window 窗口

UART Assistant 技术实现报告

一、项目概述

UART Assistant 是一款基于 Python 开发的串口通信工具,提供了直观的图形界面,支持串口数据的发送和接收、命令管理、波形显示等功能。该工具旨在为开发者和工程师提供一个便捷的串口调试和测试环境。

1.1 主要功能

  • 串口参数配置(端口、波特率、校验位、数据位、停止位)
  • 数据发送和接收(支持字符串和十六进制格式)
  • 命令列表管理(添加、删除、导入、发送)
  • 波形显示(支持关键字筛选)
  • 日志保存和筛选
  • 预存储命令管理

二、技术栈

在这里插入图片描述

三、 核心功能实现

3.1 串口通信模块

  • 实现方式 :使用 pyserial 库实现串口的打开、关闭、读写操作
  • 关键代码 :
def toggle_connection(self):
    if not self.is_connected:
        # 打开串口
        self.ser = serial.Serial(
            port=self.port_combo.currentText(),
            baudrate=self.get_baud_rate(),
            parity=self.get_parity(),
            stopbits=self.get_stop_bits(),
            bytesize=self.get_data_bits(),
            timeout=0.1
        )
        # 启动接收线程
        self.receive_thread = threading.Thread(target=self.receive_data)
        self.receive_thread.daemon = True
        self.receive_thread.start()
    特点 :采用多线程设计,接收数据在独立线程中进行,避免阻塞主线程

3.2 GUI界面设计

  • 实现方式 :使用 PyQt5 构建图形界面,采用分组布局
  • 关键组件 :
    • 顶部控制面板:串口参数配置
    • 接收标签页:显示接收到的数据
    • 发送标签页:数据发送和命令管理
    • 波形标签页:数据波形显示
  • 特点 :界面布局清晰,操作直观,支持多标签页切换

3.3 命令列表管理

  • 实现方式 :使用 JSON 文件持久化存储命令列表
  • 功能 :
    • 添加新命令
    • 删除选中命令
    • 发送单个命令
    • 发送所有命令
    • 导入外部命令文件
  • 关键代码 :
 def save_commands(self):
    import json
    try:
        with open(self.command_file, 'w', encoding='utf-8') as f:
            json.dump(self.command_list, f, indent=2, ensure_ascii=False)
    except Exception as e:
        pass

3.4 波形显示模块

  • 实现方式 :使用 matplotlib 绘制实时波形
  • 功能 :
    • 实时数据波形显示
    • 支持关键字筛选
    • 波形截图保存
  • 关键代码 :
def update_data(self, new_data):
self.data.extend(new_data)
if len(self.data) > self.max_data_points:
    self.data = self.data[-self.max_data_points:]
self.ax.clear()
self.ax.plot(self.data)
self.ax.set_ylim(0, 255)
self.canvas.draw()

3.5 日志筛选功能

  • 实现方式 :创建独立的筛选日志窗口
  • 功能 :
    • 基于关键字筛选日志
    • 实时更新筛选结果
    • 保存筛选后的日志
  • 关键代码 :
def update_log(self, text):
    # Apply filter
    enable_filter = self.enable_filter.isChecked()
    keyword = self.filter_keyword.text().strip()
    
    if not enable_filter or (keyword and keyword in text):
        self.log_display.insertPlainText(text)
        self.log_display.verticalScrollBar().setValue(self.log_display.verticalScrollBar().maximum())

四、 编译与部署

4.1 编译配置

  • 配置文件 :UARTAssistant.spec
  • 编译命令 : pyinstaller UARTAssistant.spec
  • 编译选项 :
    • 优化级别:2(最高)
    • UPX 压缩:启用
    • 窗口模式:无控制台
    • 图标:默认

4.2 构建过程

  1. 分析阶段 :收集依赖项和资源
  2. 构建阶段 :生成可执行文件
  3. 压缩阶段 :使用 UPX 压缩可执行文件
  4. 输出阶段 :生成最终的可执行文件

4.3 部署方式

  • 输出文件 : dist/UARTAssistant.exe
  • 部署方法 :直接运行可执行文件,无需安装
  • 依赖处理 :所有依赖项已打包到可执行文件中

五、 技术亮点

  1. 多线程设计 :采用多线程处理串口接收,确保界面响应流畅
  2. 模块化架构 :功能模块化设计,便于维护和扩展
  3. 持久化存储 :命令列表和配置的持久化存储
  4. 实时波形显示 :使用 matplotlib 实现实时数据波形可视化
  5. 灵活的筛选功能 :支持日志和波形的关键字筛选
  6. 优化的打包配置 :使用 UPX 压缩减小可执行文件大小
  7. 完整的串口参数配置 :支持波特率、校验位、数据位、停止位的配置

六、 应用场景

  1. 嵌入式开发 :调试和测试嵌入式设备的串口通信
  2. 物联网设备 :与 IoT 设备进行串口通信和数据采集
  3. 工业自动化 :与工业设备进行串口通信和控制
  4. 教育教学 :串口通信原理的教学和实验
  5. 设备调试 :各种串口设备的调试和故障排查

七、 结论

UART Assistant 是一款功能完整、界面友好的串口通信工具,基于 Python 和 PyQt5 开发,提供了丰富的串口通信和数据处理功能。通过 PyInstaller 打包成可执行文件,使其可以在 Windows 系统上直接运行,无需安装 Python 环境。

该工具的设计考虑了实际使用场景的需求,提供了命令管理、波形显示、日志筛选等实用功能,为串口通信调试提供了便利。同时,其模块化的架构也为后续的功能扩展和维护提供了良好的基础。

参考文献

  1. PyQt5 官方文档: https://doc.qt.io/qtforpython/
  2. pyserial 官方文档: https://pyserial.readthedocs.io/
  3. matplotlib 官方文档: https://matplotlib.org/stable/contents.html
  4. PyInstaller 官方文档: https://pyinstaller.org/en/stable/
  5. Python 官方文档: https://docs.python.org/3/

工具、源代码下载链接:
https://download.csdn.net/download/Steam_G/92690719?spm=1001.2014.3001.5501

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐