//串口接收数据
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
Thread.Sleep(150);
byte [] nt=new byte[104];
try
{
serialPort1.Read(nt, 0, 104);
}
catch(TimeoutException x)
{
MessageBox.Show(x.Message);
}
ShowInfo(nt);
}为什么接收完数据后 空包他还会触发DataReceived事件呢,怎么解决
求高手指点,有代码更好
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
Thread.Sleep(150);
byte [] nt=new byte[104];
try
{
serialPort1.Read(nt, 0, 104);
}
catch(TimeoutException x)
{
MessageBox.Show(x.Message);
}
ShowInfo(nt);
}为什么接收完数据后 空包他还会触发DataReceived事件呢,怎么解决
求高手指点,有代码更好
加上一句试试:
serialPort1.DiscardInBuffer();
你判断一句
if(serialPort1.BytesToRead == 0) return;
如果是,那么空包也是“包”,当然要接收了。只有缓存区上没有包,才不触发DataReceive事件
我现在加了句代码
if (serialPort1.BytesToRead <= 0)
return;
不会出现超时异常但不知道有没有别的更好的办法