C#通过串口读取仪器的测试状态(测试完成或未完成)很慢
我在写个c#程序,通过串口控制一台仪器进行如下操作: 开始测试--》读取测试结果 --》 通过测试结果,将结果Pass/Fail传送给电脑。
具体的说,我先让仪器开始测试(发送命令“TEST”),然后会去读取仪器的当时状态(发送“*opc?”),即询问仪器是否完成测试(返回字符串中有1则表示测试完成,有0表示测试正在进行中),如果未完成,则继续去读状态,反之如果完成测试,我接下来就要去读取测试结果。
现在问题是,我在读取仪器状态时,运行速度慢的出奇,通常是仪器面板上显示已经完成测试了约30秒后,程序才能读到测试完成的信号。我把代码贴上来,大家帮忙看下啊!
我没有用DataReceived事件来读,直接用ReadExisting()来读的,能读出来,就是很慢,请大家帮忙看下,并提些宝贵意见,谢谢了!
this.serialPort1.WriteLine("TEST"); //开始测试
//判断是否测试结束,测试结束后,仪器会返回1,否则返回0
Boolean IsInProcess = true;
Boolean IsFinish = false;
while (IsInProcess)
{
this.serialPort1.WriteLine("*opc?");
string status = this.serialPort1.ReadExisting();
string[] status1 = status.Split('\n');
if (status1.Length > 1)
{
if (status1[0] == "1" || status1[1] == "1")
{
IsFinish = true;
IsInProcess = false;
}
}
}