请教高手: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组以下的数据,接收正常.请问是为什么?急!再此先谢过各位!
[解决办法]
[解决办法]
为防止数据丢失,在接收数据前延时一下看看
我做过的丢失数据都是延时问题,
另外你定义的是二进制
frmMain.ctrMSComm.InputMode = comInputModeBinary
模式,接收的是字节型的数据所以才类型不匹配
[解决办法]
延时可以用个循环或者用Sleep函数,另外,LZ没有使用事件吗?接受代码放事件中,接受丢数的可能性大大减少。
[解决办法]
[解决办法]
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
[解决办法]
[解决办法]
[解决办法]
用这个工具看是在哪丢数据的,就知道该怎么办了
下载地址:
http://download.cnet.com/ComTrace/3000-2218_4-75156892.html?tag=mncol
感觉好别忘了给个review(评论),谢谢!