如何将当前串行端口数据与c#中以前的数据进行比较



我想比较我的串行端口数据,我希望它遵循正确的顺序,使其成为合格结果。这就像如果击球水平=高,那么下一个结果如果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;

最新更新