串口数据接收过快时,检查包头校验位的代码就会报错,发慢一地就不会

2019-07-21 00:39发布

可能两条数据间隔太短,串口一次把多条当一条处理了,轻问各位大佬有什么办法解决 检验的 检验的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
余怡帆℡
2019-07-24 12:21
[mw_shl_code=c,true]void Uart2Process(void)
{
        u8 buff[512];                        /*Need Modify*/
        int buffLen  = 0;
        int frameLen = 0;
        int i;

        buffLen = UART_Read(DEV_UART2, &buff[frameLen], sizeof(buff));
               
        //printf("zzzzzzzzzzzzz");
        if(buffLen != 0)
        {
                frameLen += buffLen;
                if( frameLen > sizeof( buff ))
                {       
                        buffLen  = 0;
                        frameLen = 0;
                        printf("VVVVVVVVVVVVVV");
                }

                for(i = 0;i < frameLen;i++)
                {
                               
                        if((buff== FRAME_COMM_START) && (buff[i+8] == FRAME_COMM_START))
                                {
                                        if(0 != appCommRevDataCheck(&buff,frameLen-i))
                                        {
                                                printf("QQQQQQQQQQQQ");
                                                continue;
                                        }
                                        else
                                        {
                                                appCommRevDataDeal(buff[1],&buff,frameLen-i);
                                                buffLen  = 0;
                                                frameLen = 0;
                                        }
                                }
                }
        }[/mw_shl_code]

一周热门 更多>