匿名凌霄-使用T265替换光流数据

学习过程:学习光流相关通信协议,知道光流数据怎么解析并发送给飞控,串口接收265数据完成替换

释:匿名光流本身很稳定,但担心地面光线问题,不得不多准备265方案。

一:学习光流相关数据

光流协议
如图:从光流接收的数据还不少,有三个模式,原始的融合的都有。各个数据代表的含义在图中都有解释。协议和匿名总体通讯协议是一样的,第一次接触可以B站茶不思的视频进行学习。
总之,光流数据没有奇特之处,只不过多了一点,通过数据内容的第一字节来判断数据的模式。

二:知道光流数据怎么解析并发送给飞控

初步解析
// An highlighted block
void AnoOF_GetOneByte(uint8_t data)
{
   
	static u8 _data_len = 0, _data_cnt = 0;
	static u8 rxstate = 0;    //移位标志

	if (rxstate == 0 && data == 0xAA) //数据帧头为0XAA
	{
   
		rxstate = 1;//进下一位
		_datatemp[0] = data;//第0字节 帧头
	}										
		//					移位1											0x61和 0xff广播模式
	else if (rxstate == 1 && (data == HW_TYPE || data == HW_ALL))
	{
   
		rxstate = 2;
		_datatemp[1] = data;//第1字节 目标地址通常为0xff
	}
	else if (rxstate == 2)
	{
   
		rxstate = 3;
		_datatemp[2] = data;//第2字节 功能码0X51
	}
	//下面就是通信格式,数据内容长度+前4个检验位
	//                       因为u8为1字节 避免数据饱和过度这里减去后判断是否小于250
	else if (rxstate == 3 && data < 250)
	{
   
		rxstate = 4;
		_datatemp[3] = data;
		_data_len = data;  //1字节的数据长度 以MODE=0为例,长度为5
		_data_cnt = 0;			//长度计数
	}
												//附件判断 数据长度>0
	else if (rxstate == 4 && _data_len > 0)
	{
   
		//这里把数据内容通过数据长度不等0,持续赋值给datatemp
		_data_len--;
		_datatemp[4 + _data_cnt++] = data;
		//data_len=0,赋值完毕
		if (_data_len == 0)
			rxstate = 5;
	}
	//接收和校验
	else if (rxstate == 5)
	{
   
		rxstate = 6;
		_datatemp[4 + _data_cnt++] = data;
	}
	//接收附加校验
	else if (rxstate == 6)
	{
   
		rxstate = 0;
		_datatemp[4 + _data_cnt] = data;
		AnoOF_DataAnl(_datatemp, _data_cnt + 5); //
	}
	else
	{
   
		rxstate = 0;
	}
}

这个函数就是按照匿名的通信协议进行初步解析,解析完成后在rxstate=6时,对数据进行深度解析,调用AnnOF_DataAnl()函数。运用这个函数需要在光流对应的串口中进行调用,凌霄使用的是Uart4,对于凌霄的用户,这里我提醒一下,串口4是专接光流串口,串口5被数传发送占用,这两个串口不能随便用,用的时候注意

数传发送

// 深度解析光流数据函数
/static void AnoOF_DataAnl(uint8_t *data, uint8_t len)
{
   
	u8 check_sum1 = 0, check_sum2 = 0;
	if (*(data + 3) != (len - 6)) //判断数据长度是否正确
		return;
	//和校验 附加校验
	for (u8 i = 0; i < len - 2; i++
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值