如何使用外部信号触发定时器

时间:2015-12-19 19:51:05

标签: c# timer triggers event-handling arduino

在电子产品方面,我是一个完全的外行。我想制作一个可以使用来自接近传感器的外部信号触发的定时器。让我们说当我的输送机上没有产品时,我的计时器会触发,直到产品在输送机上(此信号可以从接近传感器获取)。我希望所有时间都能实时显示并记录下来。任何人都可以指导我如何实现这一目标?我脑子里有C#,但我需要这个项目的入门指南。感谢。

1 个答案:

答案 0 :(得分:0)

由于您已将arduino列为标记,并且您希望使用c#,我将假设您要将其用于netduino类型设备。您将为您的prox传感器中断(或使用c#术语" event")。当此中断触发时,您可以通过使计时器的enable属性为true来启动计时器。在定时器间隔到期后,它将调用连接到已用事件的方法。发生这种情况时,您可以关闭计时器,使其在激活传感器之前不会再次运行。

class Program
{
    static Timer timer;

    static void Main(string[] args)
    {
        //set timer interval of 3 seconds
        timer = new Timer(interval: 3000);
        timer.Elapsed += Timer_Elapsed;

        InterruptPort sensor = new InterruptPort(/* sensor port information */);
        sensor.OnInterrupt += new NativeEventHandler(sensor_OnInterrupt);
    }

    private static void sensor_OnInterrupt(uint data1,uint data2,DateTime time)
    {
        Console.WriteLine(DateTime.Now);
        timer.Enabled = true;
    }

    private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        Console.WriteLine(DateTime.Now); 
        timer.Enabled = false;
        //do work
    }
}

有关日志记录和计时器的更多信息,请查看以下链接

logging

timers