C#串口接收不同步问题
第一次接触串口通信
我在上位机发送一个指令,然后下位机会返回一个信息。然后上位机根据信息判断。
public void FICCard_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (ComPort.Closing)//如果正在关闭,则退出监听
{
return;
}
try
{
this.Invoke((EventHandler)(delegate
{
ComPort.Listening = true;
string buf = ComPort.getInstance().ReadExisting();
result = buf.Replace("\r", "\r\n");
}));
}
finally
{
ComPort.Listening = false;
}
}
private void myButton1_Click(object sender, EventArgs e)
{
ComPort.sendData(Order.ic_instruction.ic_connect_order);
if (result == "OK")
{
textBox2.Text = "读卡器连接成功";
}
else
{
textBox2.Text = "读卡器连接失败,请检查串口。";
}
result = "";
}
网上找的资料,监听是开了另一个线程,当我点击button事件,发送同时后台也在接收,所以后面的判断都是旧的数据,再点一次才是上一次的数据。
要怎么改才能让信息及时判断呢。不要写在接收事件里,因为有几个按钮,发送不同的数据。
请教各位大牛们。