如何为 GPIO 启用闪电提供商?



我正在尝试使用 Windows 10 IoT Core 访问自定义 SBC 上的 GPIO。我发现我必须使用闪电提供商来完成此操作。所以我尝试按照本指南正确使用闪电提供商。

我使用了非常简单的代码:

if (LightningProvider.IsLightningEnabled)
{
LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();
}
GpioStatus = "Initializing...";
var gpio = GpioController.GetDefault();
if (gpio == null)
{
GpioStatus = "There is no GPIO controller on this device.";
}
else
{
gpio.OpenPin(1).Write(GpioPinValue.High);
GpioStatus = gpio.OpenPin(1).Read().ToString();
}

其中 GpioStatus 是 UI 上的输出文本。

我发现,如果我在启用的检查之外运行LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();行,它会拾取 GPIO 控制器并让我检测我有多少引脚并读取它们(全部低(。但是,我无法更改驱动器模式或写入引脚而不会出错。我得到的错误只是对Make sure the LightningProviders are enabled说.

这让我回到了我在开始时链接的指南。它建议使用 W10IoT 或 DMAPUtil.exe 的设备门户启用 DMAP 驱动程序。我都试过了。在设备门户中,它应该位于的区域只是空白。在尝试使用 DMAPUtil 的命令行中.exe仅返回该dmaputil.exe is not available on this system

因此,我问是否有其他方法可以启用闪电网络提供商,或者是否有办法知道它们是否与我的主板不兼容?

谢谢!

更新

还尝试在 W10IoT 命令行中使用 devcon.exe 命令。 我能够找到直接内存访问控制器,但是当我这样做时devcon.exe enable *PNP0200它说它已启用,但在选中时仍然处于禁用状态devcon.exe status *PNP0200

请确认您是否在OEMInput中添加了IOT_DMAP_DRIVER功能.xml,此功能将在映像中添加DMAP驱动程序。如果从 OEMInput.xml 中删除IOT_DMAP_DRIVER,则默认驱动程序控制器在设备 protal 中将为空,并且 dmaputil 在 Windows IoT Core 上将不可用。请参阅 IoT 核心版功能列表。

更新:

可以下载光照提供程序的源代码,然后在自定义映像中进行部署和调试。

最新更新