一、立项背景和目标
随着工业自动化、智能制造及物流分拣等场景对高性能读码器需求的不断提升,传统单一通信方式、功能割裂的调试工具已难以满足多协议、多数据类型及复杂应用环境下的设备调试与运维需求。本项目旨在开发一款集设备发现、连接管理、数据交互、图像调试、性能分析及日志追溯于一体的专业读码器上位机调试软件。
通过统一的上位机平台,实现对读码器在 UDP、TCP、WebSocket、串口等多种通信方式下的高效调试与数据分析,提升研发调试效率、降低现场部署与维护成本,并为后续设备量产、远程诊断及系统集成提供可靠的软件支撑。
二、软件功能与核心功能模块介绍
1. 设备探测与连接管理模块
基于 UDP 广播 /串口机制 实现读码器自动搜索与识别
显示设备 IP、端口、SN 等关键信息
支持 TCP/串口 连接 进行稳定数据交互
2. 多协议数据通信模块
TCP / WebSocket 通信:用于扫码结果、图像数据等高频数据传输
串口通信:适配现场调试与生产测试场景
XModem 协议:用于串口图像数据传输,保证数据完整性与可靠性
Protobuf 协议:实现结构化、高效、可扩展的数据交互
3. 图像与扫码数据处理模块
实时接收并显示读码器采集的原始图像
展示扫码内容、解码状态及附加信息
支持图像数据与扫码数据的同步解析
4. 性能分析与可视化模块
基于 QCustomPlot 实现解码耗时与解码分数的散点分布图
支持实时刷新与历史数据统计
直观反映读码器在不同工况下的解码性能与稳定性
5. 网络调试与扩展模块
集成 QCefView(Chromium 内核)
支持直接打开设备 Web 页面进行网络调试与参数配置
提供与设备 Web 端一致的调试体验
6. 实时日志与追溯模块
全流程日志记录(设备搜索、连接、通信、解码、异常)
支持按时间、类型过滤查看
为问题定位、现场分析及质量追溯提供依据
三、业务流程与功能路径描述
设备搜索阶段
软件启动后,通过 UDP 探测机制自动搜索局域网内的读码器设备,并将搜索结果以列表形式展示。
设备连接阶段
用户选中目标设备后,可建立 TCP 连接,用于后续稳定的数据与图像交互;在特殊调试场景下可切换至串口连接。
数据交互阶段
设备通过 TCP / WebSocket 持续发送扫码数据和图像数据,串口模式下则采用 XModem 协议完成图像传输;所有业务数据基于 Protobuf 协议进行解析。
调试与分析阶段
上位机实时展示扫码结果、图像画面,并通过散点图形式对解码耗时和解码分数进行统计分析,辅助工程人员评估算法性能。
网络与高级调试阶段
通过内置的 QCefView 模块,直接访问设备 Web 管理界面,实现网络参数与高级功能调试。
日志记录与问题追溯阶段
软件在整个生命周期内持续记录操作与通信日志,为、问题定位及后期维护提供数据支撑。
一、整体架构与设计思路(含技术栈)
项目整体采用模块化、分层解耦的架构设计,将设备通信、数据解析、业务逻辑、可视化展示及日志系统进行清晰拆分。底层以 Qt 框架(C++) 作为基础,负责 UI 渲染、线程管理及跨平台能力;通信层分别封装 UDP 设备发现、TCP / WebSocket 实时数据通信、串口通信 等模块,确保多协议并行运行且互不干扰。
在数据层,采用 Protobuf 协议 对扫码数据、图像元数据等进行统一建模,提高通信效率与扩展性;图像数据在 TCP / 串口模式下分别采用流式接收与 XModem 协议 传输,保证数据完整性。
业务层通过信号槽与状态机方式组织业务流程,上层 UI 使用 QCustomPlot 实现性能散点分析,并集成 QCefView(Chromium) 作为 Web 调试模块,整体形成“通信解耦、数据统一、展示灵活”的工程化架构。
二、本人负责模块与实现成果(量化说明)
在项目中,我主要负责通信架构设计、多协议数据交互、日志系统及性能分析模块的实现。
独立完成 UDP 探测 + TCP / WebSocket 自动切换连接机制,设备发现与连接成功率提升至 99% 以上;
设计并实现基于 Protobuf 的 TCP 数据协议,扫码数据解析效率提升约 30%;
完成 串口 XModem 图像传输模块,在弱链路环境下实现稳定传输,丢包率显著降低;
搭建统一的 实时日志系统,覆盖通信、解码、异常等关键节点,大幅提升问题定位效率;
使用 QCustomPlot 实现解码耗时与解码分数的散点分布分析,为算法调优提供量化依据。
三、遇到的难点、问题与解决方案
多通信协议并行导致线程与资源冲突
问题:UDP 搜索、TCP 数据接收、串口传输同时运行,初期出现 UI 卡顿与数据错乱
解决方案:采用 独立线程 + 事件驱动模型,并通过消息队列与主线程解耦,保证 UI 响应性
大图像数据传输不稳定
问题:TCP / 串口模式下图像数据体量大,易出现粘包、丢包
解决方案:TCP 端增加长度头与状态校验;串口端采用 XModem 协议 分包传输并校验重传