如何自動偵測可使用的 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
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. 這是我突然想到的方式,若有更好的方式,麻煩留個言交流一下^^