项目手记 · 工业物联网交互系统
工业物联网交互系统
从传感器采集,到设备联动,再到界面上的状态与控制。
团队项目 · 负责 jyx 分支 Linux 网关
项目源码 ↗ gitee.com/zwy-long/da_shuai_bi_zu图像记录
先看看项目
点击图片放大查看
工业物联网交互系统:团队模块与网关职责
按各分支的源码和联调文档整理。深绿色部分是我负责的 jyx Linux 网关,其余为团队模块。
为什么做
传感器采集、设备控制与上位机界面由不同模块完成,需要一套稳定的通信链路把它们接起来:既能看见数据,也能把指令送到设备,并跟踪连接和命令状态。
怎么实现
团队用 STM32F407 采集温湿度、光照、心率血氧,STM32F103 执行设备控制,MQTT 桥接与 Qt 端负责展示和交互。我负责 jyx 分支的 Linux C++17 网关:通过 TCP 接入设备,用 System V 共享内存、消息队列和信号量与上位机模块交换遥测及命令,再用 UDP 提供设备发现。
- STM32 多传感器采集
- Linux 网关与状态协调
- 设备联动 / 远程控制
- MQTT 桥接与 Qt 可视化
实现中的取舍
- Select Reactor 是 Socket 的唯一所有者,eventfd 唤醒事件循环;用 ConnectionId 隔离连接,避免文件描述符复用误投消息。
- 分帧器兼容二进制帧与 CRLF 文本行,处理 TCP 半包、粘包和坏帧重同步;遥测格式与设备接入协议解耦。
- 请求 ID 去重、超时和迟到回执统一仲裁,命令只产生一次终态;人工控制接管相应器件,避免自动联动覆盖操作。
- Coordinator 维护设备状态并发布不可变快照,UDP 发现只读快照;退出时先停入口、再回收线程和 IPC 资源。