NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ソフトウェアジョイスティックは出来ないのでしょうか?

解決済み
解決策を見る

LabVIEWを使ってソフトウェアキーボード機能を再現するプログラムを見たことがあるのですが

同様にしてソフトウェアジョイスティック機能を作り出すことはできないのでしょうか?

 

 

最近、LabVIEWを使ってのシミュレーションを検討しているのですが

例えばロボットアームの動作シミュレーションのようなものを行い

その計算結果を3Dモデルの動きとして表示させたいと思っています。

 

そこでGoogoleSketchUpというソフトのSketchyPysicsという

ジョイスティック入力に合わせて簡単に3Dモデルの動きを設定できる

ものがあるのですが、要はLabVIEWでの計算結果をジョイステイック出力として

GoogleSketchUpへ受け渡したい次第です。

0 件の賞賛
メッセージ1/8
6,118件の閲覧回数

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0 件の賞賛
メッセージ2/8
6,092件の閲覧回数

寺尾様

 

サンプルプログラムのご提示ありがとうございます。

さっそく、プログラムをダウンロードし、実行させて頂きましたが、

このプログラムは最終的にソフトウェアジョイスティックのXY座標を出力するのみで、

このプログラムにて他のアプリケーションにジョイスティック入力を

送れるようなものではないように思います。

 

ソフトウェアキーボードVIのように

実際に他のアプリケーションのI/Oとして使える

ソフトウェアジョイスティックプログラムを作ることは出来ないのでしょうか?

0 件の賞賛
メッセージ3/8
6,065件の閲覧回数

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0 件の賞賛
メッセージ4/8
6,057件の閲覧回数

寺尾様

 

毎々お世話になっております。

ソフトウェアキーボードVIを添付しました。

インターネッツで適当に検索して引っ張ってきたものなので取り扱いには注意願います。

 

他のアプリケーションにどのようにデータを入力するかですが、

要は単純にUSBジョイスティックで遊ぶようなPCゲームをLabVIEWで操作したいといった感じです。

私はプログラミングには詳しくないですが、そのアプリケーションの中でDirectXか何かで

USBジョイスティックの入力信号を読み取っているのだと思います。

 

LabVIEW標準関数の中にも

ジョイスティック信号を読み取るVIがあると思いますが、

その逆、読み取りではなく書き込みをしたいといった感じです。

 

以上よろしくお願いいたします。

0 件の賞賛
メッセージ5/8
6,035件の閲覧回数
解決策
トピック作成者Iwatahが受理

横槍で恐縮です。

 

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の

プロパティのテストタブが反応するのを確かめるので精一杯なもので・・・

すべてをダウンロード
メッセージ6/8
6,012件の閲覧回数

M.Shiraishi様

 

素晴らしいソリューションありがとうございます。

私のプログラミングの知識を遥かに超えているので

なかなか理解しきれないのが申し訳ないところですが。。

 

とりあえず私の環境下で提供頂いたviを実行し、

PPjoyの『Parallel Port Joystick Controller 1』プロパティの

テストタブで動作確認したところ、残念ながら反応しませんでした。

 

おそらく私のPC環境がWindows7ということで

PPJoyが対応していなかったのが原因かと思います。

ただPPJoyと同様の機能をもったアプリケーションが他にもあるようで

その中にはWindows7に対応しているものもあるようです。

 

なのでM.Shiraishi様のviを読み解きながら

同様のプログラムを作成できないか検討してみようと思います。

0 件の賞賛
メッセージ7/8
5,981件の閲覧回数

Iwatah様

 

Windows7ではダメそうですか・・・

PPJoyは確かにちょっと古めな感じはしたのですが、当方、VistaでとりあえずPPJoyを動かせたので

最近のPCでもだいたい大丈夫かな、と期待したのですが、残念・・・。

 

そもそも、仮想デバイスをCreateFile関数でオープンしてDeviceIoControl関数で制御する、という

方法自体が今やちょっと古いみたいなので、Windows7では新しい同様な仮想デバイスを使って

違った方法で制御を記述しないといけないのかも知れないですね。

 

0 件の賞賛
メッセージ8/8
5,962件の閲覧回数