【发布时间】:2017-12-13 08:31:01
【问题描述】:
我刚刚开始从事一个我曾经开始的旧项目,但不幸的是,PWM 控制器不再与 Lightning Driver 一起工作。我正在使用 Visual Studio 2017,RPi2 在 10.0.15063.414 运行,并且我安装了以下 Nuget-Packages:
- Microsoft.IoT.Lightning (v1.1.0)
- Microsoft.NETCore.UniversalWindowsPlatform (v5.3.3)
- WinRTXamlToolkit.Controls.DataVisualization (v2.3.0)
该项目包括对
的引用- 分析仪
- Microsoft.IoT.Lightning
- Microsoft.NETCore.UniversalWindowsPlatform
- %ClassesLibrary%
- 通用Windows
- 适用于 UWP 的 Windows IoT 扩展
- 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 方法永远不会完成,我的应用程序在启动时卡住了。评论的短版也不再工作了?!
我真的不知道我可能会错过什么。因此,我将不胜感激。
提前谢谢你!
编辑:我还尝试了另一个示例 (https://github.com/lprichar/WindowsIotPwmExample),其中我用 NuGet 包替换了嵌入式 C/C++ 闪电库(与我的项目中的版本相同)。该示例也失败了:引脚全部为空,因为 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>
【问题讨论】:
-
我将 Windows IoT Core 更新为最新的 Insider 版本 (10.0.16226.1000),之后示例运行良好,但我的应用程序却没有。我比较了每一行,发现 GpioController 的方法不是异步的。将其更改为异步方法使我的应用程序运行良好!
标签: c# uwp raspberry-pi2 windows-10-iot-core pwm