2011年4月11日 星期一

1) 遙控器紅外線解碼 Part2

這篇是「1) 遙控器紅外線解碼」的第二部份。

使用 IRRecord 進行紅外線解碼

你可以用 WinLIRC 附的 IRRecord.exe 工具來為你的遙控器進行紅外線解碼。IRRecord.exe 的語法為:

IRRecord.exe -d SerialDevice.dll ..\BenQ.cfg
上列是使用 Serial 介面的紅外線接收器的指令,如果你用的是 Audio 介面的紅外線接收器,指令為:
IRRecord.exe -d AudioCapture.dll ..\BenQ.cfg
當解碼工作完成後,解碼結果將儲存在與 IRRecord.exe 同一個資料夾下的 BenQ.cfg 檔中。
解碼步驟

1) 執行 IRRecord.exe –d SerialDevice.exe ..\BenQ.cfg,WinLIRC 會顯示下列這段訊息提醒你在完成你的 Config 檔時記得要回饋到 LIRC 社群:

image

2) 按下「Enter」繼續,WinLIRC 提醒你要開始記錄遙控器的紅外線編碼了,請準備好你的遙控器:

image

3) 按下「Enter」繼續,接著拿起遙控器,然後對著紅外線接收器開始按遙控器。為了讓 WinLIRC 辨識遙控器所用的紅外線協定,你必須按遙控器按很多次:

image
▲ 遙控器每按一次會產生一個「點」或很多個「點」,當畫面上出現兩列的「點」的時候,辨識工作就完成了

接著會顯示底下這段訊息,代表要開始記錄遙控器各個按鈕的紅外線編碼了。

image
▲ WinLIRC 要求你輸入要記錄的遙控器按鈕名稱

4) 先輸入要記錄的按鈕名稱(如 power),然後按下遙控器的按鈕:

image

照著這個步驟做,把遙控器的每個按鈕都記錄起來:

image

5) 當所有按鈕都記錄起來的時候,就按下「Enter」結束記錄工作,然後 WinLIRC 會顯示 "Checking for toggle bit mask … " 的訊息,這時候按下「Enter」,然後再按遙控器任意一個按鈕,要按很多次,直到出現 "Successfully written config file" 訊息為止:

image
▲ 要注意這步只能按同一顆遙控器按鈕

6) 當你看到 "Successfully written config file." 這個訊息時,恭禧你!這代表你已經完成遙控器紅外線編碼的記錄工作了。這時會在 winlirc.exe 同一個資料夾下產生 BenQ.cfg 檔,我的 BenQ.cfg 檔案內容如下:

載入 Config 檔

完成遙控器的紅外線解碼工作後,接著請打開 winlirc.exe 主程式,並切到外掛設定的畫面,如下:

image 

按一下「Browse」,然後輸入 Config 檔的路徑,如 C:\WinLIRC\BenQ.cfg:

image

按下「OK」,並按下主畫面「Hide Window」把 WinLIRC 縮小到系統工具列。

在一般閒置的狀態下,WinLIRC 的圖示是這樣:

image

當 WinLIRC 偵測到紅外線訊號,而且順利解碼成功時,圖示會瞬時間變成綠色的,像這樣:

image

電腦遙控測試

接著用 Media Player Classic 做個簡單的測試,看看能不能用遙控器來遙控 Media Player Classic 播放影片。

image

打開 Media Player Classic,然後點選單 View > Options > Player > Keys 打開底下這個設定畫面:

image

照上圖的指示,先勾選視窗下方的 WinLIRC 的 checkbox,再點兩下 Play 指令的 RemoteCmd,然後輸入 power。這個 "power" 要跟 WinLIRC 的 Config 檔裏的按鈕名稱匹配才行。

好了,先用 Media Player Classic 打開一部影片,然後現在可以拿起遙控器按下 power 鈕,Media Player Classic 就會開始播放影片了。如果一切順利的話,恭禧你,你已經入門,會用紅外線遙控電腦了。

LIRC 遙控器 Config 檔資料庫

用 IRRecord.exe 來記錄遙控器的紅外線編碼步驟有點繁瑣。其實這工作也不一定非自己做不可,因為 LIRC 已經收集了大量遙控器的 Config 檔,在用紅外線遙控電腦前,只要先到底下這個網址查查看有沒有合用的遙控器廠牌型號的 Config 檔,之後再決定要不要用 IRRecord.exe 自己錄紅外線:

http://lirc.sourceforge.net/remotes/

11 意見:

骨頭 提到...

您好!在之前就第一個紅外線文章就已經注意到了,直到近有看到您又發表新文章,但在紅外線又找到這一篇。在新的搖控器無法使用您發表文章中,小弟不材不是寫程式的料,只是喜歡您的發表文章,希望能幫助您。

http://www.ladyada.net/wiki/tutorials/learn/sensors/ir.html

Cooper Maa 提到...

第一篇紅外線文章? 你是指「紅外線遙控原理與 NEC IR Protocol」這篇嗎? 這篇我是在 2010/01 文章發表的耶,哇!你那時候就注意到了啊。:)

謝謝你的欣賞,也謝謝你提供我 IR 的資訊,這篇我讀完後如果有心得再來發表分享。

chenanco 提到...

您好,不知您有沒有嘗試過骨頭先生提供的IR資訊,

我嘗試了很久仍然測試不出來,懇請您撥冗嘗試一下,

無理請求請多包含,謝謝

Cooper Maa 提到...

hi, 我沒試過骨頭先生提供的IR資訊。
好啊,不會的,我改天來試試看,不過最近工作有點忙,所以可能得等下禮拜之後才有空試。

C^3 提到...

你好!
我在記錄按鍵時出現了
"Something went wrong. Please try again. <9 retries left>"
請問是甚麼意思?
如何解決?

Cooper Maa 提到...

@C^3,
不好意思,我沒有遇過這個情況

也許你可以用 "Something went wrong. Please try again lirc" 當關鍵字找資料研究一下

C^3 提到...
作者已經移除這則留言。
C^3 提到...

這是我用遙控器按完兩列所出現的提示:
Space/pulse encoded remote control found.
Signal length is 37.
Found possible header: 8432 4182
Found trail pulse: 562
No repeat code found.
Signals are space encoded.
Signal length is 17
Now enter the names for the buttons.
請問這樣跟我出現
"Something went wrong. Please try again."這個問題有關連嗎?

新增問題:
還是是我遙控器的問題?

Cooper Maa 提到...

上面那個訊息是第 3 步驟「辨識遙控器所用的紅外線協定」會出現的正常訊息...

但是為什麼會出現 "Something went wrong. Please try again." 我就不曉得了

你試的是同一支遙控器嗎? 要不要換另一支遙控器試試看? 建議用電視遙控器不要用冷氣遙控器,因為電視遙控器的紅外線 code 比較單純

C^3 提到...

我之前用的搖控器是控制投影機的
然後在換成另一種遙控器後就成功了
或許就跟你說的一樣吧?
總之感謝!

Cooper Maa 提到...

不客氣

LIRC 網站有紅外線資料庫,如果解不出來,也許可以到哪找有沒所用遙控器的 code:

http://lirc.org/