Checking Com Ports

How do you check to see if a comm port is already in use ,and if so what application is using it.
cheers T
visualbasicAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

OTveitCommented:
I use the ScanCom sub to find available com ports on my machine:

'Table of free COM ports
Public nPortFree(0 To MAXPORTS - 1) As Integer

'Make table over available COM Ports
Public Sub ScanCom(ByRef comObj As MSComm)
    Dim i As Integer
    For i = 0 To MAXPORTS - 1
       If (bolOpenSer(comObj, i + 1, 9600, 0, 8, 1)) Then
            nPortFree(i) = True
            comObj.PortOpen = False
        Else
            nPortFree(i) = False
        End If
    Next i
End Sub

Public Function bolOpenSer(ByRef comObj As MSComm, _
                        ByVal lngPno As Long, _
                        ByVal lngBaud As Long, _
                        ByVal lngParity As Long, _
                        ByVal lngDataBits As Long, _
                        ByVal lngStopBits As Long) As Boolean
    'Set Error Handling
    On Error GoTo ErrorHandler
   
    ' Open the serial port
    comObj.CommPort = lngPno
    comObj.Settings = strNumbersToSettings(lngBaud, lngParity,lngDataBits, lngStopBits)
    comObj.PortOpen = True    
    bolOpenSer = True
   
Exit Function
ErrorHandler:
    bolOpenSer = False
End Function
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
VoodoomanCommented:
Hi OTVeit!

Interesting Answer!

I am working on a Comms Routine to Update an Access Database at a Remote Location and this is useful even if I didnt ask the question!!

Thanks!!

Voodooman!

P.S. If anybody is using Serial Comms - try Greenleaf CommX.OCX - excellent tool!

0
visualbasicAuthor Commented:
Hello OTveit
could you post the function strNumbersToSettings
Also is there a way of checking the number of ports before you check are they in use.
Regards T
0
OTveitCommented:
Here is the code for the funtion strNumbersToSettings (it's really simple).

To find the number of physical serial ports on your machine you could read the registry (use GetSetting, GetAllSettings):
\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM


'-----------------------------------------------------------------------------
' Function: strNumbersToSettings
' Description: Converts Port Settings to String
' Input:    1. Baud Rate
'               2. Parity
'               3. Data Bits
'               4. Stop Bits
' Returns: Port settings as string
'------------------------------------------------------------------------------
Private Function strNumbersToSettings(ByVal lngBaud As Long, _
                                        ByVal lngParity As Long, _
                                        ByVal lngDataBits As Long, _
                                        ByVal lngStopBits As Long) As String
   
    'Error handling
    On Error GoTo ErrorHandler
   
    'Set default value
    strNumbersToSettings = "Not defined"
   
    'Settings Value
    strNumbersToSettings = lngBaud & ","
    strNumbersToSettings = strNumbersToSettings & Switch(lngParity = 0, "N", lngParity = 1, "E", lngParity = 2, "O") & ","
    strNumbersToSettings = strNumbersToSettings & lngDataBits & ","
    strNumbersToSettings = strNumbersToSettings & lngStopBits
   
Exit Function
ErrorHandler:
    strNumbersToSettings = "Not defined"
End Function

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.