Помогите разобраться с comport
Ответ который я получаю:
01 00 03 00 06 00 03 00 20 04 03 00 22 20 00 00 00 00 40 04 4C 04
Нужный ответ:
01 03 06 03 D0 03 97 00 00 51 3C
Код:
' Кнопка "Запрос"
Private Sub Command3_Click()
Dim Buffer() As Byte
Dim voltage As Integer
Dim Current As Integer
TextI = ""
If MSComm1.PortOpen = False Then
Text1.Text = "ERROR SEND"
End If
If MSComm1.PortOpen = True Then
MSComm1.Output = Chr(&H1) & Chr(&H3) & Chr(&H0) & Chr(&H5) & Chr(&H0) & Chr(&H3) & Chr(&H15) & Chr(&HCA)
Buffer = MSComm1.Input
Debug.Print "=== BOF ==="
For i = LBound(Buffer) To UBound(Buffer)
Debug.Print Right("0" & Hex(Buffer(i)), 2) & " ";
voltage = 256 * Buffer(6) + Buffer(8)
Text2.Text = voltage & "B"
Current = 256 * Buffer(10) + Buffer(12)
Text3.Text = Current & "A"
Text1.Text = Buffer(10) & " " & Buffer(11) & " " & Buffer(12) & " " & Buffer(13)
Next i
Debug.Print
Debug.Print "=== EOF ==="
End If
End Sub
Private Sub Command3_Click()
Dim Buffer() As Byte
Dim voltage As Integer
Dim Current As Integer
TextI = ""
If MSComm1.PortOpen = False Then
Text1.Text = "ERROR SEND"
End If
If MSComm1.PortOpen = True Then
MSComm1.Output = Chr(&H1) & Chr(&H3) & Chr(&H0) & Chr(&H5) & Chr(&H0) & Chr(&H3) & Chr(&H15) & Chr(&HCA)
Buffer = MSComm1.Input
Debug.Print "=== BOF ==="
For i = LBound(Buffer) To UBound(Buffer)
Debug.Print Right("0" & Hex(Buffer(i)), 2) & " ";
voltage = 256 * Buffer(6) + Buffer(8)
Text2.Text = voltage & "B"
Current = 256 * Buffer(10) + Buffer(12)
Text3.Text = Current & "A"
Text1.Text = Buffer(10) & " " & Buffer(11) & " " & Buffer(12) & " " & Buffer(13)
Next i
Debug.Print
Debug.Print "=== EOF ==="
End If
End Sub
Код:
Private Sub Form_Load()
MSComm1.CommPort = 1
' 19200 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "19200, N, 8, 1"
' Tell the control to read entire buffer when Input
' is used.
MSComm1.InputLen = 0
' Open the port.
MSComm1.PortOpen = True
End Sub
MSComm1.CommPort = 1
' 19200 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "19200, N, 8, 1"
' Tell the control to read entire buffer when Input
' is used.
MSComm1.InputLen = 0
' Open the port.
MSComm1.PortOpen = True
End Sub
Код:
MSComm1.Output = Chr(&H1) & Chr(&H3) & Chr(&H0) & Chr(&H5) & Chr(&H0) & Chr(&H3) & Chr(&H15) & Chr(&HCA)
Если Вы setup флаг тогда примерно так:
Код:
MSComm1.Output = &H1 And &H3 And .......
Рекомендую всмотреться и задуматься. Нули на чётных позициях говорят о том, что приходит юникод. Соответственно, на это надо ориентироваться и учитывать при обработке.