1

是否可以在 android-things 上实现 IR 接收器?

第一个想法:
使用 GPIO 作为输入并尝试缓冲更改,然后解析缓冲区以解码消息。
调查结果:
GPIO 侦听器机制太慢,无法观察 IR 信号。
另一种方法是读取 GPIO 无限循环。但是所有 IR 协议都强烈依赖于时间,在这种情况下,java(dalvik) 的准确性较低。

第二个想法
使用 UART 发现:
似乎可以调整波特率以观察消息的所有位,但 UART API 需要设置起始位的数量等,这是一个问题,因为 IR 协议不适合该模式。

恕我直言,目前,UART 是唯一的途径,但这将是一个巨大的解决方法。

4

2 回答 2

3

首要问题(正如您所发现的)是任何非实时系统都将难以直接解析此输入,因为时间限制。这是最适合您可以访问定时器中断的微控制器的工作。购买便宜的tinyAVRPIC来为您管理传感器。

您还需要使用专用的接收器传感器(您可能已经这样做了)来简化信号解析。这些传感器包括一个解调器,这意味着您不必处理 38kHz 脉冲信号,输入被转换为更标准的 PWM 波。

于 2017-02-02T21:21:35.740 回答
0

我相信您无法在 Java 中处理 IR 信号,因为读取脉冲会比读取分辨率更快——至少在树莓派中是这样。为了获得更快的 gpio 读数,我相信您可以在 c++ 中使用 ndk 和覆盆子进行操作。虽然它没有得到官方支持,但有一些技巧可以启用它。有关如何在 c 中写入 gpio,请参阅如何绕过 Java 在 Android Things 上执行 GPIO 。从那里开始,在一个紧密的循环中阅读应该是微不足道的。虽然我仍然会尝试从 Java 中挂钩触发器,因为到目前为止,我还不清楚如何在 c 中编写/安装中断。

于 2017-02-03T14:25:05.023 回答