我試圖從連接到COM端口的掃描器讀取字節到字節數組中。 C#中的串行端口庫已經具有Read函數,這是我用來嘗試讀取的函數。我有它的設置,以便讀入的字節輸出到控制檯。我正在使用一個非常可預測的協議,所以我知道當我在代碼中傳遞該行時,我期待的是什麼樣的字節數組。但是,如果我運行該程序,我只能讀取一個字節。如果我重新運行同一個程序實例(通過發送相同的讀命令),我會得到剩餘的預期字節。只有在我第三次運行這個命令後,才能得到我期望的所有字節。這個問題是完全避免的,但如果我只是在讀取線上插入一個斷點並跨越那一行。如果我這樣做,我每次都會得到完整的閱讀。我的問題是,如何在不插入斷點的情況下每次完成讀取操作?我試過使用系統暫停的方法來停止執行,並讓COM端口掃描得足夠快,這是行不通的。我也試過使用一個線程(見下面的代碼)。這也沒有奏效。有什麼建議麼?不完整的串行端口讀取C#
t = new Thread(() => device.Read(buffer));
t.Start();
t.Join();
再次,我希望只輸出採用的是全包之後再發送讀命令幾次或踩踏在具有斷點上面的命令。否則,我會用小的「字節大小的樣本」得到我的預期輸出。任何幫助表示讚賞!
你的代碼不是有效代碼,沒有'SerialPort'函數只接受一個字節數組。只有兩個'Read'函數[都](http://msdn.microsoft.com/en-us/library/ms143549.aspx)[有](http://msdn.microsoft.com/en-us /library/34t733fh.aspx)三個參數 –
爲什麼不使用串口的datareceived事件來獲取數據?由於datareceived處理程序位於其自己的線程中,因此無需使用其他線程。 – user2019047
讀過載以接受字節數組 –