質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

SDL (Simple DirectMedia Layer)

SDL (Simple DirectMedia Layer)は、C言語で記述されたクロスプラットフォームのマルチメディアライブラリです。画像や音などを 統一してアクセスするためのAPIを提供。LinuxやWindows、各種MacOSなどを公式にサポートしています。

Q&A

0回答

760閲覧

VMware-Linux仮想環境でのWiiリモコンの使用エラー

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

SDL (Simple DirectMedia Layer)

SDL (Simple DirectMedia Layer)は、C言語で記述されたクロスプラットフォームのマルチメディアライブラリです。画像や音などを 統一してアクセスするためのAPIを提供。LinuxやWindows、各種MacOSなどを公式にサポートしています。

0グッド

0クリップ

投稿2020/07/03 09:49

前提・実現したいこと

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

稚拙な文章ではありますが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問