1. 工业级扫码追溯系统重构实录
去年接手车间老系统改造时,发现原有扫码模块存在两个致命问题:一是采用ActiveX控件与扫码枪交互,每次设备更换都要重新注册依赖;二是数据通过文本文件中转,高峰期经常出现记录丢失。这次用Qt5彻底重构的这套系统,已经稳定运行三个月,日均处理2万+扫码记录。分享几个关键实现点:
无线扫码枪选型上,建议优先考虑支持HID模式的设备(如霍尼韦尔1900系列),这类设备会被系统识别为键盘输入设备,兼容性最好。我们测试过蓝牙和2.4G双模设备,实际使用中发现2.4G接收器直插工控机USB口时,抗干扰能力明显优于蓝牙连接。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计思路
2.1 设备通信层设计
PLC触发信号通过HSLCommunication库处理,这个开源库对国内主流PLC(西门子、三菱、汇川)的支持都很完善。关键代码片段:
cpp复制// 汇川PLC寄存器读取示例
HslCommunication.ModBus.ModbusTcpNet plc = new HslCommunication.ModBus.ModbusTcpNet("192.168.1.10", 502, 1);
OperateResult<short> trigger = plc.ReadInt16("D100");
if (trigger.IsSuccess && trigger.Content == 1) {
// 触发扫码流程
emit startScanSignal();
}
特别注意:PLC通讯超时建议设置为300-500ms,车间环境网络抖动较常见,过短的超时会导致误判
2.2 数据持久化方案
对比过SQLite和SQL Server后,最终选择后者主要考虑三点:
- 车间有现成的SQL Server集群
- 需要支持多终端并发写入
- 后期BI分析工具对接方便
建表时特别注意将扫码时间字段设置为datetime2(3)类型,比传统datetime精度更高(精确到毫秒)。典型插入操作:
cpp复制QSqlQuery query;
query.prepare("INSERT INTO scan_log (barcode, station_id, scan_time) "
