• ベストアンサー

QRコードの処理

2000桁の情報からなるバーコードをMSCommで読み込みたいのですが、すべてのデータを読めません。 対応策はございますか? Dim Record As String MSComm1.InBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 2000 Record = MSComm1.Input '←ここで、Record変数にすべてのデータを読めません

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

「受信バッファサイズのの初期値は1024バイト」 とりあえず、 MSComm1.InBufferSize = 2048 として急場はしのげます。

その他の回答 (1)

回答No.1

VBその他のバージョンやバーコードリーダーの仕様が解らないので一般論です。 MSCommのバッファはデフォルトで1024バイトのはず、2000バイト読み込めば当然全データは存在しません。 イベントが発生するたびにバッファに転送するべきです。 またLoop Until MSComm1.InBufferCount >= 2000の様に特定データ長までループさせるのは非常に拙い手法です。 データのエラー、リーダーのエラーで違うデータ長のデータが来る可能性が有ります。 従って受信中にデータの解析をしてデータ終了時にループを終了するべきですし本来はタイムアウトも設定すべきです。

noname#187796
質問者

補足

ありがとうございました。 .InBufferCount = 2048としても、取得できたのは先頭の数桁でした。NGでした。 必要なデータは、先頭100桁です。 他の1Dコードではデータの桁数が違うのですが、.InBufferCount = 100でデータの取得ができました。OKでした。 QRコードでは、VB6やハードウェアに仕様があるのでしょか?

関連するQ&A