PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann nur einmal ComPort öffnen, dann Fehler



BlondyBoy
08.11.2004, 11:30:47
Hi

Ich habe noch ein Problem mit meiner Anwendung.


Und zwar:

Ich starte meine Dialogfeldbasierende Anwendung. Im Hauptdialog öffne ich eine zweiten Dialog. Mit diesem Dialog öffne ich den ComPort, Lese dann vom Port und schließe ihn wieder. Danach wird der Dialog auch gleich automatisch geschlossen und ich bin wieder im Hauptdialog. Wenn ich den zweiten Dialog jetzt erneut aufrufe und den ComPort dann wieder öffnen will bekomme ich eine Fehlermeldung. Aber keine vom System sondern eine von mir generierte.

Ich rufe CreateFile wie folgt auf und frage danach ab ob eine gültiges Handle auf den ComPort existiert. Und dort wird die Fehlermeldung aufgrerufen und die Funktion zum öffne und inistialisieren des ComPorts abgebrochen:


hFile_Read = CreateFile( // Handle auf den Com-Port beziehen und nötige
// PARAMeter übergeben!
lptstrPortName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);

if(hFile_Read==INVALID_HANDLE_VALUE)
// Sicherheitsabfrage ob öffnen des
// Ports erfolgreich wenn nicht dann
{
hFile_Read=0; // HANDLE auf den Port auf 0 setzten
g_csErrorText_Read = "Fehler!! COM Bezeichner falsch";
// Fehlertext deklarieren
AfxMessageBox(g_csErrorText_Read);
// Fehlertextausgabe
return 0; // gebe 0 zurück (Fehlercode)
}

Was kann ich falsch gemacht haben das es nur einemal ausführbar ist und danach nicht wieder?

Für meine Anwendung ist das wichtig da ich z.B. aus einem Gerät Daten auslesen will und dann das gleiche nochmal aus einem zweiten oder dritten Gerät.

MfG
BlondyBoy

Günni
08.11.2004, 13:29:52
Nur so ne Frage, aber schließt du das Handle auch wieder?


CloseHandle(...);

Da wenn bereits ein handle auf den Port existiert und du nochmals ein Handle darauf legen willst ist dies der Fall!!

hFile_Read==INVALID_HANDLE_VALUE)

Günni

BlondyBoy
08.11.2004, 14:17:43
Hi

Ok alles klar, hatte ich zwar gemacht, aber ich hatte mir da einen Fehler eingebaut den ich durch deinen Hinweis gefunden habe also danke. :claps:

Das funkt jetzt, freu. :D

MfG
BlondyBoy