下面是我的一个通信程序,在通信中遇到一个问题:有时系统报错(8005),端口已打开,各位帮我看看
发送程序
Private Sub send_Click()
Dim tt
Dim TxBuffer(5) As Byte
MSComm1.PortOpen = True '系统运行到此,经常报错,(8005),端口已开,重起无效,
MSComm1.RTSEnable = True
tt = Timer
Do
DoEvents
Loop Until Timer - tt > 0.002
TxBuffer(0) = &HEB
TxBuffer(1) = &H90
TxBuffer(2) = &H1
TxBuffer(3) = &H55
TxBuffer(4) = &HEC
TxBuffer(5) = &H91
MSComm1.OutBufferCount = 0 ' 清输出缓冲区
MSComm1.Output = TxBuffer '发送数据
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
tt = Timer
Do
DoEvents
Loop Until Timer - tt > 0.008
MSComm1.RTSEnable = False
'MSComm1.PortOpen = False
end sub
发送程序
Private Sub send_Click()
Dim tt
Dim TxBuffer(5) As Byte
MSComm1.PortOpen = True '系统运行到此,经常报错,(8005),端口已开,重起无效,
MSComm1.RTSEnable = True
tt = Timer
Do
DoEvents
Loop Until Timer - tt > 0.002
TxBuffer(0) = &HEB
TxBuffer(1) = &H90
TxBuffer(2) = &H1
TxBuffer(3) = &H55
TxBuffer(4) = &HEC
TxBuffer(5) = &H91
MSComm1.OutBufferCount = 0 ' 清输出缓冲区
MSComm1.Output = TxBuffer '发送数据
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
tt = Timer
Do
DoEvents
Loop Until Timer - tt > 0.008
MSComm1.RTSEnable = False
'MSComm1.PortOpen = False
end sub
对于端口的操作一定要有错误处理。在错误处理里面取消端口占用。 更好的做法是把对端口的调用封装到一个类里。把取消端口占用放在terminate事件中。这样可以极大地减小出错机率。
我是一位初学者,你能不能给我一个实例
[email protected]