您的位置:首页 > 大数据 > 物联网

410c与MS10物联网系统的点灯代码分析

2015-12-01 19:32 489 查看
根据上一章我们所实现的电灯程序,我们花一点时间来分析一下在这个案例中,‘Tick’事件如何调用并反转LED。

时间模型

如下的代码为410c中所设置的C#代码:

public MainPage()
{
// ...

timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(500);
timer.Tick += Timer_Tick;
InitGPIO();
if (pin != null)
{
timer.Start();
}

// ...
}

private void Timer_Tick(object sender, object e)
{
if (pinValue == GpioPinValue.High)
{
pinValue = GpioPinValue.Low;
pin.Write(pinValue);
LED.Fill = redBrush;
}
else
{
pinValue = GpioPinValue.High;
pin.Write(pinValue);
LED.Fill = grayBrush;
}
}


初始化GPIO口

为了驱动GPIO口,首先我们要懂得如何初始化。 如下为C#代码

using Windows.Devices.Gpio;

private void InitGPIO()
{
var gpio = GpioController.GetDefault();

// Show an error if there is no GPIO controller
if (gpio == null)
{
pin = null;
GpioStatus.Text = "There is no GPIO controller on this device.";
return;
}

pin = gpio.OpenPin(LED_PIN);
pinValue = GpioPinValue.High;
pin.Write(pinValue);
pin.SetDriveMode(GpioPinDriveMode.Output);

GpioStatus.Text = "GPIO pin initialized correctly.";

}


我们一步步的分析上面的代码:

 首先,我们使用GpioController.GetDefault() 来获得GPIO控制

 如果设备没有对GPIO的控制权,那么函数将返回null

 接下来我们试图通过调用GpioController.OpenPin() 来更改LED_PIN的值

 当我们能够控制Pin的值后,我们使用函数 GpioPin.Write() 来设置输出电平为高

 我们接下来使用 GpioPin.SetDriveMode() 来设置输出模式下的pin值

修改GPIO口的状态

当我们访问 实例时,没必要更改pin的状态从而控制LED的亮灭

如果我们需要将LED打开,我们只需要简单的写入值 到IO口中:

pin.Write(GpioPinValue.Low);


举一反三,我们也可以通过如下的方式将IO口设置为高:

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