If CmmR.PortOpen = True Then
CmmR.InBufferCount = 0
CmmR.OutBufferCount = 0
CmmR.PortOpen = False
End If
If CmmR2.PortOpen = True Then
CmmR2.InBufferCount = 0
CmmR2.OutBufferCount = 0
CmmR2.PortOpen = False
End If
以下是接收mscomm的代码:
Select Case CmmR.CommEvent
' 事件
Case comEvCD ' CD 线的状态发生变化.
Case comEvCTS ' CTS 线的状态发生变化.
Case comEvDSR ' DSR 线的状态发生变化.
Case comEvRing ' Ring Indicator 变化.
Case comEvReceive '收到 RThreshold # of
Do
DoEvents
t1 = Now
' If DateDiff("s", t1, Now) > 1 Then
' Exit Do
' End If
sGetdata = sGetdata & CmmR.Input
Loop Until InStr(sGetdata, Chr(3)) > 0
If InStr(1, Txt.Text, Chr(2)) > 0 And InStr(1, Txt.Text, Chr(3)) > 0 And Len(sGetdata) >= 497 Then
SaveOrder (midchina(sGetdata, 1, 2000))
sGetdata = ""
Else
Call SendCom1("F")
lab.Caption = "Com1接收数据不正确"
lab.ForeColor = vbRed
sGetdata = ""
End If
Exit Sub
' Case comEvSend ' 传输缓冲区有 Sthreshold 个字符 '
End Select
5 个解决方案
#1
很奇怪的是sGetdata这个我定义全程变量,不赋值为=""关闭程序就不会提示,请各位指教,急....谢谢
#2
似乎是sGetdata这个变量在执行退出代码时候就已经卸载了,看你的代码sGetdata这个变量没有再被使用,那就不需要代码清空
#3
能查到是哪句引起错误的吗?
#4
sGetdata变量在其它地方都没定义了,直接弹出的错误
#5
是不是你关闭的顺序不对..
比如你正在接收数据:
你接收数据这里用了循环,什么时候从循环出来时不确定的...
在接收数据的循环里面,要是你对端口修改配置,关闭端口,是不是会出错?
如果在关闭的时候确定 是不是在接收数据的循环里面,不知道是不是就不会出现问题?
试试.
比如你正在接收数据:
Do
DoEvents
t1 = Now
' If DateDiff("s", t1, Now) > 1 Then
' Exit Do
' End If
sGetdata = sGetdata & CmmR.Input
Loop Until InStr(sGetdata, Chr(3)) > 0
你接收数据这里用了循环,什么时候从循环出来时不确定的...
在接收数据的循环里面,要是你对端口修改配置,关闭端口,是不是会出错?
如果在关闭的时候确定 是不是在接收数据的循环里面,不知道是不是就不会出现问题?
试试.
#1
很奇怪的是sGetdata这个我定义全程变量,不赋值为=""关闭程序就不会提示,请各位指教,急....谢谢
#2
似乎是sGetdata这个变量在执行退出代码时候就已经卸载了,看你的代码sGetdata这个变量没有再被使用,那就不需要代码清空
#3
能查到是哪句引起错误的吗?
#4
sGetdata变量在其它地方都没定义了,直接弹出的错误
#5
是不是你关闭的顺序不对..
比如你正在接收数据:
你接收数据这里用了循环,什么时候从循环出来时不确定的...
在接收数据的循环里面,要是你对端口修改配置,关闭端口,是不是会出错?
如果在关闭的时候确定 是不是在接收数据的循环里面,不知道是不是就不会出现问题?
试试.
比如你正在接收数据:
Do
DoEvents
t1 = Now
' If DateDiff("s", t1, Now) > 1 Then
' Exit Do
' End If
sGetdata = sGetdata & CmmR.Input
Loop Until InStr(sGetdata, Chr(3)) > 0
你接收数据这里用了循环,什么时候从循环出来时不确定的...
在接收数据的循环里面,要是你对端口修改配置,关闭端口,是不是会出错?
如果在关闭的时候确定 是不是在接收数据的循环里面,不知道是不是就不会出现问题?
试试.