项目背景与公司需求说明
在实际生产环境中,企业部署的大量终端设备(如工业控制板、嵌入式系统、网络网关等)长期运行过程中可能因文件系统异常、电源中断或频繁读写导致 SD 卡异常(如分区损坏、只读挂载、启动失败等),需要通过串口或远程网络手段进行维护和修复。
公司目前面临以下典型问题:
现场维护成本高,设备数量庞大,手动修复效率低;
多数设备支持 RS-232 串口或 SSH 协议登录,但缺乏统一的工具批量执行维护命令;
需要模拟人为操作,如登录终端、执行分区挂载、fsck检查、重启命令等;
修复流程应保持稳定性和线程隔离,避免因一个设备异常而影响整体进程;
要求提供图形化管理界面,便于非技术人员使用。
因此,公司提出开发一套基于 Qt + C++ 的跨平台桌面程序,用于通过 串口或 SSH 通道远程登录设备终端并模拟命令输入,实现 多线程并发执行维护操作,以快速修复设备 SD 卡异常,提升维护效率。
系统设计目标
通信支持
串口(RS-232):支持设置串口号、波特率、数据位、校验等参数;
SSH:支持 IP/端口配置、用户名/密码登录认证,连接池复用;
批量控制与多线程并发
支持从配置文件/手动输入加载多个设备;
每个设备维护任务在独立线程中运行,互不干扰;
支持状态实时反馈(连接中/命令执行中/成功/失败);
命令模拟输入
支持自定义指令列表(如:mount、fsck、df、reboot);
可模拟控制台输入行为并判断返回信息;
自动处理密码输入、yes确认等交互;
图形化界面
使用 Qt Widgets 提供可视化界面;
支持设备管理、任务启动、状态监控、日志导出;
进度条与彩色状态标签清晰反映执行结果;
模块化设计
通信层(Serial/SSH)与指令执行逻辑解耦;
支持日志输出与错误处理模块;
可拓展支持 Telnet/ADB 等新协议;
稳定性与异常处理
遇到中断或异常自动重连/跳过/记录日志;
保证执行顺序与连接稳定性;
支持超时重试与命令返回值校验。
技术架构与实现要点
模块 技术说明
串口通信 使用 Qt 的 QSerialPort 实现,监听数据回传并写入缓冲区统一解析;
SSH 通信 基于 libssh2 或 QProcess+ssh 实现异步远程登录和命令执行;
多线程管理 每个设备任务使用 QThread 或 QtConcurrent::run 创建独立线程,信号槽更新 UI 状态;
指令输入模拟 内部维护命令序列队列,按顺序模拟回车输入并等待回显;
日志记录 所有设备的交互与状态输出记录至本地日志文件,便于追踪问题;
UI 交互 使用 QTableWidget 展示设备状态,QPushButton 控制批量操作,QTextEdit 查看日志。
点击空白处退出提示
评论