一个vb串口问题,会vb串口调试助手的帮帮忙
我用串口助手收到的数据是7E4500FFFF00000500010100000000CD8E7E我用自己做的接收的大多数也是7E4500FFFF0000050001010...
我用串口助手收到的数据是
7E 45 00 FF FF 00 00 05 00 01 01 00 00 00 00 CD 8E 7E
我用自己做的接收的大多数也是
7E 45 00 FF FF 00 00 05 00 01 01 00 00 00 00 CD 8E 7E
但是::::::经常会变成下面这样
00 01 01 00 00 00 00 CD 8E 7E
FF FF 00 00 05 00 01 01 00 00 00 00 CD 8E 7E
00 05 00 01 01 00 00 00 00 CD 8E 7E
01 01 00 00 00 00 CD 8E 7E
为什么啊???
程序如下:
Select Case MSComm.CommEvent
Case comEvReceive
MSComm.InputLen = 0
MSComm.InputMode = comInputModeBinary
strBuff = MSComm.Input
Instring() = strBuff
For i = 0 To UBound(Instring)
If Len(Hex(Instring(i))) = 1 Then
Buffer = Buffer & "0" & Hex(Instring(i)) & Chr(32)
Else
Buffer = Buffer & Hex(Instring(i)) & Chr(32)
End If
Next i
Text5.Text = Buffer
End Select 展开
7E 45 00 FF FF 00 00 05 00 01 01 00 00 00 00 CD 8E 7E
我用自己做的接收的大多数也是
7E 45 00 FF FF 00 00 05 00 01 01 00 00 00 00 CD 8E 7E
但是::::::经常会变成下面这样
00 01 01 00 00 00 00 CD 8E 7E
FF FF 00 00 05 00 01 01 00 00 00 00 CD 8E 7E
00 05 00 01 01 00 00 00 00 CD 8E 7E
01 01 00 00 00 00 CD 8E 7E
为什么啊???
程序如下:
Select Case MSComm.CommEvent
Case comEvReceive
MSComm.InputLen = 0
MSComm.InputMode = comInputModeBinary
strBuff = MSComm.Input
Instring() = strBuff
For i = 0 To UBound(Instring)
If Len(Hex(Instring(i))) = 1 Then
Buffer = Buffer & "0" & Hex(Instring(i)) & Chr(32)
Else
Buffer = Buffer & Hex(Instring(i)) & Chr(32)
End If
Next i
Text5.Text = Buffer
End Select 展开
展开全部
又是你?:)
我试了每间隔1秒发送一次,发了50条,都没有问题。
Private Sub MSComm1_OnComm()
Dim Instring() As Byte
Dim buffer As String
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
Instring = MSComm1.Input
For i = 0 To UBound(Instring)
If Len(Hex(Instring(i))) = 1 Then
buffer = buffer & "0" & Hex(Instring(i)) & Chr(32)
Else
buffer = buffer & Hex(Instring(i)) & Chr(32)
End If
Next i
Text1.Text = Text1.Text & Chr$(13) & Chr$(10) & buffer
End Select
End Sub
我试了每间隔1秒发送一次,发了50条,都没有问题。
Private Sub MSComm1_OnComm()
Dim Instring() As Byte
Dim buffer As String
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
Instring = MSComm1.Input
For i = 0 To UBound(Instring)
If Len(Hex(Instring(i))) = 1 Then
buffer = buffer & "0" & Hex(Instring(i)) & Chr(32)
Else
buffer = buffer & Hex(Instring(i)) & Chr(32)
End If
Next i
Text1.Text = Text1.Text & Chr$(13) & Chr$(10) & buffer
End Select
End Sub
更多追问追答
追问
用你的还是会出现错误,我已经翻了很多书了,可能是其他地方出问题了哦。
还有就是:每间隔1秒发送一次 这个语句怎么写。
我用了一个timer1,不过好像没起作用,可能是这个地方的问题吧。
追答
你的数据是哪里发送的?我是用串口调试助手发送你提供的数据,里面有设置每间隔多少秒自动发送。我也尝试过一次发送50条,接收也没有问题。不过我是用虚拟串口测试的(virtual serial port driver),不知道你的开发环境是什么样的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晶振和波特率正确没?
追问
恩,是正确的,和串口助手设的都一样。它会显示完整的10多次,才有一次是缺少前面项的数据出现。所以和波特率应该是没有关系的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询