Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Ich hab deine Datenerfassung durch Zufallszahlen ersetzt und die Ausgänge der SubVI's simuliert (also Arrays draus gemacht).
Das Schreiben nach Excel hab ich aus der von mir bereits geposteten LLB abgekupfert.
Du siehst zwei Beispiele zum Schreiben der Daten. Einmal in der Whileloop (also direkt wenn die Daten auftauchen) und einmal nach der Whileloop als 2D-Array.
Da das Umwandeln in einen String beim Schreiben in Excel zu den kleinen grünen Dreiecken (Zahl als String in der Zelle) führt, habe ich einfach den Stringeingang des SetCellValue VI's durch einen DBL Eingang ausgetauscht.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Bezüglich auf das Bild von SeBa, das geposted wurde:
Wenn ich aus meiner For-Loop und anschließend aus meiner While-Loop mit meinen beiden Kabeln rausgeh (Error und Execl), ändert sich ja das Format. Ich bekomm dann immer den Fehler dass ich zwei verschiedene Datentypen verbinden will, was mir das Programm natürlich nicht zulässt. Wie geht das??
Wenn ich das jetzt richtig verstanden habe, dann kann ich das wie du oben geschrieben hast entweder auf die Art machen, dass ich den Teil in der While-Loop benutze ODER den andren Teil, der rechts daneben steht?!
Danke schon mal / noch mal für die Hilfe
mfg pat
EDIT:
OK ich hab das Problem gelöst mit der Funktion "Disable Indexing", ich hoffe das ist richtig. Allerdings versteh ich ned was ich damit bewirke, kann mir das jemand erklären?!
Achja... und wo stammen eigentlich die VIs wie "OpenSheet" oder "OpenBook" her??? Ich hab die nur kopiert, mich würds aber intressieren wo mach sowas normal findet?!
auto-indexing bei Schleifen bedeutet, das LV entweder Arrays automatisch Element für Element abarbeitet (bei Array-Eingänge) oder aus Einzelwerten automatisch Arrays erstellt (bei Ausgängen). Aus einer Referenz ein Array zu erstellen, ist hier natürlich unsinnig, deshalb ist "Disable..." hier korrekt!
Nun klappts zwar damit, dass ich meine Dateien in eine Exceltabelle schreiben kann, allerdings hab sich nun wieder kleinen Schönheitsfehler in Sachen der programmbedienung eingeschlichen!
Folgendes Problem:
Ich will nicht direkt wenn ich das Programm starte sofort in Excel schreiben. Zuvor hatte ich ja bei meinem Express VI die Möglichkeit, mit Enable / Disable selbst zu bestimmen, wann meine Messung gestartet wird und wann sie beendet wird.
Ich will letztendlich, dass mein Programm läuft, damit ich die aktuellen Werte seh (z.B. über Numeric Control Buttons). Wenn die Werte stimmen, will ich über einen Schalter die Möglichkeit haben, die Aufzeichnung zu starten und genauso auch wieder zu beenden.
Auserdem würde ich gerne nicht in ein X-beliebiges ExelFile speichern, sondern in ein von mir vorher festgelegtes. Gibts hierzu die Möglichkeit, das irgendwo festzulegen??
Und wo finde ich jetzt die VIs wie "OpenSheet" und "OpenBook"??? oder muss ich mir die z.B. im Internet suchen???
Vielen Dank im voraus, ich hoffe man kann / will mir helfen ^_^
mfg pat
EDIT:
Wärs sinnvoll das ganze mit ner Flat Sequenze innerhalb der While-Schleife aufzubauen? Ist sowas überhaupt möglich?
Anbei mein Programm (Numeric Control Buttons etc. sind jetzt noch nicht eingebaut, um ned noch mehr Wirwarr zu erzeugen)
' schrieb:Wenn ich das jetzt richtig verstanden habe, dann kann ich das ... entweder auf die Art machen, dass ich den Teil in der While-Loop benutze ODER den andren Teil, der rechts daneben steht?! -> Ja. Wobei ich den Teil außerhalb der Whileloop bevorzugen/empfehlen würde.
Achja... und wo stammen eigentlich die VIs wie "OpenSheet" oder "OpenBook" her??? Ich hab die nur kopiert, mich würds aber intressieren wo mach sowas normal findet?! -> Wie bereits gesagt... ich habe es aus der von mir geposteten LLB abgekupfert. Die LLB ist kein Bestandteil von LV, sonder kann neben vielen anderen nützlichen Dingen z.B. bei NI.com im Forum gefunden werden.
' schrieb:Folgendes Problem: -> Das ist per se kein Problem, sondern ein Feature.
Ich will nicht direkt wenn ich das Programm starte sofort in Excel schreiben. -> Daher empfehle ich ja auch das Schreiben NACH der Whileloop... Vorausgesetzt, deine Erfassung endet damit.
Zuvor hatte ich ja bei meinem Express VI die Möglichkeit, mit Enable / Disable selbst zu bestimmen, wann meine Messung gestartet wird und wann sie beendet wird. -> Hast du jetzt auch, wenn du das Schreiben der Daten in einen Case legst und einen Schalter anschließt.
Auserdem würde ich gerne nicht in ein X-beliebiges ExelFile speichern, sondern in ein von mir vorher festgelegtes. Gibts hierzu die Möglichkeit, das irgendwo festzulegen?? -> Schau halt mal in die Excel SubVI's rein...
EDIT:
Wärs sinnvoll das ganze mit ner Flat Sequenze innerhalb der While-Schleife aufzubauen? Ist sowas überhaupt möglich? -> Ich will mir garnicht vorstellen, wie das aussehen könnte.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Hab jetzt beide Möglichkeiten ausprobiert, bin mit der Aufzeichnung "nach" der While-Schleife wirklich glücklicher
Also ich hab jetzt reichlich rumprobiert, aber irgendwie wills nicht so ganz klappen mit der Case-Struktur. Evtl. mach oder versteh ich irgendwas falsch.
Anbei ein Bild wie ich das realiesieren wollte.
Auserdem hat SeBa geschrieben, dass ich das Excelfile, in das ich aufzeichnen will, in meinen SubVI`s einstellen kann. Ich muss mich entschuldigen, aber ich finde bzw. weis nicht, wie ich das anstellen soll.
Könnte man mir evtl. hierbei nochmal zur Hand gehen oder mir einen Tipp geben?
Danke SeBa für die Hilfe bis hierher
mfg pat
19.04.2010, 10:36 (Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2010 10:39 von GerdW.)
im Bild sind zwei Case-Strukturen zu sehen, welche meinst du?
Ein Problem auch könnte sein, dass der ErrorCluster vom DAQmx zu den Excel-Funktionen weitergeführt wird. Tritt ein Problem bei DAQ auf, kann es passieren, dass die Excel-Funktionen "nichts" machen...
' schrieb:Ich will nicht direkt wenn ich das Programm starte sofort in Excel schreiben. -> Daher empfehle ich ja auch das Schreiben NACH der Whileloop... Vorausgesetzt, deine Erfassung endet damit.
Zuvor hatte ich ja bei meinem Express VI die Möglichkeit, mit Enable / Disable selbst zu bestimmen, wann meine Messung gestartet wird und wann sie beendet wird. -> Hast du jetzt auch, wenn du das Schreiben der Daten in einen Case legst und einen Schalter anschließt.
Hallo Gerd,
ich meine die Äußere, bezüglich auf die Aussage von SeBa.
Ich will erreichen, dass meine Schleife immer läuft, die Aufzeichnung aber nur erfolgt, wenn ich einen Knopf drücke. Hintergrund dazu: Ich will die Werte überwachen können, aber erst wenn sich ein bestimmter Zustand einstellt, mit der Aufzeichnung beginnen.
Auch versteh ich nicht, wo ich das Excelfile auswählen kann, in das ich schreiben will. Hierfür würde ich eine Vorlage erstellen.
Danke schon mal,
mfg pat
EDIT:
Ist das ein Fehler / nicht ratsam, das ErrorCluster komplett durch zu ziehen?
ein Fehler ist es nicht unbedingt... Aber manchmal ist es sinnvoller, Fehler"zweige" zu trennen (Fehler bei Hardware-Zugriff/DAQ und Fehler bei Dateizugriff...)
Im Bild sieht der Case gut aus (WENN boolean DANN Datei schreiben). Problem, was ich sehe: Datenfluß. Der Knopf wird irgendwann, parallel zur DAQ-Schleife abgefragt. Wenn du während der Messung entscheidest zu speichern, hat das keinen Einfluß auf die aktuelle Messung mehr - der Knopf wurde schon wesentlich früher abgefragt. Erst mit der nächsten Messung würden dann Daten gespeichert...
Außerdem werden die Messdaten natürlich erst nach abgeschlossener Messung (DAQClear) an die Speicherroutine weitergeleitet.