Hallo
Ich sitze grade vor dem Problem, das ich 2 Sachen möglichst simultan machen muss, es aber nicht mit Rendezvous geht, bzw ich nicht weiß wie.
Das Problem sieht wie folgt aus:
Ich habe im eigendlichen Sinne 2 while-Schleifen in der einen ist eine Protokollinterpretierung und in der anderen Messwerterfassung. Jetz sieht das ungefähr so aus:
Jeder abgerundete Kasten steht für eine while-Schleife (sind eigendlich mehr)
Die Drähte und Punkte sollen veranschaulichen das jeder mit jedem untereinander irgendwie kommuniziert.
Wie man sieht ist halt unten nur die Messung .. die läuft immer gleich ab. Oben ist das Protokoll das ausgewertet wird, je nach Eingaben. Diese bekomme ich über die Serielle Schnittstelle, das ist jedoch an der Stelle nicht wichtig.
Wie es wohl ersichtlich ist, läuft die Messung immer im gleich rythmus bei gleichem Takt(in etwa)
Jetzt ist die Sache, das im Protokoll er sich in der einen, oder der anderen while-Schleife mal kürzer mal länger aufhällt.
Die kommunikation zwischen den beiden Hauptschleifen bekomme ich mit Variablen hin. Eine Möglichkeit wäre, das ich es so realisiere:
Das ist sehr sehr simpel:)aber hat es auch den Effekt den ich brauche?
Ist die Zeit für die untere Schleife einmal gestellt muss ich mir sicher sein, das es auch funktioniert, wenn ich 10s einstelle brauche ich auch wirklich alle 10s einen Messwert. Darin sind Toleranzen mess - Karten berücksichtigt.
Die eigendliche Frage ist also wenn ich bei der oberen Schleife mal für einen Durchlauf 0,2s oder auch 100s brauche, ist dann trotzdem gesichert das die untere in dem eingestellten Intervall die Messungen ausführt, ohne dass die obere Schleife das beeinflusst.
Ich hab zuerst gedacht ich könnte es über Multithreading lösen.. jedoch hab ich keine 2 Kerne / CPUs -.-
Ich hoffe ich habs nicht zu kompliziert ausgedrückt.^^
Thomas