我有一个DataReceived方法触发从RS232设备发送数据。使用以下代码顺利运行
byte[] data = new Byte[serialPort.BytesToRead];
serialPort.Read(data, 0, data.Length);
string read = System.Text.Encoding.ASCII.GetString(data);
但如果我在数据后添加一个字符串
string read = System.Text.Encoding.ASCII.GetString(data) + "asdf \n";
仍然收到数据,但偶尔会显示不正确的数据。例如。如果我连接到一个秤并应该读“10.45kg asdf”它会在我的电脑上显示为“10. asdf45kg”。这有什么问题?
答案 0 :(得分:4)
当串口感觉触发它时,将触发DataReceived
方法,这不一定是从设备收到完整字符串时。有关详细信息的详细讨论,请参阅this SO answer。如果您有已知的终结符,则可以通过设置SerialPort的NewLine
属性,然后使用ReadLine()
来解决此问题。