作者: C_Law 時間: 2018-2-19 17:56 標題: 自製 irplus 手機紅外線遙控設定檔
本帖最後由 C_Law 於 2018-3-3 18:08 編輯
更新:
2018-03-03
2#
加入 space 和 fillColor 說明
7#
加入 NEC 和 RAW 格式設定檔藍本
2018-02-25
2#
設定檔基本格式說明
剛換手機,部機可以發射紅外線做遙控器。網上搵到好多遙控發射 App,有些只得預設的一堆電器的遙控設定檔,如果本身無提供到想要的電器設定檔就無得用。有些可以學習,但要部手機本身有紅外線接收器、或者要另外買接收器才可以學習。
最終我揀了 irplus:
https://play.google.com/store/apps/details?id=net.binarymode.android.irplus
揀它是因為它可以任意設定發射的訊號,由於我以前玩開遙控器訊號,已經知道我日常用開的遙控器的訊號,irplus 無需要另外買接收器去學習,只要有訊號的資料,就可以自製設定檔。
以下係我做出來的有線電視 FanHUB 遙控器設定檔:
[attach]2042639[/attach]
- <irplus>
- <device manufacturer="CableTV" model="FanHUB" columns="12" format="WINLIRC_NEC1">
- <button label="󿇮" alt="Env" labelSize="25.0" span="4" backgroundColor="FF424242">0x80BF 0xCA35</button>
- <button label="󿐥" alt="Power" labelSize="25.0" span="4" labelColor="FFFF0707" backgroundColor="FF424242">0x80BF 0xAA55</button>
- <button label="󿋜" alt="Home" labelSize="25.0" span="4">0x80BF 0xE817</button>
-
- <button label="News" labelSize="12.0" span="3" macro="true">2;0;9</button>
- <button label="1" labelSize="18.0" span="3">0x80BF 0x8A75</button>
- <button label="2" labelSize="18.0" span="3">0x80BF 0x48B7</button>
- <button label="3" labelSize="18.0" span="3">0x80BF 0xC837</button>
-
- <button label="AXN" labelSize="12.0" span="3" macro="true">0;2;2</button>
- <button label="4" labelSize="18.0" span="3">0x80BF 0xB24D</button>
- <button label="5" labelSize="18.0" span="3">0x80BF 0x708F</button>
- <button label="6" labelSize="18.0" span="3">0x80BF 0xF00F</button>
-
- <button label="NGC" labelSize="12.0" span="3" macro="true">2;5;2</button>
- <button label="7" labelSize="18.0" span="3">0x80BF 0x926D</button>
- <button label="8" labelSize="18.0" span="3">0x80BF 0x50AF</button>
- <button label="9" labelSize="18.0" span="3">0x80BF 0xD02F</button>
-
- <button label="DisCh" labelSize="12.0" span="3" macro="true">2;5;3</button>
- <button label="󿌌" alt="KB" labelSize="25.0" span="3">0x80BF 0x10EF</button>
- <button label="0" labelSize="18.0" span="3">0x80BF 0x609F</button>
- <button label="󿋑" alt="Fav" labelSize="25.0" span="3">0x80BF 0x40BF</button>
-
- <button label="Red" labelSize="18.0" span="3" backgroundColor="FFFF4242" labelColor="FFFF4242">0x80BF 0xF20D</button>
- <button label="Green" labelSize="18.0" span="3" backgroundColor="FF42FF42" labelColor="FF42FF42">0x80BF 0x728D</button>
- <button label="Yellow" labelSize="18.0" span="3" backgroundColor="FFFFFF42" labelColor="FFFFFF42">0x80BF 0xB04F</button>
- <button label="D-TV" labelSize="18.0" span="3" backgroundColor="FF4242FF" >0x80BF 0x30CF</button>
-
- <button label="Guide" labelSize="18.0" span="4">0x80BF 0xB847</button>
- <button label="󿜶" alt="Up" labelSize="25.0" span="4">0x80BF 0x9867</button>
- <button label="Menu" labelSize="18.0" span="4">0x80BF 0xEA15</button>
-
- <button label="󿜰" alt="Right" labelSize="25.0" span="4">0x80BF 0xDA25</button>
- <button label="OK" labelSize="18.0" span="4">0x80BF 0x7A85</button>
- <button label="󿜳" alt="Left" labelSize="25.0" span="4">0x80BF 0x18E7</button>
-
- <button label="󿑙" alt="Return" labelSize="25.0" span="4">0x80BF 0x28D7</button>
- <button label="󿜭" alt="Down" labelSize="25.0" span="4">0x80BF 0x5AA5</button>
- <button label="Exit" labelSize="18.0" span="4">0x80BF 0x38C7</button>
-
- <button label="Sub" labelSize="18.0" span="4">0x80BF 0x4AB5</button>
- <button label="Audio" labelSize="18.0" span="4">0x80BF 0x8877</button>
- <button label="󿍎" alt="Rem" labelSize="25.0" span="4">0x80BF 0x08F7</button>
-
- <button label="󿝜" alt="Vol+" labelSize="25.0" span="4">0x80BF 0xE01F</button>
- <button label="VOD" labelSize="18.0" span="4">0x80BF 0x6A95</button>
- <button label="Page+" labelSize="18.0" span="4">0x80BF 0xA25D</button>
-
- <button label="󿝝" alt="Vol-" labelSize="25.0" span="4">0x80BF 0xC03F</button>
- <button label="󿙎" alt="Info" labelSize="25.0" span="4">0x80BF 0xFA05</button>
- <button label="Page-" labelSize="18.0" span="4">0x80BF 0x827D</button>
-
- <button label="󿑋" alt="Rec" labelSize="25.0" span="4" labelColor="FFFF0000">0x80BF 0xC23D</button>
- <button label="󿐊" alt="Play" labelSize="25.0" span="4">0x80BF 0x42BD</button>
- <button label="󿓛" alt="Stop" labelSize="25.0" span="4">0x80BF 0x807F</button>
-
- <button label="󿑟" alt="Rew" labelSize="25.0" span="4">0x80BF 0xE21D</button>
- <button label="󿏤" alt="Pause" labelSize="25.0" span="4">0x80BF 0x00FF</button>
- <button label="󿈑" alt="FF" labelSize="25.0" span="4">0x80BF 0x629D</button>
-
- <button label="󿒫" alt="Previous" labelSize="25.0" span="4">0x80BF 0xA05F</button>
- <button label="Apps" labelSize="18.0" span="4">0x80BF 0x06F9</button>
- <button label="󿒬" alt="Next" labelSize="25.0" span="4">0x80BF 0x20DF</button>
- </device>
- </irplus>
有線電視的遙控器係用 NEC Protocol,係好常見的遙控 Protocol,如果需要舊款有線的遙控器、或者在 MagicTV 高清機頂盒遙控器的設定檔,以下 rar 檔內的 Excel 檔可搵到有關遙控器的 NEC code,用上面的代碼做藍本,修改一下就可以做得到。
https://sites.google.com/site/chineseinput/electronics/winlirc/IRTx.rar
舊版有線遙控器:

作者: C_Law 時間: 2018-2-25 15:00
本帖最後由 C_Law 於 2018-3-4 22:45 編輯
詳細小小講下設定檔的格式,以下是一個最基本的設定檔:
- <irplus>
- <device manufacturer="A" model="B" columns="C" format="D">
- <button label="E" alt="F" labelSize="G" span="H" labelColor="I" backgroundColor="J">K</button>
- <space multiple="L" />
- <button label="E" alt="F" labelSize="G" span="H" fillColor="M">K</button>
- </device>
- </irplus>
A:文字,遙控器牌子名,其實可以任意文字
B:文字,遙控器型號,同樣可以係任意文字
C:十進制數字,介面無一個橫行分割的份數(詳情請睇 H)
D:文字,遙控訊號 Protocol 名,例如 NEC 是 WINLIRC_NEC1(有時間會再講),其它 Protocol 可能再需要在這裡加入更多參數(有時間會再講)
<device> 與 </device> 之內是每個遙控制的設定,每個掣的代碼用<button> 與 </button> 包圍:
E:文字,一個掣上面顯示的文字;也可以係 Icon 的代碼"&#xxxxxx" 格式)
F:文字,非必要,如果 Label(E) 是文字,這裡可加入文字說明,但 Import 後會被刪除
G:十進制數字,這個制的字體大小,我發現,在同一數值下,文字會比 Icon 大,如果想做到一致的大小,Icon 的 Labelsize 應該用較大數值
H:十進制數字,一個制的橫向大細,columns(C) 和 span(H) 是有關連,C 設定每一橫行分開多小格,而 H 就是一個掣的格數,例如 C=12,H=4,這個掣的闊度就是全行的 4/12 =1/3。
I:16進制數字,掣面上文字/Icon 的顏色,格式是 AARRGGBB,AA=Alpha值,一般是 FF,R/G/B 係紅綠黃的雙位數值,例如純藍色是:FF0000FF
J:16進制數字,掣面的底色,格式同上
K:16進制數字,格式是 0xHHHHHHHH,至於有幾多個位就視乎發射訊號的種類,例如 NEC protocol 係 32 bits,一個 HEX 數值有 4 bits,即係需要 8 位 16 進制數值,例如有線個 Power 掣,數值是 0x80BFAA55,要將這 8 位分成 2 組 4 位的寫成 0x80BF 0xAA55。如果 format(D) 是(WINLIRC_RAW) 就是十進制的時脈長度(單位是μs)(有時間會再講)。也可以是 macro 的按掣。
L:十進制數字,空格的闊度。一個掣同一個掣之間放入空格。例如 1# 代碼的紅/綠/黃/藍四色掣,如果將綠色掣的一行(由 <button....> 至 </button>) 改為 <space multiple="3" />,就會變成:紅/空格/黃/藍。
M:十六進制數字,填滿顏色,格式同 I、J。如果文字顏色和底色相同,可以用 fillColor 代替 labelColor 和 backgroundColor,例如 1# 代碼的紅色掣,可以將原本的 backgroundColor="FFFF4242" labelColor="FFFF4242" 改寫為 fillColor="FFFF4242"。
一個掣的代碼內,可使用 Macro,用一個掣依次序發射多個訊號,例如 1# 幅相左上的 News、AXN、NGC、DisCh,以 DisCh 來講,高清 Discovery Channel 的台號是 253,可用以下代碼:
- <button label="DisCh" labelSize="12.0" span="3" macro="true">2;5;3</button>
如果 irplus 已載入多個遙控器設定檔,更可以用 macro 加入其它設定檔的掣,例如在有線的設定檔加入電視機的 Power/Vol+/Vol-/Input……等等,就可以用有線的遙控版面內直接控制電視機,無需要先將 irplus 轉去電視機的版面。格式是:
[A - B];E
例如我部電視機是:<device manufacturer="SHARP" model="GA538WJSA" ......以下省略>
而電視機轉 Input 個掣是:<button label="Inputs" ……以下省略>
在有線電視個設定檔可加入:
- <button label="TV-Inputs" labelSize="12.0" span="3" macro="true">[SHARP - GA538WJSA];Inputs</button
不過,如果button label 是個 Icon,代碼不能照抄,例如 Power 掣 Icon 的代碼本應是 󿐥,但如果將 macro 寫成 [SHARP - GA538WJSA];󿐥卻又無法正常控制到電視機,要將後面 1045541 改為 61457才能正常用得到。我暫時還未搞清楚為何要轉數值,也不清楚要跟據什麼準則去轉。
作者: hkgcx 時間: 2018-2-27 19:30
好詳細,多謝師兄!
via HKEPC Reader for Android
作者: mdws2002 時間: 2018-2-28 01:30
我反而想問下,如果本身無遙控器相關資料,有冇啲咩方法可以查到遙控器訊號?
即係類似嗰啲Learning Remote咁,可以取得各按鍵資料並複制。
作者: C_Law 時間: 2018-2-28 17:47
有些手機本身有紅外線接收功能,如果手機的遙控 Apps 支援學習的話,就可以直接用手機去學。
如果手機無接收功能,就唯有靠自己啦!搵個可以自己寫設定檔的遙控 App(這也是我揀 irplus 的主要原因)。
識電子又有玩開 Arduino 的話,可以睇下我個 Arduino Infrared Remote Control(AIRC),駁個紅外線接收器去塊 Arduino UNO 就可以解讀多種遙控 Protocol。例如遙控器係用 NEC protocol 的話,用 AIRC 讀到個 Hex code,就可以跟 1# 個代碼做藍本去做自己的設定檔。
Arduino Infrared Remote Control(AIRC):
https://www.hkepc.com/forum/viewthread.php?tid=2266565
識小小電子焊接或者識玩 Breadboard 的話,可以整個 WinLIRC audio receiver,用電腦以錄音方式將遙控器訊號錄成 8-bit mono 格式的 Wav 檔,然後用我個 ExcelAIRC 內的 Wave2Pulse 將個 Wave 檔解讀成遙控訊號串的時脈長度,做個 WINLIRC_RAW 格式的 irplus 設定檔。
WinLIRC audio receiver 製作:
https://www.hkepc.com/forum/viewthread.php?tid=1645734
ExcelAIRC 下載:
https://sites.google.com/site/chineseinput/electronics/airc/ExcelAIRC.rar
有關用 ExcelAIRC 將 Wave 轉做時脈的用法,上面個 AIRC post 的 15# 有粗略講下。
至於 irplus 的 WINLIRC_RAW 格式設定檔,暫時無時間寫說明,但你可以在 irplus 隨意 Import 一個 Sharp 牌子的設定檔(例如 Sharp 的 Generic TV),Export 返出去電腦開來睇下,有電子底/Programming 底的話,應該好易睇得明。基本上係將每個掣的一大串時脈訊號長度以 Space 分隔,填入去每個掣的 <button......>XXX</button> 的 XXX 位置。
作者: chewybar 時間: 2018-2-28 23:36
高質share. Thanks c hing!
作者: C_Law 時間: 2018-3-3 18:05
本帖最後由 C_Law 於 2018-3-6 16:52 編輯
NEC 遙控訊號格式設定檔藍本
遙控訊號有好多種格式,NEC 是常見的一種,例如有線電視、MagicTV 機頂盒、Ei8ht 機頂盒、還有好多大陸製的 Media Player、山寨 DVD 機……等等都是用 NEC 格式的遙控訊號。以下網址有 NEC 遙控訊號格式的詳細說明:
https://www.sbprojects.net/knowledge/ir/nec.php
以下是 irplus 的 NEC 格式設定檔藍本:
- <irplus>
- <device manufacturer="NEC" model="Template" columns="12" format="WINLIRC_NEC1">
- <button label="Test" labelSize="18.0" span="4">0x1234 0x5678</button>
- </device>
- </irplus>
註:NEC 格式的訊號長度是 32bits,所以每個掣的 NEC code 都是 8 位的 16 進制數字(一位 16 進制數字等如 4 bits),要分開為 2 組 4 位 16 進制數字,以空格分開寫入設定檔內,例如 12345678 要寫成 0x1234 0x5678(之前試過一組過寫成 0x12345678,但如果最頭的 1 bit 甚至幾 bit 係 0,開頭的 0 將不會發射,發射出來不足 32 bit,有關的電器將無法解讀)。
RAW 格式設定檔藍本
簡單來講,遙控訊號是一連串紅外線 LED 閃動的 On 和 Off,接收的電器會根據 On 和 Off 的時間長度去判斷那一個遙控制被按下。RAW 格式就係寫入每個掣的 On 和 Off 時間長度(以 μs 作單位),所以 RAW 格式可以話係萬能的格式,可以發射任意設計的訊號。
以下是 RAW 格式設定檔藍本:
- <irplus>
- <device manufacturer="RAW" model="Template" columns="12" format="WINLIRC_RAW">
- <button label="Test" labelSize="12.0" span="4">一堆數字</button>
- </device>
- </irplus>
<button label="Test" labelSize="12.0" span="4">500 600 700 800 900</button>
發射出來的訊號會變成:
[attach]2044679[/attach]
(上圖是用電腦經 WinLIRC audio receiver 以 Audacity 錄音)
錄出來的波形長度(深綠色字)和寫入設定檔的數值(紅色字)有分別,這是因為接收器本身的偏差(通常讀取到的 On 會比實際訊號長大約 1xx μs、Off 會短 1xx μs),但一般家電的設計已預算有這誤差,所以通常可以不理)。
由於「一堆數字」是由最頭的 On 到最尾的 On,所以這堆數字的數量必定是單數。

