C# UWP:无法在Raspberry Pi 2上使用Lightning加载PWM控制器?

C# UWP:无法在Raspberry Pi 2上使用Lightning加载PWM控制器?,c#,uwp,raspberry-pi2,windows-10-iot-core,pwm,C#,Uwp,Raspberry Pi2,Windows 10 Iot Core,Pwm,我刚开始做一个我曾经做过的老项目,但不幸的是PWM控制器不再和Lightning驱动器一起工作。我使用的是Visual Studio 2017,RPi2的运行速度为10.0.15063.414,我安装了以下Nuget软件包: Microsoft.IoT.Lightning(v1.1.0) Microsoft.NETCore.UniversalWindowsPlatform(v5.3.3) WinRTXamlToolkit.Controls.DataVisualization(v2.3.0)

我刚开始做一个我曾经做过的老项目,但不幸的是PWM控制器不再和Lightning驱动器一起工作。我使用的是Visual Studio 2017,RPi2的运行速度为10.0.15063.414,我安装了以下Nuget软件包:

  • Microsoft.IoT.Lightning(v1.1.0)
  • Microsoft.NETCore.UniversalWindowsPlatform(v5.3.3)
  • WinRTXamlToolkit.Controls.DataVisualization(v2.3.0)
该项目包括对

  • 分析器
  • Microsoft.IoT.Lightning
  • Microsoft.NETCore.UniversalWindowsPlatform
  • %类库%
  • 通用窗口
  • UWP的Windows物联网扩展
  • WinRTXamlToolkit.Controls.DataVisualization
其中%ClassesLibrary%是一个用户定义的项目,其中包含我的项目的一些类。在设备部分的Windows IoT Core配置web界面中,选择直接内存映射驱动程序(当前驱动程序)

我的初始化代码如下所示

    private static async Task InitOnboardHardware()
    {
        if (LightningProvider.IsLightningEnabled)
        {
            LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();
            GpioController gpioController = GpioController.GetDefault();

            var pwmControllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider());
            if (pwmControllers != null)
            {
                m_PWMController = pwmControllers[1];
                //m_PWMController = (await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider()))[1];
                m_PWMController.SetDesiredFrequency(100);

                m_RPin = m_PWMController.OpenPin(18);
                m_GPin = m_PWMController.OpenPin(23);
                m_BPin = m_PWMController.OpenPin(24);
                m_WPin = m_PWMController.OpenPin(25);

                m_RPin.SetActiveDutyCyclePercentage(0);
                m_GPin.SetActiveDutyCyclePercentage(0);
                m_BPin.SetActiveDutyCyclePercentage(0);
                m_WPin.SetActiveDutyCyclePercentage(0);

                m_RPin.Start();
                m_GPin.Start();
                m_BPin.Start();
                m_WPin.Start();

                m_IsHardwareInitialized = true;
            }
        }
    }
PwmController.GetControllersAsync-method永远不会完成,我的应用程序在启动时会卡住。另外,评论的较短版本不再工作了

我真的不知道我会错过什么。因此,我将非常感谢任何帮助

提前谢谢你

编辑:我还尝试了另一个示例(),其中我用NuGet包(与我的项目中的版本相同)替换了嵌入式C/C++lightning库。该示例也失败:因为PwmController.GetControllersAsync从未完成,所以管脚都为空:-(

EDIT2:我忘了提到我的package.appxmanifest文件还包括以下更改

  <Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
  IgnorableNamespaces="uap mp iot">

以及

<Capabilities>
<Capability Name="internetClient" />
<iot:Capability Name="lowLevelDevices" />
<DeviceCapability Name="109b86ad-f53d-4b76-aa5f-821e2ddf2141" />
</Capabilities>

请参阅我对第一篇文章的评论。我不得不更改这一行

GpioController gpioController = GpioController.GetDefault();
调用异步方法

GpioController gpioController = await GpioController.GetDefaultAsync();

现在一切正常了!

我将Windows IoT Core更新为最新的Insider版本(10.0.16226.1000),之后该示例运行正常,但我的应用程序运行不正常。我比较了每一行,发现GpioController的方法不是异步的。将其更改为异步方法可以使我的应用程序运行正常!