2012-01-24 54 views
0

キーボードをエミュレートするUSB​​デバイスによって生成されるかなり複雑なデータストリームの解析に取り組んでいます。私がデータをコンセプト化して扱う最も簡単な方法は、GetNextInputCharacterというメソッドがあるとしたら、入力を受け取ったときに一度に1つずつ処理することなく、すべての解析を実行できます。残念ながら、私はストリームに期待するバイト数がわからないので、それを解析するまではわかりません。とにかくそれを解析するために最後まで待つことはありません。同期非同期入力の処理

キーイベントから非同期入力を受け取り、オンデマンドでそれを私の解析メソッドに渡すことができるメカニズムまたはデザインパターンはありますか?私が考えることができるのは、IEnumerableであり、キーイベントがポピュレートして一度に1つずつ出力されるFIFO上のビジー待機を行います。それはちょっとしたハックのようだが、うまくいくかもしれない。私はちょうど入力が既にそこにあるように振る舞うパースルーチンのための方法をし、イベントを待たなければならないことを知らずにそれを取る。

答えて

1

どのようにこのようなものについて:

 ... 
     var stream = //Set up stream 
     var data = from dataStream in StreamStuff(stream) select dataStream; 
     ... 
     private IEnumerable<String> StreamStuff(Stream stream) 
     { 
      stream.Open(); 
      while(stream.Read()) 
      { 
       //Do some stuff to your read value 
       yield return yourProcessedData; 
      } 
      stream.Close(); 
     } 
2

Streamを解析し、分かりやすい結果を得るのに十分な文字があるまでパーサーをブロックする方法はありますか?その後、USBデバイスからの非同期データはストリームに書き込むことができます。おそらくあなた自身のStream実装を書く必要がありますが、それほど難しくありません。

組み込みの.netシリアル化を使用すると、デシリアライザはネットワークソケットを介して入力ストリームを読み取る際にブロックされます。

関連する問題