VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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側は処理が動いており、受信がくればデータを受信バッファ
に移すので、そのタイムラグで全てデータが揃っているということだと思います。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -