tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルMSCommの実際の送信完了
記事No15236
投稿日: 2011/06/17(Fri) 11:53
投稿者Masao
MSCommを使って送信したときの実際の送信完了を検出したいのです。
mscPort.Output = xxxxx
とすると送信バッファにxxxxxが書き込まれます(これは短時間で完了)が、
そのあとボーレートによる実送信(ボーレートにより長い時間)が実行されます。

この実送信の完了を知るためにOutBufferCount=0になるのを
待てばよいのかなと思って、
まずOutBufferCountの動作を知るために
mscPort.Output = xxxxx
Label1.Caption = mscPort.OutBufferCount
と書いたら、Label1は即0と表示されました。

実送信は、ボーレートとバイト数から約4mSかかります。
それなのに即0と表示されるのは、実送信前に0になっているようで
理解できません。

Q1.私の考え方が間違ってるとすれば、ご教授ください。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: MSCommの実際の送信完了
記事No15237
投稿日: 2011/06/17(Fri) 15:18
投稿者nobu
> MSCommを使って送信したときの実際の送信完了を検出したいのです。

http://support.microsoft.com/kb/411403/ja を参考にして下さい。

なお下記に同一質問があり(投稿日時 - 2011-06-15 14:31:23)
回答へのお礼(2011-06-17 08:29:01)も書き込まれています。

その後に再度、同一の質問ですので他の掲示板での回答に満足しなかったようで。

http://questionbox.jp.msn.com/qa6811243.html

[ツリー表示へ]
タイトルRe^2: MSCommの実際の送信完了
記事No15238
投稿日: 2011/06/17(Fri) 16:45
投稿者Masao
回答ありがとうございます。

> > MSCommを使って送信したときの実際の送信完了を検出したいのです。
> http://support.microsoft.com/kb/411403/ja を参考にして下さい。
実は、これを読んでOutBufferCountを使えばできるのかな?と思ったのです。
そして実験をしてみたところ、自分として理解できない結果に
なってしまったので質問させていただいた次第です。

> その後に再度、同一の質問ですので他の掲示板での回答に満足しなかったようで。
満足できないというより、
MSのサポートでは「送信完了」ということですが
いただいた回答では
「MSCommへのバッファへの書込み完了」との意味にとれました。
書込み完了してから送信が始まる・・・と考えると
???な感じです。
そこで、より専門的なこのサイトで質問してみようと思った次第です。

[ツリー表示へ]
タイトルRe^3: MSCommの実際の送信完了
記事No15239
投稿日: 2011/06/17(Fri) 17:10
投稿者nobu
言い訳的な事は結構です。

MSのサポートのコードで送信、受信のテストをして見て下さい。
その上で、今回の質問の「送信完了を検出」が出来たのかどうか。

私はMSCommの内部処理とか、その他の専門的な事は分かりませんので
他の詳しい方のフォローを受けて下さい。

[ツリー表示へ]
タイトルRe^4: MSCommの実際の送信完了
記事No15240
投稿日: 2011/06/20(Mon) 15:30
投稿者おせっかい
OutBufferCount=0    'バッファクリア
    Do
     DoEvents      'おまじない
     MsComm1.Output = "テキスト電文"
    Loop While OutBufferCount >= 1

試してください。環境がないので未試験ですが・・・・。

[ツリー表示へ]