Я хочу открыть ШИМ-штырек к моему зуммеру. Но если я пытаюсь вызвать метод pwmController.OpenPin(6)
, приложение вылетает с System.Runtime.InteropServices.SEHException
.
Я уже дважды проверил источники сэмплов, такие как ms-iot-samples . Но я не вижу своих проблем.
Идея заключалась в том, что некоторые разрешения отсутствуют, но если я попытаюсь добавить, например, <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 , но это тоже не помогает.