ab.com コミュニティ

ActiveBasicを通したコミュニケーション
前回の訪問日時: 2021年2月27日(土) 21:31 現在時刻 - 2021年2月27日(土) 21:31

All times are UTC+09:00




 [ 5 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2012年12月20日(木) 09:23 
いい年のおじさんが今更プログラムを組んでみたいと思い、
少し触って多少理解のあるMS-BASICに近い言語の物を探してたどり着きました。

早速質問ですが、件名の通りUSBコントローラ情報の取得というのは
可能なんでしょうか?
ボタンが押されているかいないかみたいな簡単なものでいいんですけど。

その辺りのプログラムソースがあるならば参考になるので
非常に助かるのですが…

もしよろしければどなたかご教授お願いいたします。
とりあえず記憶の底に沈んだBASIC言語を掘り起こしながらお待ちしております。


ページトップ
   
 
 記事の件名:
投稿記事Posted: 2012年12月21日(金) 01:58 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
USBコントローラというよりは、その先に繋がっている何か機器の状態を得たいように見受けられますが、いずれにせよ簡単ではないです。

マウスやキーボードのような具体的な機器なら(USBか否かにかかわらず)マウスやキーボードの入力として受け取ることになりますし、マイコンなどの自作の何かであれば仮想COMポートとして扱うのが割とよくあります。このように、具体的な何かであればそれぞれの方法がある一方、単にUSBというのは意外と扱いが厄介な存在です。

#なんかちょっとずれたこと言っている気もしますがこのままで。


ページトップ
   
 
 記事の件名:
投稿記事Posted: 2012年12月21日(金) 09:40 
イグトランス様 ありがとうございます。

少し書き方が悪かったのですが、USBに接続されたゲームパットの状態を
取得出来るのかなと思い、書き込ませてもらいました。

自分なりに色々調べた感じによれば、ダイレクトⅩを組み込んで、ダイレクトインプットから
情報を得るのが一般的みたいですが、中には容易に情報を拾える言語もあったりしたので
もし先駆者のかたで既に試されてるかたがいて、解説ページ、プログラムソースの公開を
してらっしゃるかたがいれば、すごく参考になると思い書き込ませてもらいました。

「JoyToKey」というソフトでゲームパットの入力情報をキーボードのキーに割り当てる方法も考えましたが、
ウインドウが非アクティブ時に誤動作しそうで怖いのでやめました。

イグトランス様の書き込みから察するに、やはりかなり手強い相手である様子が窺えますが
出来るようならやってみたいと思いますので、また情報をお待ちしております。


ページトップ
   
 
投稿記事Posted: 2012年12月22日(土) 17:01 
私も昔やったことがあります。

ずいぶん時間が経って細かいことは忘れてしまいましたが、当時はコントローラを使った簡単なゲームを作っていました。

そのときに参照したページです。↓
http://www.ccad.sist.chukyo-u.ac.jp/~mi ... /index.htm
http://msdn.microsoft.com/ja-jp/library/cc410481.aspx

また、そのとき作ったゲームのコードを見るに、次のような流れだったと思います。

①api_mmsys.sbpをインクルード
一番最初に「#include<api_mmsys.sbp>」を入力します。
RADツールで作るのでしたらメニューの「表示」→「プロジェクトオプション」→「Win32API」→「マルチメディアAPIを使用する」にチェックを入れれば上と同じことになります。

②次の物を宣言
コード:
Declare Function joySetCapture Lib "winmm.dll" (hwnd As HWND,uJoyID As Long,uPeriod As DWord,fChanged As Long) As DWord
Declare Function joyReleaseCapture Lib "winmm.dll" (uJoyID As Long) As DWord
③ゲームパットをキャプチャ
RADツールなら
コード:
joySetCapture(hMainWnd,0,1,FALSE)
N88BASICなら
コード:
joySetCapture(_PromptSys_hWnd,0,1,FALSE)
です。
2つ目のジョイスティックは二番目の「0」を「1」にするんだったと思います。

④メッセージを取得
ゲームパッドの状態はメッセージで渡されます。
N88BASICの場合はサブクラス化が必要だったと思います。
当時サブクラス化の知識が0だった私はprompt.sbpを直接いじっちゃってます。
メッセージは
MM_JOY1MOVE
MM_JOY2MOVE
MM_JOY1ZMOVE
MM_JOY2ZMOVE
MM_JOY1BUTTONDOWN
MM_JOY2BUTTONDOWN
MM_JOY1BUTTONUP
MM_JOY2BUTTONUP
です。
メッセージ、サブクラス化が分からない場合はお手数ですがこのページ右の検索欄などで検索お願いします。

⑤ゲームパッドを離す
プログラムでゲームパッドがいらなくなったら
コード:
joyReleaseCapture(0)
でリリースしてください。
「0」は2つ目のジョイスティックの場合「1」だったと思います。


当時使っていたゲームパッドを手放してしまい、私のコードが非常に読みづらいものなので上記コードで動くかどうか分からないです。

Windowsのコントロールパネルのどこかにジョイスティックなどの機能を調べるツールがあったと思います。(私が使ってるのはWinXPですが…)
それを使うと動作確認が簡単になります。

それではがんばってください!


ページトップ
   
 
 記事の件名:
投稿記事Posted: 2012年12月23日(日) 10:29 
詳しい説明ありがとうございます!!!
まだ試せていませんが、先にお礼を、と。

おーし!がんばるぞ~!!


ページトップ
   
 
 [ 5 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: AhrefsBot, Bing [Bot], CCBot & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean