2011年9月11日 星期日

Wiimote : 改良過的 WiiPair 解決 Bluetooth V2.0+ 連線問題

2011年9月11日 星期日
前一篇提過找到 WiiPair 解決了因為學校班級電腦換了 Windows 7 64 bits 後無法使用 WiimoteAutoConnect 的問題(已解決,詳見後記),但也發現在我的 Notebook 上似乎無法使用 WiiPair 讓 Wiimote 配對成功的怪現象,9月8日我找出原因了,我錯怪了家裡的第二支 Wiimote ,錯怪了 Windows7 家用版或企業版的版本問題,主要是藍芽 Dongle 在做怪。經過交叉置換與測試,原來我當初同時買的兩個 USB Bluetooth Dongle 應該是不同的版本,平常在教室使用的是較舊的版本,而家裡那個測試用的則是較新的 V2.0 。使用 V2.0 的,當 WiiPair 執行 BluetoothAuthenticateDevice 進行和 Wiimote 配對(認證)時,不但會產生錯誤並中斷接下來載入驅動程式的程序,還會讓 Wiimote 原來閃爍的指示燈全部熄掉,這樣一來當然無法順利連線。研究了兩天,我將 WiiPair 的程序稍微修改了一下,改良過的我就稱它為 WiiPair2。
在 WiiPair2 裡最重要的是設定了 btdi.fAuthenticated = true; 讓程式不要進行 Authenticate 的動作,這樣配對時 Wiimote 閃爍的燈號就不會熄滅,可以繼續動作,雖然這樣呼叫完 BluetoothAuthenticateDevice 還是會產生錯誤代碼,但只要不使接下來載入驅動程式的程序中斷(將原始程式的 error = TRUE; REMARK 掉),一樣可以正常的完成連線的動作。
另外,我在 WiiPair2 中加入了新功能,如果執行 WiiPair2 的指令行有加上參數,它會把第一個參數當作是完成配對以後要啟動的程式的路徑,這樣就可以把一般我們會接著啟動的「座標軟體」順便啟動。使用的方式如下:
  • 假設我把 WiiPair2.exe 和「座標軟體」WiimoteSmoothboard.exe 放在同一個資料夾中。
  • 先對準 WiiPair2.exe 按滑鼠右鍵,然後點選「建立捷徑」。
  • 對準前一步驟建立的捷徑按滑鼠右鍵後點選「內容」。然後在「目標」那個欄位的最後面先按一個空白,再加上座標軟體的檔名,以本例來說,就是 WiimoteSmoothboard.exe 。好了就按確定。
建立 WiiPair2.exe 的捷徑
準備在 WiiPair2.exe 的捷徑裡加入參數
在 WiiPair2.exe 後加入座標軟體的路徑當作第一個參數

這樣,以後只要對準修改好的捷徑 double click ,再打開 Wiimote 電源或是按住 (1)(2) 的配對鈕,就可以準備開始使用 Wiimote 電子白板囉。
當然,我們也可以用批次檔來代替建捷徑的方式,如果 WiiPair2.exe 和座標軟體 WiimoteSmoothboard.exe 是放在同一個資料夾,我們只要在批次檔中放入底下這一行就可以:

WiiPair2  WiimoteSmoothboard

感謝 Richard L. Lynch 大方的提供了他的原始碼,讓我們可以繼續方便的使用 Wiimote Whiteboard,我也把改過的 source 附在壓縮檔裡,

測試環境

  • Windows XP SP3
  • Windows 7 Home Prem OA (64bits)
  • Windows 7 企業版 (64bits / 32 bits)


後記
  • 經過修改以後 WiimoteAutoConnect 現在已經可以在 Windows 7 64 bit 上使用了。請參考後面相關文章中的連結。


檔案下載

FAQ

Q:看畫面出現安裝驅動程式的訊息,但是安裝很久,以致 Wiimote 因為等待過久而無法順利連線。
A:因為 Windows 7 預設會去搜尋 Windows Update 中的驅動程式,因此會耗去不少時間。可以修改它的預設動作,這樣就可以避免這種逾時的情形。

設定的方法如下:

進入控制台裡的 [裝置和印表機] 後,找到並對準代表該臺電腦的圖示按右鍵,出現功能選單後點選 [裝置安裝設定] 來設定

如果設定成上圖中的「電腦上找不到驅動程式軟體時,從 Windows Update 安裝」還是會逾時,那就只好設成第三種的「絕不安裝來自 Windows Update 的驅動程式軟體」。


相關文章
  • 2011.09.11 專案組態中的「字元集」 改用 「使用多位元組字元集」重新編譯,讓在中文 Windows 中系統回應的錯誤訊息不會變問號,順便把大部份的提示字串中文化。
  • 2011.09.10 程式修改、編譯。

14 則留言:

  1. 老師謝謝您又再次提供實用的wiimote連線的解決方案。

    去年就是我mail提醒老師WiimoteAutoConnect無法在WIN7 64bits系統中運作,這一年來經過不斷的測試也摸索出一套能順利連線的方法,但對於一般使用的老師來說還是有點複雜。

    上週在學校安裝wiimote後,班級導師有一個好點子能快速記住連線方式,就是教全班小朋友一起學會連線方法,小朋友很快的經過兩次練習就能學會連線方法,以後在早上課前幫老師設定好連線,老師就可以順利上課了。

    現在WiiPair2的出現,相信對想用wiimote白板進行電子書教學的老師來說,真的是一大福音。

    Jesse Chang

    回覆刪除
  2. 張老師您好:
    Wiimote 的連線和首次的定位是一個大問題,解決了它,剩下的都是小事了。
    這一切都要感謝 WiiPair 的作者,我只是運氣好,就在最需要它時,它就出現了。

    回覆刪除
  3. 只要點選設定過的WiiPair2捷徑,就完成連結及開啟定位程式了,真的很棒!

    這星期用WiiPair2連結在XP及WIN7(64位元) 系統環境時都非常好用快速;但發現在WIN7(32位元)系統環境時卻無法順利連結。

    經過仔細觀察及測試後,只要將裝置安裝設定選擇→絕不安裝來自Windows Update的驅動程式軟體,WiiPair2連結就能正常動作;但這樣的設定是否會影響其它裝置的運作尚未測試。以上心得與老師分享。

    Jesse Chang

    回覆刪除
  4. 張老師您好:
    安裝驅動程式時因為自動搜尋 Windows Update 而導致 Wiimote time out 的情形在我的某一臺機器上也發生過,如果說的,把該選項關閉即可解決。至於對其它裝置會產生什麼影響就不知道了,不過,我覺得應該還好。

    回覆刪除
  5. 張老師你好
    受到你的啟蒙 我也嘗試開始使用wiimote電子白板
    我的系統是win7 64bit 我是使用內建的藍芽連線
    我的willmote使用充電電池 可是連線後 一切使用正常
    使用wiimote whiteboard 或是 smoothboard
    皆無法顯示出剩餘電量
    可以請問一下是甚麼原因嗎?

    回覆刪除
  6. 我也曾經幫朋友處理過類似的狀況,
    但問題是出在使用"副廠"Wii右手控制器的關係,才沒有電源容量顯示,最好還是買原廠的Wii比較安心,提供以上意見參考。
    Jesse Chang

    回覆刪除
  7. Ruey-Wen 您好,
    很高興知道您也成功了!
    不過,提醒您一下,Smoothboard 除非取得授權,不然是不能放在自己網站散布的。

    回覆刪除
  8. 感謝老師提醒,
    已經移除檔案,只保留批次檔分享^^

    回覆刪除
  9. 要請教老師,我的wiimote在WIN7(32位元)系統環境使用WiiPair2似乎可以連結,但在進入Smoothboard 時會發生錯誤,不知道老師是否有這方面的解之道?或在WIN7(32位元)系統環境下使何進行wiimote的連結..謝謝

    回覆刪除
    回覆
    1. WiiPair2 或是 WiimoteAutoConnect 都只是幫忙進行藍芽配對連線的部份,而它們無論在 32 bit or 64 bit 都適用。
      不過,如果您買的不是庫存的 Wiimote,而是新版的 Wiimote ,聽說會有連線的問題,可惜我試過的 Wiimote 都是舊版的,遇沒遇過大家說的那種情形。

      刪除
  10. 謝謝老師的回覆,藍芽連線看來是沒問題,是在開啟Smoothboard 時會發生程式錯誤,但在XP下卻是正常。

    回覆刪除
  11. 建議用autoconnect連線看看,我也曾經遇到類似情況。
    不同電腦系統總有可能遇到不同的狀況,不必堅持一種方法,autoconnect也很好用ㄚ!!

    回覆刪除
  12. 老師您好:
    建議更新一下程式,讓它支持windows 10 universal
    和把程式變成英文,不然出現亂碼不知道怎麼算

    回覆刪除
    回覆
    1. 您好:
      我自己的電腦是 Windows XP, 連 Windows 10 長啥樣都沒摸過吔~~
      我的 .zip 檔中有附 source, 有需要, 您可以自己改的。

      刪除

 
雄::gsyan © 2009. Design by Pocket