我想比较我的串行端口数据,我希望它遵循正确的顺序,使其成为合格结果。这就像如果击球水平=高,那么下一个结果如果Ac=中,那么这将是一个传球结果,但如果Ac=高,那么接下来的结果是击球水平=低,那么它将失败。由于串行数据每秒都在运行,如何捕捉以前的结果并与传入的结果进行比较?
情况如下:
电池电量:高
击球水平:高
击球水平:中
结果=通过
击球水平:高
击球水平:低
结果=失败
下面的代码是我试图做的,但我认为这种方法不准确:
SerialPort sp = serialPort1;
string indata = sp.ReadExisting();
dataIn = indata;
string serialdata = indata.Replace("nr", "");
if (serialdata.Contains("Batt Level : High"))
{
Thread.Sleep(1000);
if ((serialdata.Contains("Batt Level : High")) ||
(serialdata.Contains("Batt Level : Mid")))
{
Battresult.Text = "PASS";
}
else
{
Battresult.Text = "FAIL";
}
}
else if (serialdata.Contains("Batt Level : Mid"))
{
Thread.Sleep(1000);
if ((serialdata.Contains("Batt Level : Mid")) || (serialdata.Contains("Batt Level : Low")))
{
Battresult.Text = "PASS";
}
else
{
Battresult.Text = "FAIL";
}
}
是这样的吗?
if (dataIn != null && dataIn.Contains("Batt Level : High"))
{
Thread.Sleep(1000);
if ((serialdata.Contains("Batt Level : High")) ||
(serialdata.Contains("Batt Level : Mid")))
{
BattResult.Text = "PASS";
}
else
{
BattResult.Text = "FAIL";
}
}
else if (dataIn != null && dataIn.Contains("Batt Level : Medium"))
{
Thread.Sleep(1000);
if ((serialdata.Contains("Batt Level : Mid")) ||
(serialdata.Contains("Batt Level : Low")))
{
BattResult.Text = "PASS";
}
else
{
BattResult.Text = "FAIL";
}
}
dataIn = indata;