C# UWP:无法在Raspberry Pi 2上使用Lightning加载PWM控制器?
我刚开始做一个我曾经做过的老项目,但不幸的是PWM控制器不再和Lightning驱动器一起工作。我使用的是Visual Studio 2017,RPi2的运行速度为10.0.15063.414,我安装了以下Nuget软件包: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)
- 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
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的方法不是异步的。将其更改为异步方法可以使我的应用程序运行正常!