Probleme serielle Schnittstelle mit CreateFile() zu öffnen
-
Hallo,
ich bin neu hier im Forum und habe auch erst vor kurzem mit dem Programmieren begonnen.
Als eines meiner ersten Programme wollte ich versuchen Daten von der seriellen Schnittstelle (COM1) zu lesen und zu schreiben. Hierfür habe ich auch einige Anleitungen gefunden wie ich das mit CreateFile() mache.
Allerdings bin ich langsam am Verzweifeln
, da ich damit keinen gültigen Handle erzeugen kann. Ich bekomme stets die Fehlermeldung "Zugriff verweigert".Die Zeilen Code sind folgende:
...
HANDLE hSerial;
...
hSerial = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,
NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hSerial == INVALID_HANDLE_VALUE){
if(GetLastError()==ERROR_FILE_NOT_FOUND){
g_print("serialport does not exist!\n");der Schnittstelle nicht
}
message(); //um Fehlercode in Text umzuwandeln
g_print(lastError); //Ausgabe des Fehlertextes
}
...
CloseHandle(hSerial);Ich bin als Admin angemeldet und ich habe auch keine anderen Programme laufen, die auf die Schnittstelle zugreifen, bzw. andere Programme können problemlos auf die Schnittstelle zugreifen und Daten senden/empfangen.
Im Internet und im Forum konnte ich keine Lösung finden.. ich hoffe Ihr wisst eine!
Vielen Dank schon mal.
Grüße
Sebastian
-
Ich empfehle Dir den folgenden Artikel zu lesen und dort angebotene Klasse zu verwenden: http://www.codeproject.com/KB/system/serial.aspx
-
Der Artikel auf den der Link von theta verweist ist ein Klassiker schlechthin.
Unabhängig davon:
-
Bist Du Dir sicher, daß "COM1" wirklich existiert? Mach einen kleinen Check, ob Du z.B. mit Hyperterminal diesen Port öffnen kannst.
-
Ersetze bitte in CreateFile() vorsorglich die Konstante FILE_ATTRIBUTE_NORMAL durch die Zahl 0.
-
Bekommst Du als Handle immer den Wert INVALID_HANDLE_VALUE zurück?
HTH,
Martin
-
-
Hmm scheint am Computer gelegen zu haben, konnte das Programm heut auf einem anderen Rechner ausprobieren und da ging es ohne Probleme...