mikrocontroller.net

Forum: PC-Programmierung RS232 WorkerThread


Autor: moogli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Linux oder Windows?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: moogli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Windwos

Autor: Blackbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"... WorkerThread sollte regelmässig die Daten bei der Schnittstelle 
abholen ..."

Pollen?

Eventgesteuert:
static OVERLAPPED o;
DWORD dwEvtMask = 0;  // Maske, in die WaitCommEvent aktuelle Werte schreibt
DWORD dwEvtMaskIn = EV_BREAK| EV_RXCHAR | ...
SetCommMask (hCom, dwEvtMaskIn);
o.hEvent = CreateEvent (NULL, FALSE, FALSE, NULL);
// in while schleife:
  WaitCommEvent (hCom, &dwEvtMask, &o);   // EventMask "scharf machen"
  // kommt der Event, ist auch die dwEvtMask geladen und es kann weitergehen
  if (WAIT_OBJECT_0 == WaitForSingleObject (o.hEvent, INFINITE)) // warten bis Event
{}// Event verarbeiten

So könnte es in WinAPI aussehen.

Blackbird

Autor: moogli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du noch nicht mal geschrieben hast, welche Programmiersprache und 
welche Entwicklungsumgebung du verwendest.....keine Ahnung.

Autor: moogli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: moogli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und es ist eine MFC-Anwendung.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.