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!
29.04.2010, 15:12 (Dieser Beitrag wurde zuletzt bearbeitet: 29.04.2010 15:16 von Lecojon.)
Hi, ich denke mit dem Post hier und hoffentlich einer Antwort hätt ich erstmal alles beisammen, was ich so für meine Zukünftigen Auswertungen benötige...
Ich wollte mal nachfragen, ob es möglich ist mit LV mehrere Files einzulesen? Undzwar ungefähr so:
Den Ordner der Files öffnen----> alle Files werden sortiert in den FrontPanel geladen---->Dort kann ich mir die zu bearbeitenden Files aussuchen bzw. alle...
Als Beispiel wähle ich alle:
----> nach dem aussuchen wird ein Filepaar nach dem anderen bearbeitet (wegen meinem geringen RAM-Speicher)....
Also berechne Paar1, schreibe Ergebnisse in Arrays und plotte...
----> bearbeite Filepaar2, hänge Ergebnisse an Array und Plott dran (also kein neues/r Array/Plott)
Kann mir da jemand helfen, wenn man das i-wie so amchen kann?
Hab grad mal irgendwie hingekrigt, wie man überprüft, ob ein Ordner existiert...wenn das stimmt ^^.... auch weiß ich dann nicht, ob ich alle Rechnungen (der ein oder andere kennt sie wahrscheinlich...:Dis auch nur ein Beispiel) in einer Riesen FOR-Schleife setzen muss...für jedes file eben....ganz zu schweigen von den ganzen Booleans da....
1. Tip: SubVIs, sonst wirst du nicht glücklich werden, soll heißen, deine Bearbeitung eines Files als eigenes SubVI anlegen. Dann hast du hier schon mal mehr Struktur drin und gewinnst wieder mehr Übersicht.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ja, das mit SubVIs hatt ich auch im Sinn, aber bei dem BeispielProg is es ja noch egal, es geht ja nur um den Input und den Output, was da so gerechnet wird, ist ja auch wurscht. Falls eine FOR-Schleife um alles muss, da bin ich mir nicht sicher, dann kann man einfach eine drüberziehn...
Ich hab was zu dem Thema "mehrere Files öffnen" gefunden im Net, hab auch versucht das so zu bauen, wie ichs mir vorgestelt hab. Das ist jetzt nur der Input... erstmal...
Files werden geladen und nach Typ sortiert, dann kann man sich die zu bearbeitenden Files aussuchen, oder man wählt alle aus. Als Test wollt ich einfach mal den Inhalt jedes Files ausgeben lassen. Aber ich bekomm da Fehlermeldungen...weiß einer was fehlt?
Ist das überhaupt mal der richtige Weg für das, was ich später vorhab (1. Filepaar: GIL1-GPS1 einlesen--->berechnen--->ausgeben, 2.Filepaar: GIL2-GPS2 einlesen--->bearbeiten--->am vorigen dranhängen)?
"Aber ich bekomm da Fehlermeldungen...weiß einer was fehlt?"
Etwas genauere Angaben wäre schon nicht schlecht gewesen...
- Was fehlt, ist jedenfalls der Datenfluß! Vor deinem Case "Alle Dateien"/"Benutzerauswahl" fragst du die Benutzerauswahl ab. Im Case "Benutzerwahl" wartest du dann noch, bis der Benutzer "Auswahl getroffen" bestätigt. Wenn er in der Zwischenzeit seine Auswahl ändert, wird dies nicht berücksichtigt... (Es wurden die Werte ja schon vorher ausgelesen!)
- Du verwendest die STOP-Funktion. Zitat aus dem NI-Forum: "STOP is like using a tree to stop a car". Sollte man nicht verwenden, und wenn, dann nicht in einem (zukünftigen) subVI. Nimm 'ne Case-Struktur stattdessen...
- Du verwendest gern "deafult if unwired" Tunnel bei Case-Strukturen. Die sind nur bedingt hilfreich, sinnvolle "Default"-Werte machen die Fehlersuche/weitere Programmabarbeitung später viel einfacher.
Ja, das sind so die Sachen worüber ich mir auch so meine Gedanken gemacht habe....Ich kanns aber nicht fertig realisieren....
Zum einen, weiß ich nicht was ich mit dem Datenfluß machen soll (irgendwie muss es ja an "read from textfile", keine ahung was dazwischen muss)...
Und das mit dem OK-Button. Bin da mit dem Prinzip nicht vertraut. Ich hab gesehn, die Files werden richtig sortiert geladen (juhu! wenigstens das!).
Aber dann gibts die andere Möglichkeit "Files Auswählen". Da wird auch alles richtig geladen, dann kann ich auswählen, aber das bringt nix, wie du schon sagtest, wenn ich den OK-Button drücke, dann stoppt das programm...Case-Struktur stattdessen?
Ich frag mal so: Mag mir das jemand mal verbessern, bei Lust und Zeit natürlich? Ich hab trotz gut gemeinter Tips echt keinen Plan mehr davon...
Bis dann,
n guder Tag euch!
02.05.2010, 17:42 (Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2010 17:48 von GerdW.)
anbei ein VI mit den von mir erwähnten Änderungen...
Was du jetzt noch selbst machen kannst:
Ich würde dem Benutzer die Auswahlfelder zum Laden der Dateien schon "richtig" vorbelegen, d.h. wenn z.B. je 3 Dateien vorhanden sind, die Auswahlfelder schon mit je 3 TRUE initialisieren. Tipp: InitArray-Funktion & lokale Variable... Außerdem wird (noch) nicht auf "keine Dateien gefunden" getestet, du überprüfst nur auf "Existierender Pfad"...
Dank dir, jetzt gehts ^^....komisch, eigentlich bin ich LabVIEW-Experte...
Ich wills aber auch verstehen:
1) Du hast jetzt bei den FOR-L kein einziges N angeschlossen, ich aber schon, ich musste, sonst Fehlermeldung. Wann muss man N anschließen und wann nicht? Gibts da ne einfach Regel?
Im Bild unten:
2) Welche Rolle spielt diese Array-Konstante (hier: rosa)? Wann brauch ich sowas? Ich hätt mir den Datenfluss von ganz vorne geholt bei den Folders.
3) Warum Shift-Register? Ist das, um den vorher gelesenen File nicht zu vergessen? Also er liest alle Files, merkt sich die und erst am Ende des zuletzt
gelesenen Files spuckt er sie alle zusammen aus, sollte mit Tunnel aber auch so gehen, habs versucht, aber da gehts nicht....
Die Logik verstehe ich nur bei einfach Rechnungen, wenn ich mir für die nächste Iteration den ausgespuckten werd merken will....
4) Ich versteh den Zusammenhang nicht: BuildArray mit "Read from Txt-file" und Array-Const. Bei "select all Files" is dieses Array Ding gar nicht da."
Bis denn
03.05.2010, 07:22 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2010 07:23 von GerdW.)
1) Da die FOR-Schleifen (hier) mit AutoIndexing arbeiten, muss nicht zusätzlich N verdrahtet werden.
Grundregeln:
- N muss verdrahtet werden, wenn kein AutoIndexing-Eingang vorhanden ist.
- Die FOR-Schleife arbeitet den kleinsten Wert ab von a) Größe der angeschlossenen AutoIndexing-Arrays und b) Wert an N (und c) erlaubt "neuerdings" vorzeitigen Abbruch mittels Stop-Condition).
2) Durch diese eine Konstante kann ich alle "default"-Ausgänge deiner Cases bedienen als auch die Shiftregister initialisieren.
3) Ich habe die Shiftregister genutzt, um nur die Werte aus den zu lesenden Dateien ins Array zu packen. Bei deiner Lösung ("default if unwired") würden leere Einträge im Array entstehen...
4) Wenn du alle Dateien einliest, braucht man auch keine leeren Einträge rausfiltern (siehe 3)...
...warst aber früh wach...da ist mir aufgefalen, du hast schon 333 Beiträge. Now you are half evil!....
Schreibe noch weitere 333 und du gehst auf die evil zu. Ich helf dir sogar dabei.... und deine Thanks sehen auch fast evil aus....
Ne, viel is nich mehr. Ich hab probiert am Ende mit den jetzt eingelesenen Files zu rechnen.
Jeder Filetyp ist jetzt in einem 1D Array gespeichert....Jede Zeile entspricht einem Kompleten File.
So, jetzt muss ich hier jede Zeile Durchgehen und in ein Array wandeln, Header löschen usw.....
Sprich, das prog geht jetzt jedes File durch, rechnet, dann nimmt er die nächste Zeile (nächstes File) und rechnet.
Wenns ums "durchgehen" geht ist FOR-S schon mal nicht schlecht. Nur kommen dann diese Wire-Probleme...Hier mein aktueller Versuch mit einem 3D Array am Ende, mag aber ein 2 D Array haben...
Weiß da jemand einen Tip? Was da fehlt?
Ziel ist jetzt, das prog geht alle (ausgewählten) Files durch, rechnet--->schreibt Ergebnisse ins Array (später noch mit Plott) )und schreibt Txt-Datei.
Die Sache ist, alle Werte aus allen Files sollen im Array/Plott/WriteFile drangehängt werden...ich glaube so hätt ich mein RAM-Problem gelöst, jedes File wird nacheinander abgearbeitet,oder?
03.05.2010, 10:15 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2010 10:19 von GerdW.)
dan mach ich mal was gegen diese Anhäufung okkult angehauchter Zahlen
Du willst ein 2D-Array? Dan guckst du in meinem VI, wie man Arrays mittels Shiftregister und BuildArray in einer Schleife erzeugt! (BuildArray evtl. per Rechtsklick umschalten auf "Arrays anfügen".)
Zum Eingang deiner FOR-Schleife: Das AutoIndexing gibt dir doch schon den einzelnen String, da musst du nicht nochmal das erste Element eines Array (versuchen zu) indizieren...
Außerdem kannst du die 2 IndexArray-Nodes zu einer zusammenfügen - in der zweiten holst du doch schon 2 Spalten aus deinem Array, kannst also auch die 3. Spalte dort indizieren. Auch reicht es bei aufeinanderfolgenden Spalten aus, nur die erste zu indizierende explizit anzugeben - die nächsten Spalten indiziert LV automatisch...