触摸屏AI编程260523工作记录

[复制链接]

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 4 天前 | 显示全部楼层
我检查新生成的故障文件内容:文件是否产生在正确目录、表头列数是否符合“时间戳 + 16通道数据 + 64字前缀数据”、是否包含触发点前后数据,以及触发帧里 prefix0 是否为 0x00A5/低字节A5。
已检查,故障记录已经正常产生,并且核心触发逻辑符合要求。

检查结果:
当前版本:20260523_1605
最新故障文件:/VFD/vfd_logs/fault_logs/log_fault_260523-160536.txt
文件大小:约 26.2 MB
行数:45569 行
列数:81 列
文件结构是:
时间戳 + 16路采样数据 + 64字前缀数据

也就是:
第 1 列:时间戳
第 2~17 列:16 路数据
第 18~81 列:64 个 prefix 数据
诊断日志确认触发点:
2026-05-23 16:05:36.936 frame #3155 ok=1 ... prefix0=0X00A5 low=a5
2026-05-23 16:05:36.936 FAULT TRIGGER prefix0=0X00A5 path=/VFD/vfd_logs/fault_logs/log_fault_260523-160536.txt
2026-05-23 16:05:56.969 write fault snapshot path=/VFD/vfd_logs/fault_logs/log_fault_260523-160536.txt

也就是说:
prefix[0] 低字节 0xA5 已识别;
立即生成了故障文件;
20 秒后又按同一文件补全了一次。
故障文件里也能查到触发点附近的数据:
260523160536936 ... 0X00A5 ...
260523160536937 ... 0X00A5 ...
260523160536938 ... 0X00A5 ...
...

这里的 0X00A5 位于第 18 列,也就是 prefix[0]。

目前唯一需要注意的是:故障文件的前缀列大部分是 0X0000,这应该是发送端当前只填了 prefix[0],其他 prefix 字为 0。如果你的要求是故障文件必须完整保存 64 字前缀,那么程序结构已经保留了 64 列;是否有值取决于发送端是否填入。

结论:故障触发、文件生成、触发点记录、前后数据保存都已经符合当前要求。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 4 天前 | 显示全部楼层
录波仪基本满足要求,请保存为基线版本

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 4 天前 | 显示全部楼层
🧠 Memory Search: 录波仪 基线版本 触摸屏 iba_pda 保存 baseline 20260523_1605
🛠️ Exec: $ErrorActionPreference='Stop' $base='I:\AI\baseline\touchscreen_recorder_iba_pda_20260523_1605' $src='I:\AI\work\2026-0… (in ~\.openclaw\workspace)
🧰 Process: faint-gulf
我把当前满足要求的录波仪版本固化为基线:保存源码、ARM 可执行文件、部署日志、功能说明和校验信息,后续改动都从这个基线再分支。
已保存为基线版本。

基线目录:
I:\AI\baseline\touchscreen_recorder_iba_pda_20260523_1605

已保存内容:
source/:当前源码、工程文件、ARM 可执行文件
source/iba_pda_20260523_1605:基线可执行程序
verification/:刚才故障记录验证脚本和日志
manifest.md:基线说明、功能确认、校验值
I:\AI\baseline\LATEST_TOUCHSCREEN_RECORDER_BASELINE.txt:最新基线指针
基线版本信息:
版本号:20260523_1605
MD5:1ac10a5c52f996d53dbe6f1685fb0c14
SHA256:c2ee881b394f59c5c7218668997d64ef254756d7a45b2a2a693202237416cfc3
已确认纳入基线的功能:
串口 /dev/ttyACM1 接收数据帧;
帧头 46 93,小端 16 位解析;
长期记录:64 字前缀数据 prefix[0..63] 的平均值、最大值、最小值;
故障触发:prefix[0] 低字节为 0xA5;
故障触发后立即生成故障文件,故障后记录时间满足后补全;
故障文件结构:时间戳 + 16 路采样数据 + 64 字前缀数据,共 81 列;
/root 下只保留 demo_app 和当前 /root/iba_pda。
我也把这条写入长期记忆了。后续修改会从这个基线复制到新的工作目录,不直接覆盖基线。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 4 天前 | 显示全部楼层
下一步:
1、录波仪的子菜单要实现以下功能:增加一个(示波设置)子菜单和一个(记录回放)子菜单,功能在下一步实现
2、子菜单排序为,由上至下:START/HOLD , 示波设置, 记录回放,录波设置 ,文件管理
3、子菜单点击时打开相应功能,再次点击则退出相应功能,显示波形画面

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 4 天前 | 显示全部楼层
收到。我从刚保存的基线复制出新工作目录,不直接改基线;这一步只做子菜单结构和切换逻辑,两个新功能页面先做占位,后续再实现具体功能。
我继续完成这版:刚才菜单排序和点击逻辑已改,发现占位页面函数还没插入完整;我补上后编译部署,并更新版本号为 20260523_1615。
已按要求完成并部署。
新版本:20260523_1615
MD5:2eacd1d3d281ac336089403b52beb7b5
这次改动基于刚才保存的基线版本 20260523_1605,没有直接覆盖基线。
已实现:
录波仪左侧子菜单新增:
示波设置
记录回放
子菜单顺序已调整为由上至下:
START / HOLD
示波设置
记录回放
录波设置
文件管理
点击逻辑:
START/HOLD:切换波形运行/保持,并返回波形画面;
示波设置:点击打开占位页面,再次点击退出回波形;
记录回放:点击打开占位页面,再次点击退出回波形;
录波设置:点击打开现有录波设置页面,再次点击退出回波形;
文件管理:点击打开现有文件管理页面,再次点击退出回波形。
示波设置 和 记录回放 当前只是功能入口/占位页面,具体功能留到下一步实现。
已部署到触摸屏:
当前进程:30485
/root/iba_pda MD5:2eacd1d3d281ac336089403b52beb7b5
/root 下仍只保留:demo_app 和 iba_pda。

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 4 天前 | 显示全部楼层
我先把这个 .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。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 4 天前 | 显示全部楼层
将触摸屏的完整功能生成web页面,我通过ip可以访问完整的功能,页面保持所有元素的比例啊,适应不同的浏览器和页面显示采用等比例拉伸或压缩的方式实现

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 4 天前 | 显示全部楼层
我从当前部署版 20260523_1640 分支做,不改基线。先检查现有内置 Web 服务,再把触摸屏主界面按固定设计分辨率生成一套 Web 页面,并用 CSS transform: scale(...) 做等比例缩放/居中,保证不同浏览器比例一致。
我会把现有很窄的“系统管理/U盘管理”网页替换成一个完整的 1024×600 固定画布 Web HMI:浏览器端用等比例缩放适配窗口,画面比例不变;页面包含触摸屏主要界面、录波仪子菜单、录波设置、文件管理、系统设置等入口,并保留已有 U 盘/文件 API。版本号同步更新后编译部署。
编译没过,问题出在我把 Web 页面大字符串切分进 C++ 时引入了错误的字符串拼接。这个不部署。我先修正生成方式,改成更稳的 QStringList << ...; join() 或逐段追加,避免超长字符串破坏 C++ 语法。
我换一个更稳的实现:不把整页 HTML 硬塞进 C++ 编译,而是让程序从 /VFD/web/index.html 读取网页文件并返回。这样后续改网页不用重新编译程序,也避免大字符串编译风险。
已完成并部署 Web 页面版本。

访问地址:
http://200.200.200.191/

新版本:
程序版本:20260523_1650
程序 MD5:c847ef51075cb2f86db0f75b05805cb5
Web 文件:/VFD/web/index.html
Web 文件 MD5:45a56a74e924afa57bbf3496b7b42435
当前进程:12222
已验证:
访问 http://200.200.200.191/ 返回 HTTP 200
页面包含主 HMI 画布 id="hmi"
页面包含等比例缩放逻辑 scale(...)
实现方式:
Web 页面固定设计尺寸:1024 × 600
浏览器窗口变化时按比例缩放:
scale = min(浏览器宽度 / 1024, 浏览器高度 / 600)

所以不同浏览器、不同窗口大小下,所有元素都会按同一个比例拉伸或压缩,界面比例不会变形。

这次我改成了更方便维护的方式:
程序从 /VFD/web/index.html 动态读取网页;
后续如果只是改 Web 页面,不需要重新编译程序,直接替换这个 HTML 文件即可。
当前 Web 页面包含:
顶部标题栏、版本号、频率/电流/电压显示区;
左侧主菜单:运行界面、参数设置、事件记录、录波仪、系统设置;
录波仪子菜单:
START/HOLD
示波设置
记录回放
录波设置
文件管理
波形画面模拟区;
示波设置占位页;
记录回放占位页;
录波设置页;
文件管理页;
系统设置/Web 访问说明;
U 盘相关功能继续调用原来的 Web API。
/root 下也确认仍只保留:
demo_app
iba_pda

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 4 天前 | 显示全部楼层
我看图里 Web 页面中文显示成了反斜杠和 n,说明 HTML 里部分换行/转义写错了,不是缩放问题。我直接修 /VFD/web/index.html,不需要重编译程序。
我看到了,左侧菜单里显示出了 \n,这是 HTML 里把换行符当成普通字符显示了。

已修正,不需要重编译程序,只替换了 Web 页面文件:
/VFD/web/index.html

修正内容:
运行\n界面 → 运行<br>界面
参数\n设置 → 参数<br>设置
事件\n记录 → 事件<br>记录
录波\n仪 → 录波<br>仪
系统\n设置 → 系统<br>设置
当前 Web 文件 MD5:
fae896fadd91a815ef7d66077d01b7e9

已验证:
http://200.200.200.191/ 返回 200
页面里已经有 运行<br>界面
页面里已经没有 运行\n界面
你刷新浏览器页面即可,如果浏览器缓存了旧页面,可以强制刷新一下。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 4 天前 | 显示全部楼层
还有错位的,请修正
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
关注公众号
返回顶部