求代码 VB串口16进制程序

我购买了一个检测设备,按照说明使用串口调试工具和他通讯,波特率9600,8位数据,2位停止。发送8181520000005300,就会返回0000000000002803... 我购买了一个检测设备,按照说明使用串口调试工具和他通讯,波特率9600,8位数据,2位停止。发送81 81 52 00 00 00 53 00,就会返回00 00 00 00 00 00 28 03 53 00。但是要求在串口调试工具上勾上HEX发送和接受。请问我现在想自己用VB通讯,怎么实现HEX发送和接受呢???求这部分代码,谢谢 展开
 我来答
kumu0531
推荐于2016-07-14 · TA获得超过740个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:616万
展开全部
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
2.用事件接收---串口要打开'MSComm1.RThreshold = 1 '设置接收一个字节产生OnComm事件
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
strTxt = strTxt & MSComm1.Input
If Right(strTxt, 1) = Chr(13) Then
Text1.Text = strTxt
strTxt = ""
End If
End Select
End Sub
祝你成功!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式