The Open statement also supports special device names such as COM1 or LPT2. You can build on this feature and use the Open command to test whether a given serial or parallel port is available. Here are two functions that perform this task:
' Check whether a given COM serial port is availableFunction IsComPortAvailable(ByVal portNum As Integer) As Boolean Dim fnum As Integer On Error Resume Next fnum = FreeFile Open "COM" & CStr(portNum) For Binary Shared As #fnum If Err = 0 Then Close #fnum IsComPortAvailable = True End IfEnd Function' Check whether a given LPT parallel port is availableFunction IsLptPortAvailable(ByVal portNum As Integer) As Boolean Dim fnum As Integer On Error Resume Next fnum = FreeFile Open "LPT" & CStr(portNum) For Binary Shared As #fnum If Err = 0 Then Close #fnum IsLptPortAvailable = True End IfEnd Function
You can use the above function also for determining how many serial or parallel ports are installed, using a loop:
Dim count As Integer, i As IntegerFor i = 1 To 16 If IsComPortAvailable(i) Then count = count + 1NextMsgBox "Found " & count & " serial ports"