我正在编写一个程序,该程序在串行端口上写入无线设备。固件有一项功能可以确认发送到设备的最后一条消息是否正常,所以我正在尝试使用它并更新GUI上的设置读数,而不是每次我都要求设备进行所有设置变化。我认为我的代码会更好地解释它:
// global variable
bool queryStatusOK;
//event handler response from serial port
this.QueryStatusReponseEvent += QueryStatusResponse;
private void QueryStatusResponse(byte[] packet)
{
if (packet[3] == 0) queryStatusOK = true;
else queryStatusOK = false;
}
public void setParameter(string device)
{
//send command to serial port to change a single device parameter
Thread.Sleep(100); //sleep thread so 2 commands are not sent at once
//send command to confirm previous command was received
Thread.Sleep(100); //sleep thread to give time for confirmation to receive
if (queryStatusOK)
{
//update GUI at this point
}
}
该计划不一致。它有时有效,但并非总是如此。即使我将线程休眠延长到一秒钟以给出更新的布尔时间,它仍然有时不会命中它。任何人都可以提出更好的方法吗?
谢谢!
麦克