TVB-Gone 红外编码方法
每次都重新推算一遍,年纪大了还是记录一下吧(硬件版的TV-B-Gone的压缩编码跳过此段往下看)
N900上有个TVB-Gone的程序,但是程序的红外编码往往都是对应的国外的电视,好多国产电视都不支持,
有时候需要遥控空调或者投影之类的,只能自己录入了,大概看了一下,编码比较简单(比硬件那个简单多了,毕竟不需要考虑程序空间的问题)
(上次录过一次,这次又重搞一遍,还是记录一下,以备后用。)
第一步当然得知道红外编码,做了个简单的红外线分析器,网上有开源的,
没有串口,我用了个转USB的小东西,
对应可以输出红外线具体时间的文件,就靠这个文件里面的时间长度来录入编码,如下为截取Channel 2的一段:
------------------------------------------------------------------------
CH
:
: :
------------------------------------------------------------------------
从8942开始,上面不用管,每个数字代表时长,两个数字一组,一组一组地看,数字接近的都合并为同一组,构造的结构为
[载波频率, "载波序列", [(时间组1), (时间组2), (时间组3) ... ]]
载波频率需要示波器查看,或者网上查,或者使用红外线常用的38400,载波序列中每一个数字代表一个时间组的序号,从零开始,
以上面我们截获的数据为例,简化一下,可以用四组时间组表示,分别为 (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" : [
# 公司空调遥控关(开的编码不一样)
[ , "",
[(, ), (, ), (, ), (, )]],
# 公司投影遥控开/关
[ , "",
[(, ), (, ), (, ), (, )]], # code EU
[ , "",
[(, ), (, ), (, ), (, ), (, ), (, ), (, )]],
# code EU
[ , "",
[(, ), (, ), (, ), (, ), (, ), (, ), (, )]],
# code EU
[ , "",
[(, ), (, ), (, ), (, )]],
。。。
此处我是在Europe中增加了我的代码,别忘了使用的时候选择Europe代码,最后保存重启N900即可(不知道怎么不重启能生效,有知道的望告知)。
-----------------------------------------------------------美艳动人的分割线-----------------------------------------------------------------
硬件版的TV-B-Gone由于单片机容量有限,v1.2相比v1.1采用了压缩算法,可以存储更多的红外编码,压缩算法如下:
同样以刚才截获的代码为例,
------------------------------------------------------------------------
CH
:
: :
------------------------------------------------------------------------
同样简化一下
完整的红外编码序列为
二进制整理一下
八位八位分割,缺少补零
原来106对,使用106个数字表示,占106字节,
现在变成27个16进制字符,占27个字节,大大减少了容量。
最终的代码:
。。。
const uint16_t code_na000Times[] PROGMEM = {
, ,
, ,
, ,
, ,
};
const struct IrCode code_na000Code PROGMEM = {
freq_to_timerval(),
, // 106组时间序列
, // 不同的组一共四组,因此使用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对的红外编码,累死我了,大家凑合看,有错漏的地方或者其它问题欢迎留言(同样这里没有用到第三组时间组)。
TVB-Gone 红外编码方法的更多相关文章
- STM32F412应用开发笔记之四:与远红外炭氢传感器通讯
远红外炭氢传感器是在多组分气体传感器中用来检测甲烷和丙烷浓度的,采用单总线串行通讯,TTL电平.所以我们需要用到UART口来实现与远红外炭氢传感器的通讯. 远红外传感器就是这个样子的: 再来一张进气和 ...
- arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
最近在调试红外遥控格力空调,在论坛中学到了不少东西.参考: (1)<解决问题系列(4)——红外编码分析利器使用> (2)<315Mhz模块传输替代315Mhz遥控器> 调试环境 ...
- 基于Arduino、STM32进行红外遥控信号接收
catalogue . 遥控器原理简介 . 红外遥控原理 . 常见红外遥控器红外线信号传输协议 . 遙控器的发展 . 实验过程 . 攻击面 . 基于STM32实现红外信号解码 1. 遥控器原理简介 0 ...
- 51单片机tea5767收音机 红外遥控 自动搜台 存台 DIY
先看效果图: 显示 频道CH , 频率 100.0Mhz 欢迎信息,1602 内置日文平假名, 正好用来显示博主名称. 焊接前,已经万能面包板上试验成功. 焊接完成以后,1602 的D0 - D7 接 ...
- Android使用AudioTrack发送红外信号
最近要做一个项目,利用手机的耳机口输出红外信号,从而把手机变成红外遥控器,信号处理的知识基本都还给老师了,刚开始真的挺头疼.找了不少资料研究了一下,总算有点心得,在这里做个备忘. 一.音频信号输出原理 ...
- 红外遥控NEC协议使用总结
最近做了一个调试红外遥控三色灯的实习,花了一个多月的时间研究基于NEC协议的红外遥控,下面是这次实习技术方面的总结. 一.NEC协议特征: 8位地址和8位命令长度 每次传输两遍地址(用户码)和命令(按 ...
- TM4C123G红外触摸屏:开发板好不容易实现了原理,放到专家设计的板子上无法运行,于是专家跑路项目黄了
使用TI的TM4C123G LaunchPad开发板,USB接口,来对同样的芯片进行烧写. 我们只用烧写那一块功能,不用另外一个芯片的开发功能,需要跳线 源码项目: 从官方网站TM4C123G ...
- 红外解码编码学习----verilog
在设计中运用红外遥控器可以很好的解决按键缺少的问题,还可以方便的控制产品. 红外发射部分: 红外发射管: 判断红外发射管的好坏 : 电路原理图: 接收部分: 传输的NEC协议: 本实验电路: veri ...
- TI CC2541的红外控制
整整一个礼拜, 整了...大约40个小时吧, 最少.. 下面是结果, 只能做一个delay延时.: unsigned char Time;unsigned char IrValue[6];#pragm ...
随机推荐
- Python 练习 11
#!/usr/bin/python # -*- coding: UTF-8 -*- import math for i in range(10000): #转化为整型值 x = int(math.sq ...
- spring来了-04-AOP
概述 aspect object programming 面向切面编程 功能:可以实现“业务代码”与“关注点代码”分离 关注点代码:就是指重复执行的代码 业务代码:核心的业务功能 运行期间,执行核心业 ...
- (10)odoo控制器操作
-----------------更新时间11:17 2016-09-18 星期日 完善讲解17:44 2016-02-17 星期三-----------------* 控制器Controlle ...
- js打印图形
1. js绘画金字塔 思想:先画n-i个空格,再画2*i-1个*号,再画n-i个空格(此处可以省略),一行画完之后换行:循环下一行(先判断每行的空格数和*号与行数间的关系) var n=window ...
- 10个必备的移动UI设计资源站(转)
创建移动设计模式是非常重要的一步,记住!这是为移动设备设计而不是web.不仅仅是移动屏幕远小于普通的电脑屏幕,关键是鼠标和键盘已经被手指替代了! 当然还有更重要的,说起来很苦逼,我们再也不能使用一种模 ...
- 第五章 CSS页面布局基础
1.标准文档流 在正常流中,在没有使用浮动或者定位的情况下,文本元素按照从上到下.从左到右的格式布局.这是浏览器的默认行为.在正常流中,块级元素从上到下依次排列,而行级元素从左到右依次排列.正常流中的 ...
- C char** 的一点儿理解
理解是就是char** 相当于字符串数组,我以往纠结于该用 **arr还是*arr还是 (*arr),还是(**arr): 对于**arr而言:*arr代表数组的最开头,也就是第一个字串的内容.**a ...
- HDU 3265 扫描线(矩形面积并变形)
Posters Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段 <译>
multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在“了解你的数据”一节中提 ...
- NodeJs编写小爬虫
一,爬虫及Robots协议 爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化. robots.txt是一个文本文件,robots是一个协 ...