UWP: Не удается загрузить ШИМ-контроллеры с помощью Lightning на Raspberry Pi 2?
Я просто начал работать над старым проектом, который я начал однажды, но, к сожалению, контроллер ШИМ больше не работает с драйвером молнии. Я использую 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
- %ClassesLibrary%
- UniversalWindows
- Windows IoT Расширения для UWP
- WinRTXamlToolkit.Controls.DataVisualization,
где%ClassesLibrary% - это определенный пользователем проект, содержащий несколько классов для моего проекта. В веб-интерфейсе конфигурации Windows IoT Core в разделе устройств выбран драйвер с прямой памятью (текущий драйвер).
Мой код инициализации выглядит так
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), где я заменил встроенную библиотеку молний C/C++ на пакет NuGet (та же версия, что и в моем проекте). Образец также не работает: все контакты имеют нулевое значение, потому что 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>
1 ответ
Пожалуйста, смотрите мой комментарий к первому посту. Мне пришлось изменить эту строку
GpioController gpioController = GpioController.GetDefault();
на вызов асинхронного метода
GpioController gpioController = await GpioController.GetDefaultAsync();
и теперь все работает отлично!