目前有一段代码 buffer[5] ==0x02不成立的时候 我加上弹窗以后。只要弹出来窗口 我点一下确定 就可以继续运行程序,如果我不加弹窗 buffer[5] ==0x02不成立的时候 就卡住了 就不在接收串口数据了 不会自己运行 buffer.Clear();
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) //判断缓存中的数据
{
if(buffer.Count>=10) //判断缓存中的数据
{
if (buffer[5] ==0x02)
{
byte[] data = buffer.GetRange(0, 10).ToArray(); // 讲缓存中的数据存入列表内
receivedString = BitConverter.ToString(data).Replace("-", ""); // 转换为字符串
textBox1.AppendText(receivedString); //输出到textBox
string timeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // 时间
StreamWriter sw = new StreamWriter(@"C:\Users\guoxiaoru\Desktop\ACVB.txt", true); //写入文件夹
sw.WriteLine(timeStr + " " + receivedString, "\n");
sw.Close();
buffer.RemoveRange(0, 10);
}
else {
MessageBox.Show("此时buffer[5] ==0x02不成立");
buffer.Clear();
}
}
}
else { buffer.Clear(); }
}
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) //判断缓存中的数据
{
if(buffer.Count>=10) //判断缓存中的数据
{
if (buffer[5] ==0x02)
{
byte[] data = buffer.GetRange(0, 10).ToArray(); // 讲缓存中的数据存入列表内
receivedString = BitConverter.ToString(data).Replace("-", ""); // 转换为字符串
textBox1.AppendText(receivedString); //输出到textBox
string timeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // 时间
StreamWriter sw = new StreamWriter(@"C:\Users\guoxiaoru\Desktop\ACVB.txt", true); //写入文件夹
sw.WriteLine(timeStr + " " + receivedString, "\n");
sw.Close();
buffer.RemoveRange(0, 10);
}
else {
//MessageBox.Show("此时buffer[5] ==0x02不成立");
buffer.Clear();
}
}
}
else { buffer.Clear(); }
}