串口接收丢失数据问题
我在使用串口转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();//接收字符不对,删除
}
}
}