您的位置:首页 > 其它

.net micro framework的入门例程-点灯神话-6.使用定时器代替延时函数闪烁LED

2014-05-02 18:12 507 查看
可以学学怎么使用定时器

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.Timer timer = new System.Threading.Timer(

new TimerCallback(flashTick),

null,

5000,

5000);

System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

}

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 flashTick(object o)

{

if (!switchInterrupt.Read())

{

return;

}

lampOutport.Write(true);

System.Threading.Thread.Sleep(100);

System.Threading.Monitor.Enter(switchInterrupt);

if (switchInterrupt.Read())

{

lampOutport.Write(false);

}

System.Threading.Monitor.Exit(switchInterrupt);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: