RS232C通信でバイナリデータを送信し,10バイトのバイナリデータが
返ってくるはずなのですが,テキストボックスで表示すると,
はじめに8バイト分表示された後に一瞬で消え,残りの2バイト分が
表示されるだけになってしまいます。
例)D0 0D E2 04 A1 05 67 02
と表示されたあと
00 00
残りの2バイトに書き換えられてしまう
<コード>
Public Function get(bytArray() As Byte) As String
Dim i As Long
Dim Max As Long
Dim Min As Long
Dim lngSize As Long
Dim strBuff As String
'最初に決められたバッファを用意して、高速化する。
Max = UBound(bytArray)
Min = LBound(bytArray)
lngSize = Max + 1 - Min
i = lngSize * 3 + Fix((lngSize + 15) / 16) - 2
strBuff=Space$(i) For lngSize = 48 To i Step 49
Mid$(strBuff, lngSize, 2) = vbCrLf
Next
For i = Min To Max
lngSize = (i - Min) * 3 + Fix((i - Min) / 16) + 1
Mid$(strBuff, lngSize, 2) = Right$("0" & Hex$(bytArray(i),2)
Next
ByteArrayToHexDumpString = strBuff
End Function
Private Sub Form_Load()
' MSCommコントロールの初期設定
MSComm1.CommPort = 1
MSComm1.Settings = "1200,n,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
End Sub
Private Sub Command1_Click()
'Dim Buf(0) As Byte
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Text2.Text = ""
'Buf(0) = Chr(&HB)
MSComm1.Output = Chr(&HB)
End Sub
Private Sub MSComm1_OnComm()
Dim bytArray() As Byte
Select Case MSComm1.CommEvent
Case comEvReceive
If MSComm1.InBufferCount > 0 Then
bytArray = MSComm1.Input
Text2.Text = ByteArrayToHexDumpString(bytArray)
End If
==================================================================
長々と申し訳ありません。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200411/04110057.txt
↑
これと同じ質問ですか?
回答も同じような。
RThresholdプロパティの意味を理解してください
解決しました。
編集 削除