2011年12月9日 星期五

Wiimote : 以 WiimoteAutoConnect 進行連線(2014.06.03更新)

2009 年時我利用 C# 和 In The Hand 32feet.NET 中的 InTheHand.Net.Personal.dll [該 dll 檔案的授權方式為 Microsoft Public License (Ms-PL) ] ,寫了一個可以幫我們讓電腦透過藍芽和 Wiimote 連線的小工具 WiimoteAutoConnect 。程式沒多少行,但是省去了使用  MS Windows 內建的MS Bluetooth Stack 時必須先手動移除舊連線的紀錄,才能重新連線的麻煩,也順便加上了可以自訂的小功能,讓我們使用 Wiimote 電子白板時可以更輕鬆一點。
兩年過去,來到 2011 年,學校的班級電腦改用 Windows 7 64bit,不知何故,舊版的 InTheHand.Net.Personal.dll  在搜尋藍芽裝置時,找不到任何裝置。前一陣子我改用 WiiPair2 來連線,但是看到同事教室的 Windows XP 在用 WiimoteAutoConnect 時,找到 Wiimote 準備安裝 HID 的驅動程式時,可能因為安裝花費的時間較久,以致自動啟動座標軟體(Smoothboard) 變成是在 Wiimote 連好線之前,而造成錯誤,還要再手動執行該程式才能正常使用 Wiimote 電子白板。當初設計時有考慮同一支座標軟體可能會重覆執行,因此把在啟動前將已啟動的程序先終止,這部份功能似乎也沒有發揮作用(後來查了一下,原來是程式寫錯了,根本不會有作用)。為了解決前述兩個問題和 Windows 7 64 bit 的問題,我把已塵封兩年的 C# 程式碼再拿出來修改。

WiimoteAutoConnect V.2009

2009 的版本在 Windows 7 64 bit 中沒有作用的問題,到  32feet.NET 下載了 2011.06.10  v.3.2.609.0 的 InTheHand.Net.Personal.dll 後,重新編譯過,解決了。

WiimoteAutoConnect V.2011.12.04

Wiimote 連線後自動啟動自訂程式的部份,原來是用 sleep 的方式讓程式等五秒鐘,但是有個缺點,程式會好像卡住一樣,訊息沒更新,等候的時間也無法自訂。所以,在新版中,除了改用 timer 來判斷什麼時候啟動程式,設定的畫面也多了一個「等候幾秒後才自動執行上述程式」的選項,連線較順利的電腦可以設短一點,反之連線較慢的機器則可以設長一點,以避免 Wiimote 來不及連線的情形。在設定畫面的兩個按鈕中間也會出現倒數計時的效果。


可自訂的參數

WiimoteAutoConnect 可以設定的選項如下:
  • 「搜尋藍芽裝置的時間」:由於 Wiimote 在我們按完配對的紅色鈕或是 (1)(2) 按鈕後,只有大約 20 秒左右的等待連線的時間,而 Windows 這邊如果使用預設的藍芽裝置搜尋時間會耗掉不少時間,因此,設置了這個參數可以讓我們改變 Windows 去搜尋 Wiimote 的時間。我一般都是設成 2 或 3 秒就可以找到教室裡的 Wiimote 。
  • 「連線失敗,3秒後自動重試」:這個功能主要是讓程式和 Wiimote 連線失敗時可以自動再試著連線,這樣可以省下需要再按連線按鈕的時間。(Ver. 2011.12.13 以後的版本才有此功能)
  • 「連線成功後自動關閉本程式」:如果希望在找到 Wiimote 並完成藍芽的連線後,自動離開 WiimoteAutoConnect ,就勾選這個項目。
  • 「自動執行程式」:一般我們在將 Wiimote 和電腦連線完以後,會再啟動「座標軟體」,所以設了這個參數可以讓我們指定想要由 WiimoteAutoConnect 來自動啟動的程式路徑。
  • 「等候幾秒後才自動執行上述程式」:由於在安裝和 Wiimote 連線的驅動程式時,每臺電腦所會耗掉的時間並不同,因此提供此參數讓使用者可以自訂要幾秒鐘後才自動啟動指定的程式。

當我如果有設定或是修改過上述的四個選項後,「儲存設定值」的按鈕就會變成可按的狀態,如果想要保存目前的設定值,別忘了按一下哦!而這些設定值,Windows XP 會儲存在以下的資料夾中(xxxx 是Windows登入時的帳號名稱):
  • Documents And Settings\xxxx\Local Settings\Application Data\WiimoteAutoConnect

使用方法

由於 WiimoteAutoConnect 是使用 C# 開發的,並架構在 .Net Framework 2.0 上,所以,電腦必須有安裝 .Net Framework 2.0 以上。把 WiimoteAuotConnect.zip 下載後,解壓縮到想存放的資料夾後,即可使用。

  1. 插入藍芽傳輸器(Bluetooth Dongle)或是啟動藍芽功能。
  2. 啟動 WiimoteAutoConnect.exe 。
    如果是第一次使用,可以依個人需求,先設定前述的四個可自訂的選項。
  3. 按下 Wiimote 的配對鈕或是打開 Wiimote 的電源(使用外接電源者)。
  4. 按下 WiimoteAutoConnect 的「搜尋並連線」鈕。

如果電腦是第一次使用藍芽和 Wiimote 連線或是已很久沒連線時,由於 Wiimote 的裝置名稱「Nintendo RVL-CNT-01」需要透過系統去擷取並更新,會耗掉一些時間,可能需要執行兩次步驟 4 才能順利完成連線。基本上,在程式最下方的狀態列可以看到簡易的狀態。 

啟動後自動進行搜尋連線

2011.12.13 以後的版本可以在執行命後加上 「auto」的參數,這樣,程式一被啟動,會倒數三秒,然後自動進入搜尋藍芽裝置並連線的程序。 
設定的方法如下:
  • 為 WiimoteAutoConnect 建立捷徑
對準程式按滑鼠的右鍵後可以在桌面建立捷徑方便使用

  • 修改捷徑執行的內容,加上 「auto」的參數
對準捷徑按滑鼠右鍵,點選「內容」後,可以為程式加上參數

小記

  • 我買的第一個藍芽 Dongle ESS388 在 Windows XP 下原來無法使用 MS Bluetooth Stack 的,但是在 Windows 7 下居然有支援了。不過,也真是的,為什麼不連 XP 一起更新 driver !
  • 在 Windows 7 64 bit 下測試 ESS388 時發生一件怪事,利用 WiimoteAutoConnect 連線時,只看得到藍芽裝置搜尋結果中有 Wiimote , 卻一直無法連線。後來由控制臺中用手動的方式新增藍芽裝置連線成功,斷線再重新用 WiimoteAuoConnect 連線才正常運作。本來以為這種情形是因為 Windows 7 的關係,但是在 Windows 7 32bit 中卻有正常。原因待查,反正,如果有遇到類似情形,就先用手動的方式連一次 Wiimote 再試試囉!


程式下載

版權聲明

  • InTheHand.Net.Personal.dll 來自 32feet.NET ,版權歸  In The Hand。


相關文章


更新紀錄
  • 2014.06.03
    * 更新 InTheHand.Net.Personal.dll 為 3.7.1102.0
    * 配合前項 .dll ,改用 .NET 3.5 framework。
  • 2011.12.14
    * 將連線失敗後是否自動重新試著連線列為可自訂的選項。
    * 修正在倒數計時時如果按下 "搜尋並連線" 鈕時,倒數的程序沒有停止的錯誤。
    * 把原來預設的藍芽裝置搜尋時間改為 2 秒 (其實我都設 1 秒),經過測試,在 Windows 7 64 bit 下,搜尋時間設太長,很容易超過 Wiimote 等待連線的時間。
  • 2011.12.13
    * 修改了連線的程序:先移除未連線的 Wiimote 後再重新搜尋藍芽裝置,以免明明 Wiimote 沒有進入準備連線狀態卻出現 HID 驅動安裝成功的假象。HID service 啟動後再重新搜尋一次藍芽裝置一秒鐘,以計算出正確的已連線 Wiimote 數。
    * 如果都沒有找到 Wiimote 或是連線失敗時,程式會等三秒鐘後自動再重新搜尋並連線。
    * 在 .exe 指令後如果加了一個 auto 的參數,程式在啟動後三秒就會自動按下 "搜尋並連線" 的按鈕。這部份可以先建一個本程式的捷徑,然後對準圖示按右鍵選[內容] 後,在指令的後面自己加,方便想再減少操作程序的人使用。
  • 2011.12.09
    * 將 InTheHand.Net.Personal.dll 的授權書 (InTheHand.Net.Personal.Dll.License.txt) 加入壓縮檔中。
  • 2011.12.04
    * InTheHand.Net.Personal.dll 更新, 改用 2011.06.10 的版本,可支援 Windows 7 64 bits 。
    * 修改連線成功後,啟動自訂程式的程序,會先清除已啟動過的,等候自訂的秒數後才啟動程式。
    * 修改版面配置,加入啟動自訂程式前的倒數計時畫面。
  • 2009.05
    * 草創


27 則留言:

  1. 您好:

    我是新北市光華國小的老師,最近也是為了連線windows7,找了很多方法,我遇到的問題是已經找到wiimote,定位完後紅外線筆無法點選投影幕上的物件,不知您是否有遇到同樣的問題。
    林延財

    回覆刪除
  2. 延財老師您好:
    依您的描述,您應該是用了 Johnny Lee 的 Wiimote Whiteboard 座標軟體,它在 Windows 7 64 bit 會出現只能定位,卻無法控制滑鼠游的情形。
    個人是使用 Smoothboard 0.4.6 ,沒有這樣的問題。您可以 google 一下,網路上還找得到。建議您用以下的關鍵字找:

    smoothboard .zip

    不然,只好用別的座標軟體。

    回覆刪除
  3. 您好:

      您好厲害,我是用whiteboard座標軟體,我再試試smoothboard看看。謝謝您。

    回覆刪除
  4. 雄老師您好:

    我是高雄市崇德國小的老師,
    我的筆電內建藍芽,
    作業系統是Vista,
    wii在連線後四個藍燈就閃個不停,
    雖然顯示連線,
    但是wii還是沒有作用,
    請問有什麼地方操作錯誤嗎?
    謝謝您提供的資源。

    林宏燁

    回覆刪除
  5. 宏燁老師您好:
    如果您是使用 WiimoteAutoConnect 來進行藍芽線的,可以讓它再重新連一次(只啟動程式,Wiimote不動),確認一下是否己真的連線了。如果確實已連線,在啟動類似 WiimoteWhiteboard , Smoothboard ... 等座標軟體後,Wiimote 的燈號應該只剩下一個才對。
    如果連線失敗,建議您將 Wiimote 電池關閉再重新依藍芽連的步驟重來應該就可以。

    回覆刪除
  6. hello,

    Thanks for you great job and effort.
    I have a problem about using the WiimoteAutoConnect. As my Wii remote keep flashing, even it is connected.
    And i cannot interact with either WiinRemote or GlovePIE.
    So, am i missing anything, like Wii Remote Driver?

    From HK

    回覆刪除
  7. 來自香港的朋友您好:
    Wiimote 和電腦連線是靠 Blue tooth stack ,並不需要額外的 driver,我的 WiimoteAutoConecct 也不過是幫忙自動化而已,沒有它也是可以手動透過一般 blue tooth stack 的操作程序來完成連線的。
    我在猜,您使用的 OS 應該是 Windows 7,因為當我修改 Wiimote Whiteboard 1.3 程式時,在 Windows 7 上遇過好幾次類似的情形,Wiimote 的四個 LED 一直閃爍,卻一直無法連線,連用手動的方式去操作 MS blue tooth stack 都無法連線。這種情形在 XP 比較不會。
    建議您遇到這種情形時,把 Wiimote 電池(電源)拔掉,重接電源以後先以手動的方式試試。再不行就將電腦重新開機,Wiimote 關閉電源,都重開以後再試。以上,希望對能有所幫助。

    回覆刪除
  8. 雄老師您好:

    謝謝您的回覆,
    我想請問紅外線led筆是否會影響接收效果?
    我自製的紅外線led要很接近wii才感應得到光點,
    螢幕上則完全沒反應,
    tracking utilizaiton也是沒有反應,
    或是wii和布幕的距離、
    投影畫面的大小等,
    是否都會影響呢?

    目前卡在無法定位,因為wii完全感應不到紅外線燈~傷腦筋~
    哪裡做錯了嗎?

    謝謝您的回覆喔

    林宏燁 敬上

    回覆刪除
  9. 宏燁老師您好:
    紅外線 LED 其實有不同的波長的,去年底時我也曾買到不合用的,用相機都看得到,但是 Wiimote 只有在一公尺內時才感應得到。
    距離、電池的電力及 LED 的波長都會影響到 Wiimote 是否能接收得到。那要買哪一種 LED 呢?詳細的數據我忘了,一般家電用遙控器用的那種IR LED 都可以在 10m 以內感應得到,另外一種判斷方法,通電時看得到有一個小紅點的這種 IR LED 是絕對不行(我就是不小心買到這種),它一般是給監視器當補光用的,波長不適合 Wiimote。
    建議您可以先隨便拿一支遙控器測試一下 Wiimote,不過它按下時訊號通常不是恆亮,是閃爍的,反正只是測試而己。

    回覆刪除
  10. 雄老師您好,
    謝謝您的回覆,
    我確實是買了小紅點的led,
    會重新買過後再試試,
    謝謝您的協助。

    林宏燁敬上

    回覆刪除
  11. Good job!
    I am a freetrack player. i'm building a wiimote + bluetooth system. my os is win7. no matter software of ivt blutooth or window device self can not find my wiimote.
    i cross the great fire wall to hope you can get me a way!
    best wishes!
    from shandong
    my email: qt990552@gmail.com

    回覆刪除
  12. 請問我使用wii搖桿偵測到後,電池容量都已有數字秀出了,但是不管搖
    桿放在什麼位置,tracking utilization 都是0%,請問您是否有哪
    裡我可能弄錯了?麻煩您幫忙,謝謝!

    回覆刪除
  13. 上面這位朋友您好:
    不知您電腦的作業系統為何?使用哪一個游標軟體?一般來說,Tracking Utilization 必須在完成四點定位後才會計算,因此建議您首先要先確認 Wiimote 可以監看到紅外線筆發出的紅外光,如果使用類似 Smoothboard 的游標軟體,它有提供 IR dots 的訊息,因此,我們可以預覽紅外線筆的發光位置,這樣要把 Wiimote 調整到投影的可視範圍會較容易些。

    回覆刪除
  14. 非常謝謝您,原來要先完成四點定位,看來好像成功了,很開心有您的教導,功德無量.

    回覆刪除
  15. 雄老師 您好

    我的手提電腦是WINDOWS 7 64BITS,我用WiiMoteAutoConnects時,總是沒有辦法直接連上。

    雖然曾經有幾次運氣好,按了兩三次A&B鍵+【搜尋並連線】後就連上,但一般按了十幾次都還是沒有用。

    我試過將搜尋時間改成1秒、2秒、3秒、4秒、5秒。沒有一個有辦法每次都快速連上。

    不過電腦不是完全沒反應,它會出現以下兩個東西:
    1. WiimoteAutoConnect視窗會顯示有找到Nintendo
    2. 右下角會出現小視窗通知說WINDOWS正在搜尋驅動程式

    我已經試了3個星期了,還是找不到解決的方式。
    希望雄老師您能幫我找到問題。

    感謝您!

    欣娣

    回覆刪除
  16. 欣娣您好:
    如果曾經成功過,可能因為 Windows 7 預設會去搜尋 Windows Update 中的驅動程式,因此會耗去不少時間。可以修改它的預設動作,這樣就可以避免這種逾時的情形。您可以試著改一下 Win7 的設定,設定的方法在底這一篇的「FAQ」中:

    http://gsyan888.blogspot.tw/2011/09/wiimote-wiipair-bluetooth-v20.html

    您試試看。

    回覆刪除
  17. Hi 老師你好,

    最近在研究bluetooth 連接的c#,

    不知道是否有考慮將WiimoteAutoConnect 原始碼release 出來,

    方便研究以及增進功能^^

    :D

    回覆刪除
  18. 雄老师,您好:
    非常开心能够在这里给您留言,我想手动做一个 wiimote不知道您是否可以教教我,我的联系方式是qq:190669344 手机号:13723775604 非常感谢

    回覆刪除
    回覆
    1. 這位朋友您好:
      Wiimote 指的是 Wii 的遙控器,如果您是想自製這個遙控器,我可能幫不上忙哦!
      如果您想知道如何利用 Wiimote 架設電子白板,網路上有有非常多的資料可以參考,建議您先照著眾多網友的資料試一試。個人之前也整過一些,不棄嫌的話,可以看看:

      雄:Wiimote 電子白板 http://mail.lsps.tp.edu.tw/~gsyan/wiimote-whiteboard/

      刪除
  19. 雄老師 你好
    有個問題請教您,使用Wiimote autoconnectrs,在將電池放入wii 後,啟動
    自動連接程式連接時,還是需要去按Wii 上面的按鍵才可開始連線,不知是否
    有方法在電腦啟動Autoconnector後,利用bluetooth 的無線功能,直接啟動
    wii 自動連接而,而不需再按wii的按鍵 謝謝
    george

    回覆刪除
    回覆
    1. George 您好:
      Wiimote 和電腦的藍芽連線每次都得進行 "配對" 的動作, 因此必須按(1)(2)鈕,或是戳電池室旁的 "紅色按鈕"。我是利用一小塊橡皮擦將後者固定,讓它變成 "恆按" 的狀態, 然後拉線至供電接點,利用電源的 "開關" 來遠端控制。給您兩篇之前整理的文章參考看看:
      http://gsyan888.blogspot.tw/2011/12/wiimote-usb-rechargeable-battery-pack.html
      http://mail.lsps.tp.edu.tw/~gsyan/wiimote-whiteboard/usb-power.html

      刪除
  20. 雄老師 你好
    不知你是否還有在用 wiimote 電子白板,今天突然碰到一個問題,我的電腦
    大概2 年前買的,用的是最早版本的Win 8, 使用 autoconect 連線都沒有問題
    但是剛剛更新到Win 8.1後,autoconect 突然無法使用,電腦顯式
    could not load file or assemble "in the hand.net.personal., 不知道你是否有
    碰到相同問題 謝謝
    george

    回覆刪除
    回覆
    1. 您好:
      我沒有 Windows 8.1 可測,不過,剛剛已經將 InTheHand.Net.Personal.dll 更新為最新的版本,並重新編譯過 WiimoteAutoConnect 了,請您重新下載 2014.06.03 的版本試試,希望可解決您遇到的問題。

      刪除
  21. 雄老師 你好
    謝謝你的協助,也要在此跟你致歉,前面問的問題部分是我沒搞清礎,
    狀況如下,昨天我照平常習慣在電腦上直接電選 wiiautoconector的
    icon ,之前通常會直接顯示對話視窗,但昨天卻顯示出如前述的問題,
    一時慌亂就直接發 mail 請教你
    剛才 download 你最新改好的,經解壓縮後,把用來直接啟動的 icon
    拉到桌面後,直接點選 icn 還是顯示出如前述問題無法執行的劃面,我重新
    download 後直接解壓啟動後就沒問題(不在桌面啟動)我再回到舊版的版本,用同樣方式也可以執行,因此舊版 wiiautoconect 還是可以用,差別是
    在解壓後不可把執行 icon 拉到桌面再執行,我對電腦軟體外行,
    因此不知到是何原因,但至少問題解決了 非常謝謝你

    回覆刪除
    回覆
    1. 您好:
      照您的說法,您將有 icon 的「程式」拉到桌面了,這樣一來,它和其它相關檔案就「分家」了。WiimoteAutoConncet 主程式執行需使用到錯誤訊息中的那個 .dll 檔,少了它就無法運作。如果有需要放到桌面,應該是要建立「捷徑」,以滑鼠對準 WiimoteAuotConnect.exe 按滑鼠右鍵,出現選單後選取建立「捷徑」的選項,XP 中有傳送至桌面為捷徑的選項,忘了 Windows 8 中是否有。您試試吧!

      刪除
  22. 曹用信 georgetsao@hotmail.com2014年7月31日 下午5:41

    雄老師 你好
    我是前面那位問您問題叫 george的人, 目前還有些問題希望能透過 e-mail 跟你討論, 不知你是否方便, 我在發表留言的身分,留下我的姓名及e-mail, 如果你方便麻煩你發個 mail 給我 謝謝

    回覆刪除
  23. 雄老師 你好
    不好意思打擾你想要跟你請教程式上的問題
    不知道方不方便
    我現在在寫一個藍牙自動配對連線的程式
    想要請問你的程式上藍牙是自動配對連線的嗎??
    需要手動key配對碼嗎??
    想要請問你是使用 InTheHand.Net.Personal.dll
    裡面的哪一個函式讓他自動寫入配對碼??
    我這樣表達的問題不知道你有看懂我的問題嗎??
    不好意思打擾你

    回覆刪除

 
© 2009. Design by Pocket