VB串口接收问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:46:40
接收的字节数从几个到128不等,但是如果把RThreshold设为1,则接收缓冲区还没有接收完就开始处理数据了(也就是接收不完全)。比如我发送15个字节的数据,RThreshold设为1,结果接收了8个字节就进入了处理程序,后面的7个还在接收缓冲区,结果就出错。如果把RThreshold设为15则一点问题也没。请问有什么办法?谢谢!以下是我的代码:

Private Sub Command1_Click()
Dim OutputData() As Byte
Dim I As Integer
Dim J As Integer
Dim Data As String
Dim n As Integer
J = 1
For n = 0 To 3 Step 1
If (Val(Text1(n).Text) <= 15 And Val(Text1(n).Text) >= 0) Then
Data = Data & "00" & CStr(Hex(Text1(n).Text))
ElseIf (Val(Text1(n).Text) >= 16 And Val(Text1(n).Text) <= 255) Then
Data = Data & "0" & CStr(Hex(Text1(n).Text))
ElseIf (Val(Text1(n).Text) >= 256 And Val(Text1(n).Text) <= 4096) Then
Data = Data & CStr(Hex(Text1(n).Text))
Else
MsgBox ("数据无效!")
End If
Next n
I = Len(Data)
ReDim OutputData(I + 2) As Byte
OutputData(0) = &HBB
OutputData(1) = &HF0<

Option Explicit
Dim Order As String
Dim StrData As String
Private Sub Command1_Click()
Dim OutputData() As Byte
Dim I As Integer
Dim J As Integer
Dim Data As String
Dim n As Integer
J = 1
For n = 0 To 3 Step 1
If (Val(Text1(n).Text) <= 15 And Val(Text1(n).Text) >= 0) Then
Data = Data & "00" & CStr(Hex(Text1(n).Text))
ElseIf (Val(Text1(n).Text) >= 16 And Val(Text1(n).Text) <= 255) Then
Data = Data & "0" & CStr(Hex(Text1(n).Text))
ElseIf (Val(Text1(n).Text) >= 256 And Val(Text1(n).Text) <= 4096) Then
Data = Data & CStr(Hex(Text1(n).Text))
Else
MsgBox ("数据无效!")
End If
Next n
I = Len(Data)
ReDim OutputData(I + 2) As Byte
OutputData(0) = &HBB
OutputData(1) = &HF0
OutputData(I + 2) = &HEE
For n = 1 To I Step 1
OutputData(n + 1) = Asc(Mid(Data, n, 1))
Next n
MSComm1.Outpu