【Windows】USB取り込みのためのVisual Studio。。 DirectX SDKのインストールが止まるのよねぇ~からのUSB取り込み成功【Visual C++】

シェアする

スポンサーリンク
広告

USB取り込まなきゃなんだけどSDKが入らない問題

【Windowsプログラミング】VRCのコントロールを取り込まなきゃ。。WindowsのUSBデバイスを読むには【自作UAV】
VRCのUSB変換器かったら・・・ 1日で、到着(笑) そしたら、やっぱり走らせるのが好きなので、VRCで遊んでしまった(笑) ...

で、ちょいと不明のままだったんですが・・

Zilinx のFPGAのボードを眺めていたら・・

Zilinxの機械学習のページからたどると・・面白そうなのがあって、USBとZynqというFPGAボードをつなぐプログラミングが掲載されていて、Visual Studio Direct Xのインストールの仕方がきれいにまとまっていました。

https://reference.digilentinc.com/learn/programmable-logic/tutorials/zybo-zybot-guide/start

僕もこいつを知らなかったので、DirectXのSDKが入らないって悩んでいました。今更感満載ですけど、翻訳してきれいにTipsとして、おいて置きます(笑)

【Windowsプログラミング】VRCのコントロールを取り込まなきゃ。。WindowsのUSBデバイスを読むには【自作UAV】
VRCのUSB変換器かったら・・・ 1日で、到着(笑) そしたら、やっぱり走らせるのが好きなので、VRCで遊んでしまった(笑) ...

Visual Studio + Direct X SDK2010のインストールTips

Xboxコントローラーを使用するプロジェクトではVisual Studioを使用しています。Microsoftでは、無料でダウンロードできるVisual Studioのバージョンを提供しています。

僕はVisual Studio 2017 Community版をダウンロードしてインストールしました。

Visual Studio Team Servicesだと、Gitとかの連携とかweb上でできるんですね。面白いけどいまはあまり使わなさそうなので、ひとまずおいておきます(笑)


Microsoft Visual C++ 2010 Redistributable をアンインストールする

残念ながら、コントローラをコンパイルするために必要な次の作業と2010年版のMicrosoft Redistributableの間には矛盾があります。

コントロールパネル→[プログラムと機能]に移動します。

Microsoft Visual C ++ 2010 Redistributableのすべてのバージョンをアンインストールします。


Direct X SDKをダウンロード

X-boxコントローラをプログラムするには、Direct X Software Development Kitという特別なツールが必要です。マイクロソフトではDirect Xの無料ダウンロードも行っています。

Direct X SDKをダウンロードしてインストールします。


Microsoft再頒布可能パッケージを再インストールする

以前にアンインストールしたMicrosoft再頒布可能パッケージを再インストールします。64ビットマシン用のx86x64の両方のバージョンをダウンロードします。

だって・・・ 確かに・・こうすると、インストールできました!

Joystickのサンプルを動かそう!!

もうWindowsはMicrosoftのサイトではどこにあるのか?どの情報が正しいのかわけわかめですので・・とりあえず。。GithubでDirectInputをつかっているやつを探しまして、

GitHub - gdmalet/JoyMon: Joystick Monitor program for Microsoft Windows
Joystick Monitor program for Microsoft Windows. Contribute to gdmalet/JoyMon development by creating an account on GitHub.

から、Clone or Downlaodして、やってみるが、なぜかうまくいかない。。・・・ NG(笑)

次に、Direct X SDKの中に、サンプルがありまして、

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\XInput

のサンプルを入れてみるが、こいつも、どう動かすのやら??(笑) NG

いずれもエラーがいっぱい出すぎて、やる気失せました(笑)

で・・・

次に、もう一度、このページに戻り、コードを読み直すと。。

[C#]DirectInputでジョイスティック(ゲームパッド)を使用する
Windowsにはゲーム用のコントローラとしてジョイスティック(ゲームパッドとも呼ばれます)を使用することが出…

CooperativeLevelFlags.Background
ウィンドウがアクティブでなくても(=裏に隠れていても)、ジョイスティックの状態を取得可能にします。

CooperativeLevelFlags.NonExclusive
ジョイスティックに対して、排他的ではないアクセスを行います。
これを指定すると、同一のデバイスにアクセスしているほかのアプリの動作を妨げません

ということで、今回やりたい VRCを動かしながら、USBコントローラの値を読み込みたいということが出来そうだったので・・・

なんとか動かそうとがんばってみました(笑)

ちなみに、ソースは、TxtLogとなってる変数をTextBox1とか、Bottom1とかに変えたり、Formの名前を適切にかえたりする必要があります。。それらは、まぁビルドやってみると変数がないとかで教えてくれるので、少しでもVisual Studio系のIDEを使ったことがある人ならできるかと思います。

動かすまでにハマったポイント

その1 .NET Framework Ver 3.5 でないと動かない

プロジェクトを作る際に、デフォルトだとVer4になっていますが、Ver 3.5 でないと実行時エラーがでるそうです。

その2 明示的に参照でDirectXのDLLを読み込まねばならない

ソリューションエクスプローラーの参照で、Microsoft.DirectXとMicrosoft.DirectX.DirectInputを参照しておく。

そいでもって、参照するだけだと、これらのファイルが見えないので(笑)

C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.dll
C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.DirectInput.dll

直接リンクの位置を参照してあげないといけません(笑)

その3 Win32アプリらしいので、CPUタイプをX86としないとビルドできない

なんかAnyCPUとかあるんですが、このDLLはAnyCPUだと動かないらしいんですよね。

まぁ、それでも、デバックモードで実行すると・・・

例外がスローされますが、続行します(笑)

一番最初と、USBのステータスを取ってくるところ。。

どなたか、この例外がスローされない方法を教えてください。

その4 TimerのプロパティをEnableにしないと(笑)

いやぁ~これ、はまりました。デバックしても、Timerに飛ばない(笑)なんでかなぁ~??って思って、VRCを動かして遊んだりしているうちに・・・そういや、昔、Timerにはプロパティってあったよなぁ~ って思い出しまして、それで、Enableにしたら、動きました(笑)

それで、やっと動きました(笑)

VRCの操作をUSBから読み取るVC++プログラム

とりあえず、コントローラーの動きと、映像を同時にとるということの目途はつきました。映像と数値のファイルを作るプログラムを作ってみようかな? なんかうまく同期させる方法ないかな??

秘密結社のみなさん・・・ちょっとだけ進んだよ(笑)

【自作ラジコンUAV】USBアダプタ買ったのでVRCをインストールして動かしてみる。。【シミュレータ】
全然進まないラジコンUAV開発 いろいろと、調べるだけは調べているんですが・・ 【UAV自作のために】Autoware ROSベース ち...

さて・・ NVIDIAの自動運転車のためのエンドツーエンド学習という論文一回みてみると・・なんと9層もあるんですね。同じようなことをやろうとすると、やっぱGPUがないとあかんかもなぁ~

どれがいい?(笑)

PINEBOOKくらいで動かないとなぁ~ あれにもMali400というGPUが乗ってるんだけど、CUDAとかは対応してないだろうしなぁ~(笑)

【Pinebook】Raspberry Pi 対抗のPine64でできたUbuntsuノートブックが来た。Scratchとかするなら、これで良いかも【$89~$99】

他にも参考にさせてもらったサイトはこちらです

【ググっても無駄!】WindowsのRS-232Cシリアル通信で受信データに欠落が発生する | Gabekore Garage
ちょっと、ちょっと、 アンタが持ってる悩みは、コレでっか~~~~!? RS-232Cのシリアル通信で、受信データに取りこぼしが発生する 取りこぼし位置もサイズもタイミングもバラバラで法則は無い...
168体育在线(中国)维基百科
168体育在线(中国)維基百科(官网www.garicchi.com)【时刻有人发财】進入世界百強,成為最具國際競爭力的在線娛樂平台,168体育在线是國內游覽率最大的幾個遊戲娛樂平台之一,168体育在线擁有上千種在玩家中受歡迎的高質量遊戲
スポンサーリンク
広告

コメントを残していただけるとありがたいです

Loading Facebook Comments ...
%d人のブロガーが「いいね」をつけました。