c#读取串口引发两次DataReceived事件
最近给公司做一个项目,用到MICROSCAN的条码采集器,是用串口进行通信的。但每次读取条码如果成功(13位条码)就会激发两次DataReceived事件,并且将条码拆成两部分,分别是前8位一部分,后5位一部分。serialPort1的主要设置属性如下:
DataBits=7;
Parity=Even;
ReceivedBytesThreshold=9;
其余皆默认。
DataReceived主要代码如下:
delegate void HandleSerial(string text);
private void serialPort1_DataReceived(objectsender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
HandleSerial abc=new HandleSerial(addItems);
this.Invoke(abc,serialPort1.ReadExisting());
}
private void addItems(string items)
{
this.listBox1.Items.Add(items);
}
------解决方案--------------------串口进行通信 本来 就是 这样的
一段 数据有 可能 分几次 收到
条码采集器 可以 设置 结尾 +回车符
你可以 根据 回车符判断
serialPort1_DataReceived 的数据
先写入 buff
每次收到的 累加起来 用 结束符 分开
有些 设备 没结束符的
我是用 时间 来 判断的
收到后 如果在0.1秒之内 还有 数据收到
就合起来