Einstellungen, Aufnehmen, Abspielen
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Einstellungen, Aufnehmen, Abspielen
Hallo zusammen,
ich beginne jetzt mit einem (für meine Verhältnisse!) größeren Programm. Bestehen soll das Ganze aus 3 Reitern auf dem FP:
1) Einstellungen (Chan. Parameters, Physical Chan., Sampling rate/size, etc...)
2) Aufnahme (Anzeige Roh-Signal, Spektrum, Markerfunktion)
3) Player (laden von *.lvm oder *.tdms und abspielen des Signals, ggf. tdms-datei viewer benutzen)
Mich würde die Meinung von erfahrenen Programmierern interessieren wie ich das am besten verpacken soll im BD? Eventstructure/ oder gehts auch mit ner State Machine? Worauf soll ich besonders achten?
Das Programm (exe) soll später auch auf Rechnern ohne LV laufen (nur die Player Funktion). Wie kann ich da die Initialisierung der Signalerfassung (DAQ Task) automatisch verhindern?
Crosspost #18
Beste Grüße
dimtri
ich beginne jetzt mit einem (für meine Verhältnisse!) größeren Programm. Bestehen soll das Ganze aus 3 Reitern auf dem FP:
1) Einstellungen (Chan. Parameters, Physical Chan., Sampling rate/size, etc...)
2) Aufnahme (Anzeige Roh-Signal, Spektrum, Markerfunktion)
3) Player (laden von *.lvm oder *.tdms und abspielen des Signals, ggf. tdms-datei viewer benutzen)
Mich würde die Meinung von erfahrenen Programmierern interessieren wie ich das am besten verpacken soll im BD? Eventstructure/ oder gehts auch mit ner State Machine? Worauf soll ich besonders achten?
Das Programm (exe) soll später auch auf Rechnern ohne LV laufen (nur die Player Funktion). Wie kann ich da die Initialisierung der Signalerfassung (DAQ Task) automatisch verhindern?
Crosspost #18
Beste Grüße
dimtri
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Hallo Dimitri!
Ich würde vorschlagen, wenn die Aufnahme und Player parallel arbeiten sollen, du machst zwei parallele While-Schleifen:
1. Aufnahme
2. Player
Die ganzen Einstellungen (Eingabeparameter) machst du im Reiter 1, zwei grafische Anzeigen im Reiter 2 und eine Grafik und Tabellenanzeige im Reiter 3.
Dann brauchst du noch zwei Start/Stop Buttons je im Reiter 2 und 3.
In den While-Schleifen je eine Case-Struktur, die den Start/Stop-Button als Bedingung hat.
Zur Aufnahme:
Wenn Start-Button True, dann startest du DAQ-Task und DAQ Lesen und setzt dabei einen boolschen Flag "Verbunden". Die Referenz zum DAQ Task merkst du dir in einem Schieberegister. Wenn nun du im Case True bist und wenn der boolsche Flag "Verbunden" auch True ist, brauchst du die DAQ Task nicht noch mal aufzumachen, sondern benutzt zum DAQ Lesen die gemerkte Referenz. Wenn du im Case False bist (Also Start-Button ist False) und der boolsche Flag True ist, dann schliesst du die DAQ Task und setzt den boolschen Flag auf False. Wenn Case-False und Flag False, dann nichts machen, sondern 100 ms warten (damit die CPU Auslastung nicht auf 100% geht).
Zum Player:
Er muss ja nicht immer arbeiten, sondern du Startest den Player liest die Datei ein und zeigst diese in einer Grafik an. Hier brauchst du also keinen Flag. Eine einfache Case-Struktur sollte ausreichen. Also Start-Button (mit dem Latch-Schaltverhalten) True - Datei einlesen und anzeigen.
Noch Fragen?
Ich würde vorschlagen, wenn die Aufnahme und Player parallel arbeiten sollen, du machst zwei parallele While-Schleifen:
1. Aufnahme
2. Player
Die ganzen Einstellungen (Eingabeparameter) machst du im Reiter 1, zwei grafische Anzeigen im Reiter 2 und eine Grafik und Tabellenanzeige im Reiter 3.
Dann brauchst du noch zwei Start/Stop Buttons je im Reiter 2 und 3.
In den While-Schleifen je eine Case-Struktur, die den Start/Stop-Button als Bedingung hat.
Zur Aufnahme:
Wenn Start-Button True, dann startest du DAQ-Task und DAQ Lesen und setzt dabei einen boolschen Flag "Verbunden". Die Referenz zum DAQ Task merkst du dir in einem Schieberegister. Wenn nun du im Case True bist und wenn der boolsche Flag "Verbunden" auch True ist, brauchst du die DAQ Task nicht noch mal aufzumachen, sondern benutzt zum DAQ Lesen die gemerkte Referenz. Wenn du im Case False bist (Also Start-Button ist False) und der boolsche Flag True ist, dann schliesst du die DAQ Task und setzt den boolschen Flag auf False. Wenn Case-False und Flag False, dann nichts machen, sondern 100 ms warten (damit die CPU Auslastung nicht auf 100% geht).
Zum Player:
Er muss ja nicht immer arbeiten, sondern du Startest den Player liest die Datei ein und zeigst diese in einer Grafik an. Hier brauchst du also keinen Flag. Eine einfache Case-Struktur sollte ausreichen. Also Start-Button (mit dem Latch-Schaltverhalten) True - Datei einlesen und anzeigen.
Noch Fragen?
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Danke für die ausführliche Antwort! Ich werds mir noch 2-3 mal durchlesen um alles ganz zu verstehen. Hört sich aber einfacher an als ichs mir vorgestellt habe ... so ganz ohne event structure.
Was ist ein Flag?
Wenn ich ne VI mit dem groben Gerüst habe frag ich hier bestimmt nochmal was.
...setzt dabei einen boolschen Flag "Verbunden"
Was ist ein Flag?
Einfach den Task Draht mit dem Schleifenrand verbinden?Die Referenz zum DAQ Task merkst du dir in einem Schieberegister
Wenn ich ne VI mit dem groben Gerüst habe frag ich hier bestimmt nochmal was.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Boolshes Flag kannst du z.B. über Schieberegister realisieren. Ja an den Schleifenrand rechtsklicken und Schieberegister hinzufügen. Diesen dann mit einer boolschen False-Konstante initialisieren.
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Hallo Eugen,
also ich habe wirklich versucht das mal alleine hinzubekommen und mir nicht alles vorkauen zu lassen ... vergeblich. Das Ergebnis ist absolut sinnfrei!
Wenn ich das richtig sehe habe ich doch 4 "Zustände"
1) Case true, Flag false => Task initialiesieren
2) Case true, Flag true => DAQ lesen ohne nochmaliger Task Initilisirung
3) Case false, Flag false=> Task schließen
4) Case false, Flag false=> 100ms warten
Was ich nicht verstehe ist, wie ich auf einer Case Ebene zwei verschiedene (in Abhängigkeit vom Flag) Aufgaben unterbringe. Hier meine Baustelle von der Aufnahme (habs echt lange alleine probiert....):
also ich habe wirklich versucht das mal alleine hinzubekommen und mir nicht alles vorkauen zu lassen ... vergeblich. Das Ergebnis ist absolut sinnfrei!
Wenn ich das richtig sehe habe ich doch 4 "Zustände"
1) Case true, Flag false => Task initialiesieren
2) Case true, Flag true => DAQ lesen ohne nochmaliger Task Initilisirung
3) Case false, Flag false=> Task schließen
4) Case false, Flag false=> 100ms warten
Was ich nicht verstehe ist, wie ich auf einer Case Ebene zwei verschiedene (in Abhängigkeit vom Flag) Aufgaben unterbringe. Hier meine Baustelle von der Aufnahme (habs echt lange alleine probiert....):
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Du musst die Initialisierung in eine Case-Struktur (die nur vom Flag abhängt) packen. Diese Case-Struktur platzierst du in den True Case der äusseren Case-Struktur.
- Вложения
-
- Flag.png (7.3 КБ) 13068 просмотров
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Danke nochmal. Die ganze Geschichte springt jetzt immer genau dahin wo sie auch hin soll bzw. bleibt wo sie bleiben soll ... jedenfalls beim Recorder.
Sollte man nicht vielleicht noch eine "numerisch gesteuerte" Case Struktur um der Recorder und Player ziehen damit der Player nur dann läuft, wenn auch der Reiter angewählt ist? Bzw. wie erreiche ich, dass die Schleife des Players nur dann läuft, wenn der richtige Reiter im Vordergrund ist?
Sollte man nicht vielleicht noch eine "numerisch gesteuerte" Case Struktur um der Recorder und Player ziehen damit der Player nur dann läuft, wenn auch der Reiter angewählt ist? Bzw. wie erreiche ich, dass die Schleife des Players nur dann läuft, wenn der richtige Reiter im Vordergrund ist?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Sie können ja ruhig parallel laufen. CPU wird ja fast nicht ausgelastet, solange du im Wartemodus bist. Mach dir, wie schon gesagt eine Wartezeit von 100 ms im False-Case, du wirst nichts davon merken.
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Hallo Eugen,
wie kann es sein, dass mit der Highlightfunktion ein anderer Programmablauf stattfindet als ohne?! Folgendes Problem:
mit Highlightfunktion: Leerlauf ... startbutton auf true ... task initialisiert ... "daten lesen" ... fehlermeldung ... nächste Iteration "daten lesen" .... fehlermeldung ... diese zweite Fehlermeldung kommt dann immer wieder bei jeder Iteration
ohne Highlightfunktion kommt (nachdem drücken des Startbuttons) direkt die zweite Fehlermeldung als ob der Task nie initialisiert worden ist. Dass ich mir die Referenz des DAQ Tasks im Schieberegister merke scheint nicht zu funktionieren.
Ich musste ja bei den Tunneln immer den Haken setzen bei "Standart verwenden wenn nicht verbunden" damits überhaupt läuft. War das richtig so? Oder sollte ich die Referenz des DAQ Tasks und den Flag garnicht über die Tunnel übergeben?
wie kann es sein, dass mit der Highlightfunktion ein anderer Programmablauf stattfindet als ohne?! Folgendes Problem:
mit Highlightfunktion: Leerlauf ... startbutton auf true ... task initialisiert ... "daten lesen" ... fehlermeldung ... nächste Iteration "daten lesen" .... fehlermeldung ... diese zweite Fehlermeldung kommt dann immer wieder bei jeder Iteration
ohne Highlightfunktion kommt (nachdem drücken des Startbuttons) direkt die zweite Fehlermeldung als ob der Task nie initialisiert worden ist. Dass ich mir die Referenz des DAQ Tasks im Schieberegister merke scheint nicht zu funktionieren.
Ich musste ja bei den Tunneln immer den Haken setzen bei "Standart verwenden wenn nicht verbunden" damits überhaupt läuft. War das richtig so? Oder sollte ich die Referenz des DAQ Tasks und den Flag garnicht über die Tunnel übergeben?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Es hat sicher mit dem Timing tzu tun. Im Highlight Modus läuft ja alles viel langsamer, aber deine Hardware läuft ja im normalen Modus weiter. Somit kann z.B. Hardware-Puffer überlaufen, weil die Hardware schon so viele Daten gesammelt hat, aber die Software holt es nicht ab (weil viel langsamer). Davon kommen z.B. solche Fehler, wie bei dir.
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Warum kommt denn schon in der nächsten Iteration nach der Initialisierung nur ein leerer String beim DAQ Rd an?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
- beginner
- Сообщения: 29
- Зарегистрирован: 10 сен 2009, 10:28
- Версия LabVIEW: 8.2
- Контактная информация:
Re: Einstellungen, Aufnehmen, Abspielen
Das hat mich auch stutzig gemacht. Ich habe das 1 zu 1 aus dem VI übernommen was ich von meinem Betreuer bekommen habe (obere Bild) ... werde das nochmal mit ihm besprechen.
Jo das auf dem unterem Bild hätte ich auch selbst drauf kommen können ... klar ...
Habs jetzt verbunden ... keine Fehlermeldungen
danke für deine Geduld
Jo das auf dem unterem Bild hätte ich auch selbst drauf kommen können ... klar ...
Habs jetzt verbunden ... keine Fehlermeldungen
danke für deine Geduld