← 全部项目

项目手记 · 工业物联网交互系统

工业物联网交互系统

从传感器采集,到设备联动,再到界面上的状态与控制。

团队项目 · 负责 jyx 分支 Linux 网关

项目源码 ↗ gitee.com/zwy-long/da_shuai_bi_zu
C++17LinuxTCP / UDPSystem V IPCSTM32MQTT / Qt

为什么做

传感器采集、设备控制与上位机界面由不同模块完成,需要一套稳定的通信链路把它们接起来:既能看见数据,也能把指令送到设备,并跟踪连接和命令状态。

怎么实现

团队用 STM32F407 采集温湿度、光照、心率血氧,STM32F103 执行设备控制,MQTT 桥接与 Qt 端负责展示和交互。我负责 jyx 分支的 Linux C++17 网关:通过 TCP 接入设备,用 System V 共享内存、消息队列和信号量与上位机模块交换遥测及命令,再用 UDP 提供设备发现。

  1. STM32 多传感器采集
  2. Linux 网关与状态协调
  3. 设备联动 / 远程控制
  4. MQTT 桥接与 Qt 可视化

实现中的取舍

  • Select Reactor 是 Socket 的唯一所有者,eventfd 唤醒事件循环;用 ConnectionId 隔离连接,避免文件描述符复用误投消息。
  • 分帧器兼容二进制帧与 CRLF 文本行,处理 TCP 半包、粘包和坏帧重同步;遥测格式与设备接入协议解耦。
  • 请求 ID 去重、超时和迟到回执统一仲裁,命令只产生一次终态;人工控制接管相应器件,避免自动联动覆盖操作。
  • Coordinator 维护设备状态并发布不可变快照,UDP 发现只读快照;退出时先停入口、再回收线程和 IPC 资源。

简历

选择简历版本 ↗