串口数据接收不全,还有哪里进行设置?
开始是先发6个字节的命令出去,返回来最多是一个一串118个字节的数据或是8个字节的接受正确命令.我的做法是在收到的内容中插找是哪种命令来决定发出去什么东西,现在是在接收的串口中,一开始只接受8个字节的内容,从而无法接收完整的数据.还有什么地方可以更改串口设置?
Call 校检(读取) '校检接收到的是否正确
If 校检1tmp = 校检1 And 校检2tmp = 校检2 Then
读取 = "d10200012a" '接收正确,发送对应的硬件版本号
Call 校检(读取)
Call 发送(读取, X)
End If
ElseIf tmp = "C7" Then
X = 2
校检1 = ""
校检2 = ""
读取 = ""
For h = 0 To UBound(文本数据)
读取 = 读取 & 文本数据(h)
Next
读取 = "D7" & 读取 & "2A"
'Call 校检(读取) '校检接收到的是否正确
Call 数字转换(读取, X)
Call 发送(读取, X)
ElseIf tmp = "C6" Then '发送写入下位机数据
X = 1
校检1 = ""
校检2 = ""
Call 校检(读取)
If 校检1tmp = 校检1 And 校检2tmp = 校检2 Then
'Debug.Print 读取
读取 = Right(读取, Len(读取) - 2) '去掉命令自符C6
读取 = (Left(读取, Len(读取) - 2)) '去掉校检和标志符
Debug.Print 读取 '在这里看收到的内容分成了两不分,先是收了一个8字的的数据然后再收的是后面的100个数据,并不是合成为118个的数据包,求问我是哪里设置错了还是哪里写错了?
tmp = ""
'Debug.Print 读取
For i = 1 To Len(读取)
tmp = tmp & Val(Mid(读取, (i * 2 + 1), 2) - 30)
Next
For i = 0 To 27
文本数据临时(i) = Mid(读取, (i * 4 + 1), 4)
Next
End If
End If
End If
End Select
End Sub