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

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

【Windowsプログラミング】VRCのコントロールを取り込まなきゃ。。WindowsのUSBデバイスを読むには【自作UAV】

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

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】

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をつかっているやつを探しまして、

https://github.com/gdmalet/JoyMon

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

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

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

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

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

で・・・

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

[C#]DirectInputでジョイスティック(ゲームパッド)を使用する

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にしたら、動きました(笑)

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

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

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

【自作ラジコンUAV】USBアダプタ買ったのでVRCをインストールして動かしてみる。。【シミュレータ】

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

どれがいい?(笑)

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

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

 

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

【ググっても無駄!】WindowsのRS-232Cシリアル通信で受信データに欠落が発生する

http://garicchi.com/?p=16711

投稿者 tom2rd

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

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください