发送给视觉的数据(帧和数据包)

void sendVisionData(uint8_t Modle,uint8_t robotcolor,uint16_t Direction)
{
	memset(Tx_Buffer,0,VISON_SEND_LENGTH); //数据清零	
	
	VisonHeader.SOF=VIOSN_SOF;//A5
	VisonHeader.robotColor=robotcolor;//02
	VisonHeader.model=Modle;//02
	//写入帧头数据
	memcpy(Tx_Buffer,&VisonHeader,VISON_LEN_HAEDER);
	//写入CRC8校验码
	Append_CRC8_Check_Sum(Tx_Buffer, VISON_LEN_HAEDER);//用APPEND函数校验为加到数值中不要用Get_CRC8函数
	
  VisonSendData.direction = Direction ;//0或1   uint8_t是00或01,若16位则01 00或00 00
	//写入数据
	memcpy(Tx_Buffer + VISON_LEN_HAEDER,&VisonSendData,VISON_SEND_LENGTH);
	//写入CRC16校验码
	Append_CRC16_Check_Sum(Tx_Buffer,VISON_SEND_LENGTH);
	HAL_UART_Transmit_DMA(&huart3,Tx_Buffer,VISON_SEND_LENGTH);
}

typedef  struct//只用作发送
{
  //帧头
	uint8_t SOF;//首地址
	uint8_t robotColor; //装甲板颜色识别 0x01 红装甲板 0x02 蓝色装甲板
	uint8_t model;//模式切换 0x01 自瞄, 0x02小符 0x03大符
	uint8_t crc8;//CRC8校验位
}traVisonHeader_t;
typedef  struct
{
	//自瞄数据
	uint16_t direction;
	//数据尾
	uint16_t crc16;//CRC16校验位
	
}traVisonSendData_t;

发送数据会把帧头4个uint8_t+2个uint16_t数据包里的数据,长度总共4+2*2=8个字节在这里插入图片描述
遇到的问题,把Deriction定义成uint16_t类型,然后放入帧头的结构体那里,发送的数据有问题(和校验位有关,我猜的)
解决方法:目前的帧头里的4个数据都是uint8_t类型的,数据包里是uint16_t类型的,发现要把类型分类好,目前帧头是uint8_t,那么就不能再将uint16的数据加到帧头的结构体成员,要分开。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值