根据协议修改文件结构
This commit is contained in:
parent
3db2a20a0e
commit
162044889f
|
@ -11,8 +11,8 @@ static USARTInstance *referee_usart_instance;
|
||||||
|
|
||||||
/**************裁判系统数据******************/
|
/**************裁判系统数据******************/
|
||||||
static referee_info_t referee_info;
|
static referee_info_t referee_info;
|
||||||
static uint8_t Judge_Self_ID; // 当前机器人的ID
|
// static uint8_t Judge_Self_ID; // 当前机器人的ID
|
||||||
static uint16_t Judge_SelfClient_ID; // 发送者机器人对应的客户端ID
|
// static uint16_t Judge_SelfClient_ID; // 发送者机器人对应的客户端ID
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 读取裁判数据,中断中读取保证速度
|
* @brief 读取裁判数据,中断中读取保证速度
|
||||||
|
@ -23,9 +23,7 @@ static uint16_t Judge_SelfClient_ID; // 发送者机器人对应的客户端ID
|
||||||
static void JudgeReadData(uint8_t *ReadFromUsart)
|
static void JudgeReadData(uint8_t *ReadFromUsart)
|
||||||
{
|
{
|
||||||
uint16_t judge_length; // 统计一帧数据长度
|
uint16_t judge_length; // 统计一帧数据长度
|
||||||
// referee_info.CmdID = 0; //数据命令码解析
|
if (ReadFromUsart == NULL) // 空数据包,则不作任何处理
|
||||||
// 空数据包,则不作任何处理
|
|
||||||
if (ReadFromUsart == NULL)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// 写入帧头数据(5-byte),用于判断是否开始存储裁判数据
|
// 写入帧头数据(5-byte),用于判断是否开始存储裁判数据
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include "bsp_usart.h"
|
#include "bsp_usart.h"
|
||||||
#include "usart.h"
|
#include "usart.h"
|
||||||
|
#include "referee_def.h"
|
||||||
|
|
||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
|
@ -30,72 +31,6 @@
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
/***************裁判系统数据接收********************/
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
FRAME_HEADER = 0,
|
|
||||||
CMD_ID = 5,
|
|
||||||
DATA = 7,
|
|
||||||
} JudgeFrameOffset;
|
|
||||||
|
|
||||||
// 5字节帧头,偏移位置
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
SOF = 0, // 起始位
|
|
||||||
DATA_LENGTH = 1, // 帧内数据长度,根据这个来获取数据长度
|
|
||||||
SEQ = 3, // 包序号
|
|
||||||
CRC8 = 4 // CRC8
|
|
||||||
|
|
||||||
} FrameHeaderOffset;
|
|
||||||
|
|
||||||
// 命令码ID,用来判断接收的是什么数据
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
ID_game_state = 0x0001, // 比赛状态数据
|
|
||||||
ID_game_result = 0x0002, // 比赛结果数据
|
|
||||||
ID_game_robot_survivors = 0x0003, // 比赛机器人血量数据
|
|
||||||
ID_event_data = 0x0101, // 场地事件数据
|
|
||||||
ID_supply_projectile_action = 0x0102, // 场地补给站动作标识数据
|
|
||||||
ID_supply_projectile_booking = 0x0103, // 场地补给站预约子弹数据
|
|
||||||
ID_game_robot_state = 0x0201, // 机器人状态数据
|
|
||||||
ID_power_heat_data = 0x0202, // 实时功率热量数据
|
|
||||||
ID_game_robot_pos = 0x0203, // 机器人位置数据
|
|
||||||
ID_buff_musk = 0x0204, // 机器人增益数据
|
|
||||||
ID_aerial_robot_energy = 0x0205, // 空中机器人能量状态数据
|
|
||||||
ID_robot_hurt = 0x0206, // 伤害状态数据
|
|
||||||
ID_shoot_data = 0x0207, // 实时射击数据
|
|
||||||
|
|
||||||
} CmdID;
|
|
||||||
|
|
||||||
// 命令码数据段长,根据官方协议来定义长度
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
LEN_game_state = 3, // 0x0001
|
|
||||||
LEN_game_result = 1, // 0x0002
|
|
||||||
LEN_game_robot_HP = 2, // 0x0003
|
|
||||||
LEN_event_data = 4, // 0x0101
|
|
||||||
LEN_supply_projectile_action = 4, // 0x0102
|
|
||||||
// LEN_game_robot_state = 15, // 0x0201
|
|
||||||
LEN_game_robot_state = 27, // 0x0201
|
|
||||||
LEN_power_heat_data = 14, // 0x0202
|
|
||||||
LEN_game_robot_pos = 16, // 0x0203
|
|
||||||
LEN_buff_musk = 1, // 0x0204
|
|
||||||
LEN_aerial_robot_energy = 1, // 0x0205
|
|
||||||
LEN_robot_hurt = 1, // 0x0206
|
|
||||||
LEN_shoot_data = 7, // 0x0207
|
|
||||||
} JudgeDataLength;
|
|
||||||
|
|
||||||
/* 自定义帧头 */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t SOF;
|
|
||||||
uint16_t DataLength;
|
|
||||||
uint8_t Seq;
|
|
||||||
uint8_t CRC8;
|
|
||||||
|
|
||||||
} xFrameHeader;
|
|
||||||
|
|
||||||
/* ID: 0x0001 Byte: 3 比赛状态数据 */
|
/* ID: 0x0001 Byte: 3 比赛状态数据 */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -216,108 +151,6 @@ typedef struct
|
||||||
float bullet_speed;
|
float bullet_speed;
|
||||||
} ext_shoot_data_t;
|
} ext_shoot_data_t;
|
||||||
|
|
||||||
/***************裁判系统数据********************/
|
|
||||||
/*
|
|
||||||
|
|
||||||
交互数据,包括一个统一的数据段头结构,
|
|
||||||
包含了内容 ID,发送者以及接受者的 ID 和内容数据段,
|
|
||||||
整个交互数据的包总共长最大为 128 个字节,
|
|
||||||
减去 frame_header,cmd_id,frame_tail 以及数据段头结构的 6 个字节,
|
|
||||||
故而发送的内容数据段最大为 113。
|
|
||||||
整个交互数据 0x0301 的包上行频率为 10Hz。
|
|
||||||
|
|
||||||
机器人 ID:
|
|
||||||
1,英雄(红);
|
|
||||||
2,工程(红);
|
|
||||||
3/4/5,步兵(红);
|
|
||||||
6,空中(红);
|
|
||||||
7,哨兵(红);
|
|
||||||
11,英雄(蓝);
|
|
||||||
12,工程(蓝);
|
|
||||||
13/14/15,步兵(蓝);
|
|
||||||
16,空中(蓝);
|
|
||||||
17,哨兵(蓝)。
|
|
||||||
客户端 ID:
|
|
||||||
0x0101 为英雄操作手客户端( 红) ;
|
|
||||||
0x0102 ,工程操作手客户端 ((红 );
|
|
||||||
0x0103/0x0104/0x0105,步兵操作手客户端(红);
|
|
||||||
0x0106,空中操作手客户端((红);
|
|
||||||
0x0111,英雄操作手客户端(蓝);
|
|
||||||
0x0112,工程操作手客户端(蓝);
|
|
||||||
0x0113/0x0114/0x0115,操作手客户端步兵(蓝);
|
|
||||||
0x0116,空中操作手客户端(蓝)。
|
|
||||||
*/
|
|
||||||
/* 交互数据接收信息:0x0301 */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint16_t data_cmd_id;
|
|
||||||
uint16_t send_ID;
|
|
||||||
uint16_t receiver_ID;
|
|
||||||
} ext_student_interactive_header_data_t;
|
|
||||||
|
|
||||||
/*
|
|
||||||
客户端 客户端自定义数据:cmd_id:0x0301。内容 ID:0xD180
|
|
||||||
发送频率:上限 10Hz
|
|
||||||
1. 客户端 客户端自定义数据:cmd_id:0x0301。内容 ID:0xD180。发送频率:上限 10Hz
|
|
||||||
字节偏移量 大小 说明 备注
|
|
||||||
0 2 数据的内容 ID 0xD180
|
|
||||||
2 2 送者的 ID 需要校验发送者机器人的 ID 正确性
|
|
||||||
4 2 客户端的 ID 只能为发送者机器人对应的客户端
|
|
||||||
6 4 自定义浮点数据 1
|
|
||||||
10 4 自定义浮点数据 2
|
|
||||||
14 4 自定义浮点数据 3
|
|
||||||
18 1 自定义 8 位数据 4
|
|
||||||
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
float data1;
|
|
||||||
float data2;
|
|
||||||
float data3;
|
|
||||||
uint8_t masks;
|
|
||||||
} client_custom_data_t;
|
|
||||||
|
|
||||||
/*
|
|
||||||
学生机器人间通信 cmd_id 0x0301,内容 ID:0x0200~0x02FF
|
|
||||||
交互数据 机器人间通信:0x0301。
|
|
||||||
发送频率:上限 10Hz
|
|
||||||
|
|
||||||
字节偏移量 大小 说明 备注
|
|
||||||
0 2 数据的内容 ID 0x0200~0x02FF
|
|
||||||
可以在以上 ID 段选取,具体 ID 含义由参赛队自定义
|
|
||||||
|
|
||||||
2 2 发送者的 ID 需要校验发送者的 ID 正确性,
|
|
||||||
4 2 接收者的 ID 需要校验接收者的 ID 正确性,
|
|
||||||
例如不能发送到敌对机器人的ID
|
|
||||||
6 n 数据段 n 需要小于 113
|
|
||||||
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t data[10]; // 数据段,n需要小于113
|
|
||||||
} robot_interactive_data_t;
|
|
||||||
|
|
||||||
// 发送给客户端的信息
|
|
||||||
// 帧头 命令码 数据段头结构 数据段 帧尾
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
xFrameHeader txFrameHeader; // 帧头
|
|
||||||
uint16_t CmdID; // 命令码
|
|
||||||
ext_student_interactive_header_data_t dataFrameHeader; // 数据段头结构
|
|
||||||
client_custom_data_t clientData; // 数据段
|
|
||||||
uint16_t FrameTail; // 帧尾
|
|
||||||
} ext_SendClientData_t;
|
|
||||||
|
|
||||||
// 机器人交互信息
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
xFrameHeader txFrameHeader; // 帧头
|
|
||||||
uint16_t CmdID; // 命令码
|
|
||||||
ext_student_interactive_header_data_t dataFrameHeader; // 数据段头结构
|
|
||||||
robot_interactive_data_t interactData; // 数据段
|
|
||||||
uint16_t FrameTail; // 帧尾
|
|
||||||
} ext_CommunatianData_t;
|
|
||||||
|
|
||||||
// 裁判系统接收数据整合进一个结构体
|
// 裁判系统接收数据整合进一个结构体
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -336,8 +169,8 @@ typedef struct
|
||||||
ext_robot_hurt_t RobotHurt; // 0x0206
|
ext_robot_hurt_t RobotHurt; // 0x0206
|
||||||
ext_shoot_data_t ShootData; // 0x0207
|
ext_shoot_data_t ShootData; // 0x0207
|
||||||
|
|
||||||
ext_SendClientData_t ShowData; // 客户端信息
|
// ext_SendClientData_t ShowData; // 客户端信息
|
||||||
ext_CommunatianData_t CommuData; // 队友通信信息
|
// ext_CommunatianData_t CommuData; // 队友通信信息
|
||||||
|
|
||||||
} referee_info_t;
|
} referee_info_t;
|
||||||
|
|
||||||
|
@ -352,6 +185,4 @@ typedef struct
|
||||||
referee_info_t* RefereeInit(UART_HandleTypeDef *referee_usart_handle);
|
referee_info_t* RefereeInit(UART_HandleTypeDef *referee_usart_handle);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // !REFEREE_H
|
#endif // !REFEREE_H
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
// /**
|
||||||
|
// * @brief 上传自定义数据
|
||||||
|
// * @param void
|
||||||
|
// * @retval void
|
||||||
|
// * @attention 数据打包,打包完成后通过串口发送到裁判系统
|
||||||
|
// */
|
||||||
|
// #define send_max_len 200
|
||||||
|
// unsigned char CliendTxBuffer[send_max_len];
|
||||||
|
// void JUDGE_Show_Data(void)
|
||||||
|
// {
|
||||||
|
// static u8 datalength,i;
|
||||||
|
// uint8_t judge_led = 0xff;//初始化led为全绿
|
||||||
|
// static uint8_t auto_led_time = 0;
|
||||||
|
// static uint8_t buff_led_time = 0;
|
||||||
|
|
||||||
|
// determine_ID();//判断发送者ID和其对应的客户端ID
|
||||||
|
|
||||||
|
// ShowData.txFrameHeader.SOF = 0xA5;
|
||||||
|
// ShowData.txFrameHeader.DataLength = sizeof(ext_student_interactive_header_data_t) + sizeof(client_custom_data_t);
|
||||||
|
// ShowData.txFrameHeader.Seq = 0;
|
||||||
|
// memcpy(CliendTxBuffer, &ShowData.txFrameHeader, sizeof(xFrameHeader));//写入帧头数据
|
||||||
|
// Append_CRC8_Check_Sum(CliendTxBuffer, sizeof(xFrameHeader));//写入帧头CRC8校验码
|
||||||
|
|
||||||
|
// ShowData.CmdID = 0x0301;
|
||||||
|
|
||||||
|
// ShowData.dataFrameHeader.data_cmd_id = 0xD180;//发给客户端的cmd,官方固定
|
||||||
|
// //ID已经是自动读取的了
|
||||||
|
// ShowData.dataFrameHeader.send_ID = Judge_Self_ID;//发送者的ID
|
||||||
|
// ShowData.dataFrameHeader.receiver_ID = Judge_SelfClient_ID;//客户端的ID,只能为发送者机器人对应的客户端
|
||||||
|
|
||||||
|
// /*- 自定义内容 -*/
|
||||||
|
// ShowData.clientData.data1 = (float)Capvoltage_Percent();//电容剩余电量
|
||||||
|
// ShowData.clientData.data2 = (float)Base_Angle_Measure();//吊射角度测
|
||||||
|
// ShowData.clientData.data3 = GIMBAL_PITCH_Judge_Angle();//云台抬头角度
|
||||||
|
// ShowData.clientData.masks = judge_led;//0~5位0红灯,1绿灯
|
||||||
|
|
||||||
|
// //打包写入数据段
|
||||||
|
// memcpy(
|
||||||
|
// CliendTxBuffer + 5,
|
||||||
|
// (uint8_t*)&ShowData.CmdID,
|
||||||
|
// (sizeof(ShowData.CmdID)+ sizeof(ShowData.dataFrameHeader)+ sizeof(ShowData.clientData))
|
||||||
|
// );
|
||||||
|
|
||||||
|
// Append_CRC16_Check_Sum(CliendTxBuffer,sizeof(ShowData));//写入数据段CRC16校验码
|
||||||
|
|
||||||
|
// datalength = sizeof(ShowData);
|
||||||
|
// for(i = 0;i < datalength;i++)
|
||||||
|
// {
|
||||||
|
// USART_SendData(UART5,(uint16_t)CliendTxBuffer[i]);
|
||||||
|
// while(USART_GetFlagStatus(UART5,USART_FLAG_TC)==RESET);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @brief 判断自己红蓝方
|
||||||
|
// * @param void
|
||||||
|
// * @retval RED BLUE
|
||||||
|
// * @attention 数据打包,打包完成后通过串口发送到裁判系统
|
||||||
|
// */
|
||||||
|
// bool Color;
|
||||||
|
// bool is_red_or_blue(void)
|
||||||
|
// {
|
||||||
|
// Judge_Self_ID = GameRobotStat.robot_id;//读取当前机器人ID
|
||||||
|
|
||||||
|
// if(GameRobotStat.robot_id > 10)
|
||||||
|
// {
|
||||||
|
// return BLUE;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// return RED;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @brief 判断自身ID,选择客户端ID
|
||||||
|
// * @param void
|
||||||
|
// * @retval RED BLUE
|
||||||
|
// * @attention 数据打包,打包完成后通过串口发送到裁判系统
|
||||||
|
// */
|
||||||
|
// void determine_ID(void)
|
||||||
|
// {
|
||||||
|
// Color = is_red_or_blue();
|
||||||
|
// if(Color == BLUE)
|
||||||
|
// {
|
||||||
|
// Judge_SelfClient_ID = 0x0110 + (Judge_Self_ID-10);//计算客户端ID
|
||||||
|
// }
|
||||||
|
// else if(Color == RED)
|
||||||
|
// {
|
||||||
|
// Judge_SelfClient_ID = 0x0100 + Judge_Self_ID;//计算客户端ID
|
||||||
|
// }
|
||||||
|
// }
|
|
@ -0,0 +1,92 @@
|
||||||
|
/**
|
||||||
|
* @file referee_communication.h
|
||||||
|
* @author kidneygood (you@domain.com)
|
||||||
|
* @version 0.1
|
||||||
|
* @date 2022-12-02
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) HNU YueLu EC 2022 all rights reserved
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef REFEREE_COMMUNICATION_H
|
||||||
|
#define REFEREE_COMMUNICATION_H
|
||||||
|
|
||||||
|
#include "stdint.h"
|
||||||
|
#include "referee_def.h"
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
|
||||||
|
//暂时放在这里
|
||||||
|
/***************交互数据********************/
|
||||||
|
/*
|
||||||
|
0x0301 机器人间交互数据,发送方触发发送,上限 10Hz
|
||||||
|
己方机器人间通信与UI绘制共用同一个cmd_id
|
||||||
|
根据数据段内容ID的不同区分
|
||||||
|
*/
|
||||||
|
/* 交互数据接收信息:0x0301 */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16_t data_cmd_id;
|
||||||
|
uint16_t send_ID;
|
||||||
|
uint16_t receiver_ID;
|
||||||
|
} ext_student_interactive_header_data_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
客户端 客户端自定义数据:cmd_id:0x0301。内容 ID:0xD180
|
||||||
|
发送频率:上限 10Hz
|
||||||
|
1. 客户端 客户端自定义数据:cmd_id:0x0301。内容 ID:0xD180。发送频率:上限 10Hz
|
||||||
|
字节偏移量 大小 说明 备注
|
||||||
|
0 2 数据的内容 ID 0xD180
|
||||||
|
2 2 送者的 ID 需要校验发送者机器人的 ID 正确性
|
||||||
|
4 2 客户端的 ID 只能为发送者机器人对应的客户端
|
||||||
|
6 4 自定义浮点数据 1
|
||||||
|
10 4 自定义浮点数据 2
|
||||||
|
14 4 自定义浮点数据 3
|
||||||
|
18 1 自定义 8 位数据 4
|
||||||
|
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
float data1;
|
||||||
|
float data2;
|
||||||
|
float data3;
|
||||||
|
uint8_t masks;
|
||||||
|
} client_custom_data_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
学生机器人间通信 cmd_id 0x0301,内容 ID:0x0200~0x02FF
|
||||||
|
交互数据 机器人间通信:0x0301。
|
||||||
|
发送频率:上限 10Hz
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t data[10]; // 数据段,n需要小于113
|
||||||
|
} robot_interactive_data_t;
|
||||||
|
|
||||||
|
// 发送给客户端的信息
|
||||||
|
//交互数据包括一个统一的数据段头结构。数据段包含了内容 ID,发送者以及接收者的 ID 和内容数据段,
|
||||||
|
// 整个交互数据的包总共长最大为 128 个字节,减去 frame_header,cmd_id 和 frame_tail 共 9 个字节以及
|
||||||
|
// 数据段头结构的 6 个字节,故而发送的内容数据段最大为 113。
|
||||||
|
// 帧头 命令码 数据段头结构 数据段 帧尾
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
xFrameHeader txFrameHeader; // 帧头
|
||||||
|
uint16_t CmdID; // 命令码
|
||||||
|
ext_student_interactive_header_data_t dataFrameHeader; // 数据段头结构
|
||||||
|
client_custom_data_t clientData; // 数据段
|
||||||
|
uint16_t FrameTail; // 帧尾
|
||||||
|
} ext_SendClientData_t;
|
||||||
|
|
||||||
|
// 机器人交互信息
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
xFrameHeader txFrameHeader; // 帧头
|
||||||
|
uint16_t CmdID; // 命令码
|
||||||
|
ext_student_interactive_header_data_t dataFrameHeader; // 数据段头结构
|
||||||
|
robot_interactive_data_t interactData; // 数据段
|
||||||
|
uint16_t FrameTail; // 帧尾
|
||||||
|
} ext_CommunatianData_t;
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,83 @@
|
||||||
|
/**
|
||||||
|
* @file referee_def.h
|
||||||
|
* @author kidneygood (you@domain.com)
|
||||||
|
* @version 0.1
|
||||||
|
* @date 2022-12-02
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) HNU YueLu EC 2022 all rights reserved
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef REFEREE_DEF_H
|
||||||
|
#define REFEREE_DEF_H
|
||||||
|
|
||||||
|
#include "stdint.h"
|
||||||
|
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
// 枚举类型,代替#define声明
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
FRAME_HEADER = 0,
|
||||||
|
CMD_ID = 5,
|
||||||
|
DATA = 7,
|
||||||
|
} JudgeFrameOffset;
|
||||||
|
|
||||||
|
// 帧头偏移,枚举
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SOF = 0, // 起始位
|
||||||
|
DATA_LENGTH = 1, // 帧内数据长度,根据这个来获取数据长度
|
||||||
|
SEQ = 3, // 包序号
|
||||||
|
CRC8 = 4 // CRC8
|
||||||
|
} FrameHeaderOffset;
|
||||||
|
|
||||||
|
/* 自定义帧头 */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t SOF;
|
||||||
|
uint16_t DataLength;
|
||||||
|
uint8_t Seq;
|
||||||
|
uint8_t CRC8;
|
||||||
|
} xFrameHeader;
|
||||||
|
|
||||||
|
// 命令码ID,用来判断接收的是什么数据
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
ID_game_state = 0x0001, // 比赛状态数据
|
||||||
|
ID_game_result = 0x0002, // 比赛结果数据
|
||||||
|
ID_game_robot_survivors = 0x0003, // 比赛机器人血量数据
|
||||||
|
ID_event_data = 0x0101, // 场地事件数据
|
||||||
|
ID_supply_projectile_action = 0x0102, // 场地补给站动作标识数据
|
||||||
|
ID_supply_projectile_booking = 0x0103, // 场地补给站预约子弹数据
|
||||||
|
ID_game_robot_state = 0x0201, // 机器人状态数据
|
||||||
|
ID_power_heat_data = 0x0202, // 实时功率热量数据
|
||||||
|
ID_game_robot_pos = 0x0203, // 机器人位置数据
|
||||||
|
ID_buff_musk = 0x0204, // 机器人增益数据
|
||||||
|
ID_aerial_robot_energy = 0x0205, // 空中机器人能量状态数据
|
||||||
|
ID_robot_hurt = 0x0206, // 伤害状态数据
|
||||||
|
ID_shoot_data = 0x0207, // 实时射击数据
|
||||||
|
|
||||||
|
} CmdID;
|
||||||
|
|
||||||
|
// 命令码数据段长,根据官方协议来定义长度
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
LEN_game_state = 3, // 0x0001
|
||||||
|
LEN_game_result = 1, // 0x0002
|
||||||
|
LEN_game_robot_HP = 2, // 0x0003
|
||||||
|
LEN_event_data = 4, // 0x0101
|
||||||
|
LEN_supply_projectile_action = 4, // 0x0102
|
||||||
|
LEN_game_robot_state = 27, // 0x0201
|
||||||
|
LEN_power_heat_data = 14, // 0x0202
|
||||||
|
LEN_game_robot_pos = 16, // 0x0203
|
||||||
|
LEN_buff_musk = 1, // 0x0204
|
||||||
|
LEN_aerial_robot_energy = 1, // 0x0205
|
||||||
|
LEN_robot_hurt = 1, // 0x0206
|
||||||
|
LEN_shoot_data = 7, // 0x0207
|
||||||
|
} JudgeDataLength;
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue