-1

请让我知道如何使用 C 或 C++ 解码红外遥控代码。

4

4 回答 4

5

我想你的问题很模糊,因为你绝对不知道从哪里开始。

如果您没有红外接收器,这里有一个博客用于学习如何构建一个。我希望你在电子方面有一些天赋。否则,是时候学习了!:D

如果您设法构建了它(或拥有另一个已知工作的接收器),那么您可以查看LIRC,这是一个与建议的设备兼容的开源项目。

于 2010-06-15T15:07:23.967 回答
3

好吧,我不知道 C++,但这里是 C#:

void ReadRemote()
{
    while(!Console.KeyAvailable)
        Console.Write(DecoderClass.ReadIR(IRType.TVRemoteControl));
}
于 2010-06-15T15:09:39.860 回答
3

不同的制造商使用不同的编码方案、不同的时序,甚至不同的调制频率。典型的 IR 接收器传感器在硬件中执行解调,以便输出逻辑脉冲序列而不是OOK调制信号。接收器需要匹配发射器的调制频率。如果要接收多个调制频率,则必须使用简单的 IR 光电二极管并为每个感兴趣的调制频率提供自己的 OOK 载波检测器电路,或者使用多个接收器。

获得解调脉冲序列后,只需根据特定制造商的编码方案对其进行解码即可。我只为索尼 SIRC遥控器做过此操作,以将其用作机器人控制器。传感器触发中断并且脉冲定时被锁定在每个中断上。如果您的设备具有输入捕获和比较计时器硬件,您可以减少开销并提高准确性(尽管这可能不是必需的)。

这里有很多关于不同协议和制造商的资源

有一些适用的标准,但没有制造商必须遵守它们,而且还有更多。 RC-5RECS 80是两个相当普遍的标准。

于 2010-06-15T20:24:00.373 回答
1

要么购买一些硬件,然后进行 C 或 c++ api 调用(例如 lirc)。或者,如果您有兴趣解码协议并使用软件而不是硬件来完成,那么您想使用微控制器。

它既有趣又简单,我推荐它作为第一个微控制器项目。有一些流行的协议,大多数是几个主题的变体。基本上你会得到一个接收器,你可以从 radio shack 那里得到,尽管以前 radio shack 中的无线电组件的数量(也许这就是他们将名称改为 shack 的原因)要少得多,并且被埋在一个小抽屉里商店的后面,很快就不见了。无论如何,在那里获得一个接收器或digikey或mouser,一个微控制器,计算上升沿和下降沿之间的时钟滴答数(接收器已移除~40Khz载波频率)将这些时间与预期的协议进行比较,并从零开始确定。只需一个微控制器和一个红外灯就可以进行传输,但有点棘手,因为您需要进行调制。

多协议接收器可能不如特定协议接收器好,就像 gcc 在任何一个平台上都不是很好,但在所有平台上都很好。构建自己的产品很有趣,有教育意义,并且通常会产生更好的接收器,尽管您无法匹配批量生产产品的价格。部分问题还与载波频率变化有关,理想情况下,您希望选择与您使用的协议的载波频率相匹配的接收器。它会有所不同,例如,您可以在 30 英尺之外,而不是 8 英尺远。它也可以在 3 英尺外工作,但不能在 1 英尺或 3 英寸外工作。之类的东西。

于 2010-06-16T03:31:20.263 回答