Private Sub Form_Load()
If MSComm1.PortOpen = True Then
MSComm1.InBufferCount = 0
MSComm1.PortOpen = False
End If
End SubPrivate Sub Timer1_Timer()
Timer1.Interval = 0
MSComm1.InputLen = 1
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End SubTimer1的Interval属性我设置的是1
以上代码我在本机上调试通过了的
但只要一移植到另一台电脑上,执行到MSComm1.PortOpen = True这一行时就会出错,提示是"实时错误,端口已打开",错误号没注意记~请教一下该怎么解决?
If MSComm1.PortOpen = True Then
MSComm1.InBufferCount = 0
MSComm1.PortOpen = False
End If
End SubPrivate Sub Timer1_Timer()
Timer1.Interval = 0
MSComm1.InputLen = 1
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End SubTimer1的Interval属性我设置的是1
以上代码我在本机上调试通过了的
但只要一移植到另一台电脑上,执行到MSComm1.PortOpen = True这一行时就会出错,提示是"实时错误,端口已打开",错误号没注意记~请教一下该怎么解决?
在Form_load里加一句试试
MSComm1.CommPort = 1 '设置或返回端口号
最好把串口配置好,例如 '设置串口属性, 打开串口 MSComm1.CommPort = 1 '设置或返回端口号
MSComm1.InBufferSize = 1024 '设置接收缓冲区的大小
MSComm1.Settings = "115200,n,8,1" '设置并返回通讯参数,值为字符串String行
'MSComm1.Settings = BaudRate & ",n,8,1"
MSComm1.InputLen = 0 '设置或返回,从接收缓冲区读取的字符数,0时(默认),读取缓冲区全部字符
MSComm1.RThreshold = 1 '接收区的“门阀值”,0时(默认),不产生OnComm事件;1时,接收缓冲区每接收到一个字符,都会产生OnComm事件
MSComm1.SThreshold = 1 '发送区的“门阀值”,0时(默认),不产生OnComm事件;1时,发送缓冲区每接收到一个字符,都会产生OnComm事件
MSComm1.InBufferCount = 0
MSComm1.InputMode = comInputModeText '以文本方式取回传入的数据,既comInputModeText = 0
MSComm1.PortOpen = True '打开串口
Option Explicit
Dim a As Integer
Dim openFlag As BooleanPrivate Sub cmdOpen_Click() '打开关闭端口
If openFlag Then
cmdOpen.Caption = "打开串口"
MSComm1.PortOpen = False '打开端口
Shape1.FillColor = vbRed
Label1 = "COM" & a & "关闭"
Else
OpenPortNum
cmdOpen.Caption = "关闭串口"
Shape1.FillColor = vbGreen
Label1 = "COM" & a & "打开"
End If
openFlag = Not openFlag
End SubPrivate Sub OpenPortNum()
On Error GoTo uerror
For a = 1 To 16
MSComm1.CommPort = a
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
'Print "可用Com号= "; a
Exit Sub
Else
End If
Next
Exit Sub
uerror:
'Print "出错或占用Com号= "; a
Resume Next
End SubPrivate Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.RThreshold = 1 '产生MSComm事件
MSComm1.InBufferSize = 1024
Call cmdOpen_Click
End Sub
在VB菜单 "工程"->"部件"中,选择 Microsoft Comm Control 6.0 即可。
在BAIDU的问帖http://zhidao.baidu.com/question/62765401.html
你已经说找到原因了:
COM口硬件没坏,是COM口的外设上出的问题.谢谢!
建议结贴了,不要冷落CSDN论坛的众多热心人.
Timer1.Interval = 0
MSComm1.InputLen = 1
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub 据我了解timer控件的中断太厉害了!