Option Explicit Dim a As Integer Dim blnAutoSendFlag As Boolean Dim openFlag As BooleanPrivate 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 Shape1.FillStyle = 0 OpenPortNum 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 For 'MSComm1.PortOpen = False End If Next Exit Sub uerror: Print "出错或占用Com号= "; a Resume Next End Sub
Private Sub OpenPortNum() On Error GoTo uerror For a = 6 To 16 MSComm1.CommPort = a MSComm1.PortOpen = True If MSComm1.PortOpen = True Then Print "可用Com号= "; a Exit For 'MSComm1.PortOpen = False End If Next Exit Sub uerror: Print "出错或占用Com号= "; a Resume Next End Sub
Dim a As Integer
Dim blnAutoSendFlag As Boolean
Dim openFlag As BooleanPrivate 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
Shape1.FillStyle = 0
OpenPortNum
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 For
'MSComm1.PortOpen = False
End If
Next
Exit Sub
uerror:
Print "出错或占用Com号= "; a
Resume Next
End Sub
楼上能否进一步的改改 ,因为我的电脑上有COM3 ,COM5这两个是蓝牙通信端口,真正的端口是COM6与COM7是串口,我该怎么避免。
我用楼上的程序调试后,打开的是Com3口,不是我需要的,我该怎么办?
On Error GoTo uerror
For a = 6 To 16
MSComm1.CommPort = a
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Print "可用Com号= "; a
Exit For
'MSComm1.PortOpen = False
End If
Next
Exit Sub
uerror:
Print "出错或占用Com号= "; a
Resume Next
End Sub
但是不能判断是否是串口(com口).
判断这个具体是否是串口(com口) 用vb的com控件 我的方法是发命令,根据命令回码来判断。就好像猫口发命令与收命令是一致的这类情况。假如还是不行 可以试试api 具体查资料才知道行不行
http://download.csdn.net/source/1339593
CreateFile返回0,表示串口在工作。反之返回1