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.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组以下的数据,接收正常.请问是为什么?急!再此先谢过各位!
我里面发送和接收的数据类型都是字节型,为什么我把MSComm1.Input接收的数据改为字符串型会提示"类型不匹配"?
接收的数据不全和数据类型有关系吗?谢谢各位~
我做过的丢失数据都是延时问题,
另外你定义的是二进制
frmMain.ctrMSComm.InputMode = comInputModeBinary
模式,接收的是字节型的数据所以才类型不匹配
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
Debug.Print intInputLen
ReDim bytInput(intInputLen)
bytInput = frmMain.ctrMSComm.Input
If Not blnAutoSendFlag And Not blnReceiveFlag Then
frmMain.ctrMSComm.PortOpen = False
End If
End If
End Select这是MSComm段代码,请教高手帮我看看为什么会出现最上面陈述的问题,先谢谢了
MSComm1.InputMode = comInputModeBinary
上述设置说明按2进制接收,即按字节(Byte)方式接收,仅是通过jieshou()函数,将接收的字节数据处理为16进制字符串便于在文本显示和阅读.
bytInput进行数据处理的.
原来代码是:
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 Select
End Sub
LZ没有数据处理的关键代码,所以无法提供意见.
这是一个用MSComm控件编写的串口调试器。
http://download.csdn.net/source/1498644
现在我不能理解的是运行后代码中intInputLen的取值不能大于8,请问是什么原因
将这个玩意放在代码的最前面'Sleep
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)然后在oncomm 之后 加上 sleep(这里添加数字)例如 sleep(20)就是延时20毫秒至于为什么要延时?很抱歉 不清楚! 另外告诉你 估计没人清楚
http://download.cnet.com/ComTrace/3000-2218_4-75156892.html?tag=mncol感觉好别忘了给个review(评论),谢谢!