[リストへもどる]
一括表示

投稿時間:2002/10/05(Sat) 18:52
投稿者名:Syokka-
URL :
タイトル:
バイナリデータの受信(MSComm)
[OSのVER]:WindowsNT4+Sp6a
[VBのVER]:VB6+SP5
現在英語環境で開発された計測機器との通信プログラムを日本語環境で使用するための作業をしてい
ます。
計測機器からのデータを取得する際に英語版ではMSCommのInputModeを[TEXT]で受信していたのですが
、8bit以上の値が送られてくるため文字コードの関係でうまく動作しません。
バイナリーモードで受信しなければならない事はわかるのですが、受信したデータをどのようにして
扱えばよいのか理解できません。
そこで皆様のご教授を賜りたいと考えています。
現在のコードを下記致します。
宜しくお願い致します。
-----------------------------------
Private Sub MSComm_OnComm()
Static iiii As Integer

MSComm.RThreshold = 0

Select Case MSComm.CommEvent
Case comEvReceive

ReadData:
rbuf = MSComm.Input
If rbuf = "" Then MSComm.RThreshold = 1: Exit Sub
Select Case gintNumber
Case 1
If Asc(rbuf) = &HAA Then gintNumber = 2
gintArrey = 0
Case 2
gintNumber = 1
If Asc(rbuf) = &H2 Then gintNumber = 3
Case 3
If Asc(rbuf) = &HAA Then
gintNumber = 4
Else
gintArrey = gintArrey + 1
gstrReadData(gintArrey - 1) = Asc(rbuf)
End If
Case 4
Select Case Asc(rbuf)
Case &HAA
gintNumber = 3
gintArrey = gintArrey + 1
gstrReadData(gintArrey - 1) = Asc(rbuf)
Case &H3

objReadPacket.Caption = 1
gintNumber = 1
Case Else
gintNumber = 1
End Select

End Select
If MSComm.InBufferCount > 0 Then GoTo ReadData
End Select

MSComm.RThreshold = 1
End Sub

投稿時間:2002/10/05(Sat) 20:28
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: バイナリデータの受信(MSComm)
# 回答ではありません。

とりあえず、microsoft.public.jp.vbで回答しておきました。

投稿時間:2002/10/06(Sun) 17:09
投稿者名:Syokka-
URL :
タイトル:
Re^2: バイナリデータの受信(MSComm)
こんにちは。
K.J.K.さんありがとうございました。

ReDim rbuf(2) As Byte
Dim strbuf As String

MSComm.RThreshold = 0
    
Select Case MSComm.CommEvent
Case comEvReceive
        
ReadData:
MSComm.InputLen = 1
rbuf = MSComm.Input
strbuf = StrConv(rbuf, vbUnicode)
        
If strbuf = "" Then MSComm.RThreshold = 1: Exit Sub
Select Case gintNumber
Case 1
If rbuf(0) = &HAA Then gintNumber = 2  
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
このようにしてうまく受信する事が出来ました。
また、ご指摘いただいたStrConv()関数を適切に適用する事が出来ました。
ありがとうございました。