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

串口数据接收不全,还有哪里进行设置?解决办法

2013-01-25 
串口数据接收不全,还有哪里进行设置?开始是先发6个字节的命令出去,返回来最多是一个一串118个字节的数据或

串口数据接收不全,还有哪里进行设置?
开始是先发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


[解决办法]
http://bbs.csdn.net/topics/390346112参考我在1楼的回复

热点排行