Получить модем COM-порт - PullRequest
       16

Получить модем COM-порт

0 голосов
/ 17 сентября 2018

Это мой код для получения COM-порта USB-модема

Public Sub GetModemCommPort()
   Dim MSComm1     As Object
   Dim lngCommPort As Long
   Dim strInput    As String

   Set MSComm1 = ThisWorkbook.Sheets("Sheet1").MSComm1

   On Error Resume Next
   With MSComm1
       .RThreshold = 0

       For lngCommPort = 1 To 12
           CloseCommPort
           .CommPort = lngCommPort
           .PortOpen = True

           If Err.Number = 0 Then
               .Output = "AT" & vbCrLf

               Do
                   DoEvents

                   If .InBufferCount > 0 Then
                       strInput = strInput & .Input

                       If InStr(1, strInput, "OK") > 0 Then
                           MsgBox "Modem Found: COM" & lngCommPort
                           Exit For
                       End If
                   Else
                       Exit Do
                   End If
               Loop
           Else
               Err.Clear
           End If
       Next lngCommPort

       CloseCommPort
       .RThreshold = 1
   End With

   Set MSComm1 = Nothing
End Sub

Public Sub CloseCommPort()
   Dim MSComm1 As Object

   Set MSComm1 = ThisWorkbook.Sheets("Sheet1").MSComm1

   With MSComm1
       If .PortOpen Then
           .PortOpen = False
       End If
   End With

   Set MSComm1 = Nothing
End Sub

Когда я запускаю этот код, он успешно выполняется один раз каждые 4 или 5 раз, когда я запускаю цикл с 1.

когда я зацикливаюсь, начиная с 8 (это модемный коммуникационный порт, который я уже знаю), он успешно выполняется каждый раз, когда я запускаю его без каких-либо проблем.

Успешное выполнение (даже один раз каждые X) означает, что нет проблем с самим кодом .. так что я делаю неправильно ??!

Заранее спасибо.

...