11-28-2011 06:10 PM
LabVIEWを使ってソフトウェアキーボード機能を再現するプログラムを見たことがあるのですが
同様にしてソフトウェアジョイスティック機能を作り出すことはできないのでしょうか?
最近、LabVIEWを使ってのシミュレーションを検討しているのですが
例えばロボットアームの動作シミュレーションのようなものを行い
その計算結果を3Dモデルの動きとして表示させたいと思っています。
そこでGoogoleSketchUpというソフトのSketchyPysicsという
ジョイスティック入力に合わせて簡単に3Dモデルの動きを設定できる
ものがあるのですが、要はLabVIEWでの計算結果をジョイステイック出力として
GoogleSketchUpへ受け渡したい次第です。
解決済! 解決策の投稿を見る。
11-30-2011 07:33 PM
Iwatah 様
日本ナショナルインスツルメンツ技術部 寺尾です。
平素よりディスカッションフォーラムをご利用頂き誠にありがとうございます。
弊社WebにLabVIEWでジョイスティックを再現しましたサンプルがございますのでご紹介させて頂きます。
下記のリンクをご参考下さいませ。
"Joystick Emulator"
https://decibel.ni.com/content/docs/DOC-5852
宜しくお願い致します。
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
日本ナショナルインスツルメンツ株式会社 | 技術部 | 寺尾 純一
Junichi Terao | Applications Engineer | National Instruments Japan Corp.
サポート情報: http://www.ni.com/support/ja
技術データベース: http://www.ni.com/kb
住所 : 〒105-0012 東京都港区芝大門1-9-9 野村不動産芝大門ビル8F/9F
お問い合わせフリーダイヤル: 0120-527196
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12-05-2011 03:47 AM
寺尾様
サンプルプログラムのご提示ありがとうございます。
さっそく、プログラムをダウンロードし、実行させて頂きましたが、
このプログラムは最終的にソフトウェアジョイスティックのXY座標を出力するのみで、
このプログラムにて他のアプリケーションにジョイスティック入力を
送れるようなものではないように思います。
ソフトウェアキーボードVIのように
実際に他のアプリケーションのI/Oとして使える
ソフトウェアジョイスティックプログラムを作ることは出来ないのでしょうか?
12-05-2011 08:54 AM
Iwatah 様
日本ナショナルインスツルメンツ技術部 寺尾です。
平素よりディスカッションフォーラムをご利用頂き誠にありがとうございます。
>ソフトウェアキーボードVIのように
こちらはどのVIを指されていますかご提示頂けますでしょうか?
>このプログラムにて他のアプリケーションにジョイスティック入力を送れるようなものではないように思います。
他のアプリケーションとの兼ね合いを考慮した上で、具体的にどのような方法にてLabVIEWから他のアプリケーションにデータを
入力(送る)されるお考えでしょうか?
また、LabVIEWからどのようなデータを他をアプリケーションに入力されるご予定でしょうか?
宜しくお願い致します。
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
日本ナショナルインスツルメンツ株式会社 | 技術部 | 寺尾 純一
Junichi Terao | Applications Engineer | National Instruments Japan Corp.
サポート情報: http://www.ni.com/support/ja
技術データベース: http://www.ni.com/kb
住所 : 〒105-0012 東京都港区芝大門1-9-9 野村不動産芝大門ビル8F/9F
お問い合わせフリーダイヤル: 0120-527196
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12-06-2011 06:20 PM
寺尾様
毎々お世話になっております。
ソフトウェアキーボードVIを添付しました。
インターネッツで適当に検索して引っ張ってきたものなので取り扱いには注意願います。
他のアプリケーションにどのようにデータを入力するかですが、
要は単純にUSBジョイスティックで遊ぶようなPCゲームをLabVIEWで操作したいといった感じです。
私はプログラミングには詳しくないですが、そのアプリケーションの中でDirectXか何かで
USBジョイスティックの入力信号を読み取っているのだと思います。
LabVIEW標準関数の中にも
ジョイスティック信号を読み取るVIがあると思いますが、
その逆、読み取りではなく書き込みをしたいといった感じです。
以上よろしくお願いいたします。
12-08-2011 08:37 AM
横槍で恐縮です。
Joystickで操作することを前提に作られているアプリを、プログラム的にJoystickを動かしているかのように
するときに有用な PPJoy (Parallel Port Joystick) という仮想ジョイパッドがあるようです。
これを利用して、「そのJoystickがつながっている」ことにすると、LabVIEWから操作できます。
●PPJoyドライバのインストールと設定
(1) まず、 http://ppjoy.bossstation.dnsalias.org/ のサイトのページ上段にある Download PPJoy. を
クリックし、ダウンロードして下さい。
(2) ダウンロードした PPJoySetup.zip を解凍します。
「サブアーカイブを解凍しますか?」と聞かれることがありますが、解凍せずそのままにします。
(解凍して消去してしまうとインストール中にエラーになる)
(3) 解凍後に出来た setup.exe を実行し、インストール。
(4) インストール完了したら、スタートメニュー⇒すべてのプログラム⇒Parallel Port Joystick
⇒Configure Joysticks を起動
(5) 開いたウインドウで「Add...」をクリックし、選択できるプルダウンで「Controller 1」を選んで「Add」します。
そのままで、アナログ軸数8(X軸、Y軸、Z軸、X回転、Y回転、Z回転、スライダ×2)とデジタル軸数16の
Joystickとして設定されるはずです。元のウインドウは、Doneで終了
●Joystick操作の反応の確認
(6) コントロールパネル⇒ゲームコントローラ を開くと、今インストールした Parallel Port Joystick Controller 1
が見えているはずなので、そのプロパティを開いて、「テスト」タブを出しておきます。
●VIの準備
(7) 添付のviとllbをダウンロードして、111207-sample1-EmulateJoystick.vi を開いて下さい。
必要な機能(オープン、データセット、クローズ)は、サブviの pportjoystick.llb に入っています。
(8) そのまま実行させたら、(6)で開いたプロパティ画面を触ってアクティブにして下さい。
プロパティ画面をアクティブにすると同時に、「テスト」タブのJoystickが操作されているのが分かると思います。
なお、viは、アナログ軸数8、デジタル軸数16で、Controller 1 である前提で書いていますが、
サブviの入力端子にしてあるので自由に変えられます。
サンプルプログラムは、ソフト的に次々と値を送っていますが、viフロントパネル上でユーザが何かを
操作するたびに、Joystickの軸設定値を送信する、ということも可能と思います。
なお、こちらの方法は、たまたま見つけた大阪大学の
http://oshiro.bpe.es.osaka-u.ac.jp/people/staff/imura/computer/misc/virtual_joystick/disp_content
のページを見て、掲載されている操作方法のC言語をLabVIEWに置き換えたものです。
(ダウンロードサイトが古くてリンク切れしているので、前述の場所からダウンロードします)
これで、Joystickを使いたいアプリでPPJoyStick Controller 1 からの入力を受け付けるようになっていれば、
LabVIEWからJoystickをエミュレートできるのではないかと思いますが、試してみていただけますでしょうか。
当方、本物のJoystickを持っていないので、前述の方法で、LabVIEWからデータ送信して、Joystickの
プロパティのテストタブが反応するのを確かめるので精一杯なもので・・・
12-11-2011 07:46 PM
M.Shiraishi様
素晴らしいソリューションありがとうございます。
私のプログラミングの知識を遥かに超えているので
なかなか理解しきれないのが申し訳ないところですが。。
とりあえず私の環境下で提供頂いたviを実行し、
PPjoyの『Parallel Port Joystick Controller 1』プロパティの
テストタブで動作確認したところ、残念ながら反応しませんでした。
おそらく私のPC環境がWindows7ということで
PPJoyが対応していなかったのが原因かと思います。
ただPPJoyと同様の機能をもったアプリケーションが他にもあるようで
その中にはWindows7に対応しているものもあるようです。
なのでM.Shiraishi様のviを読み解きながら
同様のプログラムを作成できないか検討してみようと思います。
12-12-2011 07:27 AM
Iwatah様
Windows7ではダメそうですか・・・
PPJoyは確かにちょっと古めな感じはしたのですが、当方、VistaでとりあえずPPJoyを動かせたので
最近のPCでもだいたい大丈夫かな、と期待したのですが、残念・・・。
そもそも、仮想デバイスをCreateFile関数でオープンしてDeviceIoControl関数で制御する、という
方法自体が今やちょっと古いみたいなので、Windows7では新しい同様な仮想デバイスを使って
違った方法で制御を記述しないといけないのかも知れないですね。