【问题标题】:No Gpio input signals with LightningDriverLightningDriver 没有 Gpio 输入信号
【发布时间】:2016-03-25 02:27:43
【问题描述】:

我正在尝试使用 Windows 10 物联网核心上的 c# 通过树莓派 pi2 上的 GPIO 接口输入频率约为 30Hz 的 Gpio 输入信号。不过,我失去了大部分信号。所以我已经激活了 Lightning 驱动程序,我包含了 c++ Lightning 接口,我的 LightningProvider 似乎正确初始化。我正在测试 LightningProvider.IsLightningEnabled 并相应地初始化 GpioController。 编译器似乎很高兴,并生成了一个可执行文件,我正在我的 Raspberry Pi2 上进行远程调试

我的 GPIO 输出继续驱动我已编程的 Soft-PWM 应用程序。唯一的问题是,当我在 Pi 上激活 LightningDriver 时,设置为计算我的信号的 EventHandler 不再被调用。
或者简而言之:一旦我激活 LightningDriver,我就不再接收任何输入信号。 有什么线索吗?

【问题讨论】:

    标签: c# raspberry-pi2 windows-10-iot-core


    【解决方案1】:

    在这里查看您的 GPIO 初始化可能会有所帮助,但我遇到了类似的问题,即在第一次或第二次触发后,我停止从 GPIO 引脚返回事件。

    我在构造函数中设置了引脚,它们只是局部变量,事件处理程序定义为私有方法。

    解决方案是为我的 pin 提供更多范围,因为 .NET 会在这些 pin 事件被使用一次后处理它们。我的代码最终看起来像这样:

    private readonly GpioController _gpio;
    private readonly GpioPin _rateOnePin;
    private readonly GpioPin _rateTwoPin;
    

    使用以下构造函数代码:

    _gpio = GpioController.GetDefault();
    
    if (_gpio != null)
    {
        _rateOnePin = _gpio.OpenPin(5);
        _rateOnePin.ValueChanged += RateOneReceived;
    
        _rateTwoPin = _gpio.OpenPin(6);
        _rateTwoPin.ValueChanged += RateTwoReceived;
    }
    

    我不知道为什么它觉得有必要处理掉它们,但这样做对我来说是成功的。

    【讨论】:

    • 感谢 cmets - 但仅此而已。我想我明白了原因:MSDN 上有一条关于 LightningDrivers 的评论说当前版本还不支持中断。所以我将转换为轮询,看看是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多