關於程序中以時間判斷接收數據結束時,接收數據長度設置為1時,出現接收不全的問題解釋。
阿新 • • 發佈:2019-05-08
不能 長度 num 接收不全 情況 設置 uart 題解 沒有
首先明確:接收長度不能設置為1
程序代碼如下:
if(Paral_RX_Count >= 10 )
{
//@@@@[email protected]@@@
if(Paral_RX_NumByte >= 1)
{
//@@@@[email protected]@@@
WriteUart1CyBuf(Paral_RX_NumByte,ParalRcvBuf);
Paral_RX_Count = 0;
Paral_RX_NumByte = 0;
}
}
當Paral_RX_NumByte >=1時,解釋如下:
沒有接收數據時,Paral_RX_Count會大於10,走到@@@@[email protected]@@@時,正好收到1個數據,這時程序就會進入@@@@[email protected]@@@,違背程序本意。
當Paral_RX_NumByte >= 2時,就不會出現上面的情況,解釋如下:
沒有接收數據時,Paral_RX_Count會大於10,走到@@@@[email protected]@@@時,正好收到1個數據,但是Paral_RX_NumByte >= 2,不會進入@@@@[email protected]@@@,再有數據來到時,已經將Paral_RX_Count設置為0,所以不會出現上面的情況。
因此,程序不能處理一次發送一個字節的情況。
關於程序中以時間判斷接收數據結束時,接收數據長度設置為1時,出現接收不全的問題解釋。