水上火箭地面站 ANO 帧与 TEE V4 格式
====================================

一、桌面“1”工程实际使用的旧版 ANO 帧
------------------------------------
帧结构：
AA AA FUNC LEN DATA... SUM

SUM 为从第一个 AA 到 DATA 最后一个字节的无符号累加和，只保留低 8 位。
多字节整数均为大端序（高字节在前）。

1. 0x01 姿态/高度
LEN = 12
int16 roll ×100
int16 pitch ×100
int16 yaw ×100
int32 altitude_cm
uint8 flight_mode
uint8 armed

2. 0x02 传感器
LEN = 18
int16 raw_acc_x, raw_acc_y, raw_acc_z
int16 raw_gyro_x, raw_gyro_y, raw_gyro_z
int16 raw_mag_x, raw_mag_y, raw_mag_z

按照桌面“1\Core\Src\imu.c”的标度换算：
acceleration_m_s2 = raw_acc / 16384 × 9.81
angular_rate_deg_s = raw_gyro / 131

3. 0x03 SBUS / 接收机通道
LEN = 20
int16 CH1～CH10，依次为 THR、YAW、ROLL、PITCH、AUX1～AUX6。
通道值按大端序解析，常见中值为 1500。

地面站仍可按 ROLL=CH3、PITCH=CH4、YAW=CH2 换算并保存期望角（THR 不作为姿态期望角）：
target_deg = clamp((channel - 1500) × 45 / 500, -45, +45)

飞行模式不由电脑端 SBUS 接收状态直接判定。数据分析检查 CSV 的 target_roll、
target_pitch、target_yaw：任一方向变化范围达到 3°，出现不少于 0.5° 的明显变化，
并持续至少 0.5 秒或变化后仍有 1 秒数据时判定为“制导模式”；否则判定为“自稳模式”。

4. 0x33 差分位置
LEN 至少为 6
int16 x_cm
int16 y_cm
int16 z_cm

只有收到有效 0x33 差分位置，或新版差分 GPS 帧后，软件才增加飞行路径点。
没有差分定位数据时，飞行路径保持为空，导出操作不会产生空路径文件。

二、12 路用户自定义数据
-----------------------
分别使用功能字 0xF1～0xFC，每帧表示一路数据。原有前 6 路仍固定使用
0xF1～0xF6，帧编号、数据格式和缩放比例均不变；新增 6 路顺序使用
0xF7、0xF8、0xF9、0xFA、0xFB、0xFC。

推荐且地面站已实现的旧版格式：
AA AA Fn 04 VALUE SUM

Fn：F1～FC 中对应通道的功能字。
VALUE：有符号 int32，大端序，实际值乘以 1000 后发送。
地面站显示值 = VALUE / 1000.0。

示例：User Data 1 = 12.345
VALUE = 12345 = 00 00 30 39
不含校验的帧为：
AA AA F1 04 00 00 30 39
最后追加上述字节的低 8 位累加和。

新版 0xAB 帧中，F1～FC 也支持 4 字节小端 IEEE-754 float。
用户数据名称和启用状态在“程序设置”中调整。

三、新版 0xAB 双校验帧
----------------------
继续兼容已有格式：
AB SOURCE DEST FUNC LEN_L LEN_H DATA... SC AC

SC：从帧头到数据末尾的累加和。
AC：累加过程中每一步 SC 的再次累加和。
数值按小端序解析。

四、TEE / CSV V4 列
-------------------
time,
roll,pitch,yaw,
target_roll,target_pitch,target_yaw,
rate_roll,rate_pitch,rate_yaw,
accel_x,accel_y,accel_z,
torque_roll,torque_pitch,torque_yaw,
altitude,vx,vy,vz,
latitude,longitude,
user1,user2,user3,user4,user5,user6,user7,user8,user9,user10,user11,user12,
sbus_active,sbus1,sbus2,sbus3,sbus4,sbus5,sbus6,sbus7,sbus8,sbus9,sbus10,
frame_id,updated_mask

即使波形页面只显示一种物理量，TEE 仍保存所有上述通道。
frame_id 保存产生该采样的功能字；updated_mask 保存该帧真正更新的字段。波形绘图据此只为本帧更新的物理量增加一个点，避免其他类型帧重复绘制旧角速度而形成阶跃。旧文件没有这两列时仍按完整采样兼容读取。

五、串口参数
------------
默认 9600 baud，8 数据位、无校验、1 停止位（8N1）。
如板端修改波特率，请在“串口通讯”中同步修改。

六、地面站命令回传通道
----------------------
“串口通讯”页面使用 UTF-8/ASCII 文本命令，每条命令以 CRLF 结束。命令既可由
地面站直接写入已连接的 COM 口，也可写入已导入通讯软件的标准输入。外部通讯
软件向标准输出返回参数行或 WRGS: 校准回执，即可被地面站识别。

参数读取与修改：
GET
SET Kp_att_pitch=120.000
SETALL Kp_att_pitch=120.000,Kd_att_pitch=120.000

飞控返回参数时每个参数占一行。地面站会忽略 PARAM 前缀：
PARAM Kp_att_pitch=120.000
PARAM PWM_CENTER_PE9_US=1730

当前支持参数：Kp_att_pitch、Kp_att_roll、Kd_att_pitch、Kd_att_roll、
ATTITUDE_DEADBAND_PITCH_DEG、ATTITUDE_DEADBAND_ROLL_DEG、
PWM_AMPLITUDE_PE9_US、PWM_AMPLITUDE_PE11_US、PWM_AMPLITUDE_PD12_US、
PWM_AMPLITUDE_PD13_US、PWM_CENTER_PE9_US、PWM_CENTER_PE11_US、
PWM_CENTER_PD12_US、PWM_CENTER_PD13_US。

校准命令与回执：
ZEROCAL
WRGS:CONNECTED
WRGS:CALIB_STARTED
WRGS:CALIB_STEP,请保持水平静止
WRGS:CALIB_DONE
WRGS:CALIB_FAILED,失败原因

校准页面按“开始校准 → 物理指令 → 校准完成”显示状态。外部通讯软件若为普通
GUI 且不提供标准输入/输出桥接，仍会按设置自动启动，但必须增加上述命令桥接
接口后才能由地面站代发参数和校准命令。接收或成功发送 Roll/Pitch 的 Kp、Kd、
死区后，地面站会同步更新“串口通讯”参数表，文件命名立即直接使用表中的值。

外部软件协议发现与接管：
地面站的“检索协议并接管”先通过外部软件标准输入发送 GET，再监听标准输出。
识别到 CONNECTED、SERIAL OPEN、PORT OPEN、中文连接成功提示或任一有效 PARAM
参数行后，认为外部软件已建立板端协议；后续参数命令优先发送到外部软件标准
输入，标准输出中的板端回传会继续解析并显示。页面分别统计外部 RX/TX 行数。
除标准输入/输出外，地面站也会尝试识别普通 GUI 的窗口收发控件；完全自绘或不向 Windows 暴露控件的程序仍需公开接口。

HC-PC(V1.2.4) 及相似软件窗口适配：
HC-PC 不提供标准输入/输出桥接，地面站通过其 WinForms 窗口控件完成接管：以软件
自身“状态”标签判断板端是否连接；把命令写入发送框，关闭十六进制发送、启用发送
新行，再触发发送按钮；同时轮询接收框，把新增内容显示在地面站通讯记录并解析 PARAM。
对相似软件，会按“发送/Send/Write”按钮、文本框位置、连接状态标签或连接/断开按钮
进行通用匹配。此连接判断与地面站自身 COM 口完全独立。
