达妙电机自动使能

This commit is contained in:
shmily744 2024-05-13 01:27:27 +08:00
parent 7903e6fb25
commit 26bd22000b
5 changed files with 268 additions and 264 deletions

View File

@ -16,7 +16,7 @@
#include "bsp_log.h"
// 私有宏,自动将编码器转换成角度值
#define YAW_ALIGN_ANGLE 132.0f //(YAW_CHASSIS_ALIGN_ECD * ECD_ANGLE_COEF_DJI) // 对齐时的角度,0-360
#define YAW_ALIGN_ANGLE 245.0f //(YAW_CHASSIS_ALIGN_ECD * ECD_ANGLE_COEF_DJI) // 对齐时的角度,0-360
#define PTICH_HORIZON_ANGLE (PITCH_HORIZON_ECD * ECD_ANGLE_COEF_DJI) // pitch水平时电机的角度,0-360
#define PITCH_SCAN -10.0f //扫描阶段PITCH固定角度
@ -266,7 +266,7 @@ static void RemoteControlSet() {
static uint8_t sentry_state;
static void AutoControlSet() {
chassis_cmd_send.chassis_mode = CHASSIS_FOLLOW_GIMBAL_YAW;
chassis_cmd_send.chassis_mode = CHASSIS_ROTATE;
chassis_cmd_send.vx = vision_recv_data->nav_vx;
chassis_cmd_send.vy = vision_recv_data->nav_vy;
@ -383,7 +383,7 @@ uint8_t sentry_behave();
/* 机器人核心控制任务,200Hz频率运行(必须高于视觉发送频率) */
static uint8_t is_died; //死亡标志位
static uint8_t enable_count;
void RobotCMDTask() {
// 从其他应用获取回传数据
#ifdef ONE_BOARD
@ -398,10 +398,10 @@ void RobotCMDTask() {
// 根据gimbal的反馈值计算云台和底盘正方向的夹角,不需要传参,通过static私有变量完成
CalcOffsetAngle();
//gimbal_cmd_send.enable_motor = 0;
if(referee_data->GameRobotState.current_HP <= 4 ){
is_died = 1;
}
//云台离线重新发送电机使能命令
// if(referee_data->GameRobotState.power_management_gimbal_output == 0){
// is_died = 1;
// }
// if(is_died == 1 && referee_data->GameRobotState.current_HP > 4 ){
// is_died = 0;
// DWT_Delay(0.08);
@ -416,13 +416,13 @@ void RobotCMDTask() {
// enable_count = 0;
// }
if(is_died == 1 && referee_data->GameRobotState.current_HP > 4 ){
is_died = 0;
gimbal_cmd_send.enable_motor = 500;
}
if(gimbal_cmd_send.enable_motor >0){
gimbal_cmd_send.enable_motor--;
}
// if(is_died == 1 && referee_data->GameRobotState.power_management_gimbal_output ){
// is_died = 0;
// gimbal_cmd_send.enable_motor = 00;
// }
// if(gimbal_cmd_send.enable_motor >0 && referee_data->GameRobotState.power_management_gimbal_output){
// gimbal_cmd_send.enable_motor--;
// }
// 根据遥控器左侧开关,确定当前使用的控制模式为遥控器调试还是键鼠
static control_mode_e last_gimbal_mode = 0;
@ -510,8 +510,7 @@ uint8_t sentry_behave() {
} else if (referee_data->GameState.game_progress == 5)
behave_flag = 4;
if (referee_data->GameRobotState.current_HP < 200 && referee_data->GameState.stage_remain_time >= 60 &&
recover_cnt <= 1) {
if (referee_data->GameRobotState.current_HP < 200 && referee_data->GameState.stage_remain_time >= 60 ) {
behave_flag = 9;
}

View File

@ -176,10 +176,10 @@ void GimbalTask()
// 后续增加未收到数据的处理
SubGetMessage(gimbal_sub, &gimbal_cmd_recv);
SubGetMessage(chassis_sub, &chassis_cmd_recv);
if(gimbal_cmd_recv.enable_motor > 0){
LOGINFO("enabling DMmoter");
DMMotorSetMode(DM_CMD_MOTOR_MODE, big_yaw_motor);
}
// if(gimbal_cmd_recv.enable_motor > 0){
// LOGINFO("enabling DMmoter");
// DMMotorSetMode(DM_CMD_MOTOR_MODE, big_yaw_motor);
// }
//gimbal_cmd_recv.big_yaw = 0;

View File

@ -39,11 +39,16 @@ static void DMMotorDecode(CANInstance *motor_can)
DMMotorInstance *motor = (DMMotorInstance *)motor_can->id;
DM_Motor_Measure_s *measure = &(motor->measure); // 将can实例中保存的id转换成电机实例的指针
DaemonReload(motor->motor_daemon);
//DaemonReload(motor->motor_daemon);
measure->last_position = measure->position;
//0 失能 1 使能 8 超压 9 欠压 A 过流 B MOS过压 C 电机线圈过温 D 通信丢失 E 过载
tmp = (uint8_t)(rxbuff[0]>>4);
measure->state = tmp;
measure->state = 0;
if(measure->state){
DaemonReload(motor->motor_daemon);
}
tmp = (uint16_t)((rxbuff[1] << 8) | rxbuff[2]);
measure->position = uint_to_float(tmp, DM_P_MIN, DM_P_MAX, 16);

View File

@ -19,7 +19,7 @@
typedef struct
{
uint8_t id;
uint8_t state;
uint8_t state; //
float velocity; //速度
float last_position; //上次位置
float position; //位置

View File

@ -25,142 +25,137 @@
/****************************通信协议格式****************************/
/* 通信协议格式偏移,枚举类型,代替#define声明 */
typedef enum
{
FRAME_HEADER_Offset = 0,
CMD_ID_Offset = 5,
DATA_Offset = 7,
typedef enum {
FRAME_HEADER_Offset = 0,
CMD_ID_Offset = 5,
DATA_Offset = 7,
} JudgeFrameOffset_e;
/* 通信协议长度 */
typedef enum
{
LEN_HEADER = 5, // 帧头长
LEN_CMDID = 2, // 命令码长度
LEN_TAIL = 2, // 帧尾CRC16
typedef enum {
LEN_HEADER = 5, // 帧头长
LEN_CMDID = 2, // 命令码长度
LEN_TAIL = 2, // 帧尾CRC16
LEN_CRC8 = 4, // 帧头CRC8校验长度=帧头+数据长+包序号
LEN_CRC8 = 4, // 帧头CRC8校验长度=帧头+数据长+包序号
} JudgeFrameLength_e;
/****************************帧头****************************/
/****************************帧头****************************/
/* 帧头偏移 */
typedef enum
{
SOF = 0, // 起始位
DATA_LENGTH = 1, // 帧内数据长度,根据这个来获取数据长度
SEQ = 3, // 包序号
CRC8 = 4 // CRC8
typedef enum {
SOF = 0, // 起始位
DATA_LENGTH = 1, // 帧内数据长度,根据这个来获取数据长度
SEQ = 3, // 包序号
CRC8 = 4 // CRC8
} FrameHeaderOffset_e;
/* 帧头定义 */
typedef struct
{
uint8_t SOF;
uint16_t DataLength;
uint8_t Seq;
uint8_t CRC8;
typedef struct {
uint8_t SOF;
uint16_t DataLength;
uint8_t Seq;
uint8_t CRC8;
} xFrameHeader;
/****************************cmd_id命令码说明****************************/
/****************************cmd_id命令码说明****************************/
// V1.6.1 裁判系统串口协议
/* 命令码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, // 实时射击数据
ID_student_interactive = 0x0301, // 机器人间交互数据
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, // 实时射击数据
ID_sentry_info = 0x020D, // 哨兵兑换发弹量、血量信息
ID_student_interactive = 0x0301, // 机器人间交互数据
ID_custom_robot = 0x302, // 自定义控制器数据(图传链路)
ID_map_command = 0x0303, // 选手端小地图交互数据
ID_remote_control = 0x304, // 键鼠遥控数据(图传链路)
ID_sender_id = 0x0307, // 选手端小地图接收哨兵数据
} CmdID_e;
/* 命令码数据段长,根据官方协议来定义长度,还有自定义数据长度 */
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
LEN_receive_data = 6 + Communicate_Data_LEN, // 0x0301
typedef enum {
LEN_game_state = 11, // 0x0001
LEN_game_result = 1, // 0x0002
LEN_game_robot_HP = 32, // 0x0003
LEN_event_data = 4, // 0x0101
LEN_supply_projectile_action = 4, // 0x0102
LEN_game_robot_state = 13, // 0x0201
LEN_power_heat_data = 16, // 0x0202
LEN_game_robot_pos = 16, // 0x0203
LEN_buff_musk = 6, // 0x0204
LEN_aerial_robot_energy = 2, // 0x0205
LEN_robot_hurt = 1, // 0x0206
LEN_shoot_data = 7, // 0x0207
LEN_receive_data = 6 + Communicate_Data_LEN, // 0x0301
LEN__custom_robot = 30, // 0x0302
LEN_remote_control = 12, // 0x0304
} JudgeDataLength_e;
/****************************接收数据的详细说明****************************/
/****************************接收数据的详细说明****************************/
/* ID: 0x0001 Byte: 3 V1.6.1 比赛状态数据 */
typedef struct
{
uint8_t game_type : 4;
uint8_t game_progress : 4;
uint16_t stage_remain_time;
uint64_t SyncTimeStamp;
/* ID: 0x0001 Byte: 3 比赛状态数据 */
typedef struct {
uint8_t game_type: 4;
uint8_t game_progress: 4;
uint16_t stage_remain_time;
uint64_t SyncTimeStamp;
} ext_game_state_t;
/* ID: 0x0002 Byte: 1 比赛结果数据 */
typedef struct
{
uint8_t winner;
typedef struct {
uint8_t winner;
} ext_game_result_t;
/* ID: 0x0003 Byte: 32 比赛机器人血量数据 */
typedef struct
{
uint16_t red_1_robot_HP;
uint16_t red_2_robot_HP;
uint16_t red_3_robot_HP;
uint16_t red_4_robot_HP;
uint16_t red_5_robot_HP;
uint16_t red_7_robot_HP;
uint16_t red_outpost_HP;
uint16_t red_base_HP;
uint16_t blue_1_robot_HP;
uint16_t blue_2_robot_HP;
uint16_t blue_3_robot_HP;
uint16_t blue_4_robot_HP;
uint16_t blue_5_robot_HP;
uint16_t blue_7_robot_HP;
uint16_t blue_outpost_HP;
uint16_t blue_base_HP;
typedef struct {
uint16_t red_1_robot_HP;
uint16_t red_2_robot_HP;
uint16_t red_3_robot_HP;
uint16_t red_4_robot_HP;
uint16_t red_5_robot_HP;
uint16_t red_7_robot_HP;
uint16_t red_outpost_HP;
uint16_t red_base_HP;
uint16_t blue_1_robot_HP;
uint16_t blue_2_robot_HP;
uint16_t blue_3_robot_HP;
uint16_t blue_4_robot_HP;
uint16_t blue_5_robot_HP;
uint16_t blue_7_robot_HP;
uint16_t blue_outpost_HP;
uint16_t blue_base_HP;
} ext_game_robot_HP_t;
/* ID: 0x0101 Byte: 4 场地事件数据 */
typedef struct
{
uint32_t event_type;
typedef struct {
uint32_t event_type;
} ext_event_data_t;
/* ID: 0x0102 Byte: 3 场地补给站动作标识数据 */
typedef struct
{
uint8_t supply_projectile_id;
uint8_t supply_robot_id;
uint8_t supply_projectile_step;
uint8_t supply_projectile_num;
/* ID: 0x0102 Byte: 4 场地补给站动作标识数据 */
typedef struct {
uint8_t supply_projectile_id;
uint8_t supply_robot_id;
uint8_t supply_projectile_step;
uint8_t supply_projectile_num;
} ext_supply_projectile_action_t;
/* ID: 0X0201 Byte: 27 V1.6.1 机器人性能体系数据 */
typedef struct
{
/* ID: 0X0201 Byte: 13 机器人性能体系数据 */
typedef struct {
uint8_t robot_id;
uint8_t robot_level;
uint16_t current_HP;
@ -169,14 +164,13 @@ typedef struct
uint16_t shooter_barrel_heat_limit;
uint16_t chassis_power_limit;
uint8_t power_management_gimbal_output : 1;
uint8_t power_management_chassis_output : 1;
uint8_t power_management_shooter_output : 1;
uint8_t power_management_gimbal_output: 1;
uint8_t power_management_chassis_output: 1;
uint8_t power_management_shooter_output: 1;
} ext_game_robot_state_t;
/* ID: 0X0202 Byte: 14 V1.6.1 实时功率热量数据 */
typedef struct
{
/* ID: 0X0202 Byte: 16 实时功率热量数据 */
typedef struct {
uint16_t chassis_voltage;
uint16_t chassis_current;
float chassis_power;
@ -187,106 +181,122 @@ typedef struct
} ext_power_heat_data_t;
/* ID: 0x0203 Byte: 16 机器人位置数据 */
typedef struct
{
float x;
float y;
float z;
float yaw;
typedef struct {
float x;
float y;
float z;
float yaw;
} ext_game_robot_pos_t;
/* ID: 0x0204 Byte: 1 机器人增益数据 */
typedef struct
{
uint8_t power_rune_buff;
/* ID: 0x0204 Byte: 6 机器人增益数据 */
typedef struct {
uint8_t recovery_buff;
uint8_t cooling_buff;
uint8_t defence_buff;
uint8_t vulnerability_buff;
uint16_t attack_buff;
uint8_t power_rune_buff;
} ext_buff_musk_t;
/* ID: 0x0205 Byte: 1 空中机器人能量状态数据 */
typedef struct
{
uint8_t attack_time;
/* ID: 0x0205 Byte: 2 空中机器人能量状态数据 */
typedef struct {
uint8_t airforce_status;
uint8_t time_remain;
} aerial_robot_energy_t;
/* ID: 0x0206 Byte: 1 伤害状态数据 */
typedef struct
{
uint8_t armor_id : 4;
uint8_t hurt_type : 4;
typedef struct {
uint8_t armor_id: 4;
uint8_t hurt_type: 4;
} ext_robot_hurt_t;
/* ID: 0x0207 Byte: 7 实时射击数据 */
typedef struct {
uint8_t bullet_type;
uint8_t shooter_id;
uint8_t bullet_freq;
float bullet_speed;
} ext_shoot_data_t;
/* ID: 0x020D Byte: 4 哨兵决策数据 */
typedef struct
{
uint8_t bullet_type;
uint8_t shooter_id;
uint8_t bullet_freq;
float bullet_speed;
} ext_shoot_data_t;
uint32_t sentry_info;
} ext_sentry_info_t;
/****************************图传链路数据****************************/
/* ID: 0x0304 Byte: 12 图传链路键鼠遥控数据 */
typedef struct {
int16_t mouse_x;
int16_t mouse_y;
int16_t mouse_z;
int8_t left_button_down;
int8_t right_button_down;
uint16_t keyboard_value;
uint16_t reserved;
} vision_transfer_t;
/****************************图传链路数据****************************/
/****************************机器人交互数据****************************/
/****************************机器人交互数据****************************/
/* 发送的内容数据段最大为 113 检测是否超出大小限制?实际上图形段不会超数据段最多30个也不会超*/
/* 交互数据头结构 */
typedef struct
{
uint16_t data_cmd_id; // 由于存在多个内容 ID但整个cmd_id 上行频率最大为 10Hz请合理安排带宽。注意交互部分的上行频率
uint16_t sender_ID;
uint16_t receiver_ID;
typedef struct {
uint16_t data_cmd_id; // 由于存在多个内容 ID但整个cmd_id 上行频率最大为 10Hz请合理安排带宽。注意交互部分的上行频率
uint16_t sender_ID;
uint16_t receiver_ID;
} ext_student_interactive_header_data_t;
/* 机器人id */
typedef enum
{
// 红方机器人ID
RobotID_RHero = 1,
RobotID_REngineer = 2,
RobotID_RStandard1 = 3,
RobotID_RStandard2 = 4,
RobotID_RStandard3 = 5,
RobotID_RAerial = 6,
RobotID_RSentry = 7,
RobotID_RRadar = 9,
// 蓝方机器人ID
RobotID_BHero = 101,
RobotID_BEngineer = 102,
RobotID_BStandard1 = 103,
RobotID_BStandard2 = 104,
RobotID_BStandard3 = 105,
RobotID_BAerial = 106,
RobotID_BSentry = 107,
RobotID_BRadar = 109,
typedef enum {
// 红方机器人ID
RobotID_RHero = 1,
RobotID_REngineer = 2,
RobotID_RStandard1 = 3,
RobotID_RStandard2 = 4,
RobotID_RStandard3 = 5,
RobotID_RAerial = 6,
RobotID_RSentry = 7,
RobotID_RRadar = 9,
// 蓝方机器人ID
RobotID_BHero = 101,
RobotID_BEngineer = 102,
RobotID_BStandard1 = 103,
RobotID_BStandard2 = 104,
RobotID_BStandard3 = 105,
RobotID_BAerial = 106,
RobotID_BSentry = 107,
RobotID_BRadar = 109,
//裁判系统服务器ID 用于哨兵和雷达自主决策
RobotID_Referee = 0x8080,
} Robot_ID_e;
/* 交互数据ID */
typedef enum
{
UI_Data_ID_Del = 0x100,
UI_Data_ID_Draw1 = 0x101,
UI_Data_ID_Draw2 = 0x102,
UI_Data_ID_Draw5 = 0x103,
UI_Data_ID_Draw7 = 0x104,
UI_Data_ID_DrawChar = 0x110,
typedef enum {
UI_Data_ID_Del = 0x100,
UI_Data_ID_Draw1 = 0x101,
UI_Data_ID_Draw2 = 0x102,
UI_Data_ID_Draw5 = 0x103,
UI_Data_ID_Draw7 = 0x104,
UI_Data_ID_DrawChar = 0x110,
/* 自定义交互数据部分 */
Communicate_Data_ID = 0x0200,
/* 自定义交互数据部分 */
Communicate_Data_ID = 0x0200,
// 哨兵雷达自主决策部分
Sentry_Decision_ID = 0x0120,
Radar_Decision_ID = 0x0121,
} Interactive_Data_ID_e;
/* 交互数据长度 */
typedef enum
{
Interactive_Data_LEN_Head = 6,
UI_Operate_LEN_Del = 2,
UI_Operate_LEN_PerDraw = 15,
UI_Operate_LEN_DrawChar = 15 + 30,
typedef enum {
Interactive_Data_LEN_Head = 6,
UI_Operate_LEN_Del = 2,
UI_Operate_LEN_PerDraw = 15,
UI_Operate_LEN_DrawChar = 15 + 30,
/* 自定义交互数据部分 */
// Communicate_Data_LEN = 5,
/* 自定义交互数据部分 */
// Communicate_Data_LEN = 5,
Sentry_Decision_LEN = 4,
Radar_Decision_LEN = 1,
@ -299,108 +309,98 @@ typedef enum
10Hz
*/
// 自定义交互数据协议,可更改,更改后需要修改最上方宏定义数据长度的值
typedef struct
{
uint8_t data[Communicate_Data_LEN]; // 数据段,n需要小于113
typedef struct {
uint8_t data[Communicate_Data_LEN]; // 数据段,n需要小于113
} robot_interactive_data_t;
// 机器人交互信息_发送
typedef struct
{
xFrameHeader FrameHeader;
uint16_t CmdID;
ext_student_interactive_header_data_t datahead;
robot_interactive_data_t Data; // 数据段
uint16_t frametail;
typedef struct {
xFrameHeader FrameHeader;
uint16_t CmdID;
ext_student_interactive_header_data_t datahead;
robot_interactive_data_t Data; // 数据段
uint16_t frametail;
} Communicate_SendData_t;
// 机器人交互信息_接收
typedef struct
{
ext_student_interactive_header_data_t datahead;
robot_interactive_data_t Data; // 数据段
typedef struct {
ext_student_interactive_header_data_t datahead;
robot_interactive_data_t Data; // 数据段
} Communicate_ReceiveData_t;
// 哨兵决策数据
typedef struct
{
uint32_t reborn:1; // 读条确认复活
uint32_t reborn_now:1; // 买活
uint32_t buy_bullet:11;
typedef struct {
uint32_t reborn: 1; // 读条确认复活
uint32_t reborn_now: 1; // 买活
uint32_t buy_bullet: 11;
// 购买弹丸数量 开局为0修改此值后哨兵在补血点即可兑换允许发弹量。此值的变化需要单调递增否则视为不合法。
uint32_t remote_bullet:4;
uint32_t remote_bullet: 4;
//哨兵远程兑换发弹量的请求次数开局为0修改此值即可请求远程兑换发弹量。此值的变化需要单调递增且每次仅能增加1否则视为不合法。
uint32_t remote_HP:4;
uint32_t remote_HP: 4;
//哨兵远程兑换血量的请求次数开局为0修改此值即可请求远程兑换血量。此值的变化需要单调递增且每次仅能增加1否则视为不合法。
uint32_t reserve:11;
}Sentry_Decision_Data_t;
uint32_t reserve: 11;
} Sentry_Decision_Data_t;
//在哨兵发送该子命令时,服务器将按照从相对低位到相对高位的原则依次处理这些指令,直至全部成功或不能处理为止。
/****************************UI交互数据****************************/
/* 图形数据 */
typedef struct
{
uint8_t graphic_name[3];
uint32_t operate_tpye : 3;
uint32_t graphic_tpye : 3;
uint32_t layer : 4;
uint32_t color : 4;
uint32_t start_angle : 9;
uint32_t end_angle : 9;
uint32_t width : 10;
uint32_t start_x : 11;
uint32_t start_y : 11;
uint32_t radius : 10;
uint32_t end_x : 11;
uint32_t end_y : 11;
typedef struct {
uint8_t graphic_name[3];
uint32_t operate_tpye: 3;
uint32_t graphic_tpye: 3;
uint32_t layer: 4;
uint32_t color: 4;
uint32_t start_angle: 9;
uint32_t end_angle: 9;
uint32_t width: 10;
uint32_t start_x: 11;
uint32_t start_y: 11;
uint32_t radius: 10;
uint32_t end_x: 11;
uint32_t end_y: 11;
} Graph_Data_t;
typedef struct
{
Graph_Data_t Graph_Control;
uint8_t show_Data[30];
typedef struct {
Graph_Data_t Graph_Control;
uint8_t show_Data[30];
} String_Data_t; // 打印字符串数据
/* 删除操作 */
typedef enum
{
UI_Data_Del_NoOperate = 0,
UI_Data_Del_Layer = 1,
UI_Data_Del_ALL = 2, // 删除全部图层,后面的参数已经不重要了。
typedef enum {
UI_Data_Del_NoOperate = 0,
UI_Data_Del_Layer = 1,
UI_Data_Del_ALL = 2, // 删除全部图层,后面的参数已经不重要了。
} UI_Delete_Operate_e;
/* 图形配置参数__图形操作 */
typedef enum
{
UI_Graph_ADD = 1,
UI_Graph_Change = 2,
UI_Graph_Del = 3,
typedef enum {
UI_Graph_ADD = 1,
UI_Graph_Change = 2,
UI_Graph_Del = 3,
} UI_Graph_Operate_e;
/* 图形配置参数__图形类型 */
typedef enum
{
UI_Graph_Line = 0, // 直线
UI_Graph_Rectangle = 1, // 矩形
UI_Graph_Circle = 2, // 整圆
UI_Graph_Ellipse = 3, // 椭圆
UI_Graph_Arc = 4, // 圆弧
UI_Graph_Float = 5, // 浮点型
UI_Graph_Int = 6, // 整形
UI_Graph_Char = 7, // 字符型
typedef enum {
UI_Graph_Line = 0, // 直线
UI_Graph_Rectangle = 1, // 矩形
UI_Graph_Circle = 2, // 整圆
UI_Graph_Ellipse = 3, // 椭圆
UI_Graph_Arc = 4, // 圆弧
UI_Graph_Float = 5, // 浮点型
UI_Graph_Int = 6, // 整形
UI_Graph_Char = 7, // 字符型
} UI_Graph_Type_e;
/* 图形配置参数__图形颜色 */
typedef enum
{
UI_Color_Main = 0, // 红蓝主色
UI_Color_Yellow = 1,
UI_Color_Green = 2,
UI_Color_Orange = 3,
UI_Color_Purplish_red = 4, // 紫红色
UI_Color_Pink = 5,
UI_Color_Cyan = 6, // 青色
UI_Color_Black = 7,
UI_Color_White = 8,
typedef enum {
UI_Color_Main = 0, // 红蓝主色
UI_Color_Yellow = 1,
UI_Color_Green = 2,
UI_Color_Orange = 3,
UI_Color_Purplish_red = 4, // 紫红色
UI_Color_Pink = 5,
UI_Color_Cyan = 6, // 青色
UI_Color_Black = 7,
UI_Color_White = 8,
} UI_Graph_Color_e;