在判断头帧以后 下位机发过的数据 偶尔会发过来9个字节的数据 如果我按照10个字节的数据进行截取 后面就截取不到对的数据,我该如何把中间9个字节的数据 筛选掉 只要10个字节的数据 如果有思路请直接贴代码并注释上 注释,如果按照需求可以正常运行 我会采纳
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 检查是否允许跨线程调用控件,这里为了简化代码直接禁用了该功能
CheckForIllegalCrossThreadCalls = false;
// 读取所有可用字节数
int bytesToRead = serialPort1.BytesToRead;
//用于存储接收到的数据
byte[] receiveBuffer = new byte[bytesToRead];
//从串口读取数据
serialPort1.Read(receiveBuffer, 0, bytesToRead);
buffer.AddRange(receiveBuffer);
//将接收到的数据转换为字符串格式
if (buffer.Count >0 && buffer[0] == 0x68)
{
//如果缓冲区的长度大于等于8,则表示已经接收到完整的数据帧
if (buffer.Count >= 10)
{ //截取需要的10个字节数据
byte[] data = buffer.GetRange(0,10).ToArray();
//将接收到的数据转换为字符串格式
receivedString = BitConverter.ToString(data).Replace("-", "");
textBox1.AppendText(receivedString);
//将字符串追加至文本框中
string timeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
using (StreamWriter sw = new StreamWriter(@"C:\Users\guoxiaoru\Desktop\ACVB.txt", true))
{
sw.WriteLine(timeStr + " " + receivedString, "\n");
sw.Close();
}
//清空缓冲区
buffer.Clear();
}
}
//清空缓冲区
else { buffer.Clear(); }
}