如何自動偵測可使用的 COM Port

之前在 RF 部門接觸通訊程式,看到廠商寄來的 Demo 程式會發現....
為什麼在 COM Port 的下拉式方塊內,都會打上 COM1 ~ COM10
每當測試一次,或換電腦,就要開始找 COM Port,蠻累人的。
所以我就想了這個簡單的程式,作法如下:

程式版本:Visual Basic 6.0
需要物件:MSCOMM 物件

引用項目:

先到 "專案" → "設定使用元件" → 勾選 "Microsoft Comm Control 6.0"。

物件名稱:
將 MSComm1 命名成 mc

函式程式:
Private Sub SearchPort(ByVal StartPortNumber As Integer, _
ByVal ReallyPortNumber As Integer, _
ByVal EndPortNumber As Integer)

On Error GoTo Err_SearchPort:

mc.CommPort = StartPortNumber
mc.PortOpen = True

Err_SearchPort:

'判斷是否發生錯誤
If Err.Number = 0 Then
'若沒發生錯誤,則 Port 開啟正常 ( 代表 RS-232 Port 可用 )
cboPort.AddItem "COM" & StartPortNumber
cboPort.ItemData(ReallyPortNumber) = StartPortNumber

'開啟成功後,要記得關掉....
mc.PortOpen = False

ReallyPortNumber = ReallyPortNumber + 1
End If

'當尋找 Port 大於 EndPortNumber 時離開此函式
If StartPortNumber >= EndPortNumber Then Exit Sub

'遞回
SearchPort StartPortNumber + 1, ReallyPortNumber, EndPortNumber
End Sub

使用方式:
SearchPort 1, 0, 10 '尋找 COM Port 1~10

PS. 這是我突然想到的方式,若有更好的方式,麻煩留個言交流一下^^