zoukankan      html  css  js  c++  java
  • Win10 IoT 8 GPIO输入输出

    微软官方的例子Blinky能够控制GPIO的输出并在界面中显示出来,通过我自己的改造,将这个工程从GPIO输入来控制输入LED的状态并且在界面中显示出来,而输入是通过GPIO的事件触发来完成,并立即刷新界面显示。

    在winform中只要用Invoke即可实现跨线程访问UI,但是在这个UWP工程里的界面元素没有Invoke方法,通过叶帆老师的帮助采用C#5.0的新特性async await异步方法解决了跨线程访问UI的功能。

    部分代码如下:

        public sealed partial class MainPage : Page
        {
            private const int LED_PIN = 5;
            private const int SWITCH_PIN = 6;
            private GpioPin pinled;
            private GpioPin pinswitch;
            private SolidColorBrush redBrush = new SolidColorBrush(Windows.UI.Colors.Red);
            private SolidColorBrush grayBrush = new SolidColorBrush(Windows.UI.Colors.LightGray);
    
            public MainPage()
            {
                this.InitializeComponent();
                InitGPIO();
            }
    
            private void InitGPIO()
            {
                var gpio = GpioController.GetDefault();
    
                // Show an error if there is no GPIO controller
                if (gpio == null)
                {
                    pinled = null;
                    pinswitch = null;
                    GpioStatus.Text = "There is no GPIO controller on this device.";
                    return;
                }
                pinswitch = gpio.OpenPin(SWITCH_PIN);
                pinswitch.DebounceTimeout = new TimeSpan(0, 0, 0, 0, 50);//消抖时间
                pinswitch.SetDriveMode(GpioPinDriveMode.Input);
                pinled = gpio.OpenPin(LED_PIN);
                pinled.SetDriveMode(GpioPinDriveMode.Output);
                pinled.Write(pinswitch.Read());
                pinswitch.ValueChanged += Pinswitch_ValueChanged;
    
                GpioStatus.Text = "GPIO pin initialized correctly.";
            }
    
            private async void Pinswitch_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args)
            {
                GpioPinValue pinvalue = pinswitch.Read();
                pinled.Write(pinvalue);
    
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    switch (pinvalue)
                    {
                        case GpioPinValue.Low:
                            LED.Fill = redBrush;
                            break;
                        case GpioPinValue.High:
                            LED.Fill = grayBrush;
                            break;
                        default:
                            break;
                    }
                });
            }
        }
    

      

    完整程序包连接如下:

     http://download.csdn.net/detail/wangji666666/9411014

    注意:要将项目属性页“Debug”下的Remote machine中内容改成自己的win10iot设备的名称或者是IP

  • 相关阅读:
    IT小小鸟读书笔记2
    第五周读书笔记
    JSON Schema 入门指南【Java后端使用】
    win10装多个MySQL(MySQL 8.0免安装版)
    记一些实习生问我的问题
    JAVA项目(maven)使用钉钉SDK(获取token、用户等)
    从项目开始的前端开发学习
    从项目开始的Java开发学习
    HBuilderX 5+APP MUI 入门
    项目部署各种配置
  • 原文地址:https://www.cnblogs.com/wangji666666/p/5144250.html
Copyright © 2011-2022 走看看