MSCOMM传送十六进制的疑问
在VB里写发送的十六进制程序如下:
Private Sub writerotation_Click() '写转向
Dim buf$
Dim ExclusivOR As Byte
Dim lb(13) As Byte
lb(0) = &H4 'EOT
lb(1) = &H30 'address of inverter
lb(2) = &H31
lb(3) = &H2 'STX,start of text
lb(4) = &H30 'address of parameter
lb(5) = &H33
lb(6) = &H30
lb(7) = &H32
lb(8) = &H0 'value of parameter
lb(9) = &H0
lb(10) = &H0
lb(11) = &H1
lb(12) = &H3 'EOT,end of text
ExclusivOR =lb(4)Xorlb(5)Xor lb(6)Xorlb(7) Xor lb(8) Xor lb (9)
Xor lb(10) Xor lb(11) Xor lb(12) '异或计算
If ExclusivOR < &H20 Then '如果异或值小于&H20,则加上&H20
ExclusivOR = ExclusivOR + &H20
End If
lb(13) = ExclusivOR
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
buf = lb
MSComm1.Output = buf '发送
End Sub
用串口调试程序在别的计算机里却得不到所需要的十六进制“04 30 31 02 03 02 00 00 00 01 03 XOR”,得到的是“3F 3F 3F 48 55 00 28 21 3F”,不知是不是十六进制的表示有问题,而且也得不到所需的十六进制的数量。