【问题标题】:How to trigger a timer using an external signal如何使用外部信号触发定时器
【发布时间】:2016-03-26 06:57:29
【问题描述】:

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

【问题讨论】:

    标签: c# timer triggers event-handling arduino


    【解决方案1】:

    由于您已将 arduino 列为标签并且您想要使用 c#,因此我将假设您想要将其用于 netduino 类型的设备。您将为您的 prox 传感器设置一个中断(或用 c# 术语称为“事件”)。当此中断触发时,您可以通过将计时器的启用属性设置为 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

    【讨论】:

    • 感谢您的帮助,但我并不真正了解 C# 中的编码。用户应用程序可以用 C# 编写,而接近传感器可以连接到 adruino(与 PC 用户应用程序接口),这只是一个想法。我需要一份关于我应该用来实现这一目标的学习材料和方法的初学者指南。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多