[英]received data from serial port in specific time interval c#
抱歉,这个问题没有任何意义。 我在c#中创建一个GUI,以从控制器接收数据和向控制器发送数据。 我被困在一个很奇怪的宫殿里。 假设我已经向控制器发送了数据,并且控制器应将确认发送回去。 我正在处理确认。 我的问题是发送数据后,如果我没有从控制器中得到任何东西,我想提出一个错误。
在port_receive事件中,将“ dataReceived”标志设置为true。 在您的timer.Elapsed事件处理程序中,如果此值为false,则表示尚未及时接收到数据,并且可能引发错误。 下面的示例演示了类似的内容,DataReceived方法表示您的port_receive方法。 您可以按计时器间隔和延迟进行操作,以查看是否及时接收到数据,则永远不会显示错误消息。
using System;
using System.Threading.Tasks;
using System.Timers;
namespace ConsoleApplication7
{
class Program
{
static bool dataNotReceived = true;
static readonly Timer timer = new Timer {Interval = 1000};
static void Main(string[] args)
{
timer.Elapsed += (sender, eventArgs) =>
{
if (dataNotReceived)
{
Console.WriteLine("Data not received, error thrown...");
throw new Exception();
}
};
timer.Start();
DataReceived();
Console.ReadLine();
}
static async Task DataReceived()
{
await Task.Delay(2000);
Console.WriteLine("Data received in time");
dataNotReceived = false;
timer.Stop();
}
}
}
像这样使用SerialPort的ReadTimeout
SerialPort Port = new SerialPort()
//Define baudrate and so on
Port.ReadTimeout = 1000;
现在,您可以通过等待答案来获取TimeoutException。
Port.Write(Request);
try
{
//waiting for an answer
Port.ReadByte();
}
catch (TimeoutException)
{
//No answer until timeout
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.