MSCOMM传送十六进制的疑问

liangwucheng 2003-10-30 10:14:56
在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”,不知是不是十六进制的表示有问题,而且也得不到所需的十六进制的数量。
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nforcedzh 2003-10-30
  • 打赏
  • 举报
回复
应该加一句
MSComm1.InputMode = comInputModeBinary
liangwucheng 2003-10-30
  • 打赏
  • 举报
回复
多谢(以了)了,发送过去可以了。就是Buf$这个家伙。
但我不知怎么给你加分,抱歉。
  • 打赏
  • 举报
回复
Buf$是一個字符串,而你接收時可能是二進制方式,你可以不用Buf$這個字符串變量,直接用lb這個數組就行了。
liangwucheng 2003-10-30
  • 打赏
  • 举报
回复
楼上朋友
现在的问题是发送出去的不是我想要的“04 ........03 XOR”,却变成了“3F.....3F”,不但数值不一样,而且数量也不一样。

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧