.net micro framework的入门例程-点灯神话-5.加入一个线程闪烁LED

将主函数中闪烁程序移动至新线程

并加入保护机制,防止误动作



using System;

using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;


using GHIElectronics.Gadgeteer;
namespace my_LED
{
    public class my_led
    {
        static OutputPort lampOutport = new OutputPort((Cpu.Pin)GHI.Hardware.G120.Pin.P1_15,false);
        static InterruptPort switchInterrupt = new InterruptPort(
                                    (Cpu.Pin)GHI.Hardware.G120.Pin.P2_10,
                                    false,
                                    Port.ResistorMode.PullUp,
                                    Port.InterruptMode.InterruptEdgeBoth);
       
        public static void Main()
        {
            
            switchInterrupt.OnInterrupt += new NativeEventHandler(switchInterrupt_OnInterrupt);
            System.Threading.Thread finderThread = new Thread(finderFlash);
            finderThread.Start();
        }

        static void switchInterrupt_OnInterrupt(uint data1, uint data2, DateTime time)
        {
            Monitor.Enter(switchInterrupt);
            switch (data2)
            {
                case 0: lampOutport.Write(true); break;
                case 1: lampOutport.Write(false); break;
                default: break;
            }
            Monitor.Exit(switchInterrupt);
            //throw new NotImplementedException();
        }

        private static void finderFlash()
        {
            while (true)
            {
                //System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);            
                System.Threading.Thread.Sleep(5000);
                System.Threading.Monitor.Enter(switchInterrupt);
                if (!switchInterrupt.Read())
                {
                    continue;
                }
                System.Threading.Monitor.Exit(switchInterrupt);
                lampOutport.Write(true);
                System.Threading.Thread.Sleep(100);
                if (switchInterrupt.Read())
                {
                    lampOutport.Write(false);
                }
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值