|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2011-7-10 16:50:20
|
显示全部楼层
回复【6楼】coyool
while(pos != uart_rxtail)//看缓冲区中已接收的未读数据长度
{
length++;
pos++;
}
if(length < 5) return 0;//长度不到最小长度,目的是保证已收到帧长度l字段
这里有问题啊,很明显啊,你是全部都丢了,比如68h,00h,00h,16h,68h,00h,00h,16h,68h,00h,00h,16h
-----------------------------------------------------------------------
我这里Uart_RxHead++;是丢的意思
while(pos != uart_rxtail)//看缓冲区中已接收的未读数据长度
{
length++;
pos++;
}
if(length < 5) return 0;
只是还在缓冲区里先不读而已,等接受超过5了再读的意思,Uart_RxHead并没有变,读的时候还是Uart_RxBuf[Uart_RxHead],怎么会全部都丢了呢?我这里是没有全部丢的,全部是一字节一字节丢错误的的 |
|