/* robot_cmd_task.h - 图传键鼠数据结构 keyboard_data_t(0x0304 解析结果) */ #ifndef ROBOT_CMD_TASK_H #define ROBOT_CMD_TASK_H #include #include "robot_typedef.h" /* 图传键鼠数据(0x0304 解析) */ typedef struct { int16_t mouse_rl; int16_t mouse_du; int16_t mouse_wheel; uint8_t mouse_key_l; uint8_t mouse_key_r; uint8_t key_w, key_s, key_a, key_d; uint8_t key_shift, key_ctrl, key_q, key_e; uint8_t key_alpha1, key_alpha2; /* 边沿检测 */ uint8_t key_last_q, key_last_e, key_last_shift, key_last_ctrl; uint8_t key_push_q, key_push_e, key_push_shift, key_push_ctrl; uint32_t last_tick; } keyboard_data_t; extern keyboard_data_t keyboard_data; /* ---- 键鼠来源合并视图(2026-10-16) ---- * 客户端键鼠既可能从裁判系统 0x0304 进来,也可能从 USART3 那 18 字节帧进来 * (官方 18 字节控制帧里就带鼠标与按键,由 dr16 解析成 dr16.mouse_rl / dr16.key_w 等)。 * robot_cmd_task 每周期把两路合并到下面这个视图: * 云台/发射控制 与 c_comm_task 的底盘摇杆合成 都读它, * 避免两处各判一次出现"云台跟鼠标、底盘却还在收遥控器原始摇杆"。 */ extern keyboard_data_t keyboard_merged; /* 合并后的键鼠数据(0x0304 优先) */ extern uint8_t keyboard_merged_online; /* 1=键鼠在控(0x0304 在线 或 帧内键鼠有动作) */ #endif