Forum: PC-Programmierung Visual Studio C++ COM-Port testen


von Christian (Gast)


Lesenswert?

Hallo,
ich habe ein Programm geschrieben, über das ich ich mit COM-Ports
und virtuellen COM-Ports Bytes sende und empfange.
Aber nun passiert es doch mal, das ein Gerät nicht angeschlossen ist
oder ein falscher COM-Port ausgewählt wurde.
Dann kackt das ganze Programm ab.
Gibt es eine Möglichkeit den COM-Port vor dem öffnen zu prüfen.
Und wenn man z.B einen falschen ausgewählt hat, das dann eine 
Fehlermeldung
kommt und ned das ganze Programm abkackt?

von Peter II (Gast)


Lesenswert?

Christian schrieb:
> Dann kackt das ganze Programm ab.

Fehlerbehandlung ist das Stichwort. Wenn man einen Schnittstelle öffnet 
die nicht da ist, gibt es einen fehler und um diesem sollte man sich 
kümmern.

von Vlad T. (vlad_tepesch)


Lesenswert?

das man die falsche ausgewählt hat kriegt man aber nicht raus, es sei 
denn es gibt ein bekanntes Protokoll, mit dem ich das Gerät überprüfen 
kann. Wenn es aber die Falsche war, ist es auch schon zu spät, dann hab 
ich entweder Daten ins Nirvana gesendet, oder schlimmer, an ein anderes 
Gerät.

um zu schauen, welche Schnittstellen existieren, kannst du hier mal 
reinschauen:
Beitrag "PortableSerialLib - Portable Serial Port Library"

von F.W (Gast)


Lesenswert?

Arbeitest du mit C++ oder C++/CLI?

von Christian (Gast)


Lesenswert?

HI,
ich arbeite mit C++/CLI.

Ich muss also praktisch die Fehlermeldungen während der Laufzeit
auffangen und dann darauf reagieren ?

von Peter II (Gast)


Lesenswert?

Christian schrieb:
> Ich muss also praktisch die Fehlermeldungen während der Laufzeit
> auffangen und dann darauf reagieren ?

ja, wenn es cli ist dann kommt eine exception diese musst du mit try 
catch abfangen.

von Christian (Gast)


Lesenswert?

Habt ihr vielleicht ein paar Links mit Beispielen, wie man das anstellt?

von Holger74 (Gast)


Lesenswert?

1
    try
2
    {
3
     serialPort1->Open();
4
     .....
5
    }
6
    catch(TimeoutException ^e)
7
    { }
8
    catch(IO::IOException ^e)
9
    { }
10
    catch(UnauthorizedAccessException ^e)
11
    { }
12
    catch(InvalidOperationException ^e)
13
    { }
14
    catch(Exception ^e)
15
    { }

Hier sind die Ausnahmen aufgelistet:
http://msdn.microsoft.com/de-de/library/system.io.ports.serialport.open%28v=vs.80%29.aspx

Wenn Du noch nicht mit der Ausnahmebehandlung vertraut bist, solltest Du 
Dich unbedingt damit beschäftigen!

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.