Forum: PC-Programmierung serial Port schließen nach Fehler


von Denglmann (Gast)


Lesenswert?

Hallo Leute!

Ich bin gerade dabei ein Programm in Visual Studio 2008 (C++) zu 
schreiben, welches mit einem uC über den Com-Port kommuniziert.
Der Com-Port wird hierbei über einen FT232 simuliert. Es handelt sich 
also (eigentlich) um eine Kommunikation per USB.

Mein Ziel ist es nun, wenn ich das Gerät austecke, dass meine Software 
dies erkennt und nicht Abstürzt. Das hab ich soweit schon geschafft, in 
dem ich mittels "UnauthorizedAccessException" den Fehler beim Lesen oder 
schreiben vom Com-Port abfange.(Der Port ist ja dann nicht mehr 
vorhanden)
Wenn ich das Kabel allerdings wieder einstecke und der Com-Port somit im 
System wieder verfügbar ist, ist keine Kommunikation mehr möglich. 
serialPort1->Open() oder serialPort1->Close() füren beide zu Abstürzen 
mit der Ansage, dass der Port nicht verfügbar ist. Das heißt wohl: Der 
Port ist zwar noch offen, aber ich komme nicht mehr dran.
Meine Ziel wäre es:
Wenn ich da Kabel ausstecke öffnet ein Fenster mit "Device entfernt, 
bitte wieder einstecken!" und wenn das gemacht wird, soll die 
Kommunikation wieder wei gehabt weiter gehn.
Ich habe gelesen, dass man wohl mit Dispose den serial Port entfernen 
kann, aber leider klappt das bei mir nicht:
serialPORT1->Dispose() führt zu:
error C2039: 'Dispose' : is not a member of 
'System::IO::Ports::SerialPort'


Könnt ihr mir da auf die Sprünge helfen? Bin leider kein erfahrener 
VS-Nutzer!

Vielen Dank!!
Grüße, Denglmann

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Denglmann schrieb:
> Könnt ihr mir da auf die Sprünge helfen? Bin leider
> kein erfahrener VS-Nutzer!
Weder Erfahrene noch unerfahrene sollten sich des Try-and-Error 
Programming verschreiben.
Wie kommst du darauf das Dispose existiert? Steht das in der Doku?

Der Compiler sagt dir zumindestens, dass er soetwas wie Dispose() nicht 
finden kann...

Ansosnten würde ich vermuten das du in jedem Fall ein neues SerialPort 
Objekt erzeugen müsstest.

von jonas biensack (Gast)


Lesenswert?

Moin,

also ich kenne das ganze mit VS2010 in C#. Ich öffne einen Port nachdem 
ich gecheckt habe ob das Objekt SerialPort1 exestiert und der Port nicht 
schon offen ist. Ich schließe den Port ebenfalls nachdem ich gecheckt 
habe ob das Objekt SerialPort1 exestiert und der Port nicht schon 
geschlossen ist. Das ganze in einen Try and -Catch Block und die bist 
schon mal auf der sicheren Seite... Diesen Still solltest du dir 
angewöhnen - kommt immer gut!

Gruß jonas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.