TVB-Gone 红外编码方法

每次都重新推算一遍,年纪大了还是记录一下吧(硬件版的TV-B-Gone的压缩编码跳过此段往下看)

N900上有个TVB-Gone的程序,但是程序的红外编码往往都是对应的国外的电视,好多国产电视都不支持,

有时候需要遥控空调或者投影之类的,只能自己录入了,大概看了一下,编码比较简单(比硬件那个简单多了,毕竟不需要考虑程序空间的问题)

(上次录过一次,这次又重搞一遍,还是记录一下,以备后用。)

第一步当然得知道红外编码,做了个简单的红外线分析器,网上有开源的,

没有串口,我用了个转USB的小东西,

对应可以输出红外线具体时间的文件,就靠这个文件里面的时间长度来录入编码,如下为截取Channel 2的一段:

------------------------------------------------------------------------
CH 2
:
:212
1
8942
4470
551
1656
548
1658
547
537
550
535
549
535
550
535
549
1656
550
1656
549
1656
550
1656
549
1656
550
1656
549
535
550
535
549
537
548
1656
549
537
550
535
549
535
550
535
549
537
548
537
549
535
548
537
549
535
550
535
551
535
548
537
549
535
550
535
549
535
550
537
549
535
550
535
549
535
550
535
551
535
550
1656
549
535
550
535
549
535
550
537
547
537
548
537
549
535
550
535
549
1656
550
535
551
535
548
537
549
535
550
535
549
535
550
535
549
537
548
1658
549
535
550
535
549
535
550
535
549
537
548
537
549
535
550
535
549
535
550
537
549
535
550
535
549
535
550
535
549
537
548
537
549
535
550
535
549
535
550
537
549
535
550
535
549
535
550
535
549
537
548
537
549
535
550
535
549
535
550
537
547
537
548
537
549
1656
548
537
549
1656
550
535
549
535
550
535
549
537
550
535
549
1656
550
1656
549
1656
550
535
549
1656
550
1656
549
535
550
535
577
:
------------------------------------------------------------------------

从8942开始,上面不用管,每个数字代表时长,两个数字一组,一组一组地看,数字接近的都合并为同一组,构造的结构为

[载波频率, "载波序列", [(时间组1), (时间组2), (时间组3) ... ]]

载波频率需要示波器查看,或者网上查,或者使用红外线常用的38400,载波序列中每一个数字代表一个时间组的序号,从零开始,

以上面我们截获的数据为例,简化一下,可以用四组时间组表示,分别为 (8950, 4450), (550, 1650), (550, 535), (525, 560)

该段截获红外代码就变成如下结构的编码

[ 38400, "0112222111111222122222222222222222222212222222212222222212222222222222222222222222222222212122222111211222",
        [(8950, 4450), (550, 1650), (550, 535), (525, 560)]]

(此处未用到序列3的时间组,那是给另一段红外编码使用的,可删除)

修改N900的/usr/lib/hildon-desktop/tvbgone.py文件,如下:

。。。
import os, fcntl, struct, time, math
import gobject, cairo, gtk, gconf
import hildon, hildondesktop, osso

GCONFPATH = "/apps/Maemo/budig.de/TVBGone"

# Collection of shutdown codes for various TV models.
TVBGoneCodes = {
   "Europe" : [
     # 公司空调遥控关(开的编码不一样)
      [ 38400, "0112222111111222122222222222222222222212222222212222222212222222222222222222222222222222212122222111211222",
        [(8950, 4450), (550, 1650), (550, 535), (525, 560)]],
      # 公司投影遥控开/关
      [ 38400, "012121222212121301212122221212130121212222121213",
        [(2400, 580), (1200, 580), (600, 580), (600, 20860)]], 

      # code EU 0
      [ 35714, "510040000000000031026100400000000000310",
        [(430, 470), (430, 910), (430, 83240), (880, 470), (1330, 1330), (2640, 900), (2640, 910)]],
      # code EU 1
      [ 30303, "011111111143261111115326111111",
        [(470, 2650), (510, 540), (510, 1080), (510, 2630), (510, 20530), (510, 116470), (1000, 1090)]],
      # code EU 2
      [ 33333, "0122111222123112211122212",
        [(430, 2060), (460, 2040), (460, 4560), (460, 34880)]],
。。。

此处我是在Europe中增加了我的代码,别忘了使用的时候选择Europe代码,最后保存重启N900即可(不知道怎么不重启能生效,有知道的望告知)。

-----------------------------------------------------------美艳动人的分割线-----------------------------------------------------------------

硬件版的TV-B-Gone由于单片机容量有限,v1.2相比v1.1采用了压缩算法,可以存储更多的红外编码,压缩算法如下:

同样以刚才截获的代码为例,

------------------------------------------------------------------------
CH 2
:
:212
1
8942
4470
551
1656
548
1658
547
537
550
535
549
535
550
535
549
1656
550
1656
549
1656
550
1656
549
1656
550
1656
549
535
550
535
549
537
548
1656
549
537
550
535
549
535
550
535
549
537
548
537
549
535
548
537
549
535
550
535
551
535
548
537
549
535
550
535
549
535
550
537
549
535
550
535
549
535
550
535
551
535
550
1656
549
535
550
535
549
535
550
537
547
537
548
537
549
535
550
535
549
1656
550
535
551
535
548
537
549
535
550
535
549
535
550
535
549
537
548
1658
549
535
550
535
549
535
550
535
549
537
548
537
549
535
550
535
549
535
550
537
549
535
550
535
549
535
550
535
549
537
548
537
549
535
550
535
549
535
550
537
549
535
550
535
549
535
550
535
549
537
548
537
549
535
550
535
549
535
550
537
547
537
548
537
549
1656
548
537
549
1656
550
535
549
535
550
535
549
537
550
535
549
1656
550
1656
549
1656
550
535
549
1656
550
1656
549
535
550
535
577
:
------------------------------------------------------------------------

同样简化一下

完整的红外编码序列为

二进制整理一下

00010110101010010101010101101010011010101010101010101010101010101010101010100110101010101010100110101010101010100110101010101010101010101010101010101010101010101010101010101010100110011010101010010101100101101010

八位八位分割,缺少补零

原来106对,使用106个数字表示,占106字节,

现在变成27个16进制字符,占27个字节,大大减少了容量。

最终的代码:

。。。
const uint16_t code_na000Times[] PROGMEM = {
    8950, 4450,
    550, 1650,
    550, 535,
    525, 560,
};
const struct IrCode code_na000Code PROGMEM = {
        freq_to_timerval(38400),
        106,             //  106组时间序列
        2,              //  不同的组一共四组,因此使用2bit就可以表示,这个解码需要用到
        code_na000Times,
        {
        0x16,
        0xA9,
        0x55,
        0x6A,
        0x6A,
        0xAA,
        0xAA,
        0xAA,
        0xAA,
        0xA6,
        0xAA,
        0xA9,
        0xAA,
        0xAA,
        0x6A,
        0xAA,
        0xAA,
        0xAA,
        0xAA,
        0xAA,
        0xAA,
        0xAA,
        0x99,
        0xAA,
        0x95,
        0x96,
        0x90,
        }
};
。。。

例子没举好,竟然搞了个106对的红外编码,累死我了,大家凑合看,有错漏的地方或者其它问题欢迎留言(同样这里没有用到第三组时间组)。

时间: 2024-12-28 14:30:39

TVB-Gone 红外编码方法的相关文章

【经典程序】STC89C52RC 12M红外二极管发射测试成功

/* 89C52RC 12M晶振  红外发射试验, 在红外解码和机顶盒上都测试可用! 发射的编码是      SendIRdata(0x48,0x77,0x01);这个一个向下的按键编码 红外发射管的正极接VCC 5V 红外发射管的负极接21号引脚  */ #include <REG51.h>  static bit wave;              //红外发射管的亮灭 static unsigned int count;    //延时计数器 static unsigned int e

IRM3800 红外遥控器解码 linux驱动

这一次还是接在 Cemera 上.用 中断引脚 EINT20 也就是 GPG12. 之前焊的 51 板子上有一个红外接收器. 请注意了,是 标准的 NEC 码规范:首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错).然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码.其"0"为载波发射0.56ms,不发射0.565ms,其"1"

红外测温功能

红外热像仪是利用红外探测器和光学成像物镜接受被测目标的红外辐射能量分布图形反映到红外探测器的光敏元件上,从而获得红外热像图,这种热像图与物体表面的热分布场相对应.通俗地讲红外热像仪就是将物体发出的不可见红外能量转变为可见的热图像.热图像的上面的不同颜色代表被测物体的不同温度. 高压设备红外图像自动故障识别方法与试验研究 红外诊断规则中相对温差法是故障判断的常用方法,需要红外图像中的热点温度.环境温度和设备正常温度. 通过红热成像仪对高压设备进行监测,利用逐点扫描法对设备图像进行扫描诊断时,发现其

小米4 手机红外接口工作了

今天把小米4 的红外接口连接到家中所有的可控电器了 电视,创维的 skyworth 有线电视机顶盒,北京的好多一个个试 有线电视的节目内容连接 二个空调,志高(chigo) 都已经正常工作了.上次我连接过没有成功.没想到这次成功了 用的很有趣,主要是不用为遥控器买电池了. 感觉很棒!!! 版权声明:本文为博主原创文章,未经博主允许不得转载.

树莓派 LED+蜂鸣+声音传感器+红外模块组合打造声控/红外控制LED

昨天搞了控制LED,玩了第一个,剩下的就感觉很简单了,这里记录一下 先来几张照片 玩了蜂蜜模块才发现规律,一般这种模块,都会有三个针脚,VCC(3.3V或5V供电输出针脚).GNC(对应GPIO针脚的GNC).OUT/(I/O)(对应GPIO编号的针脚),如果是需要向树莓派发送信息的,这个模块上标识的是OUT,例如这里用的声音传感器和人体红外传感器,这两个都是需要向树莓派发送侦测的信息,如果不需要向树莓派发送消息的,则标识的是I/O,比如我这个蜂鸣模块,这只是我用这三个传感器发现的,可能不正确

ZigBee红外远程监控系统设计

现代安防监控越来越受到重视.它一般由图像采集.传输和存储系统组成.采用高精度的摄像头配合先进的图像处理技术和传输技术.其安防监控性能虽然很好,但也存在投资成本大,实时报警性能差.数据量大,隐蔽性差等缺点.鉴于这些不足,某些应用场合也可以用红外监控作为监控手段. 红外探测器自1800年被首次制作出来以后,经过两百多年的发展,技术已经十分成熟.它是指将不可见的红外辐射光探测出来,并且转化为可测量的信号的技术,具有适应性好,隐蔽性好,保密性强,性能稳定等优点.通过对特定波段的红外射线的探测,就可以实现

黑白线循迹小车利用STM32F407与三个红外对管实现

小车循迹模块编程思路 所用模块:LM399红外对管循迹模块 特征:可同时搭载4个红外对管,进行黑白线检测 检测:当它探寻到黑线时候,DX口输出TTL电平接近于VCC电压 当它探寻到白线时候,DX口输出TTL电平近似为0.1V 实现功能: 让小车始终沿着黑线跑动,可以沿着黑线转弯(弯度测试),在黑线上可以设置断点,长度自己设定,路过间断线时,依然可以自主循迹到有黑线位置,并继续跑动.   初步想法: 无论是两个轮子的解构还是四轮结构,利用后面两个轮子作为主动轮,前面两个轮子作为从动轮.所以就得实现

[每日电路图] 2、红外遥控电路原理设计与解析【转+解读】

          楼主说:本文主要讲一个红外遥控电路的原理及设计,第四部分是重点,用电路图说明具体过程——接收,计数,满足条件触发控制电路! from elecfans:http://www.elecfans.com/article/88/131/198/2015/20151215394306.html 一.概述: 红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波:红外接收电路由红外接收二极管.三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器.

红外遥控自学习功能的研究

参考网址: 使用单片机设计一个空调遥控器,空调品牌为海尔空调,使用NEC协议,主要针对红外调制波形进行了分析 http://blog.csdn.net/u011388550/article/details/37355793 自学习式,不同位定义的波形说明 http://blog.csdn.net/memoryjs/article/details/6658990 格力空调协议解析(简要) http://m.blog.csdn.net/blog/u013247982/37914581 万能红外模块解