查看: 309|回复: 2

[原创] 【UP BOARD试用】点灯(WINDOWS版)

[复制链接]

10

主题

0

好友

976

积分

举人

Rank: 4

  • TA的每日心情
    开心
    2016-7-19 10:35
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2016-12-23 14:42:17 |显示全部楼层
    本帖最后由 netlhx 于 2016-12-23 15:12 编辑

    WINDOWS下点灯的程序,在WINDOWS IOT系统里面比较常见,因为提供了相应的SDK。

    UP上的GPIO分布图

    QQ截图20161223145324.png


    WINDOWS 10下准备来尝试点个灯,翻遍了论坛,只找到一个例程叫DIO,而且代码也没有,只有一个DLL,好在提供了例程,参考着做了个非常丑陋的通用点灯程序。

    QQ截图20161223144438.png


    程序界面,用的是C#写的,因为大家都是X86架构,所以也就没有什么交叉编译的说法了,直接在自用的电脑上面写,写好了复制到UP上就可以使用了。

    IMG_20161223_142645.jpg


    亮灯

    IMG_20161223_142713.jpg


    灭灯

    由于没有提供完整的源代码,只好参考例程代码,凑合着写,界面用的是WPF,网格布局,一个网格里放一个控件。

    上点关键代码
    1.        public MainWindow()
    2.         {
    3.             InitializeComponent();

    4.             UInt32 err = EApiLibInitialize();

    5.             if (err != EAPI.EAPI_STATUS_INITIALIZED)
    6.             {
    7.                 MessageBox.Show("Error Initializing Device!");
    8.                 return;
    9.             }

    10.             for (int k = 0; k < 40; k++)
    11.             {
    12.                 EApiGPIOGetCaps(EAPI.EAPI_GPIO_GPIO_ID((UInt32)k), ref nPinCount, ref bDioDisable);
    13.                 if (bDioDisable != 0x01)
    14.                 {
    15.                     gpioPinCombo.Items.Add("GPIO-" + k);
    16.                     EApiGPIOSetDirection((uint)k, 0xFFFFFFFF, EAPI.EAPI_GPIO_OUTPUT);
    17.                 }
    18.             }

    19.             gpioPinCombo.SelectedIndex = 0;




    20.         }

    21.         ~MainWindow()
    22.         {

    23.             EApiLibUnInitialize();
    24.         }

    25.         private void gpioPinCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
    26.         {

    27.             

    28.             string pinName = (((ComboBox)sender).SelectedItem.ToString()).Split('-')[1];
    29.             uint p = Convert.ToUInt32(pinName);
    30.             UpdateStatus(p);

    31.         }

    32.         private void UpdateStatus(uint p)
    33.         {
    34.             UInt32 err = EAPI.EAPI_STATUS_SUCCESS;
    35.             UInt32 bInput = 0x00;
    36.             UInt32 bHigh = 0x00;

    37.             err = EApiGPIOGetDirection(p, 0xFFFFFFFF, ref bInput);

    38.             if (err != EAPI.EAPI_STATUS_SUCCESS)
    39.             {
    40.                 MessageBox.Show("Read GPIO Failure!");
    41.                 return;
    42.             }

    43.             if (bInput == 1)
    44.                 gpioDirLabel.Content = "Dir: INPUT";
    45.             else
    46.                 gpioDirLabel.Content = "Dir: OUTPUT";

    47.             //LEVEL UPDATE

    48.             err = EApiGPIOGetLevel(p, 0xFFFFFFFF, ref bHigh);

    49.             if (err != EAPI.EAPI_STATUS_SUCCESS)
    50.             {
    51.                 MessageBox.Show("Read GPIO Failure!");
    52.                 return;
    53.             }

    54.             if (bHigh == 1)
    55.                 gpioStatusLabel.Content = "LEVEL: HIGH";
    56.             else
    57.                 gpioStatusLabel.Content = "LEVEL: LOW";
    58.         }

    59.         private void toggleButton_Click(object sender, RoutedEventArgs e)
    60.         {

    61.             string pinName = (gpioPinCombo.SelectedItem.ToString()).Split('-')[1];
    62.             uint p = Convert.ToUInt32(pinName);
    63.             uint level = 0;
    64.             EApiGPIOGetLevel(p, 0xFFFFFFFF, ref level);
    65.             if (level == 0)
    66.                 EApiGPIOSetLevel(p, 0xFFFFFFFF, EAPI.EAPI_GPIO_HIGH);
    67.             else
    68.                 EApiGPIOSetLevel(p, 0xFFFFFFFF, EAPI.EAPI_GPIO_LOW);
    69.             UpdateStatus(p);
    70.         }
    71.     }
    72. }
    复制代码
    凑合着看吧。

    附可用的执行文件包:

    UP_Led.zip (901.56 KB, 下载次数: 10)

    还有论坛上面的讨论,大家去看看,有什么好的资源再大家一起研究吧。

    https://up-community.org/forum/ms-windows/827-gpio-drivers-for-windows-10


    回复

    使用道具 举报

    5

    主题

    1

    好友

    878

    积分

    举人

    Rank: 4

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 73 天

    [LV.6]常住居民II

    发表于 2016-12-23 14:58:47 |显示全部楼层
    谢谢分享                     
    回复

    使用道具 举报

    6

    主题

    0

    好友

    1122

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    昨天 10:33
  • 签到天数: 193 天

    [LV.7]常住居民III

    发表于 2016-12-23 15:52:37 |显示全部楼层
    恩,可以,确实没有尝试过在windows底下控制硬件
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-2-24 22:55 , Processed in 0.393263 second(s), 13 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部