串口接收丢失数据问题
我在使用串口转usb接收解析数据,10分钟发一次,一小时应该收到六条数据,但是接收不稳定,有时候只能接到3条。
但是用串口助手去发送,就不会丢数据。
希望看到的老哥能指出哪里有问题。
- //不考虑帧头帧尾和校验之类的问题
- private List<byte> buffer = new List<byte>(2048);
- private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
- {
- Thread.Sleep(100);//添加延时
- // 读取有效的数据
- byte[] dataTemp = new byte[serialPort1.BytesToRead];
- serialPort1.Read(dataTemp, 0, dataTemp.Length);
- buffer.AddRange(dataTemp);
- int index = 1;
- while (buffer.Count >= 1)
- {
- if (buffer[0] == 0x24) //判断收到的首字符 $
- {
- if (buffer[index] != 0x24) //直到收到尾字符为$停下
- {
- index++;
- if (index >= buffer.Count)
- {
- break;
- }
- }
- else
- {
- byte[] ReceiveBytes = new byte[index];
- buffer.CopyTo(0, ReceiveBytes, 0, index);
- if (ReceiveBytes.Length >= 84)//实际发送的长度是111,但是需要只保留前84位的数据
- {
- AnalysisData(ReceiveBytes);//去解析数据
- buffer.Clear();
- }
- else
- {
- buffer.Clear();
- break;
- }
- }
- }
- else
- {
- buffer.Clear();//接收字符不对,删除
- }
- }
- }
-