Access denied bei Kommunikation über USB-Com_port



  • Moinmoin.

    Ich habe ein Programm erstellt, welches über eine serielle Schnittstelle Daten an einen Microcontroller sendet.

    Das ganze läuft auf einem Laptop und dementsprechend wird ein USB-Port als COM-Port benutzt (z.B.: "COM4").

    Ich benutze für die Konfiguration u.a. die Windows-Funktion CreateFileA

    CreateFileA( "COM4",
                        GENERIC_READ | GENERIC_WRITE,
                        0,    // must be opened with exclusive-access
                        0, // default security attributes
                        OPEN_EXISTING, // must use OPEN_EXISTING
                        0,    // not overlapped I/O
                        0  // hTemplate must be NULL for comm devices
                        );
    

    Diese wirft jedoch den Error 5 (soweit ich herausgefunden habe: Access denied) aus (überprüft mit GetLastError() ).

    Nun die Frage: Hängt das mit mangelnden Rechten zusammen oder kommt mein Programm mit der Funktion einfach nicht mit USB-COM-Ports zurecht?

    Gruß
    Patrick



  • Die Meldung ERROR_ACCESS_DENIED sagt aus, daß der Port schon anderweitig geöffnet wurde.
    (Indirekt bedeutet das auch, daß dieser COM-Port tatsächlich existiert)

    COM-Ports dürfen nur von einer Applikation zu gleichen Zeit geöffnet werden (im Gegensatz zu den normalen Dateien).

    HTH,
    Martin



  • Das wusste ich auch 😉

    Ich habe herausgefunden, dass ich anscheinend Adminrechte benötige um CreateFile auszuführen.
    Also: als Admin rein und schon liefs.



  • Interessant,

    das ist mir ganz neu.
    Das wäre mir das erste Mal, daß man Admin-Rechte benötigt um einen COM-Port öffnen zu können.

    Das liegt wohl am schlampigen Treiber oder an der schlampigen Treiber-Installation. (Das ist zumindestens mein erster Gedanke)

    Ich gehe davon aus, daß Dein PC ganz normale User-Rechte hat.

    Was für einen COM-Port verwendest Du?
    USB-to-RS232 Converter?
    Oder einen Microcontroller mit integrierter USB-Schnittstelle?

    Martin


Anmelden zum Antworten