协议帧结构:0x10,0x02为帧头+长度+数据+ 0x10,0x03为帧尾
每次串口中断接收的相邻0x10是一组代表一个0x10数据,比如0x10,0x10,0x10,0x10x,0x10,0x10实际是3个0x10数据。目前我只能做到两个请大家看看,另在数据中0x10,0x10+0x10,0x03帧尾,也解不了。
if(rx_length--)//=0时,全部接收完成
{
uart0_rx_data[rx_count++]=SBUF0;
if(flag_0x10)//这样可以收到连续两个DATA是0x10的字节
{
flag_0x10=0;
break;
}else
{
if((uart0_rx_data[rx_count-2]==0x10)&&(uart0_rx_data[rx_count-1]==0x10))
{
--rx_count;
++rx_length;
flag_0x10=1;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
uart0_rx_data[rx_count++]=SBUF0;
if(rx_count>UART0_RX_MAXLEN-1)//超出最大接收范围,接收错误,初始化
{
uart0_rx_status=1;
break;
}
if(flag_0x10)//前面收到一个0x10
{
if(uart0_rx_data[rx_count-1]==0x03)//收到结束字节,一帧结束
{
uart0_rx_over=1;
uart0_rx_status=1;
rx_length=0;
rx_count=0;
flag_0x10=0;
//break;
}
else//在判断是否0x10
{
if(uart0_rx_data[rx_count-1]==0x10)
{
--rx_count;//丢弃一个0x10
flag_0x10=0;//初始化,接收下一个
}
}
}
else
{
if(uart0_rx_data[rx_count-1]==0x10){flag_0x10=1;}
}
break;
一周热门 更多>