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

:VB MSComm接受数据不全

2012-02-25 
请教高手:VB MSComm接受数据不全frmMain.ctrMSComm.InBufferSize 1024frmMain.ctrMSComm.OutBufferSize

请教高手:VB MSComm接受数据不全
frmMain.ctrMSComm.InBufferSize = 1024
  frmMain.ctrMSComm.OutBufferSize = 512

  frmMain.ctrMSComm.InputLen = 0
  frmMain.ctrMSComm.InBufferCount = 0
  frmMain.ctrMSComm.RThreshold = 1  


'*****************************************
'此处添加处理接收的代码
'*****************************************

  frmMain.ctrMSComm.InputMode = comInputModeBinary
  intInputLen = frmMain.ctrMSComm.InBufferCount
  Debug.Print intInputLen
  ReDim bytInput(intInputLen)
  bytInput = frmMain.ctrMSComm.Input


  发送12组十六进制数据,利用MSComm接收只能收到8组.但发送8组以下的数据,接收正常.请问是为什么?急!再此先谢过各位!

[解决办法]

探讨
发送12组十六进制数据,利用MSComm接收只能收到8组.但发送8组以下的数据,接收正常.请问是为什么?急!再此先谢过各位!

[解决办法]
为防止数据丢失,在接收数据前延时一下看看
我做过的丢失数据都是延时问题,
另外你定义的是二进制
frmMain.ctrMSComm.InputMode = comInputModeBinary
模式,接收的是字节型的数据所以才类型不匹配

[解决办法]
延时可以用个循环或者用Sleep函数,另外,LZ没有使用事件吗?接受代码放事件中,接受丢数的可能性大大减少。
[解决办法]
探讨
刚刚看了一楼提供的串口调试代码,代码中MSComm1.Output发送的数据是字节型,MSComm1.Input接收的数据是字符串型,可以这样吗?
我里面发送和接收的数据类型都是字节型,为什么我把MSComm1.Input接收的数据改为字符串型会提示"类型不匹配"?
接收的数据不全和数据类型有关系吗?

谢谢各位~

[解决办法]
LZ:你的代码源自"邮电出版社"的"VISUAL BASIC 串口通信工程开发实例导航"一书的"第1章 串口编程调试精灵"的代码.没看到你是如何对:
bytInput进行数据处理的.
原来代码是:
VB code
Private Sub ctrMSComm_OnComm()    Dim bytInput() As Byte    Dim intInputLen As Integer    Select Case frmMain.ctrMSComm.CommEvent        Case comEvReceive            If blnReceiveFlag Then                If Not frmMain.ctrMSComm.PortOpen Then                    frmMain.ctrMSComm.CommPort = intPort                    frmMain.ctrMSComm.Settings = strSet                    frmMain.ctrMSComm.PortOpen = True                End If                '此处添加处理接收的代码                  frmMain.ctrMSComm.InputMode = comInputModeBinary                intInputLen = frmMain.ctrMSComm.InBufferCount                ReDim bytInput(intInputLen)                bytInput = frmMain.ctrMSComm.Input                Call InputManage(bytInput, intInputLen)                Call GetDisplayText                Call display                If Not blnAutoSendFlag And Not blnReceiveFlag Then                    frmMain.ctrMSComm.PortOpen = False                End If            End If    End SelectEnd Sub
[解决办法]
楼主看看这个:http://download.csdn.net/source/1262066
这是一个用MSComm控件编写的串口调试器。
[解决办法]
http://download.csdn.net/source/1498637
http://download.csdn.net/source/1498644
[解决办法]
探讨
请问下bytInput需要怎么处理,我不是很懂
现在我不能理解的是运行后代码中intInputLen的取值不能大于8,请问是什么原因

[解决办法]
探讨
请问下bytInput需要怎么处理,我不是很懂
现在我不能理解的是运行后代码中intInputLen的取值不能大于8,请问是什么原因

[解决办法]
用这个工具看是在哪丢数据的,就知道该怎么办了

下载地址:
http://download.cnet.com/ComTrace/3000-2218_4-75156892.html?tag=mncol



感觉好别忘了给个review(评论),谢谢!

热点排行