diff --git a/Src/freertos.c b/Src/freertos.c index 806343b..f6e1a25 100644 --- a/Src/freertos.c +++ b/Src/freertos.c @@ -131,9 +131,5 @@ void StartDefaultTask(void const *argument) /* Private application code --------------------------------------------------*/ /* USER CODE BEGIN Application */ -/** - * @brief ??,???????, - * ??????????applicatoin/robot_task.h??? - * - */ -/* USER CODE END Application */ + +/* USER CODE END Application */ \ No newline at end of file diff --git a/TODO.md b/TODO.md index da95fcc..ac04495 100644 --- a/TODO.md +++ b/TODO.md @@ -24,21 +24,9 @@ ### 待添加 -#### bsp_spi - -- [x] 待测试(BMI088,预计1.20前完成) - #### bsp_iic -- [x] 待测试(OLED,IST8310,预计1.20前完成) - -#### bsp_gpio - -- [x] 增加GPIO引脚的控制(有待商榷是否需要单独添加,HAL实际上已经提供较好的封装) - -#### bsp_usb - -- [ ] 增加usb的支持,用于虚拟串口或和PC进行高速通信 +- [ ] 添加10位地址的支持 #### bsp_blueteetch @@ -48,24 +36,12 @@ - [ ] 增加无线网络功能,方便调试和测试 -#### bsp_log - -- [ ] 在vscode中添加rtt viewer的查看窗口,提供一键启用的task.json - - - - --- - - - ## Module ### 待完成 -- [ ] 给所有模块增加Daemon 模块以提供离线和异常检测 - - [ ] 为键鼠/遥控器/ps手柄/视觉上位机等各种控制器提供一套统一的接口,把发来数据转化为标准的控制数据,包括底盘速度云台角度等等 - [ ] 给每个模块增加调试的条件编译,并增加bsp log的输出。或直接在运行时添加log等级,输出不同的信息。 @@ -84,13 +60,7 @@ #### imu -- [x] 增加角速度的反馈,并且能够获取加速度值(目前看来修改反馈数据类型定义即可) - -#### refereeUI - -- [x] 提供UI绘制封装 -- [x] 绘制电容剩余容量/当前底盘状态/当前云台状态/底盘位置/射表 -- [ ] 绘制视觉识别UI/识别状态/击打状态 +- [ ] 完善bmi088模块和算法的交互,添加异步量测更新的SO3上的IEKF #### ==master_machine== @@ -118,21 +88,17 @@ #### BMI088 -需要重写部分数据结构,并在bsp_spi完成之后移植到新的bsp上。(等待bsp_spi的测试) - -- [x] 重构imu模块 +- [ ] 完善和SO3 IEKF的交互,增加异步任务的唤醒和数据传递(IMU中断唤起任务) #### remote_control -- [x] 将键盘数据解析替换为位域操作(已完成,待测试) - -#### referee - -- [ ] 优化三个裁判系统模块的组织关系 +- [ ] 增加长按/短按检测 #### message_center - [ ] 增加队列剩余信息和数据时间戳的支持 +- [ ] 增加数据为空的处理 +- [ ] 提供直接传递指针的接口? #### can_comm @@ -140,7 +106,6 @@ #### controller -- [x] 增加前馈数据 - [ ] 将PID的初始化改写为PIDRegister的形式,在controller统一分配内存. #### user_lib @@ -151,7 +116,6 @@ - [ ] 增加3508和2006的开环零位校准函数 - [ ] 为实例增加低通滤波系数变量,使不同电机有不同的配置 -- [ ] 正反转标志位设置,需要修改反馈量和pid计算 #### LKmotor @@ -173,7 +137,7 @@ #### referee_communication -- [x] 增加裁判系统多机通信功能 +- [ ] 增加裁判系统多机通信功能 #### controller @@ -184,48 +148,25 @@ - [ ] 通过bsp_pwm添加支持 - - - - - - --- - - - - ## APP ### 待完成 +#### all app + - [ ] 增加调试的条件编译,使得在没有连接其他应用时也可以假装有那些应用而正常调试运行 -#### ==robot_cmd== - -- [ ] 键鼠控制 -- [x] 双板兼容(待测试) - -#### ==chassis== - -- [ ] 根据裁判系统的功率数据和超级电容,进行输出限幅 -- [x] 双板兼容(待测试) - #### ==shoot== - [ ] 增加卡弹检测和反转 -- [ ] 弹仓盖控制(需待servo_motor完成) -- [ ] 42mm发射机构兼容 - - ### 待优化 #### robot_cmd -- [x] 解耦各个应用的运行模式 -- [ ] 优化消息发布和接收性能 +- [ ] 优化消息发布和接收性能(若皆为异步并在robottask中执行,实际上可以只传递指针) #### gimbal @@ -233,8 +174,6 @@ #### chassis -- [ ] 根据电机的实际速度计算底盘的真实运动 +- [ ] 根据电机的实际速度计算底盘的真实运动(轮式里程计) - [ ] 若为双板,根据IMU的数据对电机实际速度进行融合 -#### shoot - diff --git a/application/chassis/chassis.c b/application/chassis/chassis.c index 0d70798..114fc3e 100644 --- a/application/chassis/chassis.c +++ b/application/chassis/chassis.c @@ -103,7 +103,7 @@ void ChassisInit() chassis_motor_config.controller_setting_init_config.motor_reverse_flag = MOTOR_DIRECTION_REVERSE; motor_rb = DJIMotorInit(&chassis_motor_config); - referee_data = Referee_Interactive_init(&huart6,&ui_data); // 裁判系统初始化 + referee_data = UITaskInit(&huart6,&ui_data); // 裁判系统初始化,会同时初始化UI SuperCap_Init_Config_s cap_conf = { .can_config = { diff --git a/application/robot_task.h b/application/robot_task.h index c7b1aa0..1b09e81 100644 --- a/application/robot_task.h +++ b/application/robot_task.h @@ -1,3 +1,4 @@ +/* 注意该文件应只用于任务初始化,只能被robot.c包含*/ #pragma once #include "FreeRTOS.h" @@ -46,8 +47,7 @@ void OSTaskInit() osThreadDef(uitask, StartUITASK, osPriorityNormal, 0, 512); uiTaskHandle = osThreadCreate(osThread(uitask), NULL); - // 若使用HT电机则取消本行注释,该接口会为注册了的电机设备创建线程 - // HTMotorControlInit(); + HTMotorControlInit(); // 没有注册HT电机则不会执行 } void StartINSTASK(void const *argument) @@ -102,10 +102,11 @@ void StartROBOTTASK(void const *argument) void StartUITASK(void const *argument) { - My_UI_init(); + MyUIInit(); while (1) { - Referee_Interactive_task(); // 每次给裁判系统发送完一包数据后,挂起一次,防止卡在裁判系统发送中,详见Referee_Interactive_task函数的refereeSend(); - osDelay(1); // 即使没有任何UI需要刷新,也挂起一次,防止卡在UITask中无法切换 + // 每给裁判系统发送一包数据会挂起一次,详见UITask函数的refereeSend() + UITask(); + osDelay(1); // 即使没有任何UI需要刷新,也挂起一次,防止卡在UITask中无法切换 } } diff --git a/modules/referee/referee.md b/modules/referee/referee.md index 395d999..e245a7c 100644 --- a/modules/referee/referee.md +++ b/modules/referee/referee.md @@ -4,12 +4,11 @@ 首先在chassis的初始化中调用裁判系统初始化函数,将要绘制的uidata的指针传递给接口,接口会返回裁判系统的反馈数据指针。然后,在refereeUItask里进行UI初始化,确定ui发送的目标并绘制初始化UI。完成后,uitask会以10hz的频率按顺序更新UI。 +## 如何绘制你的自定义UI?以绘制超级电容能量条为例 -## 如何绘制你的自定义UI?以绘制超级电容能量条为例: +UI的绘制包含初始化和TASK两个部分,初始化部分在`MyUIInit`函数中,TASK部分在`MyUIRefresh`函数中。 -UI的绘制包含初始化和TASK两个部分,初始化部分在`My_UI_init`函数中,TASK部分在`My_UI_Refresh`函数中。 - -### 初始化部分: +### 初始化部分 初始化部分的UI主要有两个目的:静态UI的绘制、为动态UI的绘制做准备。 @@ -22,7 +21,7 @@ Power:xxx Power为静态不变的,冒号后的xxx为变化的量。 为动态UI的准备如下: 绘制矩形方框内的初始能量条、绘制Power的初始值。 -### 绘制字符“Power:”: +### 绘制字符“Power:” 设置绘制用结构体,此处使用数组是因为需要绘制多个字符。本次绘制的字符为“Power:”,只是用到了第6个,即xxx[5]: @@ -33,7 +32,7 @@ static String_Data_t UI_State_sta[6]; // 静态 字符格式以及内容设置: ```c -Char_Draw(&UI_State_sta[5], "ss5", UI_Graph_ADD, 7, UI_Color_Green, 18, 2, 620, 230, "Power:"); +UICharDraw(&UI_State_sta[5], "ss5", UI_Graph_ADD, 7, UI_Color_Green, 18, 2, 620, 230, "Power:"); //各参数意义如下,函数定义中有详细注释: string String_Data类型变量指针,用于存放字符串数据 @@ -47,12 +46,10 @@ Char_Draw(&UI_State_sta[5], "ss5", UI_Graph_ADD, 7, UI_Color_Green, 18, 2, 620, *stringdata 字符串数据 //设置完毕后,使用“Char_ReFresh”发送即可: -Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[5]); +UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[5]); ``` - - -### 绘制能量框: +### 绘制能量框 定义一个图形类结构体,用于绘制能量框: @@ -63,54 +60,55 @@ static Graph_Data_t UI_energy_line[3]; // 电容能量条 能量框参数设置以及发送函数: ```c -Rectangle_Draw(&UI_energy_line[0],"ss6", UI_Graph_ADD, 7, UI_Color_Green,20, 720, 220, 820, 240) -UI_ReFresh(&referee_recv_info->referee_id, 1,UI_energy_line[0]); +UIRectangleDraw(&UI_energy_line[0],"ss6", UI_Graph_ADD, 7, UI_Color_Green,20, 720, 220, 820, 240) +UIRefresh(&referee_recv_info->referee_id, 1,UI_energy_line[0]); ``` -### 绘制power的初始值: +### 绘制power的初始值 ```c -Float_Draw(&UI_Energy[1], "sd5", UI_Graph_ADD, 8, UI_Color_Green, 18, 2, 2, 750, 230, 24000); +UIFloatDraw(&UI_Energy[1], "sd5", UI_Graph_ADD, 8, UI_Color_Green, 18, 2, 2, 750, 230, 24000); ``` -### 绘制能量条的初始值: +### 绘制能量条的初始值 ```c -Line_Draw(&UI_Energy[2], "sd6", UI_Graph_ADD, 8, UI_Color_Pink, 30, 720, 160, 1020, 160); +UILineDraw(&UI_Energy[2], "sd6", UI_Graph_ADD, 8, UI_Color_Pink, 30, 720, 160, 1020, 160); ``` 将两个图形打包发送 ``` -UI_ReFresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); +UIRefresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); ``` ## TASK部分 task中UI处于动态变化,此时需要检测所画的UI是否发生变化,若发生变化,则刷新对应UI。 -### 添加变化检测: + +### 添加变化检测 绘制功率部分UI,我们需要的是`Chassis_Power_Data_s`中的数据,我们定义`Chassis_Power_Data_s Chassis_Power_Data;`和`Chassis_Power_Data_s Chassis_last_Power_Data;`分别存储此次和上次的对应数据,本次和上次对应检测变化的需求。 ```c typedef struct { - Referee_Interactive_Flag_t Referee_Interactive_Flag; - // 为UI绘制以及交互数据所用 - chassis_mode_e chassis_mode; // 底盘模式 - gimbal_mode_e gimbal_mode; // 云台模式 - shoot_mode_e shoot_mode; // 发射模式设置 - friction_mode_e friction_mode; // 摩擦轮关闭 - lid_mode_e lid_mode; // 弹舱盖打开 - Chassis_Power_Data_s Chassis_Power_Data; // 功率控制 + Referee_Interactive_Flag_t Referee_Interactive_Flag; + // 为UI绘制以及交互数据所用 + chassis_mode_e chassis_mode; // 底盘模式 + gimbal_mode_e gimbal_mode; // 云台模式 + shoot_mode_e shoot_mode; // 发射模式设置 + friction_mode_e friction_mode; // 摩擦轮关闭 + lid_mode_e lid_mode; // 弹舱盖打开 + Chassis_Power_Data_s Chassis_Power_Data; // 功率控制 - // 上一次的模式,用于flag判断 - chassis_mode_e chassis_last_mode; - gimbal_mode_e gimbal_last_mode; - shoot_mode_e shoot_last_mode; - friction_mode_e friction_last_mode; - lid_mode_e lid_last_mode; - Chassis_Power_Data_s Chassis_last_Power_Data; + // 上一次的模式,用于flag判断 + chassis_mode_e chassis_last_mode; + gimbal_mode_e gimbal_last_mode; + shoot_mode_e shoot_last_mode; + friction_mode_e friction_last_mode; + lid_mode_e lid_last_mode; + Chassis_Power_Data_s Chassis_last_Power_Data; } Referee_Interactive_info_t; ``` @@ -120,17 +118,19 @@ typedef struct ``` typedef struct { - uint32_t chassis_flag : 1; - uint32_t gimbal_flag : 1; - uint32_t shoot_flag : 1; - uint32_t lid_flag : 1; - uint32_t friction_flag : 1; - uint32_t Power_flag : 1; + uint32_t chassis_flag : 1; + uint32_t gimbal_flag : 1; + uint32_t shoot_flag : 1; + uint32_t lid_flag : 1; + uint32_t friction_flag : 1; + uint32_t Power_flag : 1; } Referee_Interactive_Flag_t; ``` + 在变化检测函数中增加对应判断,由于voltage和能量条的变化对应同一个参数`Chassis_last_Power_Data.chassis_power_mx`的变化,所以只需要一个参数即可: + ``` -static void Mode_Change_Check(Referee_Interactive_info_t *_Interactive_data) +static void UIChangeCheck(Referee_Interactive_info_t *_Interactive_data) { if (_Interactive_data->chassis_mode != _Interactive_data->chassis_last_mode) ...... @@ -148,52 +148,49 @@ static void Mode_Change_Check(Referee_Interactive_info_t *_Interactive_data) } } ``` -### 根据功率的变化绘制UI: + +### 根据功率的变化绘制UI 在绘制变化的UI时,由于初始化时已经使用`UI_Graph_ADD`操作添加了UI,所以在绘制时,需要使用`UI_Graph_Change`操作,以便于刷新UI。 同时,完成UI刷新后,需要将对应的flag置0,以便于下次检测变化 + ``` if (_Interactive_data->Referee_Interactive_Flag.Power_flag == 1) { - Float_Draw(&UI_Energy[1], "sd5", UI_Graph_Change, 8, UI_Color_Green, 18, 2, 2, 750, 230, _Interactive_data->Chassis_Power_Data.chassis_power_mx * 1000); - Line_Draw(&UI_Energy[2], "sd6", UI_Graph_Change, 8, UI_Color_Pink, 30, 720, 160, (uint32_t)750 + _Interactive_data->Chassis_Power_Data.chassis_power_mx * 30, 160); - UI_ReFresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); - _Interactive_data->Referee_Interactive_Flag.Power_flag = 0; + UIFloatDraw(&UI_Energy[1], "sd5", UI_Graph_Change, 8, UI_Color_Green, 18, 2, 2, 750, 230, _Interactive_data->Chassis_Power_Data.chassis_power_mx * 1000); + UILineDraw(&UI_Energy[2], "sd6", UI_Graph_Change, 8, UI_Color_Pink, 30, 720, 160, (uint32_t)750 + _Interactive_data->Chassis_Power_Data.chassis_power_mx * 30, 160); + UIRefresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); + _Interactive_data->Referee_Interactive_Flag.Power_flag = 0; } ``` +--- - - - - -# -# -# 若需要进行多机交互,可增加此函数: + ```c void CommBetweenRobotSend(referee_id_t *_id, robot_interactive_data_t *_data) { - Communicate_SendData_t SendData; - uint8_t temp_datalength = Interactive_Data_LEN_Head + Communicate_Data_LEN; // 计算交互数据长度 6+n,n为交互数据长度 + Communicate_SendData_t SendData; + uint8_t temp_datalength = Interactive_Data_LEN_Head + Communicate_Data_LEN; // 计算交互数据长度 6+n,n为交互数据长度 - SendData.FrameHeader.SOF = REFEREE_SOF; - SendData.FrameHeader.DataLength = temp_datalength; - SendData.FrameHeader.Seq = UI_Seq; - SendData.FrameHeader.CRC8 = Get_CRC8_Check_Sum((uint8_t *)&SendData, LEN_CRC8, 0xFF); + SendData.FrameHeader.SOF = REFEREE_SOF; + SendData.FrameHeader.DataLength = temp_datalength; + SendData.FrameHeader.Seq = UI_Seq; + SendData.FrameHeader.CRC8 = Get_CRC8_Check_Sum((uint8_t *)&SendData, LEN_CRC8, 0xFF); - SendData.CmdID = ID_student_interactive; + SendData.CmdID = ID_student_interactive; - SendData.datahead.data_cmd_id = Communicate_Data_ID; - SendData.datahead.sender_ID = _id->Robot_ID; - SendData.datahead.receiver_ID = _id->Receiver_Robot_ID; + SendData.datahead.data_cmd_id = Communicate_Data_ID; + SendData.datahead.sender_ID = _id->Robot_ID; + SendData.datahead.receiver_ID = _id->Receiver_Robot_ID; - SendData.Data = *_data; + SendData.Data = *_data; - SendData.frametail = Get_CRC16_Check_Sum((uint8_t *)&SendData, LEN_HEADER + LEN_CMDID + temp_datalength, 0xFFFF); + SendData.frametail = Get_CRC16_Check_Sum((uint8_t *)&SendData, LEN_HEADER + LEN_CMDID + temp_datalength, 0xFFFF); - RefereeSend((uint8_t *)&SendData, LEN_HEADER + LEN_CMDID + temp_datalength + LEN_TAIL); // 发送 - UI_Seq++; // 包序号+1 + RefereeSend((uint8_t *)&SendData, LEN_HEADER + LEN_CMDID + temp_datalength + LEN_TAIL); // 发送 + UI_Seq++; // 包序号+1 } -``` \ No newline at end of file +``` diff --git a/modules/referee/referee_UI.c b/modules/referee/referee_UI.c index b6d6649..55ce3c6 100644 --- a/modules/referee/referee_UI.c +++ b/modules/referee/referee_UI.c @@ -57,8 +57,8 @@ void UIDelete(referee_id_t *_id, uint8_t Del_Operate, uint8_t Del_Layer) End_x、End_y 终点xy坐标 **********************************************************************************************************/ -void Line_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y) +void UILineDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) // 填充至‘0’为止 @@ -91,8 +91,8 @@ void Line_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, u Start_x、Start_y 起点xy坐标 End_x、End_y 对角顶点xy坐标 **********************************************************************************************************/ -void Rectangle_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y) +void UIRectangleDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) @@ -126,8 +126,8 @@ void Rectangle_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Opera Graph_Radius 圆形半径 **********************************************************************************************************/ -void Circle_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t Graph_Radius) +void UICircleDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t Graph_Radius) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) @@ -159,8 +159,8 @@ void Circle_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, Start_x、Start_y 圆心xy坐标 End_x、End_y xy半轴长度 **********************************************************************************************************/ -void Elliptical_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t end_x, uint32_t end_y) +void UIOvalDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t end_x, uint32_t end_y) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) @@ -196,9 +196,9 @@ void Elliptical_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Oper x_Length,y_Length xy半轴长度 **********************************************************************************************************/ -void Arc_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_StartAngle, uint32_t Graph_EndAngle, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, - uint32_t end_x, uint32_t end_y) +void UIArcDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_StartAngle, uint32_t Graph_EndAngle, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, + uint32_t end_x, uint32_t end_y) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) @@ -236,8 +236,8 @@ void Arc_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, ui end_y=(a>>21)&0x7FF; **********************************************************************************************************/ -void Float_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Size, uint32_t Graph_Digit, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Float) +void UIFloatDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Size, uint32_t Graph_Digit, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Float) { int i; @@ -274,8 +274,8 @@ void Float_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, end_x=(a>>10)&0x7FF; end_y=(a>>21)&0x7FF; **********************************************************************************************************/ -void Integer_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Integer) +void UIIntDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Integer) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) @@ -311,8 +311,8 @@ void Integer_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate fmt需要显示的字符串 此函数的实现和具体使用类似于printf函数 **********************************************************************************************************/ -void Char_Draw(String_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, char *fmt, ...) +void UICharDraw(String_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, char *fmt, ...) { int i; for (i = 0; i < 3 && graphname[i] != '\0'; i++) @@ -345,7 +345,7 @@ void Char_Draw(String_Data_t *graph, char graphname[3], uint32_t Graph_Operate, ... 图形变量参数 Tips::该函数只能推送1,2,5,7个图形,其他数目协议未涉及 */ -void UI_ReFresh(referee_id_t *_id, int cnt, ...) +void UIGraphRefresh(referee_id_t *_id, int cnt, ...) { UI_GraphReFresh_t UI_GraphReFresh_data; Graph_Data_t graphData; @@ -390,13 +390,13 @@ void UI_ReFresh(referee_id_t *_id, int cnt, ...) memcpy(buffer + (LEN_HEADER + LEN_CMDID + Interactive_Data_LEN_Head + UI_Operate_LEN_PerDraw * i), (uint8_t *)&graphData, UI_Operate_LEN_PerDraw); } Append_CRC16_Check_Sum(buffer, temp_datalength); - RefereeSend(buffer, temp_datalength); + RefereeSend(buffer, temp_datalength); va_end(ap); // 结束可变参数的获取 } /************************************************UI推送字符(使更改生效)*********************************/ -void Char_ReFresh(referee_id_t *_id, String_Data_t string_Data) +void UICharRefresh(referee_id_t *_id, String_Data_t string_Data) { static UI_CharReFresh_t UI_CharReFresh_data; diff --git a/modules/referee/referee_UI.h b/modules/referee/referee_UI.h index cc7125c..4fba98b 100644 --- a/modules/referee/referee_UI.h +++ b/modules/referee/referee_UI.h @@ -40,33 +40,33 @@ typedef struct void UIDelete(referee_id_t *_id, uint8_t Del_Operate, uint8_t Del_Layer); -void Line_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y); +void UILineDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y); -void Rectangle_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y); +void UIRectangleDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t End_x, uint32_t End_y); -void Circle_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t Graph_Radius); +void UICircleDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t Graph_Radius); -void Elliptical_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t end_x, uint32_t end_y); +void UIOvalDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, uint32_t end_x, uint32_t end_y); -void Arc_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_StartAngle, uint32_t Graph_EndAngle, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, - uint32_t end_x, uint32_t end_y); +void UIArcDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_StartAngle, uint32_t Graph_EndAngle, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, + uint32_t end_x, uint32_t end_y); -void Float_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Size, uint32_t Graph_Digit, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Float); +void UIFloatDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Size, uint32_t Graph_Digit, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Float); -void Integer_Draw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Integer); +void UIIntDraw(Graph_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, int32_t Graph_Integer); -void Char_Draw(String_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, - uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, char *fmt, ...); +void UICharDraw(String_Data_t *graph, char graphname[3], uint32_t Graph_Operate, uint32_t Graph_Layer, uint32_t Graph_Color, + uint32_t Graph_Size, uint32_t Graph_Width, uint32_t Start_x, uint32_t Start_y, char *fmt, ...); -void UI_ReFresh(referee_id_t *_id, int cnt, ...); +void UIGraphRefresh(referee_id_t *_id, int cnt, ...); -void Char_ReFresh(referee_id_t *_id, String_Data_t string_Data); +void UICharRefresh(referee_id_t *_id, String_Data_t string_Data); #endif diff --git a/modules/referee/referee_task.c b/modules/referee/referee_task.c index 4cfda1e..7971265 100644 --- a/modules/referee/referee_task.c +++ b/modules/referee/referee_task.c @@ -35,13 +35,11 @@ static void DeterminRobotID() referee_recv_info->referee_id.Receiver_Robot_ID = 0; } -static void My_UI_Refresh(referee_info_t *referee_recv_info, Referee_Interactive_info_t *_Interactive_data); -static void Mode_Change_Check(Referee_Interactive_info_t *_Interactive_data); // 模式切换检测 +static void MyUIRefresh(referee_info_t *referee_recv_info, Referee_Interactive_info_t *_Interactive_data); +static void UIChangeCheck(Referee_Interactive_info_t *_Interactive_data); // 模式切换检测 +static void RobotModeTest(Referee_Interactive_info_t *_Interactive_data); // 测试用函数,实现模式自动变化 -// syhtod 正式上车后需删除 -static void robot_mode_change(Referee_Interactive_info_t *_Interactive_data); // 测试用函数,实现模式自动变化 - -referee_info_t *Referee_Interactive_init(UART_HandleTypeDef *referee_usart_handle, Referee_Interactive_info_t *UI_data) +referee_info_t *UITaskInit(UART_HandleTypeDef *referee_usart_handle, Referee_Interactive_info_t *UI_data) { referee_recv_info = RefereeInit(referee_usart_handle); // 初始化裁判系统的串口,并返回裁判系统反馈数据指针 Interactive_data = UI_data; // 获取UI绘制需要的机器人状态数据 @@ -49,10 +47,10 @@ referee_info_t *Referee_Interactive_init(UART_HandleTypeDef *referee_usart_handl return referee_recv_info; } -void Referee_Interactive_task() +void UITask() { - robot_mode_change(Interactive_data); // 测试用函数,实现模式自动变化 - My_UI_Refresh(referee_recv_info, Interactive_data); + RobotModeTest(Interactive_data); // 测试用函数,实现模式自动变化,用于检查该任务和裁判系统是否连接正常 + MyUIRefresh(referee_recv_info, Interactive_data); } static Graph_Data_t UI_shoot_line[10]; // 射击准线 @@ -61,66 +59,67 @@ static String_Data_t UI_State_sta[6]; // 机器人状态,静态只需画一次 static String_Data_t UI_State_dyn[6]; // 机器人状态,动态先add才能change static uint32_t shoot_line_location[10] = {540, 960, 490, 515, 565}; -void My_UI_init() +void MyUIInit() { if (!referee_recv_info->init_flag) vTaskDelete(NULL); // 如果没有初始化裁判系统则直接删除ui任务 while (referee_recv_info->GameRobotState.robot_id == 0) osDelay(100); // 若还未收到裁判系统数据,等待一段时间后再检查 - - DeterminRobotID(); // 确定ui要发送到的目标客户端 + + DeterminRobotID(); // 确定ui要发送到的目标客户端 UIDelete(&referee_recv_info->referee_id, UI_Data_Del_ALL, 0); // 清空UI // 绘制发射基准线 - Line_Draw(&UI_shoot_line[0], "sl0", UI_Graph_ADD, 7, UI_Color_White, 3, 710, shoot_line_location[0], 1210, shoot_line_location[0]); - Line_Draw(&UI_shoot_line[1], "sl1", UI_Graph_ADD, 7, UI_Color_White, 3, shoot_line_location[1], 340, shoot_line_location[1], 740); - Line_Draw(&UI_shoot_line[2], "sl2", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[2], 1110, shoot_line_location[2]); - Line_Draw(&UI_shoot_line[3], "sl3", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[3], 1110, shoot_line_location[3]); - Line_Draw(&UI_shoot_line[4], "sl4", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[4], 1110, shoot_line_location[4]); - UI_ReFresh(&referee_recv_info->referee_id, 5, UI_shoot_line[0], UI_shoot_line[1], UI_shoot_line[2], UI_shoot_line[3], UI_shoot_line[4]); + UILineDraw(&UI_shoot_line[0], "sl0", UI_Graph_ADD, 7, UI_Color_White, 3, 710, shoot_line_location[0], 1210, shoot_line_location[0]); + UILineDraw(&UI_shoot_line[1], "sl1", UI_Graph_ADD, 7, UI_Color_White, 3, shoot_line_location[1], 340, shoot_line_location[1], 740); + UILineDraw(&UI_shoot_line[2], "sl2", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[2], 1110, shoot_line_location[2]); + UILineDraw(&UI_shoot_line[3], "sl3", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[3], 1110, shoot_line_location[3]); + UILineDraw(&UI_shoot_line[4], "sl4", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[4], 1110, shoot_line_location[4]); + UIGraphRefresh(&referee_recv_info->referee_id, 5, UI_shoot_line[0], UI_shoot_line[1], UI_shoot_line[2], UI_shoot_line[3], UI_shoot_line[4]); // 绘制车辆状态标志指示 - Char_Draw(&UI_State_sta[0], "ss0", UI_Graph_ADD, 8, UI_Color_Main, 15, 2, 150, 750, "chassis:"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[0]); - Char_Draw(&UI_State_sta[1], "ss1", UI_Graph_ADD, 8, UI_Color_Yellow, 15, 2, 150, 700, "gimbal:"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[1]); - Char_Draw(&UI_State_sta[2], "ss2", UI_Graph_ADD, 8, UI_Color_Orange, 15, 2, 150, 650, "shoot:"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[2]); - Char_Draw(&UI_State_sta[3], "ss3", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 150, 600, "frict:"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[3]); - Char_Draw(&UI_State_sta[4], "ss4", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 150, 550, "lid:"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[4]); + UICharDraw(&UI_State_sta[0], "ss0", UI_Graph_ADD, 8, UI_Color_Main, 15, 2, 150, 750, "chassis:"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[0]); + UICharDraw(&UI_State_sta[1], "ss1", UI_Graph_ADD, 8, UI_Color_Yellow, 15, 2, 150, 700, "gimbal:"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[1]); + UICharDraw(&UI_State_sta[2], "ss2", UI_Graph_ADD, 8, UI_Color_Orange, 15, 2, 150, 650, "shoot:"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[2]); + UICharDraw(&UI_State_sta[3], "ss3", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 150, 600, "frict:"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[3]); + UICharDraw(&UI_State_sta[4], "ss4", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 150, 550, "lid:"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[4]); // 绘制车辆状态标志,动态 // 由于初始化时xxx_last_mode默认为0,所以此处对应UI也应该设为0时对应的UI,防止模式不变的情况下无法置位flag,导致UI无法刷新 - Char_Draw(&UI_State_dyn[0], "sd0", UI_Graph_ADD, 8, UI_Color_Main, 15, 2, 270, 750, "zeroforce"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[0]); - Char_Draw(&UI_State_dyn[1], "sd1", UI_Graph_ADD, 8, UI_Color_Yellow, 15, 2, 270, 700, "zeroforce"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[1]); - Char_Draw(&UI_State_dyn[2], "sd2", UI_Graph_ADD, 8, UI_Color_Orange, 15, 2, 270, 650, "off"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[2]); - Char_Draw(&UI_State_dyn[3], "sd3", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 270, 600, "off"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[3]); - Char_Draw(&UI_State_dyn[4], "sd4", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 270, 550, "open "); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[4]); + UICharDraw(&UI_State_dyn[0], "sd0", UI_Graph_ADD, 8, UI_Color_Main, 15, 2, 270, 750, "zeroforce"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[0]); + UICharDraw(&UI_State_dyn[1], "sd1", UI_Graph_ADD, 8, UI_Color_Yellow, 15, 2, 270, 700, "zeroforce"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[1]); + UICharDraw(&UI_State_dyn[2], "sd2", UI_Graph_ADD, 8, UI_Color_Orange, 15, 2, 270, 650, "off"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[2]); + UICharDraw(&UI_State_dyn[3], "sd3", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 270, 600, "off"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[3]); + UICharDraw(&UI_State_dyn[4], "sd4", UI_Graph_ADD, 8, UI_Color_Pink, 15, 2, 270, 550, "open "); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[4]); // 底盘功率显示,静态 - Char_Draw(&UI_State_sta[5], "ss5", UI_Graph_ADD, 7, UI_Color_Green, 18, 2, 620, 230, "Power:"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_sta[5]); + UICharDraw(&UI_State_sta[5], "ss5", UI_Graph_ADD, 7, UI_Color_Green, 18, 2, 620, 230, "Power:"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_sta[5]); // 能量条框 - Rectangle_Draw(&UI_Energy[0], "ss6", UI_Graph_ADD, 7, UI_Color_Green, 2, 720, 140, 1220, 180); - UI_ReFresh(&referee_recv_info->referee_id, 1, UI_Energy[0]); + UIRectangleDraw(&UI_Energy[0], "ss6", UI_Graph_ADD, 7, UI_Color_Green, 2, 720, 140, 1220, 180); + UIGraphRefresh(&referee_recv_info->referee_id, 1, UI_Energy[0]); // 底盘功率显示,动态 - Float_Draw(&UI_Energy[1], "sd5", UI_Graph_ADD, 8, UI_Color_Green, 18, 2, 2, 750, 230, 24000); + UIFloatDraw(&UI_Energy[1], "sd5", UI_Graph_ADD, 8, UI_Color_Green, 18, 2, 2, 750, 230, 24000); // 能量条初始状态 - Line_Draw(&UI_Energy[2], "sd6", UI_Graph_ADD, 8, UI_Color_Pink, 30, 720, 160, 1020, 160); - UI_ReFresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); + UILineDraw(&UI_Energy[2], "sd6", UI_Graph_ADD, 8, UI_Color_Pink, 30, 720, 160, 1020, 160); + UIGraphRefresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); } +// 测试用函数,实现模式自动变化,用于检查该任务和裁判系统是否连接正常 static uint8_t count = 0; static uint16_t count1 = 0; -static void robot_mode_change(Referee_Interactive_info_t *_Interactive_data) // 测试用函数,实现模式自动变化 +static void RobotModeTest(Referee_Interactive_info_t *_Interactive_data) // 测试用函数,实现模式自动变化 { count++; if (count >= 50) @@ -174,29 +173,29 @@ static void robot_mode_change(Referee_Interactive_info_t *_Interactive_data) // } } -static void My_UI_Refresh(referee_info_t *referee_recv_info, Referee_Interactive_info_t *_Interactive_data) +static void MyUIRefresh(referee_info_t *referee_recv_info, Referee_Interactive_info_t *_Interactive_data) { - Mode_Change_Check(_Interactive_data); + UIChangeCheck(_Interactive_data); // chassis if (_Interactive_data->Referee_Interactive_Flag.chassis_flag == 1) { switch (_Interactive_data->chassis_mode) { case CHASSIS_ZERO_FORCE: - Char_Draw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "zeroforce"); + UICharDraw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "zeroforce"); break; case CHASSIS_ROTATE: - Char_Draw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "rotate "); + UICharDraw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "rotate "); // 此处注意字数对齐问题,字数相同才能覆盖掉 break; case CHASSIS_NO_FOLLOW: - Char_Draw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "nofollow "); + UICharDraw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "nofollow "); break; case CHASSIS_FOLLOW_GIMBAL_YAW: - Char_Draw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "follow "); + UICharDraw(&UI_State_dyn[0], "sd0", UI_Graph_Change, 8, UI_Color_Main, 15, 2, 270, 750, "follow "); break; } - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[0]); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[0]); _Interactive_data->Referee_Interactive_Flag.chassis_flag = 0; } // gimbal @@ -206,50 +205,50 @@ static void My_UI_Refresh(referee_info_t *referee_recv_info, Referee_Interactive { case GIMBAL_ZERO_FORCE: { - Char_Draw(&UI_State_dyn[1], "sd1", UI_Graph_Change, 8, UI_Color_Yellow, 15, 2, 270, 700, "zeroforce"); + UICharDraw(&UI_State_dyn[1], "sd1", UI_Graph_Change, 8, UI_Color_Yellow, 15, 2, 270, 700, "zeroforce"); break; } case GIMBAL_FREE_MODE: { - Char_Draw(&UI_State_dyn[1], "sd1", UI_Graph_Change, 8, UI_Color_Yellow, 15, 2, 270, 700, "free "); + UICharDraw(&UI_State_dyn[1], "sd1", UI_Graph_Change, 8, UI_Color_Yellow, 15, 2, 270, 700, "free "); break; } case GIMBAL_GYRO_MODE: { - Char_Draw(&UI_State_dyn[1], "sd1", UI_Graph_Change, 8, UI_Color_Yellow, 15, 2, 270, 700, "gyro "); + UICharDraw(&UI_State_dyn[1], "sd1", UI_Graph_Change, 8, UI_Color_Yellow, 15, 2, 270, 700, "gyro "); break; } } - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[1]); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[1]); _Interactive_data->Referee_Interactive_Flag.gimbal_flag = 0; } // shoot if (_Interactive_data->Referee_Interactive_Flag.shoot_flag == 1) { - Char_Draw(&UI_State_dyn[2], "sd2", UI_Graph_Change, 8, UI_Color_Pink, 15, 2, 270, 650, _Interactive_data->shoot_mode == SHOOT_ON ? "on " : "off"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[2]); + UICharDraw(&UI_State_dyn[2], "sd2", UI_Graph_Change, 8, UI_Color_Pink, 15, 2, 270, 650, _Interactive_data->shoot_mode == SHOOT_ON ? "on " : "off"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[2]); _Interactive_data->Referee_Interactive_Flag.shoot_flag = 0; } // friction if (_Interactive_data->Referee_Interactive_Flag.friction_flag == 1) { - Char_Draw(&UI_State_dyn[3], "sd3", UI_Graph_Change, 8, UI_Color_Pink, 15, 2, 270, 600, _Interactive_data->friction_mode == FRICTION_ON ? "on " : "off"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[3]); + UICharDraw(&UI_State_dyn[3], "sd3", UI_Graph_Change, 8, UI_Color_Pink, 15, 2, 270, 600, _Interactive_data->friction_mode == FRICTION_ON ? "on " : "off"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[3]); _Interactive_data->Referee_Interactive_Flag.friction_flag = 0; } // lid if (_Interactive_data->Referee_Interactive_Flag.lid_flag == 1) { - Char_Draw(&UI_State_dyn[4], "sd4", UI_Graph_Change, 8, UI_Color_Pink, 15, 2, 270, 550, _Interactive_data->lid_mode == LID_OPEN ? "open " : "close"); - Char_ReFresh(&referee_recv_info->referee_id, UI_State_dyn[4]); + UICharDraw(&UI_State_dyn[4], "sd4", UI_Graph_Change, 8, UI_Color_Pink, 15, 2, 270, 550, _Interactive_data->lid_mode == LID_OPEN ? "open " : "close"); + UICharRefresh(&referee_recv_info->referee_id, UI_State_dyn[4]); _Interactive_data->Referee_Interactive_Flag.lid_flag = 0; } // power if (_Interactive_data->Referee_Interactive_Flag.Power_flag == 1) { - Float_Draw(&UI_Energy[1], "sd5", UI_Graph_Change, 8, UI_Color_Green, 18, 2, 2, 750, 230, _Interactive_data->Chassis_Power_Data.chassis_power_mx * 1000); - Line_Draw(&UI_Energy[2], "sd6", UI_Graph_Change, 8, UI_Color_Pink, 30, 720, 160, (uint32_t)750 + _Interactive_data->Chassis_Power_Data.chassis_power_mx * 30, 160); - UI_ReFresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); + UIFloatDraw(&UI_Energy[1], "sd5", UI_Graph_Change, 8, UI_Color_Green, 18, 2, 2, 750, 230, _Interactive_data->Chassis_Power_Data.chassis_power_mx * 1000); + UILineDraw(&UI_Energy[2], "sd6", UI_Graph_Change, 8, UI_Color_Pink, 30, 720, 160, (uint32_t)750 + _Interactive_data->Chassis_Power_Data.chassis_power_mx * 30, 160); + UIGraphRefresh(&referee_recv_info->referee_id, 2, UI_Energy[1], UI_Energy[2]); _Interactive_data->Referee_Interactive_Flag.Power_flag = 0; } } @@ -260,7 +259,7 @@ static void My_UI_Refresh(referee_info_t *referee_recv_info, Referee_Interactive * @retval none * @attention */ -static void Mode_Change_Check(Referee_Interactive_info_t *_Interactive_data) +static void UIChangeCheck(Referee_Interactive_info_t *_Interactive_data) { if (_Interactive_data->chassis_mode != _Interactive_data->chassis_last_mode) { diff --git a/modules/referee/referee_task.h b/modules/referee/referee_task.h index c6c8ff2..1eec04b 100644 --- a/modules/referee/referee_task.h +++ b/modules/referee/referee_task.h @@ -8,18 +8,18 @@ * @brief 初始化裁判系统交互任务(UI和多机通信) * */ -referee_info_t *Referee_Interactive_init(UART_HandleTypeDef *referee_usart_handle, Referee_Interactive_info_t *UI_data); +referee_info_t *UITaskInit(UART_HandleTypeDef *referee_usart_handle, Referee_Interactive_info_t *UI_data); /** * @brief 在referee task之前调用,添加在freertos.c中 * */ -void My_UI_init(); +void MyUIInit(); /** * @brief 裁判系统交互任务(UI和多机通信) * */ -void Referee_Interactive_task(); +void UITask(); #endif // REFEREE_H