プロが教えるわが家の防犯対策術!

VB6でシリアルポート通信を行っているものです。
22byteと26byteのデータをバイナリ受信したいのですが、異なるデータ長のデータをうまく取り込む方法がわかりません。
現状は、26byteのみで運用していたため

InputLen=26
RThreshold=25

として運用していました。
22byteのときも26byteの時もスタートコード(02h)とエンドコード(0dh)が付きます。

この手のソフト制作が得意な方がいらっしゃいましたら、ご教示いただきたく。
InputLenとRThresholdの意味合いについてもご存じでしたら、教えてください。

A 回答 (1件)

InputLen プロパティの既定値は 0 です。

InputLen プロパティを 0 に設定すると、Input プロパティを使用したときに、コミュニケーション (MSComm) コントロールによって受信バッファの内容全体が読み取られます。
InputLen プロパティで指定されたバイト数が受信バッファ内にない場合、Input プロパティは長さ 0 の文字列 ("") を返します。InBufferCount プロパティをチェックすると、Input プロパティを使用する前に、必要なバイト数が受信バッファ内に存在するかどうかを調べることができます。
このプロパティは、固定長データ ブロック形式でデータを出力するマシンからデータを読み取る場合に役立ちます。

何バイト受信すれば、コミュニケーション (MSComm) コントロールによって CommEvent プロパティが comEvReceive に設定され、OnComm イベントが発生するかを設定または取得します。
RThreshold プロパティを 0 (既定値) に設定すると、文字を受信しても OnComm イベントは発生しません。
たとえば、RThreshold プロパティを 1 に設定すると、受信バッファに 1 バイトが格納されるたびに、コミュニケーション コントロールによって OnComm イベントが発生します。
(MSDNより)
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして、申し訳ございません。
勉強になりました。

お礼日時:2006/11/10 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!