关于程序中以时间判断接收数据结束时,接收数据长度设置为1时,出现接收不全的问题解释。
首先明确:接收长度不能设置为1
程序代码如下:
if(Paral_RX_Count >= 10 )
{
//@@@@2@@@@
if(Paral_RX_NumByte >= 1)
{
//@@@@3@@@@
WriteUart1CyBuf(Paral_RX_NumByte,ParalRcvBuf);
Paral_RX_Count = 0;
Paral_RX_NumByte = 0;
}
}
当Paral_RX_NumByte >=1时,解释如下:
没有接收数据时,Paral_RX_Count会大于10,走到@@@@2@@@@时,正好收到1个数据,这时程序就会进入@@@@3@@@@,违背程序本意。
当Paral_RX_NumByte >= 2时,就不会出现上面的情况,解释如下:
没有接收数据时,Paral_RX_Count会大于10,走到@@@@2@@@@时,正好收到1个数据,但是Paral_RX_NumByte >= 2,不会进入@@@@3@@@@,再有数据来到时,已经将Paral_RX_Count设置为0,所以不会出现上面的情况。
因此,程序不能处理一次发送一个字节的情况。