Thread mit einzelnen Funktionen
-
Hi,
ich habe ein kleines Programm geschrieben, welches mir auf Knopfdruck 5 Werte aus einem Datenlogger ausliest(mittels dll). Nun möchte ich dieses automatisieren, d.h. ich möchte den Button einmal drücken und einen Thread starten und den selben Button drücken um den Thread zu beenden. Der Thread soll dann permanent Werte auslesen und diese an das Dokument weitergeben werden, wo diese in ein Array geschrieben werden sollen und zusätzlich in einem Diagramm visualisiert werden.
Ich hab mir schon eine Menge Beiträge durchgelesen, jedoch bin ich noch zu keinem Lösungsansatz für den Thread bekommen.
Fragen:
1. Wo starte ich den Thread ?? (sicherlich in der Funktion, wo das Drücken des Buttons verarbeitet wird)
2. Wie übergebe ich Werte an die Dokumentenklasse aus einem Thread heraus??
3. Kann ich die Funktion zum Auslesen des Datenloggers ausserhalb des Threads ablaufen lassen, also das der Thread auf die bereits funktionierende Funktion zugreift und die dort ausgelesen Werte übernimmt?
Ansich bräuchte ich ein prinzipelles Schema oder ein Beispiel, wie man in einem Thread Werte in die Dokumentenklasse ablegt und sich diese in der ViewKlasse anzeigen lässt. Es müsste so ähnliche Beispiele für das Auslesen der Seriellen Schnittstelle geben, jedoch habe ich kein Quelltext gefunden.
Vielen Dank für Eure Hilfe...
Stefan
-
Wie schnell soll denn das sein?
Wenn es nicht sehr schnell sein soll, rate ich Dir zu "SetTimer" und die entsprechende Behandlung in OnTimer...Sonst musst Du wirklich ein Thread nehmen, dann hast Du aber massig Probleme zu lösen. Hauptsächlich die Synchronisation der Zugriffe auf gemeinsame Dinge (z.b. das Array).
Also:
- Thread starten: AfxBeginThread
- Kommunikation mit dem Dialog (WM_APP+x)
- Synchronisation: CCriticalSection
-
Danke für die ersten Infos.
Die Geschwindigkeit soll von der Auslesegeschwindigkeit meiner Messwerte abhängen. Ich bekomme eine Meldung von meinem Datenloggen, wenn alle Messwerte eingelesen wurden. Ist diese Meldung erfolgt, dann sollen die Werte ausserhalb des Threads verarbeitet werden. Ist die Verarbeitung fertig soll der Thread weiterarbeiten. An die Synchronisation hab ich zwar gedacht bzw. gelesen, aber nicht so recht verstanden. Ein bisschen Quelltext aus einem existirenden Projekt wäre vorteilhaft.Wie funktioniert denn die Kommunikation zu einer der Dokumentenklasse genau?
mfg
-
Hast du schon mal geschaut, ob dir das aus der FAQ hilft?
Gibt da eine eigene Kategorie für Threads.
-
ja ich hab schon fast alles gelesen, was mir die Suche angezeigt hat. Für mich als Anfänger ist es schwer, sich in dieses Thema reinzudenken ohne ein bisschen verständlichen Quelltext. Einen normalen Thread zu erzeugen ist ja nicht schwer, aber wie der Werte an eine extra Klasse übergibt hab ich noch nicht herausgefunden. Leider sind die meisten Beispiele für ne Dialoganwendung und nicht für SDI/MDI mit Doc/View.
-
wenn die daten eingelesen wurden , werden sie dann auch automatisch verarbeitet??
Timer ist einfacher und nicht so umständlich!!
BOOL OnTimer(..){ // 1. Daten lesen bis alle da sind // 2. Daten verarbeiten }
-
Ich hab es mit einem Thread gelöst. Danke für die Hilfe. Ich rufe aus meinem Thread die einzelnen Funktion auf. Es scheint so ganz gut zu funktionieren.
Thread closen...