1. 程式人生 > >關於程序中以時間判斷接收數據結束時,接收數據長度設置為1時,出現接收不全的問題解釋。

關於程序中以時間判斷接收數據結束時,接收數據長度設置為1時,出現接收不全的問題解釋。

不能 長度 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時,出現接收不全的問題解釋。