我想为我的蜂鸣器打开一个 PWM 引脚。但如果我尝试打电话给pwmController.OpenPin(6)
方法,应用程序崩溃并显示System.Runtime.InteropServices.SEHException
.
我已经仔细检查过示例来源,例如ms-物联网样本 https://github.com/ms-iot/BusProviders/blob/develop/PWM/SamplePwmConsumer/StartupTask.cs。但我看不到我的问题是什么。
一个想法是缺少一些权限,但如果我尝试添加例如<iot:Capability Name="lowLevelDevices" />
,我无法再构建该应用程序。
Source
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 版本的提示 https://stackoverflow.com/questions/49461643/initiate-pwm-on-a-raspberry-pi-runs-in-a-sehexception,但这也没有帮助。
PWM控制器需要Lightning支持。所以你需要将控制器驱动程序设置为直接内存映射驱动程序 https://learn.microsoft.com/en-us/windows/iot-core/develop-your-app/lightningproviders. Here https://github.com/paks/pwm是一个关于 Raspberry Pi 上 PWM 的示例。
您还需要修改代码如下:
private async void InitAsync()
{
Logger.Log(this, "Init");
// Setup PWM controller.
if (LightningProvider.IsLightningEnabled)
{
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);
buzzerPin.SetActiveDutyCyclePercentage(0.05);
buzzerPin.Start();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)