Erst mal vielen Dank an alle, momentan lerne ich viel.
dimitri84 wie machst du das, dass bei deinen Zitaten so schön steht von wems ist ?
Zitat:Bei 1MHz Samplerate und 100 Samples wäre die Schleifendauer 100µs. Das ist aber schon sehr, sehr, sehr knapp. Willst du eine akzeptable Schleifendauer haben, muss du immer die Sampleanzahl an die Samplerate anpassen. Vorteil dieser Methode: Die Datenpakete sind immer gleich lang.
Benutzt du aber den Algorithmus "alle 50ms alles, was da ist, lesen", ist die Schleifendauer unabhängig. Außerdem musst du hier nicht warten, bis der Puffer die erforderliche Anzahl von Daten enthält. Für meine Weiterverarbeitung ist es unerheblich, ob die Datenpakete 10, 100 oder 1000 Datensätze enthalten.
Ich habe immer längere Zeiten als 100uS im Kopf wenn ich was mit Windows mache, ich halte daher deine 50ms, besser noch 100ms für gut. Natürlich lese ich die Samples nicht einzeln, sondern Blockweise. Ich wollte aber je nach verwendeter Hardware (PCI, USB oder RS232...) im Benutzerinterface die Blockgröße einstellbar machen, also Samplerate und Blockgröße (=Eventfrequenz) sinnvoll einstellen (100ms für mich absolut ausreichend, selbst sekündlich ist ok). Gerade so ein Graph braucht lang, 50ms können da je nach Inhalt schon zu kurz sein, es muss daher vorher sinnvoll reduziert (z.B.: Datenmittelung etc) werden.
Zitat:Das weis man (also ich) nicht. Der Event könnte eine richtige Message sein - einschließlich Daten. D.h. zum Zeitpunkt des Auftretens wird eine Message gemacht mit den Daten eines Samples. Wäre dem so (und ich befürchte so) gehen keine Daten verloren.
Glaub ich nicht, dass mit dem generieren des Event schon Daten aus dem DAQ-MX Device ausgelesen werden. Event ist etwas, das vom Betriebssystem unterstützt wird, und von daher performant und CPU-schonend. Es ist aber meines wissens nach nur so eine Art Flag, ohne Daten. Daher müssen die Daten ja mit einer Art DAQ-MX-read funktion als Reaktion auf das event gelesen werden.
Zitat:Zum Koppeln gibt es Queues.
Erwischt. Daran habe ich mich bisher nicht getraut. Ich verwende ja Queues beim Erzeuger-Verbraucher-Modell, wie in meinem geposteten Beispiel-code zu sehen, besteht die Queue bei mir aus einem ENUM (Nachrichtenart) und 4 Strings (quasi um Argumente als text kodiert übertragen zu können). Aber ich habe keine Ahnung wie ich es anstellen könnte, eine Queue zu bauen, die aus variabel großen Messdatenblöcken besteht. Gibts da ein Beispiel
![Talk Talk](images/smilies/lvfsmilies/fun/talk.gif)
?