首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# UWP中的ABElecrtonics_Win10IOT_Libraries?

C# UWP中的ABElecrtonics_Win10IOT_Libraries?
EN

Stack Overflow用户
提问于 2018-07-29 19:17:52
回答 2查看 59关注 0票数 0

有没有人能帮我理解一下如何用ABElecrtonics_Win10IOT_Libraries的C# UWP中的IoPiPlus扩展板来点亮led和读取按钮的状态?我找到的所有教程都是针对python的。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-07-30 16:13:54

The IO Pi Plus是一款32通道数字扩展板,专为覆盆子Pi设计。它可以通过树莓派I2C端口进行控制。GPIO #2,执行I2C。这是Raspberry Pi 2 & 3 Pin Mappings

请参阅AB Electronics UK Windows 10 IOT库和演示。您可以将使能引脚设置为使用输出使能功能以及使能和禁用输出。

代码语言:javascript
复制
ABElectronics_Win10IOT_Libraries.ServoPi servo = new ABElectronics_Win10IOT_Libraries.ServoPi(0x40);

servo.OutputEnablePin = 17; // set to GPIO pin 17 to control
servo.OutputEnable();       //set Gpio Low
servo.OutputDisable();      //set Gpio High
票数 1
EN

Stack Overflow用户

发布于 2018-07-30 20:56:38

同时,我设法用两个按钮控制了软件和硬件中的两个LED。下面我将放入代码,它可能会对其他人有用

代码语言:javascript
复制
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System.Threading;
using ABElectronics_Win10IOT_Libraries;
using Windows.UI.Popups;

namespace IoPiPlust_start_led
{
    public sealed partial class MainPage : Page
    {
        int x = 0;
        int y = 0;
        public IOPi bus1 = new IOPi(0x20);
        public IOPi bus2 = new IOPi(0x21);
        int TIME_INTERVAL_IN_MILLISECONDS = 100;
        Timer _timer1;

        public MainPage()
        {
            this.InitializeComponent();
            conect();
            _timer1 = new Timer(Timer1_Tick, null, TIME_INTERVAL_IN_MILLISECONDS, Timeout.Infinite);
        }

        public async void conect()
        {
            bus1.Connected += Bus1_Connected;
            bus2.Connected += Bus2_Connected;
            await bus1.Connect();
            await bus2.Connect();
            bus2.SetPortDirection(0, 0x00);
            bus1.SetPortDirection(0, 0xFF);
            bus1.SetPortPullups(0, 0xFF);
            bus1.InvertPort(0, 0xFF);
        }

        private void Bus2_Connected(object sender, EventArgs e)
        {
            bus2.SetPortDirection(0, 0x00);
        }

        private void Bus1_Connected(object sender, EventArgs e)
        {
            ReadBus1();
            _timer1.Change(TIME_INTERVAL_IN_MILLISECONDS, Timeout.Infinite);
        }

        private void Timer1_Tick(Object state)
        {
            if (bus1.IsConnected)
            {
                ReadBus1();
                if (bus2.IsConnected)
                {
                    if (bus1.ReadPin(1))
                    { bus2.WritePin(1, true); }
                    if (bus1.ReadPin(2))
                    { bus2.WritePin(2, true); }
                    if (!bus1.ReadPin(1))
                    { bus2.WritePin(1, false); }
                    if (!bus1.ReadPin(2))
                    { bus2.WritePin(2, false); }
                }
                _timer1.Change(TIME_INTERVAL_IN_MILLISECONDS, Timeout.Infinite);
            }
        }

        public async void ReadBus1()
        {
            if (bus1.IsConnected)
            {
                try
                { Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        bus1_pin1_chk.IsChecked = bus1.ReadPin(1);
                        bus1_pin2_chk.IsChecked = bus1.ReadPin(2);
                    }
                    );
                }
                catch (Exception e)
                {
                    throw e;
                }   
            }
        }

        private void red_led_btn_Click(object sender, RoutedEventArgs e)
        {

            if(x%2==0)
            { bus2.WritePin(2, true); }
            else
            { bus2.WritePin(2, false); }
            x++;
        }

        private void green_led_btn_Click(object sender, RoutedEventArgs e)
        {

            if (y % 2 == 0)
            {  bus2.WritePin(1, true); }
            else
            { bus2.WritePin(1, false); }
            y++;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            bus2.WritePin(1, false);
            bus2.WritePin(2, false);
            x = 0;
            y = 0;
        }
    }
}

MainPage.xaml:

代码语言:javascript
复制
<Page
    x:Class="IoPiPlust_start_led.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:IoPiPlust_start_led"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="red_led_btn" Content="Red" HorizontalAlignment="Left" Margin="170,277,0,0" VerticalAlignment="Top" Click="red_led_btn_Click"/>
        <Button x:Name="green_led_btn" Content="Green" HorizontalAlignment="Left" Margin="278,277,0,0" VerticalAlignment="Top" Click="green_led_btn_Click"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="240,364,0,0" VerticalAlignment="Top" Click="Button_Click"/>
        <CheckBox x:Name="bus1_pin1_chk" Content="bus1_pin1" HorizontalAlignment="Left" Margin="638,277,0,0" VerticalAlignment="Top"/>
        <CheckBox x:Name="bus1_pin2_chk" Content="bus1_pin2" HorizontalAlignment="Left" Margin="638,314,0,0" VerticalAlignment="Top"/>

    </Grid>
</Page>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51579763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档