查看: 8353|回复: 2

[教程] 【RPI 2】树莓派 Windows10 IoT Core 开发教程 转

[复制链接]
  • TA的每日心情
    开心
    2016-8-4 10:56
  • 签到天数: 242 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-5-4 13:50:06 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 木林森X 于 2015-5-4 13:51 编辑

    树莓派 Windows10 IoT Core 开发教程入门指引
    现在让我们把LED连接到安装了Windows10 IoT Core 的硬件设备,并创建一个应用程序来让它们闪烁。
    在Visual Studio中加载工程
    首先在这里找到例程,这里有C++和C#的版本可供选择。本教程仅介绍使用C#的版本。将工程文件夹拷贝到磁盘中,然后用Visual Studio打开。
    https://github.com/ms-iot/samples/tree/develop/Blinky
    然后检查你的Windows IoT设备,确保打开了远程调试功能(Remote Debugging),可以参考这里的Hello World程序。
    http://ms-iot.github.io/content/win10/samples/HelloWorld.htm
    请注意如果Windows 10找不到可用的GPIO接口,应用程序将不会工作。比如你将windows10安装在了VM虚拟机中。
    将LED连接到 Windows 10 设备
    准备好下面的东西:
    一个LED灯
    一个阻值220欧姆电阻
    若干杜邦线和面包板
    components-0.jpg
    将LED的负极连接到Raspberry Pi2的GPIO 5引脚(Board编号29),正极串联嗲足后连接到3.3v电源。(请务必注意极性,在直插型封装的LED中,较长的引脚是正极+,较短的引脚是负极-)
    RP2_Pinout-0.jpg
    breadboard_assembled_rpi2-0.jpg
    部署应用程序
    对于Raspberry Pi2来说,应该在architecture的下拉菜单中选择ARM。
    以上的步骤都做好了以后。可以按下F5,程序会自动运行,然后就可以看到闪烁的LED和下面的模拟界面。
    blinky-screenshot-0.jpg
    可以通过改变滑块的位置来调整LED闪烁的有效时间
    代码详解
    下面就是这个程序的代码,基本工作原理是当定时器的时间达到后,调用事件Tick改变LED的状态。
    定时器代码
    这里是设置定时器的C#代码
    public MainPage()
    {
        // ...

        this.timer = new DispatcherTimer();
        this.timer.Interval = TimeSpan.FromMilliseconds(500);
        this.timer.Tick += Timer_Tick;
        this.timer.Start();

        // ...
    }

    private void Timer_Tick(object sender, object e)
    {
        FlipLED();
    }

    初始化GPIO引脚
    为了能够驱动GPIO,首先需要对它进行初始化,这里是初始化程序的C#代码
    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);

        // Show an error if the pin wasn't initialized properly
        if (pin == null)
        {
            GpioStatus.Text = "There were problems initializing the GPIO pin.";
            return;
        }

        pin.Write(GpioPinValue.High);
        pin.SetDriveMode(GpioPinDriveMode.Output);

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

    简单的解释就是:
    ~首先,使用GpioController.GetDefault()获取GPIO控制权限
    ~如果设备不具有可用的GPIO资源,则返回null
    ~接下来通过调用GpioController.OpenPin()函数来打开GPIO引脚
    ~当我们获取了GPIO的控制权限并打开了GPIO引脚后,使用GpioPin.Write()函数来将LED关闭(参数设置High)
    ~这里还使用了GpioPin.SetDriveMode()函数将GPIO引脚的工作模式设置为输出模式。
    改变GPIO引脚的状态
    使用GpioPinValue.Low参数打开LED:
    this.pin.Write(GpioPinValue.Low);
    使用GpioPinValue.High参数关闭LED:
    this.pin.Write(GpioPinValue.High);
    因为我们将LED的正极连接到了3.3V电源,所以这里通过将GPIO引脚置低电平来打开LED。


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-4 10:56
  • 签到天数: 242 天

    连续签到: 1 天

    [LV.8]以坛为家I

     楼主| 发表于 2015-5-4 13:55:41 | 显示全部楼层
    C#,有多少人想用啊.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-8-28 11:59
  • 签到天数: 1558 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-5-4 14:19:43 | 显示全部楼层
    有C++版本的教程就好了,C#比较少用
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 11:36 , Processed in 0.135254 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.