掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OnCommイベントで受信方法 (ID:82651)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
私も最近この問題と酷似した現象に直面し、解決できずに困っております。 解決済みの問題に対して、このように再定義して申し訳ありませんが、 私としましては何としてでも解決したいので、皆様何卒ご助力の程よろしくお願いいたします。 また、Toney様、その後この件に関して解決策を見出されたのであれば、 是非、ご教授いただきたくお願い申し上げます。 以下私の現状を記述させていただきます。 環境は、WinNT4.0(SP6),VB6(SP6)です。 ソフト作成の主旨としましては、Mscommを使用し、RS-232Cにより、 とあるデバイス(カードリーダ系)との通信を行うというものです。 ◆Mscommの設定 伝送速度 :9600 データ長 :8bit+1parity 使用コード :ASCII 8 bit code Handshaking :comNone InBufferSize :1024 RThreshold :1 InputLen :1 (InputLen :0 ダメでした。2バイトしか受信できません) この設定でカードリーダからのデータ(可変長1バイト〜数百バイト)を 受信し、イミディエントウィンドに表示させているのですが、10バイト 以上のデータを受信した時に最初の4バイトを表示して終了してしまいます。 (10バイトより短いデータは1バイトデータのみです) Debug.Printで確認すると、InBufferCountが0でないのにバッファからの読出しをやめてしまっているのがわかるのですが、なぜそうなるのかがわかりません。 '受信データ処理 Private Sub MScomm1_OnComm() Dim bytDat() As Byte Dim RDat As Variant Dim St As String bytDat() = MSComm1.Input St = "" For Each RDat In bytDat St = Right$("00" & Hex$(RDat), 2) Next Debug.Print MSComm1.InBufferCount; " "; St End Sub イミディエントウィンドに表示される内容 7 FF 6 11 7 22 6 33 ↑ InBufferCountが6であるのにバッファから読み出してくれません。 OnCommイベントは1バイト受信するたびに発生すると認識しているのですが、 これはイベントが4回しか発生していないということなのでしょうか? 補足としまして、上記状態で以下のコードによる手動での読込みを行うと、バッファ内のデータを全て読み出してくれますが、手動での読込みでは実用 に耐えられません。 'バッファ読込 Private Sub Cmd_BufferRead_Click() Dim bytDat() As Byte Dim RDat As Variant Dim St As String If MSComm1.InBufferCount <> 0 Then Do Until MSComm1.InBufferCount = 0 bytDat() = MSComm1.Input St = "" For Each RDat In bytDat St = Right$("00" & Hex$(RDat), 2) Next Debug.Print MSComm1.InBufferCount; " "; St Loop End If End Sub データ受信と共に全てのデータをバッファから読出し、 表示させるためにはどのような作りにすればよろしいの でしょうか? どうかご指導の程、よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.