程序里有一个string类型的变量用来存放我要发送的数据,
比如我要发送:
a
b
c每一行是一个命令,每一行后面都有回车符“\n”,串口每收到一个命令都要再传回来一些数据发送完 a 之后,等待串口传回来的数据,如果有数据返回,再接着发送B,如果返回了error或者过了n秒还没有数据返回,那么就提示用户超时,后面的就不发了请问这个该怎么实现呢。
比如我要发送:
a
b
c每一行是一个命令,每一行后面都有回车符“\n”,串口每收到一个命令都要再传回来一些数据发送完 a 之后,等待串口传回来的数据,如果有数据返回,再接着发送B,如果返回了error或者过了n秒还没有数据返回,那么就提示用户超时,后面的就不发了请问这个该怎么实现呢。
在serialport 的dataReceive事件中处理接受的数据
用timer控制回传和超时问题
serialport sp=new serialport ();
sp.PortName = "com3";
sp.BaudRate = 9600;
sp.ReadTimeout = 5000;//5秒后时间过期
sp.Open();
sp.WriteLine("a");
string aa=sp.readLine();
sp.WriteLine("b");
string bb=sp.readLine();
sp.WriteLine("c");
string cc=sp.readLine();
我是觉得这个是比较笨的方法用了2L的方法,每次ReadLine的时候就超时
{
try
{
serialPort1.WriteLine(sendstring);
for (int i = 0; i < timeout * 10; i++)
{
System.Threading.Thread.Sleep(100);
if (serialPort1.BytesToRead > 0)
{
if (serialPort1.ReadLine() == "error")
return false;
else
return true;
}
} return false ;
}
catch
{
return false;
}
}