Hallo Hulk,
ich fände es zwar sehr sinnvoll zunächst das Programm aufzuräumen und die Datenerfassung sauber zu lösen (siehe Hinweise von Gerd).
Dennoch ein Hinweis zu dem Thema:
(04.09.2022 11:47 )hulk schrieb: Nur erscheint es gewürfelt, wie viele Daten am Ende tatsächlich in der TDMS Datei sind.
Gewürfelt ist es zwar nicht, was da passiert, denn ein Würfel sollte gleichmäßig verteilte Ergebnisse liefern. Das dürfte in deinem Fall etwas anders aussehen.
Du hast eine While Schleife welche die gemessenen Daten in eine Queue schreibt (Enqueue Element). Dein Programm hat unter anderem zwei Schleifen die von dieser Queue Daten lesen (Dequeue Element). Je nachdem wie die Hardware des PC aussieht, wie sehr der Rechner belastet ist usw. bekommt nun entweder die eine oder die andere schleife die gemessenen Daten.
Die eine Schleife schreibt vor allem die Daten aus der Queue in die TDMS Datei und berechnet irgend etwas. Die andere Schleife berechnet auch irgend etwas und sammelt die Daten in einem 2D Array ohne dass die Daten aus den 2D Arrays jemals einer sinnvollen Verwendung zugeführt werden (einer nicht sinnvollen Verwendung werden sie zugeführt).
Es wird also nicht jeder gemessene Wert in die TDMS Datei geschrieben und durch das sammeln der Messdaten in den 2D Arrays verschiebt sich zusätzlich zu anderen Faktoren auch die Menge der Daten die in der TDMS Datei landen. Wenn du jetzt auch noch etwas sehr sinnvolles machst und mehr als nur ein Sample auf einmal einliest, so ist das deinem unerwünschten "ruckeln" nicht gerade zuträglich.
Von den zwei Schleifen mit dem Dequeue Element brauchst du nur diejenige, welche Daten in die TDMS Datei schreibt. Die Berechnungen der zweiten Schleife kannst du in diese Schleife integrieren. Und bitte nicht ohne Notwendigkeit stundenlang Daten in einem Array ansammeln.