* 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【対戦じゃんけんブリッジ】という意味です。 | |
対戦じゃんけんを起動すると、いきなり勝負開始です。 一号機はぐー、二号機はちょきをえらんでみました。 | |
一号機の手を確定しました。 二号機がまだ手を確定していないので、 一号機は待ち状態になっています。 | |
二号機の手を確定すると、勝敗が決します。 ちなみに今回は、一号機、二号機の順で手を決定しましたが、 もちろん逆順や同時でも大丈夫です。 この後、次の勝負へ移り、どちらがが三勝すると、終了します。 |