Hi macmarvin,
meine Datenbrocken sind generell nach oben durch den intern im Digitizer zu Verfügung stehenden Speicherplatz beschränkt (beim aktuellen Modell maximal 20Mb oder sowas in der Richtung), da nach füllen dieses Speichers die Datenaufnahme mit Pufferüberlauf abbrechen würde. Entsprechend gibt es auch für beliebige zukünftige Anwendungen immer eine solche obere Grenze (auch wenn die sich noch verschieben könnte). Aktuell haben meine Arrays maximal 5Mb, die meisten sind kleiner.
Das RT Modul habe ich und habe auch schon überlegt ob ich das nutzen sollte bzw. nutzen kann um den Datenaufnahmeprozess in Realtime laufen zu lassen, während ich eine erste Parrallelverarbeitung in einer niedriger priorisierten Schleife in nicht-RT mache. Leider habe ich damit noch keine Erfahrung, wie gut oder schlecht das funktioniert und müsste dann auch dafür sorgen, dass die auf Verarbeitung wartenden Daten parrallel irgendwo gepuffert werden etc. muss ich mal schauen und mit rumprobieren ob ich da zumindest schonmal die Datenmenge verkleinert kriege.
Von wegen Arrays immer gleich groß: Ich hatte auch schon überlegt, ob ich beim Einlesen eine Zwischenverarbeitung durchführe die gleich große Arrays aus den Daten erzeugt, allerdings muss ich dann zwingend eine Datenkopie anfertigen (da ich erst aus der Datei einlese und die Daten dann weiter zerhacken bzw. zusammenfügen müsste). Insofern: Leider kann ich ohne (meiner Meinung nach) zu viel Overhead bei der Verarbeitung keine identisch großen Arrays generieren.
@DVRs
Wusste bisher garnicht, dass man sich auf ein "Kabel" eine Referenz holen kann. Das sieht für meine Zwecke eigentlich ganz vielversprechend aus. Sehe ich das richtig, dass der Speicherplatz dann auch so lange lebt, bis ich den explizit freigebe? Ich könnte also quasi auch in einer Schleife lesen, das "Kabel" in eine Referenz wandeln
die ich über eine Queue in die Verarbeitung weitergeben kann und im nächsten durchlauf wieder lesen etc. pp (ohne da in den gleichen Speicher geschrieben wird)?
Dann könnte man den Producer nämlich schön über die Queue Größe auf die Geschwindigkeit des Consumers einbremsen (ka; maximal 10 Elemente, dass sollte der Consumer nicht leer kriegen bevor der Producer nachliefert
).
Die eigentlichen Stücke die ich dann relativ schnell in der Verarbeitung draus machen werde dürften dann jeweils ~500-1000 8Bit Werte enthalten und eine feste größe haben. Habe in meiner Anwendung ein kontinuierliches Messsignal, auf dem im Messprozess Peaks auftreten, die ich identifizieren und ausfiltern muss um die dann in der Weiterverarbeitung in einen Messwert umzurechnen. Und wie gesagt, durch die große Datenmenge muss die identifikation möglichst schnell gehen. Hat man das erstmal, sollte der Datendurchsatz um einen Faktor 10-100 sinken, da der größte Teil des Messsignals für die Auswertung uninteressant ist.
Na ja also wie gesagt: Ich probier dann jetzt mal mit DVRs rum und geb nochmal Rückmeldung. Und ich werd deinen Beitrag schonmal als Lösung markieren, da mir das sehr weitergeholfen hat - danke :-)