首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教:串口定长接收内容设置不能成功有关问题

2013-11-12 
请问:串口定长接收内容设置不能成功问题使用定长接收10个字节内容,将RThreshold 10,接收别人上位机程序

请问:串口定长接收内容设置不能成功问题
    使用定长接收10个字节内容,将RThreshold = 10,接收别人上位机程序串口发送过来的10个数据始终不能实现定长接收,每次只接收一个或两个字节内容,使用串口调试工具发送同样内容可以实现定每次只长接收10数据.求教它出现这个问题的可能原因.
接收别人上位机发送的内容:
请教:串口定长接收内容设置不能成功有关问题
串口调试接收内容:
请教:串口定长接收内容设置不能成功有关问题
串口设置:


    With MSComm1
        .Settings = "19200,N,8,1"        '基本参数
        .InputMode = comInputModeBinary '按2进制接收方式
        .RThreshold = 10                 '接收字节处理数
        .SThreshold = 1                 '以字节发送
        .InputLen = 0
        .InBufferCount = 0
        .CommPort = 4                   '打开4口
        .PortOpen = True
    End With

串口接收:
Private Sub MSComm1_OnComm()
Dim i      As Integer
Dim strinput() As Byte
   strinput = MSComm1.Input   '得到当前数据
   For i = 0 To UBound(strinput)
      If strinput(i) < 10 Then
         temp = temp & " " & "0" & Hex(strinput(i)) '每个字节两位数格式
      Else
         temp = temp & " " & Hex(strinput(i))
      End If
   Next
   Label2.Caption = CStr(temp)    '显示接受内容
   Print temp                     '打印内容
End Sub


[解决办法]
试试

Private Sub MSComm1_OnComm()
Dim i As Integer, temp As String
Dim strinput() As Variant
If MSComm1.CommEvent = comEvReceive Then

   strinput = MSComm1.Input   '得到当前数据
   For i = 0 To UBound(strinput)
      If strinput(i) < 16 Then
         temp = temp & " " & "0" & Hex(strinput(i)) '每个字节两位数格式
      Else
         temp = temp & " " & Hex(strinput(i))
      End If
   Next
   Label2.Caption = temp    '显示接受内容

End If
End Sub

热点排行