|
|
我先把这个 .dat 文件保存到当前录波仪工作目录并检查文件结构,看它是否能作为“记录回放”功能的样例数据。
已收到并保存这个样例文件:
I:\AI\work\2026-05-23\touchscreen_record_playback_sample_1638\20260523_081718.dat
文件信息:
文件名:20260523_081718.dat
大小:170198 字节
MD5:e32933460ce87f0434ef67a184470abc
初步检查结果:
文件是二进制录波数据,不是文本。
开头就是帧头:
46 93
按小端 16 位解析就是:
0x9346
文件中帧头位置规律是:
0, 2182, 4364, 6546, ...
也就是说这个 .dat 文件的帧长度看起来是 2182 字节一帧。
当前触摸屏串口实时解析程序使用的是 2184 字节一帧:
const int frameBytes = 2184;
quint16 words[1092];
而这个 .dat 样例更像是:
1091 个 16位字 = 2182 字节
按 2182 字节解析,前几帧信息正常:
frame0: header=9346 prefix0=0000 seq=41157 page=123
frame1: header=9346 prefix0=0000 seq=41157 page=123
frame2: header=9346 prefix0=0000 seq=41157 page=123
...
结论:这个文件可以作为“记录回放”功能的样例数据,但回放解析不能完全照搬当前实时串口的 2184 字节帧逻辑,需要单独兼容 .dat 文件的 2182 字节帧格式。
我已经把它作为下一步“记录回放”实现的样例数据保存好了。
我按你发来的 .dat 样例规则来改:故障记录文件不再生成文本表格,而是生成同样的二进制 .dat 帧文件;帧长度按样例的 2182 字节处理。先从 20260523_1615 分支出新版本,改完后编译部署。
已按你发来的 .dat 样例规则修改并部署。
样例文件检查结论:
帧头:46 93
小端 word:0x9346
帧间距:2182 字节
即每帧:1091 个 16 位字
新版本已改为:故障记录文件按这个规则生成 .dat 二进制文件。
新版本:20260523_1640
MD5:c64b426783bcaa8689ad7df505fb2e64
现在故障记录:
保存目录:
/VFD/vfd_logs/fault_logs
文件名格式:
log_fault_YYMMDD-HHMMSS.dat
文件内容:
不再是文本表格;
不再写 CSV/TXT 表头;
按样例规则写原始二进制帧;
每帧写入 2182 字节;
帧头保持 46 93。
关键修改:
c.rawDatFrame = frame.left(2182);
故障触发规则不变:
(c.prefix[0] & 0x00ff) == 0x00a5
触发后会立即创建 .dat 文件,故障后记录时间满足后再用同一路径重写补全。
已部署到触摸屏:
当前进程:26009
/root/iba_pda MD5:c64b426783bcaa8689ad7df505fb2e64
/root 下仍只保留:demo_app 和 iba_pda。 |
|