[英]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.