2013-12-17 22 views
1

在.NET SerialPort類中,ReadExisting()方法返回String而不是字節數組。考慮到RS232通常用於移動7或8位值,這可能是或不是可打印字符,這似乎是一個奇怪的選擇。有這個選擇的原因嗎?在.NET中,爲什麼SerialPort.ReadExisting()返回一個字符串而不是字節數組?

目前我最終使用System.Text.Encoding.GetBytes(recvd_data)String轉換爲一個字節數組。有沒有更有效的方法?

+0

它看起來像一個方便的方法,因爲也有一個'Read'方法,其讀取成'字符[]'。 –

+0

BaseStream屬性是要走的路,請參閱http://www.sparxeng.com/blog/software/must-use-net-system-io-ports-serialport –

回答

3

我已經廣泛使用SerialPort,我發現讀取一系列字節的最佳方式是對ReadByte()進行多次調用。是的,你一次只讀一個字節,但我發現保持簡單可以避免問題。

最好的情況是,這種方法將使您不必進行轉換(因爲您會讀入一個字節數組)。

+0

您是否看到此方法的任何性能下降? Serial很慢,所以我猜測它的限制因素...... –

+0

@JesseCraig我沒有真正注意到任何類型的性能問題,並且我從串口讀取了很多數據。在您的情況下測試這兩種方法並查看哪個方法在您的方案中執行得更好可能是值得的。 – gleng

+0

@JesseCraig它是怎麼回事?你覺得這幫助你了嗎? – gleng

相關問題