关于单片机串口协议解析算法求指导
吾爱单片机 2017-08-02 10:22:36 有类似这么一些数据 会由GPRS模块 通过串口发给单片机
05 05 00 11 11 (包头:05 长度:05 命令:00 数据:11 校验 :11)
单片机在接收到的时候 会开一个缓冲区去存储数据,然后在主函数解析对应的数据,但是目前由于GPRS模块会出现粘包等情况,所以在解析的时候可能会出现丢包,数据解析不完整等情况! 请问有没有比较好的串口解析算法!!
中断内容
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
if(Serial1_Receive_Lenght<Serial1_Receive_MaxLenght)
{
if(Serial1_Receive_Lenght >Serial1_Receive_MaxLenght )
{
Serial1_Receive_Lenght = Serial1_Receive_MaxLenght + 1;
}
Serial1_Receive_Data[Serial1_Receive_Lenght++]=USART_ReceiveData(USART1);
}
Serial1_Receive_Time = 11;
}
}
主函数解析
void main()
{
if(1 ==Serial1_Receive_Time )
{
}
}