查看: 5500|回复: 4

【UP BOARD试用】点灯(WINDOWS版)

[复制链接]
  • TA的每日心情
    开心
    2016-7-19 10:35
  • 签到天数: 8 天

    连续签到: 1 天

    [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, 下载次数: 63)
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:21
  • 签到天数: 183 天

    连续签到: 1 天

    [LV.7]常住居民III

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-8-27 21:30
  • 签到天数: 219 天

    连续签到: 1 天

    [LV.7]常住居民III

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

    使用道具 举报

  • TA的每日心情
    难过
    2019-9-4 14:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2019-8-27 15:24:55 | 显示全部楼层
    请问最前面的EAPI是什么意思
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2019-9-4 14:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2019-8-27 15:25:58 | 显示全部楼层

    请问最前面的EAPI是什么意思
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 13:37 , Processed in 0.143934 second(s), 24 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.