如何为 GPIO 启用 LightningProvider?

How to enable LightningProviders for GPIO?

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

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

            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 控制器并让我检测我有多少个引脚并读取它们(全部低) .但是我无法更改 DriveMode 或写入引脚而不会出错。我得到的错误只是说 Make sure the LightningProviders are enabled.

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

因此我想问一下是否有任何其他方法可以启用 LightningProvider 或者是否有办法知道它们是否与我的板不兼容?

谢谢!

更新

还尝试在 W10IoT 命令行中使用 devcon.exe 命令。 我能够找到直接内存访问控制器,但是当我执行 devcon.exe enable *PNP0200 时,它说它已启用但在使用 devcon.exe status *PNP0200

检查时仍处于禁用状态

请确认您是否在 OEMInput.xml 中添加了 IOT_DMAP_DRIVER 功能,此功能将在映像中添加 DMAP 驱动程序。如果从 OEMInput.xml 中删除 IOT_DMAP_DRIVER,默认驱动程序控制器在设备配置文件中将为空白,并且 dmaputil 在 Windows IoT Core 上将不可用。请参阅 IoT Core feature list.

更新:

您可以下载Lighting Provider的源码,然后在您的自定义镜像中进行部署调试。