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