ユーザー名:

パスワード:


パスワード紛失

新規登録
ビートス オンラインショップへ
アブソリュート株式会社様へ

Re: Re: アナログジョイスティックの対応方法

このトピックの投稿一覧へ

Re: Re: アナログジョイスティックの対応方法

msg# 1.2.1.1.1
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-9-29 15:58
himono  <REGULAR>   投稿数: 29
なるほど、先ほどの投稿にあった追加修正だけでは上手く動作しなかったということですね。

>>Z軸と言えるか分かりませんが、スピード値として追加したいです。
とのことですが、どちらかというとPC側のソフトの処理についてになりますでしょうか。
PC側のソフトの設定ではジョイスティックの何の値をスピード値として扱っているのか分からないので明言はできないのですが
上手く動作しないのは
「ディスクリプタの記述を修正していない」
が原因ではないかと思います。

ディスクリプタについてはmain.c以外のファイルの修正も必要にななります。
usb_descriptors.cのゲームパッド(ジョイスティック)の記述の修正と
usb_config.hのディスクリプタ関連の数値も修正する必要があります。
この辺りについては「USB ディスクリプタ」等で検索すると詳しく解説しているページが見つかるかと思います。

PCへ送信するデータの形式はディスクリプタで記述されていますので
main.c内で送信用のバッファのサイズを変更してもPC側は
ディスクリプタに記述してある形式と違うのできちんと理解できません。

例えばジョイスティックにアナログZ軸を追加する場合、
usb_descriptors.cの388行目と389行目の間に
0x09,0x32, // USAGE(Z)

を追加し、392行目を以下のように修正
0x95,0x02, // REPORT_COUNT(2)

0x95,0x03, // REPORT_COUNT(3)

以上の追加修正を行うと、修正を行った以下の配列(370行目)
ROM struct{BYTE report[HID_RPT02_SIZE];}hid_rpt02
のサイズが(388行目と389行目の間に一行追加したため)変わるので

usb_config.h内の135行目
#define HID_RPT02_SIZE 49

#define HID_RPT02_SIZE 51
と修正する必要があります。

その上でmain.c内のジョイスティックのバッファいのサイズを1つ増やし
追加したバッファにZ軸のデータを入れてPCに送信することになります。

以上がおそらく必要な修正になるかと思いますが、
tom様が必要としているアナログ3軸目の入力が
Z軸なのか、Rx軸などなのか、その辺りはこちらでは分かりませんので
tom様が必要な入力を追加してみてはいかがでしょうか。
イイね!の数:0
返信する

この投稿に返信する

題名
投稿本文

投稿ツリー

  条件検索へ