触摸屏AI编程260525工作记录

[复制链接]

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 09:19 | 显示全部楼层
继续完善通讯显示,在顶栏给定频率的左边增加通讯显示灯,正常通讯时红绿灯交替闪烁,通讯中断或接收不到信号时,常亮红灯。将滚动条的通讯状态显示改为中文,实时在滚动条更新通讯状态

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 09:25 | 显示全部楼层
我从 20260525_0840 源码继续改:顶栏频率左侧加通讯灯;滚动条改成中文状态,并根据最近收帧时间实时显示“通讯正常/中断/等待”。先定位顶栏频率绘制代码。
我会把“通讯正常”的判定改成基于最近收到有效帧的时间,而不是只看串口是否打开:最近 2 秒内收到有效帧=正常,红绿交替;超过 2 秒无有效帧或串口未打开=常亮红灯。滚动条也用同一判定实时显示中文。
本机 uv 命令不可用,我改用 PowerShell 直接补源码,不影响虚拟机编译。
已完成并部署。
本次版本:
20260525_0925
已实现:
顶栏通讯显示灯
位置:顶栏“给定频率”左边
通讯正常:红/绿每 500ms 交替闪烁
通讯中断、无信号、等待串口:常亮红灯
灯下方标注“通讯”
通讯正常判定
现在不是只看串口是否打开,而是看实际收帧:
串口已打开
已收到有效帧
最近 2 秒内收到过有效帧
满足以上条件才算“通讯正常”。
滚动条中文通讯状态
滚动条现在显示中文实时状态,例如:
通讯状态:通讯正常 帧数:xxx 校验错误:xxx 丢帧:xxx 故障:xxx 最近收帧:xxxms
如果无信号,会显示:
通讯状态:通讯中断/无信号 ...
如果串口还没打开,会显示:
通讯状态:等待串口 ...
已正式用虚拟机重新编译
不是二进制补丁。
部署信息:
/root/iba_pda
MD5:a7a15ce9dafa1052ec33b5ebede0fd27
启动脚本未改动:
/root/start_iba_pda.sh MD5:d533a40a29b3c9e699406d5e14e58480
/etc/init.d/S99mcgs_app MD5:7d5dc366e411d5564d531f910d34d67c
验证结果:
程序正常运行
串口持续收到有效帧:
frame #... ok=1
当前应显示“通讯正常”,顶栏通讯灯红绿交替闪烁
记录已保存:
I:\AI\work\2026-05-25\comm_indicator_cn_20260525_0925\summary.md

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 09:30 | 显示全部楼层
只需要滚动条在故障时屏幕底色闪烁功能,其余部位要保持原来的显示方法,不要闪烁,不要更改颜色

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 09:31 | 显示全部楼层
明白:撤掉顶栏通讯灯的闪烁/颜色改动,保持顶栏原样;只让底部滚动条在故障状态时底色闪烁。通讯状态中文显示可以保留在滚动条里,但其它部位不再闪烁、不改颜色。
我先修正一个细节:故障闪烁不能只看“历史故障次数”,否则发生过一次故障后会一直闪;要记录“最近故障触发时间”,只在故障触发后的短时间内让滚动条底色闪烁。
已按你的要求改好并部署。
这版已经撤掉了顶栏通讯灯的闪烁/颜色改动:
顶栏恢复原来的显示方式
不再有红绿灯交替闪烁
顶栏不改颜色
其它部位不闪烁、不改颜色
现在只保留:
底部滚动条在故障时底色闪烁
实现方式:
只有检测到故障触发:prefix[0] 低字节为 0xA5
才记录最近故障时间
故障触发后 5 秒内,底部滚动条底色在白色/浅红色之间闪烁
5 秒后恢复原来的白色底色
非滚动条区域完全不闪烁
版本号:
20260525_0930
已部署:
/root/iba_pda
MD5:795bbb1220fa5b7eb588c8e22c13a2bd
启动脚本未改:
/root/start_iba_pda.sh MD5:d533a40a29b3c9e699406d5e14e58480
/etc/init.d/S99mcgs_app MD5:7d5dc366e411d5564d531f910d34d67c
验证结果:
程序正常运行
串口持续收到有效帧
故障文件仍可生成
记录已保存:
I:\AI\work\2026-05-25\bottom_fault_flash_only_20260525_0930\summary.md

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 09:53 | 显示全部楼层
我看滚动条错位很可能是中文状态文字太长、每帧宽度变化(最近收帧 ms 一直变)导致滚动计算跳动。改法:滚动文字宽度固定/内容简化,滚动速度恢复之前的稳定方式,故障闪烁只改背景不影响文字位置。
已修改并部署。
判断错位原因:
上一版滚动条里有 最近收帧:xxxms,这个数值一直实时变化,导致文字总宽度不断变化,滚动周期也跟着变,所以看起来会跳动/错位。
这版已调整:
去掉快速变化的 最近收帧:xxxms
滚动条文字改成更稳定的中文格式:
通讯:通讯正常 帧数:xxx 校验:xxx 丢帧:xxx 故障:xxx
滚动绘制方式改为固定间隔、双份文字连续滚动,减少跳动
保留“仅滚动条故障底色闪烁”
其它区域仍保持原显示,不闪烁、不改颜色
版本号:
20260525_0935
已部署:
/root/iba_pda
MD5:36500c29df17664308f60c0e7c33cfdb
验证:
程序正常运行
串口持续收到有效帧
记录功能正常
记录保存到:
I:\AI\work\2026-05-25\bottom_scroll_stable_20260525_0935\summary.md

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 09:54 | 显示全部楼层
我拔掉usb串口再次插上时,通讯不会自动修复,请检查解决

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 10:05 | 显示全部楼层
我来修这个热插拔问题。大概率是程序打开 /dev/ttyACM0 后,USB 拔出再插入时旧 fd 没有及时重连,或者 2 秒无帧后没有主动关闭重扫。我要在串口线程里加“长时间无有效帧则关闭当前端口并重新扫描”。
现场现象确认了:USB 重插后内核有时会变成 /dev/ttyACM1,现在又回到 /dev/ttyACM0;程序需要在无数据/读错误时主动关闭旧串口并重新扫描所有 ttyACM*。我现在加自动重连逻辑并部署。
先修复一个潜在误重连点:刚打开串口后可能要等几秒才有第一帧,不能 3 秒就断;我改成 8 秒无有效帧才重连。
已部署自动重连版。现在需要你实际拔插一次 USB 串口,我这边会等 20 秒后检查是否自动重新打开新枚举的 /dev/ttyACM0 或 /dev/ttyACM1,并恢复收帧。
自动重连逻辑已经生效了,但检查发现它现在会反复重开同一个 /dev/ttyACM0;如果热插拔后真实数据口变成 /dev/ttyACM1,程序可能还会优先打开旧的 /dev/ttyACM0。我继续改成:某个口 8 秒无有效帧就临时跳过该口,自动尝试下一个 ttyACM/ttyUSB。
现在看到自动重连已经在跑,但重开 /dev/ttyACM0 后仍然没有恢复收帧。下一步不是单纯重扫端口,而是串口重新打开时要重新拉起 DTR/RTS 控制线;USB CDC 设备热插拔后常见问题就是设备枚举了,但没有重新进入发送状态。我继续加这个处理。
我现在的结论先说清:程序侧已经能检测“无帧超时”并反复重连,也重新拉了 DTR/RTS,但设备端仍没有恢复发数据。也就是说问题不只是旧 fd 没关闭,可能是 USB 设备热插拔后枚举成功但发送端没重新启动。我继续做设备侧验证:直接看 /dev/ttyACM0 是否有原始数据,如果没有,就加 USB 端口软复位/重新枚举兜底。
DTR/RTS 已加,但当前 /dev/ttyACM0 仍然没有任何原始数据,手工 dd 读也是 0 字节。这说明热插拔后 USB 枚举还在,但发送端没有恢复输出。我要再加一个兜底:连续多次重连仍无帧时,对 USB 设备做一次软复位/重新枚举,然后再打开串口。
我找到 USB sysfs 路径了:当前串口对应 usb4/4-1/4-1:1.0/tty/ttyACM0。继续加程序内兜底:连续 3 次“打开成功但 8 秒无帧”后,自动对这个 USB 设备执行一次 unbind/bind 软复位,再重新扫描串口。
我继续把“连续无帧后 USB 软复位”这一版编译部署。这个兜底会在打开串口但连续多次 8 秒无帧时,对对应 USB 设备做 unbind/bind,然后重新枚举再打开。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 10:07 | 显示全部楼层
1、将底栏 系统设置 文字改为 setting  2、将迪兰右下角系统信息里面的 CF卡显示,改为 U盘的信息显示,3、将通信状态固定在滚动条的左侧,其余部分还保持滚动

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 10:12 | 显示全部楼层
收到,我基于当前 20260525_1025 版本继续改三项:底栏文字、右下角 CF→U盘、通讯状态固定在滚动条左侧,右侧事件内容继续滚动。先定位相关绘制代码。
我按当前 20260525_1025 稳定版继续改:左下“系统设置”改 setting;右下 CF 改显示 U盘占用;滚动条左侧固定显示通讯状态,右侧事件内容继续滚动。
这三项源码已经改好,我现在编译并部署 20260525_1035。
编译有个函数插入位置没生效,我修一下再编。
已完成并部署。
版本号:
20260525_1035
修改内容:
底栏文字
左下角原“系统设置”已改为:
setting
右下角系统信息
原来的:
CF xx%
已改为:
U盘 xx%
现在读取的是 U盘挂载路径 usbMountPath 的使用率。
如果当前没有挂载 U盘,则显示:
U盘 --
滚动条通信状态固定左侧
滚动条左侧固定显示通信状态:
通讯:通讯正常 帧数:... 校验:... 丢帧:... 故障:...
右侧事件内容继续滚动:
事件记录显示 系统自检完成 | 录波仪运行正常 | ...
保留之前逻辑
保留滚动条故障底色闪烁
保留 USB 串口热插拔自动重连/USB软复位逻辑
其它显示区域没有改动
部署信息:
/root/iba_pda
MD5:812d0e49d521ea914094c3c97c132b26
启动脚本未改:
/root/start_iba_pda.sh MD5:d533a40a29b3c9e699406d5e14e58480
/etc/init.d/S99mcgs_app MD5:7d5dc366e411d5564d531f910d34d67c
验证结果:
程序正常运行
串口持续收到有效帧:frame #... ok=1
当前设备没有挂载 U盘,所以右下角应显示 U盘 --;插入并挂载 U盘后会显示占用百分比。
记录保存到:
I:\AI\work\2026-05-25\bottom_setting_usb_fixed_comm_20260525_1035\summary.md

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 10:13 | 显示全部楼层
setting字样没有完整显示,请检查修正
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

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

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

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