前提・実現したいこと
c言語,SDLを用いたWiiリモコンで動くゲーム作り。
プログラミングを書き終わり、いざ実行しようとしたときのWiiリモコンの接続に関する、エラーです。
実行時
接続するとWiiリモコンの右端が光るよう、プログラムしていますが、ペアリング状態で点滅した後、光らなくなります。
Linux仮想環境でWiiリモコンで動かせるゲーム作りができるような環境へ
発生している問題・エラーメッセージ
wiimote_recv(): recv: Connection timed out wiimote_io.c(72): wiimote_read(): wiimote_recv wiimote_report(): send wiimote_event.c(91): update_mode(): wiimote_report wiimote_report(): send wiimote_event.c(110): update_mode(): wiimote_set_report wiimote_event.c(48): wiimote_get_state(): recv: %s wiimote_event.c(370): wiimote_update(): wiimote_get_state wiimote_report(): send wiimote_connect(): status report request failed wiimote_event.c(48): wiimote_get_state(): recv: %s wiimote_event.c(370): wiimote_update(): wiimote_get_state wiimote_send(): send: Transport endpoint is not connected wiimote_send(): send: Transport endpoint is not connected wiimote_send(): send: Transport endpoint is not connected
該当のソースコード
c言語
1Wiiリモコンの処理部のみ抜粋いたします。 2#include "wiimote.h" 3#include "wiimote_api.h" 4 5 // Wiiリモコンを用いるための構造体を宣言(初期化) 6 wiimote_t wiimote = WIIMOTE_INIT;// Wiiリモコンの状態格納用 7 wiimote_report_t report = WIIMOTE_REPORT_INIT;// レポートタイプ用 8 9 // Wiiリモコンのスピーカで鳴らす音のデータ 10 uint8_t sample[20] = { 11 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, 12 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c 13 }; 14 15//Wiiリモコン処理 16 if (argc < 2) {// Wiiリモコン識別情報がコマンド引数で与えられなければ 17 printf("Designate the wiimote ID to the application.\n"); 18 exit(1); 19 } 20 21 // Wiiリモコンの接続(1つのみ) 22 if (wiimote_connect(&wiimote, argv[1]) < 0) { // コマンド引数に指定したWiiリモコン識別情報を渡して接続 23 printf("unable to open wiimote: %s\n", wiimote_get_error()); 24 exit(1); 25 } 26 //wiimote.led.one = 1; // WiiリモコンのLEDの一番左を点灯させる(接続を知らせるために) 27 wiimote.led.four = 1; // WiiリモコンのLEDの一番右を点灯させる場合 28 29 // Wiiリモコンスピーカの初期化 30 wiimote_speaker_init(&wiimote, WIIMOTE_FMT_S4, WIIMOTE_FREQ_44800HZ); 31 32 // センサからのデータを受け付けるモードに変更 33 wiimote.mode.acc = 1; 34 35 36 37 38 // Wiiリモコンがオープン(接続状態)であればループ 39 while (wiimote_is_open(&wiimote)) { 40 41 // Wiiリモコンの状態を取得・更新する 42 if (wiimote_update(&wiimote) < 0) { 43 wiimote_disconnect(&wiimote); 44 break; 45 } 46 47 //Wiiのキー(ボタン)ごとに処理 48 // HOMEボタンが押された時(終了処理) 49 if (wiimote.keys.home) { 50 SDL_AtomicSet(&atm, 0); 51 wiimote_speaker_free(&wiimote);// Wiiリモコンのスピーカを解放 52 wiimote_disconnect(&wiimote);// Wiiリモコンとの接続を解除 53 } 54
試したこと
仮想環境上でWiiリモコンをつなぐため
BluetoothがWindows本体でなく、Linux仮想環境につながるよう設定しています。
各々最新のバージョンアップ
実行時は(例)./failename.c 00:00:00:00:00:00
のように、hcitool scan で判明した正しい識別番号を引数にとっています。
また、①,②ボタンをおし、ペアリング状態にしています。
しない場合は、下記エラーが出ます。
l2cap_connect(): connect
wiimote_connect(): l2cap_connect
unable to open wiimote: wiimote_connect(): l2cap_connect
補足情報(FW/ツールのバージョンなど)
環境
Windows 10
VMware Workstation 15 Plarer
仮想環境 Ubuntu 16.04
ライブラリ:libwiimote , SDL2
稚拙な文章ではありますが、よろしくお願いします。
あなたの回答
tips
プレビュー