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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值