Я только что начал работать над старым проектом, который я когда-то начинал, но, к сожалению, ШИМ-контроллер больше не работает с драйвером 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
- %Библиотека классов%
- УниверсальныйWindows
- Расширения Windows IoT для UWP
- WinRTXamlToolkit.Controls.DataVisualization,
где %ClassesLibrary% — это определяемый пользователем проект, содержащий несколько классов для моего проекта. В веб-интерфейсе конфигурации Windows IoT Core в разделе устройств выбран Direct Memory Mapped Driver (Current Driver).
Мой код инициализации выглядит так
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>