Я хочу открыть штифт PWM для моего зуммера. Но если я попытаюсь вызвать метод pwmController.OpenPin(6)
, приложение вылетит с ошибкой System.Runtime.InteropServices.SEHException
.
Я уже перепроверил источники примеров, такие как ms- iot-образцы. Но я не вижу, в чем мои проблемы.
Идея была в том, что некоторые разрешения отсутствуют, но если я попытаюсь добавить, например, <iot:Capability Name="lowLevelDevices" />
, я больше не смогу собрать приложение.
Источник
private PwmPin buzzerPin;
private PwmController pwmController;
public RainbowHAT()
{
// ... do something else
InitAsync();
}
private async void InitAsync()
{
Logger.Log(this, "Init");
// Setup PWM controller.
if (LightningProvider.IsLightningEnabled)
{
LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();
}
var pwmControllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider());
if (pwmControllers == null || pwmControllers.Count < 2)
{
throw new OperationCanceledException("Operation canceled due missing GPIO controller");
}
pwmController = pwmControllers[1];
pwmController.SetDesiredFrequency(50);
// Setup buzzer
buzzerPin = pwmController.OpenPin(13); <-- CRASH
buzzerPin.SetActiveDutyCyclePercentage(0.05);
buzzerPin.Start();
}
Я также попробовал следующий совет , чтобы уменьшить минимальную требуемую Windows версия, но и это не помогает.