Wie Bezeichnung von COM auslesen?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Wie Bezeichnung von COM auslesen?

    Hallo,

    ich hole mit

    VB.NET-Quellcode

    1. System.IO.Ports.SerialPort.GetPortNames()

    alle verfügbaren COM-Schnittstellen, allerdings kommt da nur sowas wie "COM1", "COM5".
    Wie komme ich an die ausführlichen Bezeichnungen der Schnittstellen?

    Danke.

    LG
    Das sind genau die Namen, die Du bei Open() verwenden musst.
    Definiere

    sonne75 schrieb:

    ausführliche Bezeichnungen der Schnittstellen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Auslesen diverser Properties über Systemsteuerung war vor kurzem hier, das geht aber alles über WMI und String-Abfragen, da musst Du die richtigen Fragen stellen, um eine Antwort zu bekommen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke! Welche Funktion muss ich denn aufrufen mit diesem String?

    Ich habe sowas gefunden:

    VB.NET-Quellcode

    1. Dim mObjects As New ManagementObjectSearcher( _
    2. "\\" & sComputer & "\root\cimv2", _
    3. "SELECT * FROM Win32_OperatingSystem")


    Ist es die richtige Funktion, nur mit dem anderen Aufruf? Aber was sind dann die anderen Parameter?

    Bin gerade am Googeln, aber Beispiel habe ich bisher noch keins gefunden.

    EDIT: Habe jetzt sowas gefunden:

    VB.NET-Quellcode

    1. Dim oWMI, Instances, Instance
    2. 'Get base WMI object, "." means computer name (local)
    3. Set oWMI = GetObject("WINMGMTS:\\.\ROOT\cimv2")
    4. 'Get instances of CIM_SerialController
    5. Set Instances = oWMI.InstancesOf("CIM_SerialController")
    6. 'Enumerate instances
    7. For Each Instance In Instances
    8. 'Do something with the instance
    9. Wscript.Echo Instance.Capabilities 'or other property name
    10. Next 'Instance


    Ist der Weg richtig?

    EDIT:
    habe mit dem letzten Code (greife auf "Instance.Caption" zu) leider nur die COM1 bekommen, bei SerialPort.GetNames() kriege ich COM1 und COM5 raus...

    EDIT2:
    ManagementObjectSearcher gibt es leider nicht (auch nach dem Import)

    EDIT3:
    Ich musste einen Verweis auf System.Management hinzufügen, dann ging es.
    Mit folgendem Code bekomme ich auch Bezeichnungen, leider auch nur für COM1.

    VB.NET-Quellcode

    1. Dim mObjects As New ManagementObjectSearcher( _
    2. "\root\cimv2", _
    3. "SELECT * from CIM_SerialController")
    4. For Each obj In mObjects.Get()
    5. cbComName.Items.Add(obj("Caption"))
    6. Next


    Woran kann es liegen, dass er keine COM5 hier findet?

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „sonne75“ ()

    Also, der Unterschied von COM5 zu COM1 ist es, dass COM5 eine virtuelle Schnittstelle von USB ist. Aber im Bild von Manawyrm sieht man auch eine virtuelle COM (COM7), und die wird aufgelistet...

    GetNames() hat beide, CIM_SerialController nur eine... :?:
    So, habe jetzt WMIExplorer runtergeladen, er findet auch nur COM1.
    Im Gerätemanager stehen beide und SerialPort.GetNames() liefert auch beide...

    EDIT: Ich habe jetzt noch COM6 (auch vom USB) bekommen, die erscheint auch im WMIExplorer nicht, sonst schon.

    Allerdings bekomme ich von "GetNames()" eine seltsame Sortierung: COM1, COM6, COM5. Wie sortiere ich sie jetzt am einfachsten?

    EDIT2: Sortieren ging einfach mit Array.Sort(Names)

    EDIT3: Habe im WMIExplorer meine USB-Ports gefunden, sie sind unter CIM_USBDevice aufgeführt, leider taucht da keine Bezeichnung der COM-Schnittstelle, unter der sie dann funktionieren. :(

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „sonne75“ ()