使用c或c ++解码红外遥控代码

时间:2010-06-15 15:00:12

标签: c++ c embedded arm infrared

请告诉我如何使用c或c ++解码红外遥控代码。

4 个答案:

答案 0 :(得分:5)

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

如果您没有红外线接收器,那么前一段时间使用a blog来学习如何构建红外接收器。我希望你有一些电子方面的天赋。否则,是时候学习了! :d

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

答案 1 :(得分:3)

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

void ReadRemote()
{
    while(!Console.KeyAvailable)
        Console.Write(DecoderClass.ReadIR(IRType.TVRemoteControl));
}

答案 2 :(得分:3)

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

一旦有了解调脉冲序列,根据特定的制造商编码方案解码它就很简单了。我只为Sony SIRC遥控器做过这个,将它用作机器人控制器。传感器触发中断并在每次中断时锁存脉冲定时。如果您的设备具有输入捕获和比较定时器硬件,您可以减少开销并提高准确性(尽管这可能不是必需的)。

针对不同协议和制造商here

,有很多关于此主题的资源

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

答案 3 :(得分:1)

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

这很有趣,我推荐它作为第一个微控制器项目。有一些流行的协议,大多数是几个主题的变体。基本上你会得到一个接收器,你可以通过无线电小屋获得,虽然在无线电小屋中曾经是无线电组件的数量(也许这就是为什么他们将名称更改为小屋)更少,并埋在一个小抽屉里商店的后面,很快就会消失。无论如何在那里得到一个接收器或digikey或mouser,一个微控制器,计算上升沿和下降沿之间的时钟滴答数(接收器已移除~40Khz载波频率)将这些时间与预期协议进行比较,并从零确定。只需一个微控制器和一个红外线LED即可完成传输,但由于需要进行调制,因此有点棘手。单片机外部的单个和门以及调制时钟和/或定时器生成的时钟要容易得多,但需要额外的硬件。

多协议接收器可能不如特定协议接收器那么好,就像gcc在任何一个平台上都不是很好,但在所有平台上都相当不错。建立自己的是有趣的,有教育意义的,并且通常会产生更好的接收器,尽管您无法匹配批量生产的产品的价格。部分问题还与载波频率的变化有关,理想情况下,您希望选择与您正在使用的协议的载波频率匹配的接收器。它有所不同,例如,而不是必须在8英尺之外,你可以在30英尺之外。它也可以在3英尺远的地方工作,但距离不到1英尺或3英寸。诸如此类的事情。电缆和碟子以及其他通用遥控器生成所有协议,因此您可以自由选择,具体取决于您的项目。