SSブログ

HID(キーボードもどき)で一文字ずつ送ってみた。 [USB]

hid_apli_result_002.pngまるで昨日の結果と変わらない、「捏造?」と思われてしまうかも知れないけれど、新しいプログラムの結果です。以下の関数を書き換えてみました。


void Str2PC( const char *str )
{
  int i;
  char *ptr;
  char old,dst[ 40 ];

  (void)Str2Keycode( dst, str );

  (void)memset( &KbBuffer[0], 0, 8 );  /*一度バッファ全てをクリアする*/

  for( i = strlen( str ), ptr = dst, old = 0; i > 0; )
  {
    wait();
    if( *ptr != old )  /*前回と異なる時*/
    {
      KbBuffer[ 2 ] = *ptr++;
      i--;
    }
    else
    {
      KbBuffer[ 2 ] = 0;
    }

    old = KbBuffer[ 2 ];  /*送信したデータを記憶して置く*/
  }
  wait();
  KbBuffer[ 2 ] = 0;
}

うーん!イメージとしては、6byteまとめての場合は一行一行がパッ、パッ、パッって表示されるんだけれど、このプログラムの場合は、やはり一文字ずつと言うのが目に見えて判ります。と言ってもタイピング速度は私なんかよりも遥かに早いのですが。

※もう一つ!
昨日のバッファ6byte使って送信するプログラムで”aaabbb”みたいなパターンが正常に入力されたのはWindowsの2Kでした。
先程同じプログラムをWindowsのXPでやってみたところ、”aaabbb”は”ab”と縮小されてしまいました。
と言う訳で、最初から1byteずつ送る方法が一番安全ですが、まとめて送る時は、バッファ中に同じデータが存在しない様に処理をする必要が有りますね。
2KとXPでこれだけ動作に違いが有るので、VISTAだったらどうなる事やら。持っていないから判らないけれど。

※更に更に追試
では”ababab”ならどうなるか?。XPでやってみましたら、”abababcdefghijklmnopqrstuvwxyz”となりました。
そこで勝手に推測すると、XPの場合はまずバッファの先頭から評価、ここで連続データは一定以上の連続で無い限りリピートとは判断せず、1個のデータとして見る。
しかしバッファの中で連続しないで同一データが配置されている時は、チェックがルーズなので、同一データとしては見ていない。ちなみに2Kはもっとルーズ。
あくまでも勝手な想像ですからね。

まだまだ続くぞ!多分。

nice!(0)  コメント(5)  トラックバック(0) 

nice! 0

コメント 5

noritan

8msecごとに一文字送られる。一秒間に125文字の割合。一文字あたり12ビット時間が必要と仮定すると、1500baud相当の表示速度ということになりますか。

その昔、BBSなどやっていた時には、300baud、早くても1200baudだったから、それに比べれば十分に早いかと。

最近の15200baudの端末と比べられたら、カワイソすぎます。

by noritan (2008-03-15 00:22) 

hamayan

まあそうなんですよね、キーボードですし。

あと、結論としてはバッファ詰め詰め作戦より、1byte単位で書いた方が良いという事かな。
現在のプログラムでは、英字は小文字しか対応していないので、大文字に対応させるには1byte単位での書き込みの方が都合が良い。

次は、日本語変換を起動して、日本語で記述にチャレンジかな。
変換候補をどう選ぶのかが最大の問題だけど。
by hamayan (2008-03-15 01:03) 

Tsuneo

いやあ、楽しんでますね。

スピードを追求するなら、フルスピード(12Mbps)やハイスピード(480Mbps)のUSB MCUに換えてしまうのが簡単なんでしょうが、このチップで何とかするところに面白みがあるんでしょうね。

最近、こういう遊び心を忘れていました。

Tsuneo
by Tsuneo (2008-03-15 10:05) 

Tsuneo

どうせUSBのスペック無視でいくのなら、エンドポイント・デスクリプタの bInterval を 1(ms) に設定してみてはどうですか。PCのハイスピードのポートに USB2.0 ハブ経由でつないであれば、エニュメレーション時のチェックもいいかげんになるので、結構だまくらかせると思いますよ。

Tsuneo
by Tsuneo (2008-03-15 17:48) 

hamayan

了解です。それも楽しい実験シリーズに入れます。

by hamayan (2008-03-15 22:39) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。