Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Ich habe ein Problem mit dem Schreiben von Werten in eine Queue innerhalb einer While-Schleife und dem sehr schnellen Auslesen eben dieser Werte durch eine andere While Schleife. Es kommt dabei zu "Unterbrechungen", bzw. dem scheinbaren einlesen von Nullen (siehe Bilde im Anhang).
Ich lasse in meiner Anwendung zwei While-Schleifen parallel laufen. Eine Auslese-Schleife liest Werte aus einem Gerät aus und die andere Auswerte-Schleife ist für die Auswertung.
Daten der Auslese-Schleife sende ich mit einer Queue-Funktion zur Auswerte-Schleife. Es wird jeweils immer nur eine einzige Zahl pro Schleifendurchlauf übermittelt!
Mein Problem ist nun, dass je nachdem wie schnell ich die Auswerteschleife die Daten der Ausleseschleife abruft, es scheinbar zu "Unterbrechungen" der übertragenen Werte kommt.... es wird also immer mal wieder eine Null eingelesen, obwohl da keine Null ist.
Im Anhang habe ich drei Bilder angehängt welche durch eine Waveform-Chart dargestellt wurden. Angezeigt wird der durch die Queue-Funktion übertragene und von der Auswerte-Schleife abgerufene Wert über der Zeit:
1. Langsamer Auslesevorgang mit 50ms zwischen den Auslesevorgängen -> so sollte das aussehen !!!
2. Schneller Auslesevorgang mit 20ms zwischen den Auslesevorgängen -> man sieht schon ein paar "Einbrüche" bei denen scheinbar eine Null eingelesen wird !!!
3. Sehr schneller Auslesevorgang mit 10ms zwischen den Auslesevorgängen -> Es treten quasi ständig "Einbrüche" auf !!!
Man sieht also deutlich die Einbrüche je schneller ich die Werte aus der Auslese-Schleife abrufe. Die Auslese-Schleife schreibt ca. alle 15ms einen neuen Wert in die Queue-Funktion. Die Anzahl der Werte pro Queue ist auf nur einen Wert begrenzt.
Umgeghen kan nich das Problem durch das setzen eines hohen Time-Outs, allerdings ist das eine eher Suboptimale Option für mich, da wenn kein neuer Wert vorhanden ist, eben der alte Werte eingelesen wird.
Ich denke mal, dass das Problem folgendes ist:
Wenn die Auslese-Schleife im Begriff ist einen neuen Wert in die Queue zu schreiben und in dem selben Moment die Auswerte-Schleife einen Wert abrufen möchte, kommt es zu diesem "Einburch", bzw. dem einlesen einer Null??? !!!
Kann das sein?
Hat jemand eine Idee, wie ich dieses Problem aus der Welt schaffen kann?