触摸屏AI编程260525工作记录

[复制链接]

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 16:31 | 显示全部楼层
收到,说明完整断电后 USB 控制器状态已经恢复。现在我只做确认性检查,不再碰 /sys 控制项;确认当前版本、串口、U 盘和故障文件同步状态。
收到,恢复情况确认了。
我刚只做了只读检查,没有再碰 /sys 控制项。
当前状态:
当前运行版本:20260525_1605
MD5:8a38a2b169282e58ea9d96df3970de4f
USB 转串口已恢复:
/dev/ttyACM0 存在
串口日志有有效数据和帧,例如 frame #2000 ok=1
U 盘拔插识别正常:
/dev/sda
/dev/sda1
/dev/sda1 已挂载到 /media/usb0
故障文件数量:
内部:9 个
U 盘:9 个
结论:
完整断电后 USB 控制器拓扑恢复正常;
当前安全版本是 20260525_1605;
后续不再使用 1615 那种 EHCI/OHCI/sysfs 强制重扫方案;
这类操作会扰乱 USB hub、USB 转串口、U 盘的枚举状态,风险太大。
我已把恢复确认写入记录。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 16:32 | 显示全部楼层
继续修复断电之后再上电,U盘自动挂载

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 16:37 | 显示全部楼层
我继续修,但这次只做“安全挂载逻辑”:不再碰 EHCI/OHCI、VBUS、/sys 控制项,只在系统已经生成 /dev/sda1 这类设备节点时做延时检测、挂载和补同步。这样不会再影响 USB 转串口。
我会基于当前恢复正常的 20260525_1605 做一个安全修正版:只加强 /proc/partitions、/dev/sd*、mdev -s、挂载重试和故障文件补同步;不再写 EHCI/OHCI/VBUS/sysfs 控制项。这样即使 U 盘设备节点延迟出现,也能自动挂载;如果内核完全没有枚举出设备,则不会破坏串口。
已继续修复并部署,这次是“安全自动挂载”方案,不再碰 USB 控制器。
新版本:
版本:20260525_1620
设备程序:/root/iba_pda
MD5:194a9d3736b5687e501d596a11231dca
旧程序已本地备份:
I:\AI\work\2026-05-25\safe_usb_automount_20260525_1620\iba_pda.device.before_20260525_1620
这版明确不再操作:
EHCI
OHCI
VBUS
USB sysfs reset
USB authorized
也就是不会再影响 USB 转串口。
本次修复逻辑:
开机后定时检查 /proc/partitions。
如果发现 sda/sda1/ub/mmcblk1 这类 U 盘块设备:
优先使用分区,比如 sda1;
如果 /dev/sda1 设备节点缺失,会先执行 mdev -s;
仍缺失时,根据 /proc/partitions 里的 major/minor 用 mknod 创建设备节点;
然后挂载到 /media/usb0。
挂载成功后自动创建:
/media/usb0/VFD
/media/usb0/VFD/vfd_logs
/media/usb0/VFD/vfd_logs/fault_logs
自动把内部故障文件补同步到 U 盘:
内部:/VFD/vfd_logs/fault_logs
U 盘:/media/usb0/VFD/vfd_logs/fault_logs
只补复制,不删除 U 盘已有文件。
录波管理页面点“刷新”也会触发一次安全挂载和故障文件补同步。
部署后已验证:
/dev/ttyACM0 存在;
USB 转串口正常,串口有有效帧;
/dev/sda1 存在;
/dev/sda1 已挂载到 /media/usb0;
内部故障文件:9 个;
U 盘故障文件:9 个。
发布记录:
I:\AI\work\2026-05-25\safe_usb_automount_20260525_1620\RELEASE_20260525_1620_SAFE_USB_AUTOMOUNT.md
现在请你做一次关键现场测试:
U 盘插着;
触摸屏完整断电;
重新上电;
等程序启动后,看 U 盘是否自动挂载;
同时确认 USB 转串口是否正常。
如果这次 /proc/partitions 里能看到 sda/sda1,程序应该能自动挂载。
如果开机后内核完全没有 sda/sda1,程序会继续安全重试,但不会破坏串口。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 16:42 | 显示全部楼层
断电再次上电后U盘还是没有挂载,重新拔插后正常挂载,请修复

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 16:42 | 显示全部楼层
我先只读检查 1620 开机日志和 U 盘日志,看断电上电阶段到底是“有 sda1 但没挂载”,还是“内核根本没枚举 sda1”。不做任何 USB 控制器操作。
我看了 1620 的日志,结论很清楚:
程序没有漏挂载。
在系统出现 /dev/sda1 后,程序已经自动挂载成功了。
日志时间线:
16:39:19 到 16:40:46:程序一直提示
autoMount no usb block device yet
也就是系统里还没有 U 盘块设备。
16:40:49:系统出现 /dev/sda1 后,程序执行挂载:
tryMount reason=timer-check dev=/dev/sda1 mount=/media/usb0
随后挂载成功:
/dev/sda1 on /media/usb0 type vfat
故障文件也补同步成功:
safe fault resync copied=9
当前状态:
/dev/ttyACM0 正常;
/dev/sda1 正常;
/media/usb0 已挂载;
内部故障文件 9 个;
U 盘故障文件 9 个。
所以现在的问题不是“程序没挂载”,而是:
断电上电时,Linux 内核没有枚举出 U 盘;重新拔插后,内核才生成 /dev/sda1。
只要 /dev/sda1 出现,20260525_1620 已经能自动挂载。
我不会再用 EHCI/OHCI 强制重启方案,因为已经验证会影响 USB 转串口。
下一步如果要真正修“插着 U 盘上电也能识别”,需要做系统启动层面的安全延时初始化,而不是 Qt 程序挂载层。建议方案:
不碰 EHCI/OHCI;
不重置 USB 控制器;
在系统启动后延时执行安全检测:
等待 60~120 秒;
执行 mdev -s;
检查 /proc/partitions;
如果出现 sda1 就挂载;
如果没有出现,只记录日志,不动 USB 控制器。
这个方案安全,但它只能解决“设备节点出现晚了”的情况;如果内核一直不枚举 U 盘,仍然无法凭空挂载。
当前 20260525_1620 已经做了这类安全检测。你这次日志显示:一旦 /dev/sda1 出现,它确实自动挂载了。
如果你确认“完全不拔插、等 2 分钟以上仍然没有 /dev/sda1”,那就不是应用层能解决的挂载问题,需要改触摸屏系统的 USB 初始化时序。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 16:46 | 显示全部楼层
重新断电再上电后,等待两分钟也没有出现U盘,请解决

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 16:51 | 显示全部楼层
我先确认这次“等两分钟仍无 U 盘”时,系统 USB 拓扑里到底有没有 hub 端口、U 盘端口状态。现在不写控制项,只读 /sys 和 dmesg。
我查到关键点了:这次等 2 分钟后系统里只有 USB hub、USB 转串口和 USB 网卡,没有 U 盘对应的 2-1.2 设备,也没有 /dev/sda1。也就是说 U 盘所在 hub 端口没有枚举。
我不会再动 EHCI/OHCI 控制器。现在只检查 hub 的单独端口控制能力;如果系统支持只复位 U 盘那个端口 2-1.2,就可以不影响 USB 转串口。先只读检查。
我继续做“只针对 U 盘所在 hub 端口 2,不碰整个 EHCI/OHCI 控制器”的方案。先确认系统有没有 lsusb、usbfs 节点和 hub 描述信息,看能不能安全地只复位 hub 的 2 号端口。
现在已经确认:U 盘应在内置 USB Hub 的 2-1.2 端口;开机时这个端口没有枚举设备,拔插后才出现。下一步我只尝试“复位 Hub 的 2 号端口”,不复位 EHCI/OHCI,不影响 1 号口的 USB 转串口。先检查系统是否有可用的 usbfs 控制节点。
我继续做“只复位 Hub 的 U 盘端口 2”的修复,不再动 EHCI/OHCI。这个操作目标是 /dev/bus/usb/002/002 这个内置 Hub 的 2 号端口,理论上不影响 1 号口的 USB 转串口和 4 号口网卡。先编一个很小的 ARM 工具测试端口 2 上电/复位。
准备测试 Hub 2 号端口复位。这个只作用于内置 Hub 的 2 号端口,也就是 U 盘应在的端口;我会立刻检查 USB 转串口 /dev/ttyACM0 是否仍在。如果有异常就停止。
我测试了“只复位内置 Hub 的 U 盘端口 2”,没有影响 USB 转串口,但也没有让 U 盘枚举出来。说明这个 Hub/端口在当前状态下没有把“已插入 U 盘”的连接状态上报给内核;软件层面的安全复位没有触发到它。
我再读一下 Hub 端口状态位,确认端口 2 是否认为有设备连接。
我进一步确认了,这次不是挂载问题,也不是程序没有检测到 /dev/sda1。
当前开机等待 2 分钟后,系统状态是:
USB 转串口正常:/dev/ttyACM0 存在;
内置 USB Hub 正常;
USB 网卡正常;
但是 U 盘所在的 Hub 端口没有检测到连接。
我读取了内置 Hub 各端口状态:
端口 1:有设备,正常启用 —— USB 转串口;
端口 2:供电是开的,但 connection=0 —— U 盘所在端口没有检测到设备;
端口 4:有设备,正常启用 —— USB 网卡;
端口 2 单独复位后,仍然 connection=0,U 盘没有枚举。
也就是说:
插着 U 盘开机时,Hub 的 2 号口没有检测到 U 盘连接。拔插后才产生连接变化,系统才枚举出 U 盘。
这已经低于 Qt 程序挂载层。20260525_1620 只要系统出现 /dev/sda1,就能自动挂载;但现在问题是开机时 Hub 端口没有上报 U 盘连接。
我目前认为可行的修复只剩一个方案:
方案:程序启动早期只重置内置 USB Hub 一次
不是重置 EHCI/OHCI 控制器,而是只对内置 Hub 2-1 做一次重新枚举。
这会瞬间影响 Hub 下的设备:
USB 转串口;
USB 网卡;
U 盘端口。
但如果放在程序刚启动、串口打开之前执行,风险比之前小很多。流程是:
程序启动;
延时几秒;
只对内置 Hub 2-1 做一次重新枚举;
等待 USB 转串口、U 盘、网卡重新出现;
再启动串口通信;
检测 /dev/sda1 并自动挂载。
这个方案可能会让启动过程多等 8~15 秒,但有机会解决“插着 U 盘上电不识别”。
需要注意:这个方案会短时间断开 USB 转串口和 USB 网卡,所以我不建议在程序运行中周期执行,只能开机启动早期执行一次。
请确认是否允许我继续做这个版本。
如果确认,我会做成:
版本:20260525_1630
只启动早期执行一次 Hub 重新枚举;
不再碰 EHCI/OHCI;
不周期重置;
串口启动延后,避免运行中断串口;
保留 1620 的安全自动挂载和故障文件补同步逻辑。

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 17:54 | 显示全部楼层
我先确认这次“等两分钟仍无 U 盘”时,系统 USB 拓扑里到底有没有 hub 端口、U 盘端口状态。现在不写控制项,只读 /sys 和 dmesg。
我查到关键点了:这次等 2 分钟后系统里只有 USB hub、USB 转串口和 USB 网卡,没有 U 盘对应的 2-1.2 设备,也没有 /dev/sda1。也就是说 U 盘所在 hub 端口没有枚举。
我不会再动 EHCI/OHCI 控制器。现在只检查 hub 的单独端口控制能力;如果系统支持只复位 U 盘那个端口 2-1.2,就可以不影响 USB 转串口。先只读检查。
我继续做“只针对 U 盘所在 hub 端口 2,不碰整个 EHCI/OHCI 控制器”的方案。先确认系统有没有 lsusb、usbfs 节点和 hub 描述信息,看能不能安全地只复位 hub 的 2 号端口。
现在已经确认:U 盘应在内置 USB Hub 的 2-1.2 端口;开机时这个端口没有枚举设备,拔插后才出现。下一步我只尝试“复位 Hub 的 2 号端口”,不复位 EHCI/OHCI,不影响 1 号口的 USB 转串口。先检查系统是否有可用的 usbfs 控制节点。
我继续做“只复位 Hub 的 U 盘端口 2”的修复,不再动 EHCI/OHCI。这个操作目标是 /dev/bus/usb/002/002 这个内置 Hub 的 2 号端口,理论上不影响 1 号口的 USB 转串口和 4 号口网卡。先编一个很小的 ARM 工具测试端口 2 上电/复位。
准备测试 Hub 2 号端口复位。这个只作用于内置 Hub 的 2 号端口,也就是 U 盘应在的端口;我会立刻检查 USB 转串口 /dev/ttyACM0 是否仍在。如果有异常就停止。
我测试了“只复位内置 Hub 的 U 盘端口 2”,没有影响 USB 转串口,但也没有让 U 盘枚举出来。说明这个 Hub/端口在当前状态下没有把“已插入 U 盘”的连接状态上报给内核;软件层面的安全复位没有触发到它。
我再读一下 Hub 端口状态位,确认端口 2 是否认为有设备连接。
我进一步确认了,这次不是挂载问题,也不是程序没有检测到 /dev/sda1。
当前开机等待 2 分钟后,系统状态是:
USB 转串口正常:/dev/ttyACM0 存在;
内置 USB Hub 正常;
USB 网卡正常;
但是 U 盘所在的 Hub 端口没有检测到连接。
我读取了内置 Hub 各端口状态:
端口 1:有设备,正常启用 —— USB 转串口;
端口 2:供电是开的,但 connection=0 —— U 盘所在端口没有检测到设备;
端口 4:有设备,正常启用 —— USB 网卡;
端口 2 单独复位后,仍然 connection=0,U 盘没有枚举。
也就是说:
插着 U 盘开机时,Hub 的 2 号口没有检测到 U 盘连接。拔插后才产生连接变化,系统才枚举出 U 盘。
这已经低于 Qt 程序挂载层。20260525_1620 只要系统出现 /dev/sda1,就能自动挂载;但现在问题是开机时 Hub 端口没有上报 U 盘连接。
我目前认为可行的修复只剩一个方案:
方案:程序启动早期只重置内置 USB Hub 一次
不是重置 EHCI/OHCI 控制器,而是只对内置 Hub 2-1 做一次重新枚举。
这会瞬间影响 Hub 下的设备:
USB 转串口;
USB 网卡;
U 盘端口。
但如果放在程序刚启动、串口打开之前执行,风险比之前小很多。流程是:
程序启动;
延时几秒;
只对内置 Hub 2-1 做一次重新枚举;
等待 USB 转串口、U 盘、网卡重新出现;
再启动串口通信;
检测 /dev/sda1 并自动挂载。
这个方案可能会让启动过程多等 8~15 秒,但有机会解决“插着 U 盘上电不识别”。
需要注意:这个方案会短时间断开 USB 转串口和 USB 网卡,所以我不建议在程序运行中周期执行,只能开机启动早期执行一次。
请确认是否允许我继续做这个版本。
如果确认,我会做成:
版本:20260525_1630
只启动早期执行一次 Hub 重新枚举;
不再碰 EHCI/OHCI;
不周期重置;
串口启动延后,避免运行中断串口;
保留 1620 的安全自动挂载和故障文件补同步逻辑

0

主题

101

回帖

204

积分

管理员

积分
204
发表于 前天 18:05 | 显示全部楼层
我先找一下最近的工作目录和上下文,确认上次卡在哪一步再继续。
看起来上次做到:1620 版本已部署,程序层面的安全自动挂载已做;但断电重启后内核根本没有枚举出 U 盘分区,随后用 hub 端口工具确认 USB Hub 端口 4 有高速设备,端口 1 是串口,端口 2/3 空。接下来我继续查“U 盘到底挂在哪个端口、能不能只复位 U 盘端口而不影响串口”。
当前现场状态:系统只枚举到 3 个 USB 设备——内置 Hub、串口 2-1.1、Realtek USB 网卡 2-1.4;没有任何 U 盘设备,也没有 /dev/sd*。我再只对 Hub 空端口 3 做一次端口级复位测试(不碰串口端口 1、不碰控制器),看能不能把外部 U 盘口拉起来。
我确认了一点:现在不是程序没挂载,而是 U 盘口硬件/内核侧没有检测到“有设备连接”。Hub 状态显示:端口1=串口,端口4=USB网卡,端口2/3 都是 connection=0。对端口2、3做端口级断电/复位后仍然 connection=0,说明当前外插U盘没有进入 Hub 枚举链路。
我准备先把这个结论和测试日志归档,然后需要你配合一个物理动作:把 U 盘重新拔插一次,我这边实时抓枚举日志。
已继续查到关键点:
当前程序不是“没挂载”,而是系统根本没识别到 U 盘。
Hub 枚举状态:
端口1:串口 ttyACM0,正常
端口4:USB 网卡,正常
端口2/3:connection=0,系统认为没有设备插入
我只对端口2/3做了端口级复位测试,没有动串口端口1,也没有再碰 EHCI/OHCI 控制器;复位后仍无 U 盘、无 /dev/sd*、无 sda1。
结论:现在 U 盘没有进入 USB Hub 枚举链路,程序层面没法挂载一个内核没看到的盘。
我已把日志归档到:
I:\AI\work\2026-05-25\usb_hub_port_probe_20260525_1755\SUMMARY.md
下一步需要你配合一个物理动作:请把触摸屏上的 U 盘拔下再插上一次。插好后告诉我,我马上抓枚举日志,看它是否出现 sda/sda1,如果出现,1620 版本应该会自动挂载并回填故障文件。
🧠 Memory Search: 触摸屏 iba_pda 录波仪 当前进展 版本 部署 故障记录 Web HMI 基线 20260523
🧭 New session: a82a8610-72e8-4ba2-96bf-55c3fafd7526
目前进展如下:
工作区/资料迁移
已按你的要求把后续工作默认放在 I:\AI。
每次修改前应先存盘,按日期目录 I:\AI\work\YYYY-MM-DD 保存工作内容。
触摸屏程序备份不再留在触摸屏上,统一放本地 I:\AI。
触摸屏环境
开发虚拟机信息已记录:
IP:192.168.25.128
用户名/密码:mcgs / mcgs
QT4 编译环境
触摸屏登录方式:你偏好优先用 PuTTY。
注意事项:编程时不要改动触摸屏程序环境设置。
录波仪程序基线
版本 20260523_1605 已作为基线保存:
I:\AI\baseline\touchscreen_recorder_iba_pda_20260523_1605
后续修改应从这个基线复制分支,不直接破坏基线。
录波仪功能
已确认基本满足要求。
长期记录规则已确认:
统计 prefix[0..63] 这 64 个字的平均值、最小值、最大值。
不能用 16 通道 samples 波形数据作为长期记录统计来源。
故障触发规则:
prefix[0] 低字节为 0xA5 触发。
已改成检测到 0xA5 时立即创建故障文件,后续再补齐故障后记录时间。
故障记录文件
已根据样例 20260523_081718.dat 改为输出 .dat 二进制文件。
每帧大小:
2182 字节
即 1091 个 16 位字
输出路径:
/VFD/vfd_logs/fault_logs/log_fault_YYMMDD-HHMMSS.dat
对应版本:20260523_1640
界面/菜单
已实现子菜单结构版本 20260523_1615。
录波仪子菜单顺序:
START/HOLD
示波设置
记录回放
录波设置
文件管理
点击菜单进入对应页面,再次点击返回波形画面。
Web HMI
已实现 Web HMI 版本 20260523_1650。
访问地址:
http://200.200.200.191/
页面文件:
/VFD/web/index.html
页面按 1024x600 固定设计,并随浏览器窗口等比例缩放。
程序从 HTML 文件动态读取,后续改网页会方便很多。
特别注意
以后每次部署触摸屏 iba_pda 新版本时,必须同步更新界面显示的版本号/构建号。
部署前要检查版本号是否已变化。
触摸屏上只保留出厂 demo_app 和当前部署的新程序,备份不放触摸屏。

5

主题

70

回帖

157

积分

管理员

积分
157
 楼主| 发表于 前天 18:10 | 显示全部楼层
现在的情况是上电时u盘插在机器上开机也能正常识别了,请保存现在的版本为基线版本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

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

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

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