いつもお世話になっております。
環境:VB2005 WinXP
VB6でのシリアル通信の時は、MsCommコントロールを使っていましたが、
VB2005ではMsCommコントロールがないので、SerialPortコントロールを
使用したいと思います。
VB6のMsCommコントロールで受信バッファ全体を読み取る場合、
InputLenプロパティ = 0 と設定していました。
しかし、VB2005のSerialPortコントロールで、代替すると思われる
プロパティのReadBufferSizeプロパティに、0 を代入するとエラーが
発生します。(ヘルプによると0以下は禁止のようです。)
型がInt32なので、最大値(2147483647)を設定しようと思いましたが
何か違うような気がします。
受信バッファ全体を読み込む場合どのようなプロパティ設定をしたら
いいでしょうか?
ご存知の方いらっしゃったらご教授ください。
※.NET Framework 2.x を使ったことは無いです
ヘルプ引いて考えたので、実際は違うかもしれません
単純に考えるのなら、read()して読み取れるバイト数が0になった段階で、
受信バッファ全体を読み取ったことになりますよね
もしくはBaseStreamプロパティを使って、
SerialPortが提供するストリームのLengthプロパティでストリームの長さを調べ、
その長さ分だけ読み取るとか
(多分、前者も後者も内部的にはほとんど同じことをしているのだと思います)
ヘルプより
>ReadBufferSize プロパティは、4096 未満の値を無視します。
だそうなので、4096以上にしましょう。
あとは通信相手側の設定によるんじゃないですかね?
SerialPortコントロール使ったこと無いんですが、
BytesToReadプロパティでサイズを取得して、
それ使ってReadメソッド投げたら駄目なんですか?
| ツイート |
|