创建一个定时器来调用c#中的一个方法
本文关键字:一个 方法 定时器 创建 调用 | 更新日期: 2023-09-27 18:17:23
我正在开发一个控制台应用程序,它能够通过串行端口从Arduino读取和写入数据。当我从Arduino读取时,我必须等待从它获得响应,因此创建计时器是更好的选择。
我创建了这个Timer,它将每2000毫秒运行一次。
static void Main(string[] args)
{
SerialPort port = new SerialPort("COM1", 9600, Parity.Odd, 7, StopBits.One);
Timer t = new Timer(TimerCallback, null, 0, 2000);
port.DataReceived += Port_DataReceived;
port.Open();
}
private static void TimerCallback(Object o)
{
//Call the method
}
我要做的是在TimerCallback
private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort port = sender as SerialPort;
// Leitura de dados
string incoming = port.ReadExisting();
string questionmark = "?";
string carriageReturn = "'r";
string text = string.Empty;
switch (incoming)
{
case "@r'r":
// send the message back
port.Write(questionmark + "*" + carriageReturn);
break;
case "@{/r":
port.Write("@" + text);
break;
default:
Console.WriteLine("Unknown command sent by the Arduino!'n Command: " + incoming);
break;
}
}
我应该如何调用Port_DataReceived方法?
您想要直接从代码中调用事件处理程序似乎很奇怪?
建议从计时器和事件处理程序中调用一个新函数。
但是你为什么要这样做,我还是觉得很臭。
你不需要计时器。删除它。
每当在串行端口上接收到数据时,将调用该事件。你不需要自己叫它。