探索者 · 四轮联动调试台 v2.0（Windows 64位，免安装）

运行 Explorer_FourWheel.exe，或桌面“探索者四轮调试”快捷方式。
先关闭原单板调试软件及其他串口程序。软件不会自动开始转动车轮。

适用硬件和固件
前驱动板接左前/右前轮，后驱动板接左后/右后轮，USB转换板提供两个独立COM口。
按本项目两张STM32F103RCT6主板、10S电池和左口USART2 TANK v4固件配套设计：
Explorer_10S_USART2_TANK_v4_1000RPM_3A_NoIdleOff.bin。
两板均需使用相容的TANK独立左右轮指令及18字节反馈协议；不能套用未知旧混控固件。
软件不读取固件身份，不能自动确认两板版本。v3协议相容但仍受120 RPM固件限速。
没有有效反馈时禁止启动；任一板失联撤销两板运行，不允许一板继续驱动整车。
固件无需为此软件改协议。本次没有刷机或向实车发送运动指令。

接线（每张主板各接一组独立USB串口通道）
主板左侧PA2/TX → 转换板RX；主板左侧PA3/RX ← 转换板TX；GND共地。
电平3.3V TTL，转换板VCC不接主板，主板接口15V不接转换板。
主板由电池供电。COM2/COM3属于电脑编号，与USART2编号无对应关系。

首次使用
1. 四轮离地，固定车身，主板正常开机，能随时断开电池电源。
2. 点“刷新端口”。前板/后板分别选择实际COM口（也可手动输入，如COM7）。
   默认前COM2、后COM3，只是初始建议；请按实物对应选择。两个口不能相同。
3. 点击“连接两板”。两板均出现有效反馈、四轮静止后，运行按钮才可点击。
4. 速度先用默认100、时间1～5秒，依次选择“仅左前轮”等单轮模式。
   若转的不是对应轮子：前后板错误就断开后交换COM选择；同一板左右错误就勾选对应“左右互换”。
   若某轮旋转方向与车辆前进方向相反，勾选该轮“反向”。每次改变映射都会先停止。
   请以实物旋转方向为准。右轮反馈负号来自固件原始方向，不能单凭负号判断车轮反转。
5. 映射确认后，选“前进”并开始定时运行，核对四轮同向出力；再测试后退、弧转。
   初次落地用低指令、小幅弧转；先完成方向确认，不要直接原地满指令转向。

控制方式
速度指令0～1000，默认100。该值是电压模式控制指令，不是目标RPM。
模式：前进、后退、左弧转、右弧转、原地左转、原地右转、四个单轮模式。
弧转时外侧指令为设定值，内侧为设定值乘所选比例；0%表示内侧零指令，不是四轮故障。
原地转向时左右侧指令相反；单轮模式只给选中轮子正向指令，其余为零。
同侧前后轮得到相同的车辆方向指令，再按安装反向/互换设置换算到两块板。
同指令不保证四轮实际RPM完全一致：仍受两板电压模式、负载和电机个体差异影响。
本软件没有升级为速度闭环，也没有提高固件3A限流。
单次时间1～30秒，默认5秒，到时自动向两板发送零指令。
运行中调节速度实时生效；切换模式、弧转比例、安装映射先停止，待静止后需重新点运行。
红色“全部停止”、软件窗口内空格/Esc、断开按钮或关闭窗口，均请求两板停止。
启动、断开重连均不自动运动；方向、映射、串口选择中只保存串口和安装映射。
下次启动速度仍是100、模式前进、时间5秒。

显示与保护的边界
四轮RPM保留主板原始符号，仅按左右互换重新分配到车辆轮位；“反向”只影响输出指令。
两块板电压是同一电池的两次独立采样，不应相加；电压/温度未独立校准。
显示温度不代表已启用固件过温保护；v4原有温度保护仍未校准、未启用。
任一板有效反馈超过0.3秒未更新，软件撤销全车运行，并向可通信的板发送零指令。
写入/读取失败会关闭本次双板连接。处理错误后需重新连接和手动运行。
任一轮报告转速超过1100 RPM，也撤销全车运行。固件配置上限仍为1000 RPM。
Windows分别向两串口顺序发送指令，计划间隔约20ms，不是硬件严格同步系统。
若某个串口故障，已断开的板依赖固件自身串口超时撤力；软件无法向断开的线路发送停止。
停止不等于机械制动或电池断电。空格/Esc只在本软件有键盘焦点时生效。

验证
20项协议及模拟双串口测试通过，包括不同COM、独立左右指令校验和、映射、单板反馈中断、
任一板读写失败、定时结束、换向先停止、部分连接失败、断开重连和退出零指令。
演示GUI检查通过。成品EXE的演示启动退出通过。本版尚未进行实车四轮联动验证。

设置与日志：%LOCALAPPDATA%\ExplorerFourWheel\settings.json 和 debug.log。
source.zip含对应Python源代码、测试、构建脚本。无需安装Python即可使用成品EXE。
源码构建：安装requirements.txt后运行 python build.py；测试 python -m unittest test_fourwheel -v。
