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

投稿日: 2005/04/27(Wed) 01:10
投稿者Starfish
Eメール
URL
タイトルRe^3: MSCommについて


 &HE0は、シフトJISでは、全角文字の1バイト目のコードですので、テキスト
モードだと、2バイト目がくるのをしばらく待っているのでしょう。

 バイナリーモードの場合は、バイト配列を使います。

 STXからETXまでの間のデータを、取り出して文字列に変換するコードを
書いてみました。コンパイルエラーは落としてありますが、デバッグはしていません、
こんな感じでやればできるということで参考にしてください。STXとETXが
分かれて受信するところまでは考慮はしています。

Private Sub MSComm1_OnComm()
Dim bytBuffer() As Byte
Dim strData As String
Static bytData() As Byte
Static blnRecieve As Boolean ' 受信中

    Select Case MSComm1.CommEvent
    Case comEvReceive
        bytBuffer = MSComm1.Input
        If blnRecieve = False Then  ' STXを受信していない
            If InStrB(bytBuffer, ChrB(2)) > 0 Then  ' STX受信?
                blnRecieve = True
                bytData = ""
                bytBuffer = MidB(bytBuffer, InStrB(bytBuffer, ChrB(2)) + 1)
            End If
        End If
        If blnRecieve Then  ' STX受信済
            If InStrB(bytBuffer, ChrB(3)) > 0 Then  ' ETX受信?
                If InStrB(bytBuffer, ChrB(3)) > 1 Then
                    bytData = CStr(bytData) & LeftB(bytBuffer, InStrB(bytBuffer, ChrB(3)) -
1)
                End If
                blnRecieve = False
                strData = StrConv(bytData, vbUnicode)
                ' strData に、文字列に変換したデータが入ります。ここに受信処理を入れてください
            Else
                bytData = CStr(bytData) & CStr(bytBuffer)
            End If
        End If
    End Select

End Sub


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

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

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