投稿日 | : 2005/07/25(Mon) 17:00 |
投稿者 | : GOD |
Eメール | : |
URL | : |
タイトル | : Re^5: MSCommのOn_Comm受信 |
>If ctlComm.CommEvent = comEvReceive Then
> ' 受信データをバッファへ格納
> Buffer = ctlComm.Input
> bufLen = UBound(Buffer)
>Else
>
と直してもらいましたがまだエラーは出ると思います。(文章の前半部分を参照)
実は
hhttp://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?no=3856&reno=3855&oya=3849&mode=m
sgview
を見る前に投稿したので「bufLenが-1を返す」のだと思ってそれを防ぐ為の処理(文章の後半)を投稿し
ました。
要は受信フラグが立ってからデータを受信すれば-1にはならないということです。
■修正追加部分 --- ここから
上記処理は以下の仮説の元に
「-1を返しているというのは、実は他のイベント(ステータスの変化など)でOnCommが発生したが、処理をし
ている最中にデータ受信を行い、ctlComm.CommEvent = comEvReceiveの条件が満たされているのではな
いか。」ということでです。(余りそういうことはなさそうな気はするが一応ね。)
■修正追加部分 --- ここまで
実際には-1でなく8バイト受信しているとの事なのでやはりデータが揃った時点で比較などの処理に移行
するようにしなければなりません。
> Private Sub ctlComm_OnComm() の部分でブレイクポイント・・・
>
↑はブレークポイントで止めている間もOS側は処理が動いており、受信がくればデータを受信バッファ
に移すので、そのタイムラグで全てデータが揃っているということだと思います。