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

根据上一章我们所实现的电灯程序,我们花一点时间来分析一下在这个案例中,‘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);

你可能感兴趣的:(C#,物联网,代码分析,410c)