Fragen zur seriellen Kommunikation mit C++ Win32

Gast #2549095
Lesenswert?

Guten Abend,

ich möchte eine Win32 Applikation in C++ schreiben. Zunächst sollen alle 
benötigten Funktionen in einer Klasse definiert und deklariert sein.
In dieser Klasse soll auch ein eigener Thread für die serielle 
Kommunikation aufgesetzt bzw. gestartet werden. In diesem Thread soll 
dann wenn Daten von außen ankommen mit Hilfe eines Event reagiert und 
dann die Daten in einen Puffer abgelegt werden. Beim Senden soll es auch 
über einen Event realisiert werden. Welche Methoden sind dafür 
notwendig, damit man auf einen Event von der seriellen Schnittstelle 
reagieren kann ?

Vielen Dank im Voraus für jegliche Hilfestellung.
Persönliche Seite #2549139
Lesenswert?

Meinst Du mit C++ jetzt C++ oder die Microsoft-Perversion namens 
"C++/CLI", die das .Net-Geraffel nutzt?

In ersterem Falle: Sieh Dir die Win32-API an, die für die Kommunikation 
mit seriellen Schnittstellen zu nutzen ist. Das wurde hier schon ad 
nauseam mit etlichen Beispielen diskutiert, die Du mit der Forensuche 
auch leicht finden können solltest.

Das Warten auf ein Event kann z.B. mit den Win32-API-Funktionen 
WaitForSingleObject oder WaitForMultipleObjects erfolgen. Letzteres ist 
zu bevorzugen, weil da auch zusätzliche Events genutzt werden können, 
die z.B. zum sauberen Beenden Deines Threads genutzt werden können.
Persönliche Seite #2549407
Lesenswert?

Wenn Du eine Schnittstelle mit einer zweistelligen Nummer ansprechen 
wikkst, musst Du eine etwas andere Syntax für den Dateinamen verwenden, 
also nicht
1
hFile = CreateFile("COM10", etc. pp);

sondern
1
hFile = CreateFile("\\\\.\\COM10", etc. pp);

Diese Syntax kannst Du auch bei COM1-9 verwenden.

Das steht auch so in der Dokumentation von CreateFile beschrieben.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx
(dort nach "Communication Resources" suchen, etwa in der Mitte der Seite 
zu finden)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren