Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <pre><code>Option Explicit '****************************************************************************** ' Description: Scans machine using the WIN32 API for all available comm hardware ' Usage: main program calls the 'CommSettings' sub, passing the ' name of the communications control and a combobox name. '****************************************************************************** Dim CommCntrl As Control ' the communications control Dim cmboPort As Control ' combobox to populate Dim bNoComm As Boolean Private Const MAX_COMM = 16 ' 32 max port # to check Private Const GENERIC_READ = &amp;H80000000 Private Const GENERIC_WRITE = &amp;H40000000 Private Const OPEN_EXISTING = 3 Private Const FILE_FLAG_OVERLAPPED = &amp;H40000000 Private Const INVALID_HANDLE_VALUE = -1 Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _ (ByVal lpFileName As String, _ ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, _ ByVal lpSecurityAttributes As String, _ ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As String) As Long Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long) As Long Public Sub GetPorts(serialCntrl As Control, comboBox As Control) '****************************************************************************** ' Usage: Pass the name of the communications control, a combo box, and the ' current com port setting in the calling routine. '****************************************************************************** Dim iCntr As Integer ' loop counter Dim hRet As Long ' api return value Dim sCom As String ' comm port name On Error Resume Next Set cmboPort = comboBox Set CommCntrl = serialCntrl Err = 0 cmboPort.Clear ' Close the port if it's open If CommCntrl.PortOpen = True Then CommCntrl.PortOpen = False DoEvents Else bNoComm = True End If ' Scan for all possible hardware so we can display all available ports ' in the combo box. Dynamically adjusts for PC's with addin cards For iCntr = 1 To MAX_COMM ' try to open the port. ' \\.\ required for ports &gt; 9, works for all ports sCom = "\\.\Com" &amp; CStr(iCntr) &amp; vbNullChar hRet = CreateFile(sCom, GENERIC_READ Or _ GENERIC_WRITE, 0, vbNullString, OPEN_EXISTING, _ FILE_FLAG_OVERLAPPED, vbNullString) If hRet &lt;&gt; INVALID_HANDLE_VALUE Then hRet = CloseHandle(hRet) cmboPort.AddItem Format$(iCntr) Debug.Print iCntr Else ' dll error 5 = already open ' dll error 2 = no harware If Err.LastDllError = 5 Then cmboPort.AddItem Format$(iCntr) &amp; " - Busy" End If End If Next End Sub </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload