test_servo_direct.py 实操全景

test_servo_direct.py 实操全景 由 Archify 生成的工作流图。 01 / 主线程 main() 02 / 串口线 · 一条线双向复用 03 / 后台接收线程(daemon) 04 / interactive_mode 功能区 启动:开串口 + 拉起线程 通信:发帧去 · 收帧回 成果:录制导出 后台一直在跑(你不用管它) 打开 /dev/stm32 · 1Mbps · timeout=1 · 主线程 main() › 启动:开串口 + 拉起线程 · 入口 打开 /dev/stm32 1Mbps · timeout=1 入口 拉起接收线程 · SerialReader.start() · 主线程 main() › 启动:开串口 + 拉起线程 拉起接收线程 SerialReader.start() interactive_mode 菜单 · 你敲命令的地方 · 主线程 main() › 通信:发帧去 · 收帧回 · 提示符 > interactive_mode 菜单 你敲命令的地方 提示符 > 串口线收发 · 1Mbps · 半双工双向复用 · 串口线 · 一条线双向复用 › 通信:发帧去 · 收帧回 串口线收发 1Mbps · 半双工双向复用 逐字节拆帧 · 找 AA55 → CRC8 校验;应答入队 · 后台接收线程(daemon) › 后台一直在跑(你不用管它) › 通信:发帧去 · 收帧回 逐字节拆帧 找 AA55 → CRC8 校验;应答入队 0x08 状态缓存 · 最新覆盖 · save 的数据源 · 后台接收线程(daemon) › 后台一直在跑(你不用管它) › 通信:发帧去 · 收帧回 0x08 状态缓存 最新覆盖 · save 的数据源 save 存姿态 · 命名入内存列表 · interactive_mode 功能区 › 通信:发帧去 · 收帧回 save 存姿态 命名入内存列表 yaml 导出 · → colcon build → EXP-05 · interactive_mode 功能区 › 成果:录制导出 · 出口 yaml 导出 → colcon build → EXP-05 出口 s / g / work 组帧下行 打开成功 func=0x08 → 覆盖缓存 yaml 命令导出 等待输入 按 save 时读缓存 0x08 状态与应答回程 图例 用户界面 Agent 逻辑 工具操作 上下文 / 追踪 云服务 外部系统

两张皮:发与收分开

  • • 你敲的每个命令都走「组帧 → 串口线」一条下行路
  • • 接收线程独立跑,0x08 状态帧和应答帧分流,互不阻塞

save 为什么有数据

  • • 你没发过读指令,但下位机一直在广播 0x08
  • • 线程收帧 → 最新覆盖进缓存 → save 只是取快照

出口只有一条

  • • save 的动作只活在内存列表,退出即丢
  • • yaml 导出 + colcon build 才交到 EXP-05 手上