(04.12.2012 23:11 )blubblub schrieb: Mich wundert es, dass keine Daten verloren gehen. Es wird eine saubere gerade
Linie im Diagramm gezeichnet. Das versteh ich aber nicht.
Mich nicht.
(04.12.2012 23:11 )blubblub schrieb: Die Erzeugerschleife wird alle 50ms ausgeführt. Dabei versucht sie bei jeder Ausführung
einen neuen Wert in den Puffer zu legen. Wenn bereits 10 Werte drinne sind, und das
dürfte nach 500 ms der Fall sein,
Richtig erkannt!
(04.12.2012 23:11 )blubblub schrieb: dann wird die Erzeugerschleife zwar weiterhin alle 50ms
ausgeführt, aber sie legt keine neuen Daten mehr in den Puffer, da dieser voll ist.
Nach 500 ms müssten die Werte {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} drin sein.
Hier ist dein Denkfehler. Queue ist voll. Lies dir die Hilfe zu Enqueue Element durch. Du hast also Timeout -1 angeschlossen, d.h. die Erzeuger-Schleife wartet jetzt so lange, bis die Verbraucher-Schleife wieder ein Element entnommen hat.
Wenn du mit nicht glaubst, dann leg dir einen Indikator mit dem Schleifen-Index aufs Frontpanel.
Gruß, Jens
P.S.: Noch zu einem deiner früheren Beiträge: Mit mind. 50 Hz unter Windows zu regeln zu wollen, und das noch mit einem Single-Prozessor, das ist schon haarig. Windows ist kein Echtzeit-Betriebssystem und verteilt die Ressourcen nach Gutdünken. Ein Graph-Zeichnen unter LabVIEW ist leider nicht gerade das Schnellste, und kann bei vielen Datenpunkten richtig CPU fressen. Und wenn du Pech hast, dann passiert dir das auch in einer Producer-Consumer-Struktur.