hi all Ich möchte eine RS232-Kommunikation mit einem Thread realisieren, der WorkerThread sollte regelmässig die Daten bei der Schnittstelle abholen und in einen Buffer speichern. Hat jemand schon ein ähnliches Programm geschrieben oder kennt einen guten Link, ja ich hab schon gegooglet ;) thanks
Für VC++ nehme ich das hier: http://www.codeguru.com/Cpp/I-N/network/serialcommunications/article.php/c2483
"... WorkerThread sollte regelmässig die Daten bei der Schnittstelle abholen ..." Pollen? Eventgesteuert:
1 | static OVERLAPPED o; |
2 | DWORD dwEvtMask = 0; // Maske, in die WaitCommEvent aktuelle Werte schreibt |
3 | DWORD dwEvtMaskIn = EV_BREAK| EV_RXCHAR | ... |
4 | SetCommMask (hCom, dwEvtMaskIn); |
5 | o.hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); |
6 | // in while schleife:
|
7 | WaitCommEvent (hCom, &dwEvtMask, &o); // EventMask "scharf machen" |
8 | // kommt der Event, ist auch die dwEvtMask geladen und es kann weitergehen
|
9 | if (WAIT_OBJECT_0 == WaitForSingleObject (o.hEvent, INFINITE)) // warten bis Event |
10 | {}// Event verarbeiten |
So könnte es in WinAPI aussehen. Blackbird
Danke für eure super Hilfe! ich werde die CSerialPort Klasse die mir supachris empfohlen hat verwenden, allerdings bin ich mir nicht ganz im sicher wo ich sie aufrufen soll. Im MainFrame, in der View oder in der Documents wie würdet ihrs anstellen? Danke
Da du noch nicht mal geschrieben hast, welche Programmiersprache und welche Entwicklungsumgebung du verwendest.....keine Ahnung.
Sorry hab gedacht es sei klar, als ich geschrieben habe, dass ich mit dem Programm arbeite, das du mir vorgeschlagen hast. Also ich verwende VS++ 6.0.
Wie wäre es mit einer Steuerung über Windows-Messages? Das hier http://www.codeproject.com/KB/system/serial.aspx ist eine universelle Library für sowas. Ich hab die Variante mit den Windows Messages benutzt und fand die ganz ok. Aber wie Du das machen willst, bleicht Dir überlassen.
Für Visual Studio 6 und MFC kannst du das Beispiel doch direkt übernehmen. Da ist doch sogar ein Beispielprojekt dabei. Das schickt nach jedem empfangenen Byte eine Windows-Message an deine Dialogbox. Das Window-Handle gibtst du ja bei der Initialisierung der SerialPort Klasse an, da kannste das an ein beliebiges Fenster schicken lassen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.