我正在尝试使用 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 核心版功能列表。
更新:
可以下载光照提供程序的源代码,然后在自定义映像中进行部署和调试。