Hallo Greenhorn,
1. Problem:
In deiner "1. Consumer"-Schleife hast du eine While-Schleife programmiert, um 50s zu warten. Dummerweise wird während dieser Wartezeit nichts in deine Buffer-Queue geschrieben. THINK DATAFLOW!
D.h. du startest zwar deine Wartezeit, schreibst aber nur einmalig zu Beginn der Wartezeit Daten in deinen Buffer…
2. Problem:
Du legst diese Buffer-Queue mit einer Länge = 5M an. Wieso? Jedes Element in deiner Queue entspricht einem "Array of Waveforms". Eine Waveform entspricht einem Zeitabschnitt von 0.1s (Samplerate = 1kS/s, 100 zu lesende Samples). Also muss deine Bufferqueue genau 70*10=700 "Array of Waveforms" buffern!
3. Problem/Lösung:
Lege die Buffer-Queue mit der gewünschten Länge (für 70s) an. Schreibe andauernd Daten in diese Queue. Wenn dein "Event" auftritt, musst du es einfach nur um 60s verzögern, um dann einfach den kompletten Inhalt der Queue (60s nach Event und 10s vorher) zu speichern…
Ich möchte noch erwähnen, dass ich das VI (soweit sichtbar) schon für recht ordentlich halte!
Hier und da noch ein paar Kleinigkeiten, aber sonst keine groben Schnitzer…