请教串口接收问题
写了一个串口接收程序,功能就是当串口来数据时会将数据通过invoke显示到label控件中。我给串口不停的发送一个字符串,当停止发送数据时,仍然有这个字符串接收到,这是为什么呢?有没有办法停止发送了就不再接收之前的数据?
void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
serialReadString = String.Empty;
serialReadString = sp.ReadLine();
MessageBox.Show(serialReadString);
label35.BeginInvoke(new System.EventHandler(ax),serialReadString);
}
停止发送后,仍然不停有对话框弹出,显示这串字符串,但是串口监听软件看不到有字符串,
------解决方案--------------------关闭清除后,再将事件移除
private SerialPort serialPort = new SerialPort();
this.serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
移除
this.serialPort.DataReceived -= new SerialDataReceivedEventHandler(port_DataReceived);
------解决方案--------------------
就是说你停止发送后,还是有别的数据要接收?但是不想接收前面的数据?
额,不过奇怪的是,你都停止发送指令了,为什么之前的数据还会发送给你呢。
不知道你接收到的数据有没有特征,如果两种时刻的数据是有各自特点的,那你可以判断,停止发送后,之前的数据即使接收到了也不在label显示