首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pi和.net读取红外光电传感器

用pi和.net读取红外光电传感器
EN

Stack Overflow用户
提问于 2022-05-24 10:18:01
回答 1查看 54关注 0票数 1

我从IoT开始我的冒险,并在我身后获得了一些闪烁的经验。但是现在我想做一些更先进的事情,所以我想我试着从遥控器中读取红外线信号。现在,一切都是基于rPi3。

所以我要说的是

代码语言:javascript
复制
let private _onPinValueChanged (gpioController: GpioController) = 
    new PinChangeEventHandler (
        fun _ _ -> 
            Console.WriteLine DateTime.Now
            Console.WriteLine (gpioController.Read GpioIrIn)) //pin number is 18

let StartIrRead (gpioController: GpioController) (cancellationToken: CancellationToken) = 
    
    let worker =  
        async { 
            Console.WriteLine $"Opening PIN {GpioIrIn}"
            gpioController.OpenPin (GpioIrIn, PinMode.Input)
            match gpioController.IsPinOpen GpioIrIn  with
            | true -> gpioController.RegisterCallbackForPinValueChangedEvent (GpioIrIn, PinEventTypes.Rising, _onPinValueChanged gpioController) 
            | false -> raise (Exception($"Problem with opening PIN {GpioIrIn}")) 
        }
        
    Async.Start (worker, cancellationToken)

它对某些物质起作用。事件是当我点上一个遥控器并按下任何按钮,但我知道我需要脉冲或一些值,但我得到的只是PinStatus (例如。很高)。那么,我如何注册和转换它,以便我可以把它发回呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-25 09:17:57

不幸的是,Iot.Device.Bindings中没有直接支持IR传感器的绑定。

所以我觉得你的开局很好。您正在收听从IR接收器生成的事件。然而,红外通信是一种数字通信,其中一个信号用几个字节的数据传输,类似于串行通信,这意味着当你按下一个按钮时,你会收到许多事件。对于每个事件,您需要存储新值(高值或低值)和时间戳。收集一组事件(用不同的超时值检查)之后,您需要从这些事件中计算一个位集。

这再次变得困难,因为远程编码的方式是不标准化的。这是张床单描述了一些常见的编码格式。您可能已经能够从您获得的数据集中为您的遥控器找到正确的编码格式(但请记住,您的定时测量将有一些错误)。

如果您认为没有得到合理的数据序列,则可能需要使用繁忙--在第一个事件之后等待(并轮询输入更改),因为触发事件的速度是有限制的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72361165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档