com Schnittstelle prüfen

  • VB6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    com Schnittstelle prüfen

    Ich verwende einen usb / Seriell Adapter, wo ich ein Gerät (Datenlogger) angeschlossen habe.

    Da es vorkommt, dass beim Anschließen des Adapters inkl. Gerät sich irgendeinen freie Com-Nummer nimmt, möchte ich mit VB6 dies herausfinden, welche Com-Schnittstelle das Gerät benutzt.

    Wie kann ich dies mit vb6 realisieren.

    Vielen Dank für jede Antwort
    Hier Ausschnitte aus einem meiner Projekte (Stopuhr), welches alle Ports nach dem Atmega "abklappert"
    Ich habe es mal schnell ein wenig kommentiert. Überflüssiges muss natürlich entfernt werden.

    Visual Basic-Quellcode

    1. Private Sub PortAuf()
    2. Dim X As Integer
    3. If MSComm1.PortOpen Then MSComm1.PortOpen = False 'Wenn Port offen, dann schließen
    4. With MSComm1 'Einstellungen
    5. .Settings = "19200,n,8,1"
    6. .InBufferSize = 256
    7. .DTREnable = False
    8. .RTSEnable = False
    9. End With
    10. On Error Resume Next
    11. For X = 1 To 16 'alle 16 Ports durchgehen
    12. Err.Clear 'evtl Fehler löschen
    13. MSComm1.CommPort = X
    14. MSComm1.PortOpen = True 'Port öffnen
    15. If Err.Number = 0 Then 'Wenn Port geöffnet werden konnte, prüfen, ob sich die Stopuhr daran befindet
    16. If isStoppuhr Then
    17. SBar.Panels(2).Text = "Stopuhr an COM" & X 'Statusbarmeldung anzeigen
    18. For i = 0 To 3 'Buttons zum schließen, Uhrstarten usw aktivieren (müssen natürlich vorhanden sein)
    19. Command1(i).Enabled = True
    20. Next i
    21. MSComm1.Output = "160" 'Kommando an die Stoppuhr senden, damit sie weiß, dass der PC da ist
    22. log_Oeffnen 'Log datei Öffnen, wenn es diese Sub nicht gibt, dann natürlich alles dazu entfernen
    23. mnuVerbindung.Caption = "Trennen" 'Menü umbenennen von Verbinden in Trennen(Muss es natürlich geben)
    24. mnuSpezial.Enabled = True 'Weitere Menüs aktivieren
    25. tmrEmpfang.Enabled = True 'Timer zum Empfangsbuffer auslesen aktivieren (sollte vorhanden sein)
    26. On Error GoTo 0 '
    27. Exit Sub
    28. End If
    29. End If
    30. MSComm1.PortOpen = False
    31. Next X
    32. SBar.Panels(2).Text = "Stopuhr nicht gefunden"
    33. On Error GoTo 0
    34. End Sub
    35. Private Function isStoppuhr() As Boolean
    36. Dim lzeit As Long
    37. Dim s As String
    38. MSComm1.Output = "0" '0 an Stopuhr senden(Der Atmega sendet darauf sein Programmname und Version)
    39. lzeit = GetTickCount + 750 'Uhr hat 3/4 Sekunde Zeit zum antworten 'Gettickcount api muss eingebunden werden
    40. Do While GetTickCount < lzeit
    41. Loop
    42. If MSComm1.InBufferCount > 0 Then 'Wenn Empfangsbuffer nicht leer
    43. s = MSComm1.Input 'diesen einlesen
    44. If Left$(s, 7) = "Stopuhr" Then 'Und auf Startmeldung prüfen
    45. isStoppuhr = True
    46. End If
    47. End If
    48. End Function
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Vielen Dank für die Antwort.

    Der Code funktioniert auch, nur was mir da noch fehlt bzw. nicht verstehe ist, wie ich herausfinden kann, dass am offenen Com-Port es sich um mein Gerät (Datenlogger) handelt, da es ja vorkommen kann, dass mehrere Geräte an verschiedenen Com Ports angeschlossen sind.

    Ich konnte da leider keinen passenden Parameter finden.

    Hoffe da kann mir nochmals jemand weiterhelfen.

    Vielen Dank