【发布时间】:2011-11-25 20:28:09
【问题描述】:
我正在处理一个来电显示串行设备并编写以下程序:
serialPort = new SerialPort("COM7", 19200, Parity.None, 8, StopBits.One);
serialPort.DataReceived += serialPort_DataReceived;
serialPort.RtsEnable = true;
serialPort.Encoding = Encoding.ASCII;
serialPort.Open();
void serialPort_DataReceived(object s, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[serialPort.BytesToRead];
serialPort.Read(data, 0, data.Length);
Console.WriteLine(Encoding.ASCII.GetString(data));
}
一开始我接到一个电话,事件完美触发,结果是:"A0101181456926E"
问题在于后续事件...下次我拨打电话时,serialPort_DataReceived 事件会触发很多次,每个事件都有 1 个字符。
是否有任何要设置的属性或要调用的方法来解决此行为?
ps。如果我评论 serialPort.RtsEnable = true; 行,我不会收到任何后续事件。
【问题讨论】:
-
AFAIK 这是正常的行为......类似的事情会发生在 TCP 连接中 - 你必须通过相应地设计协议来处理......
-
您的
ReceivedBytesThreshold属性是什么值?
标签: c# serial-port