键鼠控制(此前 WASD 无反应): - 云台 robot_cmd_task:0x0304 与 USART3 帧内键鼠合并为共享视图 keyboard_merged(0x0304 优先); 键鼠模式由帧内键鼠动作进入,动云台左摇杆退出 - c_comm_task/c_comm:键鼠在控时底盘摇杆由 WASD+鼠标合成,改读共享视图(此前只认 0x0304) - dr16/调试输出:新增帧内键鼠原始字节诊断(key_lo/key_hi/mouse_*/s1/frames) 自定义UI(底盘板经裁判系统 USART6 绘制到选手端): - 新增 底盘/modules/comms/referee_ui.c|h:15 字节图形组包(带编译期断言), v5 卡片式 HUD = 俯仰梯(pitch) + 罗盘刻度带(底盘朝向) + 预估底盘功率 + 超级电容 + 摩擦轮 L/R 转速 + 小陀螺状态,yaw 在刻度带右侧;5Hz 刷新,约 50 图元/8 包 - referee.c 新增 referee_send_frame()(cmd 0x0301 机器人交互数据,CRC8+CRC16,USART6 TX DMA) - 新增 CToC 0x1B9:云台把 pitch 与摩擦轮转速带给底盘(底盘本地没有这两个量) - 版式避开官方保留区:顶部比分条/左下小地图/右下战车模块/中部两块官方保留 验证:云台 Code=99540 RO=1764 RW=420 ZI=62572;底盘 Code=99452 RO=1928 RW=416 ZI=62584;均 0 错误 0 警告。 未做实机验证(当前无板/无图传);UI 协议常量(UI_RECEIVER_ID/UI_SEND_HZ)与版式坐标集中在 referee_ui.h 宏区,便于按协议 PDF 一处校正。
37 lines
1.4 KiB
C
37 lines
1.4 KiB
C
/* robot_cmd_task.h - 图传键鼠数据结构 keyboard_data_t(0x0304 解析结果) */
|
|
#ifndef ROBOT_CMD_TASK_H
|
|
#define ROBOT_CMD_TASK_H
|
|
|
|
#include <stdint.h>
|
|
#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
|