2014年9月24日 星期三

Scratch : 在 Linux 中使用 wii2scratch

2014年9月24日 星期三
上一篇「Scratch : wii2scratch + Wiimote 當小貓咪的控制(感應)器」中主要介紹如何在 Windows 中以 wii2scratch 來幫忙傳 Wiimote 的遞訊息給 Scratch,因為 wii2scratch 是以 Java 開發的,其實它也可以在 unix like 的作業系統中玩。底下改以在 LinuxMint 中的實作來說明,相信其它的 unix like 平台應該也類似。

下載 wii2scratch


如果在 Windows 上安裝過 wii2scratch ,可以將整個目錄放到 Linux 中即可。底下是透過 svn 來下載。

如果系統中沒有 svn ,我們可以利用軟體管理工具,搜尋並安裝「subversion」。


有了 svn 後,接著打開終端機,先切換到想存放 wii2scratch 的目錄中後,執行底下的這行指令,讓它連到母站去抓取檔案:

svn checkout http://wii2scratch.googlecode.com/svn/trunk/ wii2scratch-read-only

如果成功,會有類似底下的畫面:


並且多一個名為「wii2scratch-read-only」的新目錄存放抓回來的檔案。


啟動 wii2scratch


在 unix like 上的 wii2scratch 感覺比 Windows 上的厲害,如果 Wiimote 曾經配對成功過,下次使用時,只要按著 Wiimote 的 (1)(2) 鈕不放,執行 wii2scratch 即可自動進行連線,這一點是 Windows 下,使用 Microsoft Bluetooth Stack 所做不到的。

和在 Windows 中啟動 wii2scratch 一樣,必須先開啟 Scratch ,並啟用「遠端感應器」(Remote Sensor Connections) 的功能,不然 wii2scratch 會因為找不到本機監聽在 TCP/UDP port 4002 的網路服務而終止程式。

藍芽配對連線的部份,只要曾經連過 Wiimote,wii2scratch 會自動再行連線,如果從沒有配對過,則需要手動利用 Linux 中的藍芽連線工具連一次(可以參考後面的說明)。

準備工作處理完畢,如果照在 Windows 的操作程序,打開終端機程式,切換到 wii2scratch 程式所在的目錄,然後執行「java -jar Wii2Scratch.jar」,可能會出現底下的錯誤訊息:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no WiiuseJ in java.li brary.path



這是因為 Wii2Scratch.jar 找不到所需要的 libWiiuseJ.so 而產生的錯誤訊息,所以我們要告訴 Java ,把存放 libWiiuseJ.so 和 libwiiuse.so 的目前目錄(.),加入函數庫的搜尋路徑,我們可以分兩行執行:

export LD_LIBRARY_PATH=.
java -Djava.library.path=. -jar Wii2Scratch.jar

或是合併成一行(Linux 以逗號來連結多道指令):

export LD_LIBRARY_PATH=.  ; java -Djava.library.path=. -jar Wii2Scratch.jar

如果成功啟動 wii2scratch 的話,應該是類似下圖:



不過,像我在 LinuxMint 17 裡,大概是系統中藍芽函數庫版本的問題,還會再出現找不到藍芽函數庫的訊。如果出現下圖紅色箭頭的情形:



就必須先解決找不到「libbluetooth.so.2」的問題。其實建立一個 soft link 就好了。執行底下的指令:

cd /usr/lib/i386-linu-gnu
sudo ln -s libbluetooth.so.3.13.0 libbluetooth.so.2

上面的指令將找不到的 libbluetooth.so.2 link 到系統中有的 libbluetooth.so.3.13.0 (可以用「ls」先查詢,再視情形修改為系統有的檔名)。


前述的 soft link 建立好後,重新執行啟動 wii2scratch 的指令,應該就可以順利執行了。


藍芽的配對連線


前面提過,如果我們曾經進行過 Wiimote 的配對連線,之後,wii2scratch 就會自動進行配對連線。那如何進行首次的 Wiimote 配對連線呢?

在 LinuxMint 中,我使用「blueman」來管理藍芽的連線,底下簡單的記錄一下連線的程序。

如果不曾安裝過 blueman ,可以利用軟體管理工具來搜尋並安裝:


安裝完 blueman ,啟動程式以後,先按住 Wiimote 的 (1)(2) 鈕後,按一下 blueman 的「搜尋」鈕來尋找藍芽裝置:


找到要連線的 Wiimote 以後,先用滑鼠點一下:


按上方的「安裝」鈕來進行配對連線:


接著依序點選「不需要進行配對」、連線到「輸入裝置的服務」:


出現連線成功的畫面以後,按「關閉」:



相關文章





沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket