【UP BOARD试用】点灯(WINDOWS版)
本帖最后由 netlhx 于 2016-12-23 15:12 编辑WINDOWS下点灯的程序,在WINDOWS IOT系统里面比较常见,因为提供了相应的SDK。
UP上的GPIO分布图
WINDOWS 10下准备来尝试点个灯,翻遍了论坛,只找到一个例程叫DIO,而且代码也没有,只有一个DLL,好在提供了例程,参考着做了个非常丑陋的通用点灯程序。
程序界面,用的是C#写的,因为大家都是X86架构,所以也就没有什么交叉编译的说法了,直接在自用的电脑上面写,写好了复制到UP上就可以使用了。
亮灯
灭灯
由于没有提供完整的源代码,只好参考例程代码,凑合着写,界面用的是WPF,网格布局,一个网格里放一个控件。
上点关键代码 public MainWindow()
{
InitializeComponent();
UInt32 err = EApiLibInitialize();
if (err != EAPI.EAPI_STATUS_INITIALIZED)
{
MessageBox.Show("Error Initializing Device!");
return;
}
for (int k = 0; k < 40; k++)
{
EApiGPIOGetCaps(EAPI.EAPI_GPIO_GPIO_ID((UInt32)k), ref nPinCount, ref bDioDisable);
if (bDioDisable != 0x01)
{
gpioPinCombo.Items.Add("GPIO-" + k);
EApiGPIOSetDirection((uint)k, 0xFFFFFFFF, EAPI.EAPI_GPIO_OUTPUT);
}
}
gpioPinCombo.SelectedIndex = 0;
}
~MainWindow()
{
EApiLibUnInitialize();
}
private void gpioPinCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string pinName = (((ComboBox)sender).SelectedItem.ToString()).Split('-');
uint p = Convert.ToUInt32(pinName);
UpdateStatus(p);
}
private void UpdateStatus(uint p)
{
UInt32 err = EAPI.EAPI_STATUS_SUCCESS;
UInt32 bInput = 0x00;
UInt32 bHigh = 0x00;
err = EApiGPIOGetDirection(p, 0xFFFFFFFF, ref bInput);
if (err != EAPI.EAPI_STATUS_SUCCESS)
{
MessageBox.Show("Read GPIO Failure!");
return;
}
if (bInput == 1)
gpioDirLabel.Content = "Dir: INPUT";
else
gpioDirLabel.Content = "Dir: OUTPUT";
//LEVEL UPDATE
err = EApiGPIOGetLevel(p, 0xFFFFFFFF, ref bHigh);
if (err != EAPI.EAPI_STATUS_SUCCESS)
{
MessageBox.Show("Read GPIO Failure!");
return;
}
if (bHigh == 1)
gpioStatusLabel.Content = "LEVEL: HIGH";
else
gpioStatusLabel.Content = "LEVEL: LOW";
}
private void toggleButton_Click(object sender, RoutedEventArgs e)
{
string pinName = (gpioPinCombo.SelectedItem.ToString()).Split('-');
uint p = Convert.ToUInt32(pinName);
uint level = 0;
EApiGPIOGetLevel(p, 0xFFFFFFFF, ref level);
if (level == 0)
EApiGPIOSetLevel(p, 0xFFFFFFFF, EAPI.EAPI_GPIO_HIGH);
else
EApiGPIOSetLevel(p, 0xFFFFFFFF, EAPI.EAPI_GPIO_LOW);
UpdateStatus(p);
}
}
}凑合着看吧。
附可用的执行文件包:
还有论坛上面的讨论,大家去看看,有什么好的资源再大家一起研究吧。
https://up-community.org/forum/ms-windows/827-gpio-drivers-for-windows-10
谢谢分享 恩,可以,确实没有尝试过在windows底下控制硬件 请问最前面的EAPI是什么意思 jackten 发表于 2016-12-23 14:58
谢谢分享
请问最前面的EAPI是什么意思
页:
[1]