/* 视觉与电控通信协议 协议中 主要包含了 数据帧 和CRC校验 其中数据帧用了自定义的结构体 在结构体中修改所需要的数据域的内容 */ #include #ifdef __cplusplus extern "C" { #endif #define HEAD (0xFF) #define TAIL (0xFE) #define NAVI (0x05) #define PICK (0x06) #define TEAM_RED (0x01) #define TEAM_BLUE (0x02) typedef uint8_t Protocol_ID_t; /* 电控 -> 视觉 MCU数据结构体*/ typedef struct __attribute__((packed)) { int remain; } Protocol_UpDataMCU_t; /* 视觉 -> 电控 底盘数据结构体*/ typedef struct __attribute__((packed)) { Protocol_ID_t recv_id;//作为帧头使用确认通信ID正确 uint8_t status; /* 控制命令 */ struct __attribute__((packed)) { float posy; /*pitch轴*/ float posx; /*yaw轴*/ char cmd; float dis; /*距离*/ }pick; struct __attribute__((packed)) { float vx; /* x轴移动速度 */ float vy; /* y轴移动速度 */ float wz; /* z轴转动速度 */ }navi; } Protocol_DownDataChassis_t; /* 视觉 -> 电控 上层机构数据结构体*/ typedef struct __attribute__((packed)) { uint8_t status; /* 控制命令 */ } Protocol_DownDataUpper_t; typedef struct __attribute__((packed)) { Protocol_UpDataMCU_t data; } Protocol_UpPackageMCU_t; typedef struct __attribute__((packed)) { Protocol_DownDataChassis_t data; } Protocol_DownPackageChassis_t; typedef struct __attribute__((packed)) { Protocol_DownDataUpper_t data; } Protocol_DownPackageUpper_t; #ifdef __cplusplus } #endif