vb一次接收多个数据
PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventDimaAsVariantCasecomEvReceiveyy:...
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Dim a As Variant
Case comEvReceive
yy: a = MSComm1.Input
If (a = "85") Then
GoTo yy
End If
Text8.Text = a
If MSComm1.InBufferCount <> 0 Then '必须要判断
GoTo yy
End If
End Select
End Sub
这样只能单个接收,我想连续接收四个数据 0x85+角度+角速度+角度值,分别显示在text1,text2,text3,text4,中,怎样实现,新手求指教 展开
Select Case MSComm1.CommEvent
Dim a As Variant
Case comEvReceive
yy: a = MSComm1.Input
If (a = "85") Then
GoTo yy
End If
Text8.Text = a
If MSComm1.InBufferCount <> 0 Then '必须要判断
GoTo yy
End If
End Select
End Sub
这样只能单个接收,我想连续接收四个数据 0x85+角度+角速度+角度值,分别显示在text1,text2,text3,text4,中,怎样实现,新手求指教 展开
3个回答
展开全部
这个要进行判断,根据上面同志的代码进行二进制接收,如果你的 这3个参数长度一样,就是用4字节就可以完成传输,那么当接收到0x85的时候开始计数,计数到 4的时候停止,完成一次数据采集,不过这样掉包也有可能造成数据错误,而且,如果数据里面有值=0x85也会造成数据错误,最好使用一个不常用的符号来进行约定 开始和结尾,一般约定结尾,或者使用效验方法对数据进行效验后+在最后一位进行发送。以进行数据效验。
MSComm1.RThreshold = 4 '按实际接收数据帧
这个设置为4按理是可以实现4字节一次接收产生OnComm的。
但是容易出现错误,建议每个字节都接收,从新约定 开始符号,和结束符号,自行来提取数据。
或者加 效验,不对就抛弃或者申请从发。
MSComm1.RThreshold = 4 '按实际接收数据帧
这个设置为4按理是可以实现4字节一次接收产生OnComm的。
但是容易出现错误,建议每个字节都接收,从新约定 开始符号,和结束符号,自行来提取数据。
或者加 效验,不对就抛弃或者申请从发。
更多追问追答
追问
我接收的数据是以0x85为起始的,后边接着三个32位的数据,这该怎么实现???,可以用代码的形式解析一下吗
追答
身边没vb给你大概写下,你试试
还是刚才那句话,如果是数据中断或者数据中还有 0x85,那么整个程序都会乱掉。
超出字数限制,我传的附件。
展开全部
接收模式设置为2进制方式。
MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以二进制形式取回
设置接收长度,在OnComm事件中按通信协议约定的数据格式接收。
MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以二进制形式取回
设置接收长度,在OnComm事件中按通信协议约定的数据格式接收。
更多追问追答
追问
能否贴上代码看一下,我实在不懂这个
追答
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以二进制形式取回
MSComm1.PortOpen = True
MSComm1.RThreshold = 4 '按实际接收数据帧
txtReceive.Text = ""
End Sub
Private Sub MSComm1_OnComm()
Dim recbyt() As Byte
Dim i As Long
Select Case MSComm1.CommEvent
Case 2
recbyt = MSComm1.Input
For i = 0 To UBound(recbyt)
txtReceive.Text = txtReceive.Text & Right("0" & Hex(recbyt(i)), 2)
Next
'这儿依据通信协议数据格式约定解析数据
End Select
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是有“数据格式协议”的问题。
如果没有这些信息资料,无法对数据“解码还原”的。
如果没有这些信息资料,无法对数据“解码还原”的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询