P/ECE研究室〜USB分室


* Tue Jan  1 19:39:58 JST 2002 Naoyuki Sawa

新年おめでとうございます。

さて、P/ECEデバイスドライバが一応の完成を見ました。
現在のところ、次のような仕様となっています。

※興味ないかたは、読み飛ばしてくださいね。
------------------------------------------------------------------------------
PC〜P/ECE間のデータ通信は、P/ECE標準のUSBCOMプロトコルを使っています。
P/ECEのUSBコントローラを乗っ取って、独自プロトコルを実装することも考えましたが、
まだUSBの理解が足りないため、まずは標準プロトコルに従うことにしました。

pieceif.hの関数のうち、
ベーシックレベルインターフェイス:
・ismGetVersion
・ismWriteMem
・ismReadMem
・ismExec
USBCOMレベルインターフェイス:
・ismUCOpen
・ismUCClose
・ismUCGetStat
・ismUCWrite
・ismUCRead
を、ioctlとして実装しました。

read/writeは、ismUCRead/Writeを簡単に用いるための手段としました。
例えばreadは、
・まだismUCOpenを呼んでいなければ、ismUCOpenを呼ぶ。
・P/ECE側の送信要求発行を待つ。
・ismUCReadを呼ぶ。
・(必要に応じて)ismUCCloseを呼ぶ。
という手順をカプセル化しています。writeも同様です。

二台のP/ECE間の通信は、上記デバイスドライバ自身が行うのではなく、
ユーザーアプリケーションを用意して、各P/ECEから受信したデータを入れ替えて、
別々のP/ECEへ送り返すようにしました。
------------------------------------------------------------------------------

それではデモをご覧に入れましょう!
栄えあるUSB対戦ゲーム第一弾は...(ここでドラムロール)...

「対戦じゃんけん」!

です。(脱力)

現時点のソースはこちらです。

左がP/ECE一号機、右が二号機です。
どちらのP/ECEも、メニューの左下に、
「対戦じゃんけん」がインストールされています。
Linuxに、P/ECEデバイスドライバをインストールします。
piece.oという名前ではあまりにストレートなので、
pme100.oという名前に変えてみました。
P/ECE両機を、2ポートUSBハブ経由で、PCに接続します。
手前から、USBハブ、Linux、P/ECE×2、Windows、です。
二台のP/ECE間でデータをコピーするための、
アプリケーションを起動します。
vsjkbrig【対戦じゃんけんブリッジ】という意味です。
対戦じゃんけんを起動すると、いきなり勝負開始です。
一号機はぐー、二号機はちょきをえらんでみました。
一号機の手を確定しました。
二号機がまだ手を確定していないので、
一号機は待ち状態になっています。
二号機の手を確定すると、勝敗が決します。
ちなみに今回は、一号機、二号機の順で手を決定しましたが、
もちろん逆順や同時でも大丈夫です。
この後、次の勝負へ移り、どちらがが三勝すると、終了します。
今回の対戦じゃんけんは、イベント同期型の対戦ゲームでした。 しかし、USB通信は高速なので、フレーム同期も充分に可能だと思います。 「爆弾男」や「最終ラップ」等の多人数ケームも、がんばれば作れるかも? 二人対戦では芸が無いので、行けるところまで行ってみたいです。 あと、おでマルの赤外線対戦を改造して、USB対戦にできたらいいなあ、なんて考えています。 正月なので、夢は大きく!仕様はコンパクトに...^^; それでは、本年もどうぞよろしくお願いいたします。

nsawa@piece-me.org