System.IO.Ports.SerialPort串口通信接收完整數據


  C#中使用System.IO.Ports.SerialPort進行串口通信網上資料也很多,但都沒有提及一些細節;

 比如 串口有時候並不會一次性把你想要的數據全部傳輸給你,可能會分為1次,2次,3次分別傳送一部分數據給你,這時候一般會設置字符串的結束符來判定是否傳輸完畢(一般設置為\n ,\r)

 傳輸過程中字符串的后面都會跟着無數個\0\0\0;經過同事測試,每次都從串口緩存中取出所有的傳輸數據,然后再進行判斷,可以獲取完整的字符串;代碼如下:

          //讀取完整字符串 硬件掃描槍設置傳輸結束符為\r

            byte[] readBuffer = new byte[serialPortScan.BytesToRead];
            tempCode += serialPortScan.ReadExisting().Trim( '\0' );

            if ( tempCode.IndexOf( '\r' ) > 0 )
            {
                singleCode = tempCode.Replace( REPLACE_URL, "" ).Trim( '\r' );
                serialPortScan.DiscardInBuffer();
                tempCode = string.Empty;
            }
            else
            {
                return;
            }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM