vb 中怎样发送十六进制数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb 中怎样发送十六进制数据相关的知识,希望对你有一定的参考价值。

例如,我要发送"25 00 00 00 FF 0E 9A"给单片机,然后单片机接受的数据也是类似这样有极为的数,应该怎么写代码啊?
我还是不太明白!具体应该怎么写啊?

代码如下:

Private Sub Form_Load()
MSComm1.Settings = "9600,N,8,1" '设置通信口参数
MSComm1.InBufferSize = 40 '设置MSComm1接收缓冲区为40字节
MSComm1.OutBufferSize = 2 '设置MSComm1发送缓冲区为2字节
MSComm1.InputMode = comInputModeBinary '设置接收数据模式为二进制形式
MSComm1.InBufferCount = 0 '清除接收缓冲区
MSComm1.OutBufferCount = 0 '清除发送缓冲区
'MSComm1.RThreshold = 1 '设置接收一个字节产生OnComm事件
MSComm1.CommPort = 5
MSComm1.PortOpen = True '打开通信口
End Sub
Private Sub Command2_Click()
Dim data() As Byte '串口发送字节
ReDim data(7)
data(0) = &H81
data(1) = &H81
data(2) = &H52
data(3) = &H00
data(4) = &H00
data(5) = &H00
data(6) = &H53
data(7) = &H00
MSComm1.Output = data
接收有几种办法:1.延时接收
Timer1.Enabled = True
t1_c0:
If t1_flag0 = True Then GoTo t1_c1
DoEvents
GoTo t1_c0
t1_c1:
t1_flag0 = False
Dim Bintput() As Byte
Dim Binputa As Variant
Binputa = MSComm1.Input ' 从接收队列中读入字符串
Bintput() = Binputa
Dim i As Integer
For i = 0 To UBound(Bintput)
If Len(Hex(Bintput(i))) = 1 Then
strData = strData & "0" & Hex(Bintput(i))
Else
strData = strData & Hex(Bintput(i))
End If
Next
Text3.Text = strData
参考技术A 可以参考以下贴:
http://zhidao.baidu.com/question/91263821.html

详细的说吧,用MSComm发送数据有两种方式,
一种是文本模式发送,这时要写:
MSComm1.InputMode=comInputModeText
Dim sText="ABC"
MSComm1.OutPut=sText
'把"ABC"用文本方式发送出去.

第二种是二进制模式发送,这时必须要用一个字节数组才能发送,即使是一个字节也要用数组:
MSComm1.InputMode=comInputModeBinary
Dim Buffer as Variant
Dim Bytes(0 To 6) as Byte
Bytes(0)= &H25
Bytes(1)= &H25
Bytes(2)= &H00
Bytes(3)= &H00
Bytes(4)= &HFF
Bytes(5)= &H0E
Bytes(6)= &H9A
Buffer=Bytes()
MSComm1.Output=Buffer本回答被提问者和网友采纳
参考技术B 参阅:http://www.vbgood.com/viewthread.php?tid=83700&highlight=

补充:
Dim bytSend(6) As Byte
bytSend(0) = &H25
bytSend(1) = &H0
bytSend(2) = &H0
bytSend(3) = &H0
bytSend(4) = &HFF
bytSend(5) = &HE
bytSend(6) = &H9A
MsComm1.Output = bytSend

如何在linux下调试串口,发送十六进制数据

串口发送的数据是8位的,最大为255,就是FF,如果要发送大于255的数,必须变成几个字节发送,例如要发送十进制2315,就要将数据拆分 data(0)=2315/256; data(1)=2315%256; 这样就拆分开数据,再将数据发送出去。 参考技术A 使用gtkterm,这个可以传输

以上是关于vb 中怎样发送十六进制数据的主要内容,如果未能解决你的问题,请参考以下文章

java串口通信中怎样以十六进制数发送

vb以二进制打开excel后用winsock发送,结果接收后打开的是乱码,发送别的文件没问题,为啥?

JAVA串口怎么发送16进制?

arduino接收16进制数据?

arduino接收不了16进制数据?

怎样将十六进制代码转换成文字?