创建一个定时器来调用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方法?

创建一个定时器来调用c#中的一个方法

您想要直接从代码中调用事件处理程序似乎很奇怪?

建议从计时器和事件处理程序中调用一个新函数。

但是你为什么要这样做,我还是觉得很臭。

你不需要计时器。删除它。

每当在串行端口上接收到数据时,将调用该事件。你不需要自己叫它。