




工作经历
2024-06-07 -2024-11-30上海天杨瑞智能科技有限公司嵌入式软件开发
三年开发全平台开发经验,精通qtC++,windows,arm触控屏软件开发,上位机测试软件。。。。。。作品很多,方向也多,欢迎咨询
教育经历
2021-09-10 - 2024-11-30上海海事大学电子信息本科
本科
语言
技能

一、项目背景与开发需求 随着新型电力系统的发展,储能系统作为电网调节、削峰填谷、备用电源等重要组成部分,在工业、电力、新能源等场景中得到广泛部署。为了实现对储能系统运行状态的直观监控与高效运维,企业提出开发一套部署在 ARM 架构设备(如工控一体机、嵌入式主控板)上的可视化监控大屏系统。 该系统需基于 Ubuntu 操作系统 和 Qt 开发框架,具备全屏展示、状态刷新快速、界面美观科技、操作流畅、数据交互稳定等特性,支持自定义组件、动态图表、数据轮播和后台控制指令。系统由公司团队全自主开发,涵盖 UI 设计、核心逻辑、通信协议、图形渲染、性能优化等全流程。 二、项目定位与设计目标 类别 内容 平台架构 基于 ARM(如 RK3568、IMX8)+ Ubuntu 系统 软件框架 Qt 6.x / Qt 5.15 LTS + QML / Widgets 界面风格 美观现代、科技感强、可触控适配 数据来源 串口 / TCP / MQTT / Modbus-TCP 等协议接入 展示方式 图形化仪表盘、大图轮播、实时曲线、告警列表、系统日志等 响应性能 秒级刷新、不卡顿,GPU 加速渲染优化 自主研发 全部源码由公司独立开发,无第三方闭源依赖 可拓展性 支持后续接入更多设备、扩展模块化页面 三、核心功能模块设计 1. 设备运行监控 实时读取电池簇、电池包、PCS、BMS、EMS 等设备运行状态; 可视化展示温度、电压、电流、SOC、功率等关键指标; 支持设备拓扑图点击展开、下钻信息查看。 2. 数据可视化界面 使用 QML/QtCharts 绘制动态波形图、柱状图、曲线图; 状态图形实时变色(绿-正常,黄-预警,红-故障); 全屏布局自适应 1920×1080 / 1280×800 多种分辨率; 支持暗黑主题、3D风格仪表盘和动画切换。 3. 告警与日志系统 实时采集异常信息与告警事件,分类展示; 支持历史日志查询、导出 CSV; 关键告警页面滚动轮播或语音提示。 4. 通信协议适配 支持多种通讯方式:RS485、Modbus-TCP、MQTT、Socket; 所有通信接口封装为模块类,便于替换和扩展; 多线程/异步通信模型,保障数据实时性与稳定性。 5. 后台控制与参数配置 提供工程设置密码保护入口; 后台界面支持对设备参数设定与远程控制(开关机、重启); 配置项保存为 JSON/YAML,便于导入导出与迁移。 四、架构与技术选型 层级 技术说明 操作系统 Ubuntu 20.04 / 22.04,定制裁剪适配 ARM 框架 Qt 5.15 / Qt 6 + QML + Qt Quick Controls 2 数据引擎 多线程采集模块 + 信号槽数据分发 图形界面 GPU 加速的 Qt Quick 渲染 + CSS 风格主题 构建方式 CMake + Qt Creator / VSCode,支持交叉编译 启动方式 开机自启动、全屏模式、无边框窗口控制 优化 使用 OpenGL、QSG、多级缓存、图层裁剪提升性能 安全 UI 与底层逻辑隔离,设定只读控制项防误触 五、项目亮点与自主开发能力 ✅ 完全自主开发:UI、控制逻辑、通信协议、图表组件均由公司核心研发团队从零实现,无第三方闭源依赖; ✅ 多技术整合:整合 Qt/QML 渲染、嵌入式通信、ARM优化、数据缓存、事件驱动等多类技术; ✅ 高可拓展性:支持项目后续对接 EMS 系统、云端接口、远程升级与 OTA; ✅ 美观科技风界面:采用现代感 UI 设计,支持动态图标、流动背景、渐变动画等视觉增强; ✅ 稳定运行:已部署测试运行于多款 RK3568 主板,24小时连续运行无崩溃、无卡顿。 六、典型应用场景 ⚡ 电力储能集控室大屏监控 ? 工业能量管理系统 ☀️ 分布式光伏+储能混合系统 ? 智慧园区电池仓室内监控屏 ? 电池测试与老化系统数据展示


一、项目背景与开发需求说明 在嵌入式系统开发中,在线升级(IAP,In-Application Programming) 是一种常见的固件更新方式,允许在设备正常运行过程中通过通信接口(如 RS-485 串口)远程升级嵌入式应用程序固件(APP)。为降低人工升级成本、支持批量维护和保障升级可靠性,硬件开发工程师提出需求:开发一款用于 IAP 固件升级的上位机管理软件。 本项目基于 Qt + C++ 框架开发一款跨平台桌面工具,用于通过 RS-485 串口通信实现嵌入式设备固件升级。该工具需实现固件解析、升级流程控制、串口通信管理、状态反馈机制、异常恢复和图形化界面操作等功能,保障升级过程的安全性、可控性与高效性。 二、主要功能与设计目标 功能模块 目标描述 串口通信 支持 RS-485 全双工通信,配置串口号、波特率、校验位、停止位等参数,支持 CRC 校验和通信重试机制 固件加载 支持加载 .bin 或 .hex 格式固件文件,解析为待发送数据帧队列 升级流程控制 按硬件协议设计升级状态流程,完成设备擦除、写入、校验、跳转等各阶段 状态反馈 上位机根据设备返回指令/ACK 更新状态,超时重发,确保状态一致 状态机设计 使用软件状态机模块管理每一阶段状态及转换逻辑,提升可靠性与可维护性 GUI 界面 提供用户友好的 Qt 图形界面,包含串口配置、固件选择、升级控制、进度条和日志输出 三、升级流程说明 升级过程严格遵循与嵌入式固件协商好的通信协议,整个流程由状态机驱动控制,大致如下: text 复制 编辑 【初始化】→【握手】→【发送擦除命令】→【等待确认】→【分包写入固件】→【数据校验】→【完成/跳转】→【结束】 各阶段详解: 初始化阶段 用户选择串口与波特率,软件尝试打开串口; 校验固件文件合法性(如大小、格式); 初始化状态变量与通信缓冲。 握手阶段 上位机发送起始握手指令; 设备回复握手 ACK,进入升级准备状态。 擦除阶段 上位机发送擦除 Flash 命令; 设备确认擦除完成,返回应答。 固件写入阶段(核心) 固件按固定包长(如 128 字节)切片; 每一包加入头部、包号、CRC 等; 按序逐包发送,等待设备 ACK; 若超时或 NACK,则重发当前包,最多重试 N 次。 数据校验阶段 上位机发送校验命令; 设备回复校验成功/失败状态。 完成跳转阶段 上位机发送跳转命令,设备跳转执行新固件; 升级成功。 四、状态机设计 采用 Qt 中枚举 + 定时器机制(或信号槽配合 QStateMachine)构建状态管理: cpp 复制 编辑 enum class UpgradeState { Idle, Handshaking, Erasing, Sending, Verifying, Finishing, Completed, Failed }; 每个状态配有对应处理逻辑,状态转移由事件触发: 当前状态 事件 下一状态 Idle → 用户点击开始 Handshaking Handshaking → 接收握手ACK Erasing Erasing → 接收擦除ACK Sending Sending → 所有包发送完毕 Verifying Verifying → 校验成功 Finishing Finishing → 收到跳转ACK Completed * → 超时/失败 Failed 升级主循环可由 Qt 定时器或事件驱动触发,提升控制的灵活性与响应能力。 五、软件界面设计 主界面包含以下模块: 串口设置区域(下拉框+打开按钮) 固件文件选择区(浏览按钮 + 文件路径显示) 升级控制区(开始/中断按钮) 日志输出区(QTextEdit) 状态进度区(QProgressBar + QLabel) 图示设计建议使用 QVBoxLayout 或 QGridLayout,提升布局适应性。 六、技术实现要点 模块 技术说明 串口通信 QSerialPort 接收缓冲 + 串口写入,使用 readyRead 信号实时处理回传数据 升级逻辑 使用 QTimer 控制超时重发、包间延时,逻辑统一封装在 IapManager 类 状态管理 枚举状态机模式,状态切换由信号触发,UI 与状态绑定 CRC 校验 使用硬件协议中定义的 CRC16/CRC32 算法确保数据一致性 错误处理 超时、断开连接、CRC 错误统一封装为 UpgradeError 并记录日志 多线程(可选) 升级流程可运行在子线程,避免阻塞 UI 主线程(QThread 或 QtConcurrent) 七、总结 本软件通过 Qt 实现了上位机与嵌入式设备之间可靠的 IAP 升级流程,具备结构清晰、界面友好、协议稳定、异常处理完备等优势。可广泛用于工业设备、嵌入式终端、智能模组等场景中的固件远程升级需求。


项目背景与公司需求说明 在实际生产环境中,企业部署的大量终端设备(如工业控制板、嵌入式系统、网络网关等)长期运行过程中可能因文件系统异常、电源中断或频繁读写导致 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 查看日志。
