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

时间:2010-12-03 12:04:12

标签: c# serial-port

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

1 个答案:

答案 0 :(得分:4)

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