附加字符串时C#SerialPort DataReceived问题

我有一个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”。 这里有什么问题?

当串口感觉触发它时,将触发DataReceived方法,这不一定是从设备收到完整字符串时。 有关详细信息的详细讨论,请参阅此SO答案 。 如果您有一个已知的终结符,可以通过设置SerialPort的NewLine属性,然后使用ReadLine()来解决此问题。