投稿日 | : 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