.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);
}
}
}
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);
}
}
}
相关文章推荐
- 最小树形图 UVA 11183 Teen Girl Squad
- rmq的st算法模板题 nyoj 119
- .net micro framework的入门例程-点灯神话-5.加入一个线程闪烁LED
- 用 select 实现处理多连接的异步通讯服务器
- rmq的st算法模板题 nyoj 119
- 白话Java应用打包
- 无线客户端应该如何选择rpc服务
- TOJ 1706: City Horizon -- 线段树,平衡树
- opengl 【1】开始画个多边形
- UVa:340 - Master-Mind Hints
- nefu 635 Twinkle Twinkle Little Star
- 计算机网络总结(下)
- firefox 新建标签页默认打开页面修改
- MeshLab学习
- 【Data Structure & Algorithm】HashSet, HashMap, HashTable原理详解
- .net micro framework的入门例程-点灯神话-4.加入闪烁LED函数
- secondary namenode和namenode分离
- Centos安装Memcache
- c++ 全排列
- 计算机网络总结(上)