Daten aus Textdatei in Diagramm darstellen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO) +---- Thema: Daten aus Textdatei in Diagramm darstellen (/Thread-Daten-aus-Textdatei-in-Diagramm-darstellen) |
Daten aus Textdatei in Diagramm darstellen - Lucki - 01.10.2007 12:02 ' schrieb:Was spricht dagegen, das einfach so wie uecontitech mit dem VI "Read From Spreadsheet File" zu machen? Da entfällt die Schleife, den String kann man dann trotzdem noch auswerten... Genau so wollte ich es eigentlich machen, allerdings etwas modifiziert: Es sollte kein zweidimensionales Array entstehen, sozusagen eine Tabelle, sondern ein eindimensionales, also ein Array, bestehend aus Textzeilen. Die anschließende Auswertung wollte ich dann genau so machen wie ich sie gemacht habe, also mit Schleife Zeile für Zeile. Das habe ich auch schon so gemacht, und zwar mir diesem VI. An diesem Tage war mir aber das Glück nicht hold, es wollte mir einfach nicht gelingen. Deshalb habe ich es dann mit dem zeilenweisen Einlesen gemacht. (Was, nebenbei gesagt, den Vorteil hat, daß die Gesamtdatei gar nicht erst ins Memory kommt. Wenn es sich nicht wie hier um 3000 Zeilen, sondern um wesentlich mehr handelt, kann das ein entscheidender Vorteil sein) Daten aus Textdatei in Diagramm darstellen - monoceros84 - 01.10.2007 12:12 ' schrieb:Genau so wollte ich es eigentlich machen, allerdings etwas modifiziert: Es sollte kein zweidimensionales Array entstehen, sozusagen eine Tabelle, sondern ein eindimensionales, also ein Array, bestehend aus Textzeilen. Die anschließende Auswertung wollte ich dann genau so machen wie ich sie gemacht habe, also mit Schleife Zeile für Zeile. Da muss ich dir allerdings rechtgeben. Bei dem zeilenweisen Lesen ist das Speichermanagement wesentlich besser... In diesem Zusammenhang: In anderen Programmiersprachen (ob nun C oder VB oder sonstwas) wählt man ja den Weg, das EOF am Schleifenanfang abzufragen, so dass die Schleife beim Ende der Datei gar nicht erst nochmal ausgeführt wird. Gibt es da eine Entsprechung in LabVIEW, oder ist man darauf beschränkt, die Abbruchbedingung immer am Schleifenende zu checken? Ich habe bis jetzt noch nichts derartiges entdecken können... Daten aus Textdatei in Diagramm darstellen - Lucki - 01.10.2007 14:34 ' schrieb:In diesem Zusammenhang: In anderen Programmiersprachen (ob nun C oder VB oder sonstwas) wählt man ja den Weg, das EOF am Schleifenanfang abzufragen, so dass die Schleife beim Ende der Datei gar nicht erst nochmal ausgeführt wird. Gibt es da eine Entsprechung in LabVIEW, oder ist man darauf beschränkt, die Abbruchbedingung immer am Schleifenende zu checken? Ich habe bis jetzt noch nichts derartiges entdecken können... Die gute off-toppic Nachricht zuerst: Soeben landete V 8.5 deutsch auf meinem Tisch. Ich bilde mir ein, so eine Abfrage nach EOF schon mal gesehen zu haben, und habe jetzt wieder danach gesucht. Gefunden habe ich nur: Das VI "Read to Spreadsheet" hat einen boolschen Ausgang "EOF?", und damit läßt sich beim zeilenweisen Einlesen wirklich etwas damit anfangen. Weiß allerdings nicht, warum bei diesem VI die Hilfe fehlt, vielleicht will NI dieses VI sterben lassen? In dieses VI kann man hineinschauen und sehen, wie das EOF erzeugt wird: Es wird mit Abfrage der VIs Dateigröße/Dateiposition ermitteln gemacht. Es gibt offensichtlich kein EOF-Zeichen, welches in der Datei selbst enthalten wäre. Anbei ein geändertes Programm mit diesem VI, allerdings auch mit zeilenweisen Einlesen. (VI LV 8.2) Daten aus Textdatei in Diagramm darstellen - monoceros84 - 01.10.2007 15:24 ' schrieb:Die gute off-toppic Nachricht zuerst: Soeben landete V 8.5 deutsch auf meinem Tisch. Glückwunsch zwecks LB 8.5! Also ein VI "Read to Spreadsheet" habe ich nicht - meinst du "Read From Spreadsheet File"? Dann habe ich auch einen Hilfeeintrag... Vielleicht hast du den dann auch in der 8.5 Ein EOF-Zeichen gibt es auch nicht... Das wird immer über nen abgefangenen Fehler oder über den Vergleich Position/Dateigröße gemacht. Was sagst du zu den Schleifen-Abbruchbedingungen? Gibt es Schleifen mit einer Bedingung beim Betreten der Schleife? PS: Jetzt gefällt mir das Beispiel-VI sehr gut Daten aus Textdatei in Diagramm darstellen - Lucki - 01.10.2007 16:13 ' schrieb:Also ein VI "Read to Spreadsheet" habe ich nicht - meinst du "Read From Spreadsheet File"? Dann habe ich auch einen Hilfeeintrag... Vielleicht hast du den dann auch in der 8.5Ja, genau das meinte ich. Es hat bei mir nicht nur keinen Hilfeeintrag, sondern hat auch nicht die gelbe Farbe wie die anderen VIs, als ob es von einem anderen Stern kommt. Deshalb war es mit irgendwie suspekt. Zitat:Was sagst du zu den Schleifen-Abbruchbedingungen? Gibt es Schleifen mit einer Bedingung beim Betreten der Schleife?Nein. gibt es nicht, nur indirekt mit einem Case kann man etwas machen: Erst Abbruchbedingung abfragen, und wenn ja, dann ist nur ein leerer Case in der Schleife abzuarbeiten. Schwierigkeit dabei: Wenn man einen Index-Ausgang hat - und wann ist das nicht der Fall - , was schreibt man dann in das letzte Array-Element hinein? Beim VI "Read to spreadsheet file" funktioniert es aber trotzdem bestens: Es wird zuerst gelesen, und dann erst geprüft, ob das Dateiende erreicht wurde. Es wird also beim Lesen vorauseilend darauf hingewiesen, wann es sich nicht mehr lohnt weiterzulesen und kann die Schleife zur richtigen Zeit stoppen. (Bei der Fehlerabfrage lief das nicht so. Wenn der kam, dann war das Kind bereits in den Brunnen gefallen) Daten aus Textdatei in Diagramm darstellen - Marzlf9 - 08.01.2008 13:43 Hey, weiß nicht ob das OK ist,wenn ich einfach hier rein schreibe,aber es geht um genau das Thema und ist für euch sicherlich eine Kleinigkeit, da ihr schon die ganze Arbeit gemacht habt....aber ich weiß nicht,wie ich das "Scan from String" umändern muss für mein Beispiel!? Das was im Text-file ist,möchte ich als Graph haben. Und wie kann ich diesen Graph als Simulierender Graph nutzen...also als Eingang!? MfG Marcel Daten aus Textdatei in Diagramm darstellen - jg - 08.01.2008 13:48 ' schrieb:weiß nicht ob das OK ist,wenn ich einfach hier rein schreibe,aber es geht um genau das Thema und ist für euch sicherlich eine Kleinigkeit, da ihr schon die ganze Arbeit gemacht habt....aber ich weiß nicht,wie ich das "Scan from String" umändern muss für mein Beispiel!?Es ist dann NICHT OK, wenn du hieraus ein Doppelposting machst und außerdem nicht die LV-Version deines hochgeladenen VI's nicht angibst. MfG, Jens Daten aus Textdatei in Diagramm darstellen - Marzlf9 - 08.01.2008 14:15 Verstehe! Ich hab das hier erst später gefunden und das ist ja eigendlich sogut wie das,was ich brauche,da dachte ich mir,ich schreib einfach nochmal hier rein,da passt es besser...SORRY :-( Dachte es reicht,wenn ich im Profil meine LV-Version stehn habe und nur expliziet dazu schreibe,wenn es nicht meiner Version entspricht!OK...ich werde es absofort selbstverständlich berücksichtigen! Danke....MfG Marcel Daten aus Textdatei in Diagramm darstellen - Djerun - 17.01.2008 10:27 Hallo, ich hätte Erklärungsbedarf zu dem von Lucki geposteten VIs, die Zeilenweise einlesen. Ich verstehe folgendes: - Es wird eine Zeile aus einer Textdatei eingelsen und an die SChleife übergeben. - In der SChleife sollte dann ja bei jedem Durchgang eine neue Zeile eingelesen werden, solange bis ein Fehler ausgegeben wird, dann ist keine Zeile mehr da und es wird abgebrochen. Was genau macht der Initialisierungspunkt und der Rückkopplungsknoten in diesem Zusammenhang? Damit wird doch wohl rgendwie sichergestellt, dass immer eine neue Zeile eingelsen wird oder wie? Ich würde mich um eine genaue Erklärung freuen. Viele GRüße Wolfgang Daten aus Textdatei in Diagramm darstellen - Lucki - 17.01.2008 12:19 ' schrieb:Hallo,Ja, ich versuchs mal zu erklären. Das Problem ist das: Die Fehlermeldung beim zeilenweisen Einlesen besagt nicht: Bitte keine neuen Zeilen mehr einlesen, denn das war jetzt die letzte Zeile. Sondern sie besagt leider: Ätsch, Pech gehabt, die Zeile die Du lesen wolltest. gibt es gar nicht, die letzte Zeile hattest Du bereits gelesen. (Oder siezt NI die LabVIEW-Anwender?). Nehmen wir den einfachsten Fall. daß die Datei nur aus einer einzigen Zeile besteht 1. Variante: ohne das Schieberegister. Die erste (und einzige Zeile) wird eingelesen und fehlerfrei abgearbeitet. Der Versuch, eine zweite Zeile einzulesen, führt zu einer Fehlermeldung und verursacht den Schleifenabbruch. Der Haken an der Sache ist nur: Vor dem Abbruch wir noch das volle Programm der Stringbehandlung mit der gar nicht existierenden Stringzeile abgearbeitet. Ich weiß jetzt nicht, ob das Programm dann aussteigt oder ob nur ein fehlerhafter 2ter Punkt dem xy-Grachen angehängt wird. Man wäre geneigt, einen Case zu setzen, so daß im Fehlerfall die Stringverarbeitung nicht erfolgt. Hat aber trotzdem den Haken, daß ich dem Graphen wegen der Indexierung zunächst mal einen zweiten Punkt übergeben muß. Den könnte ich löschen, ist aber insgesamt dann umständlicher als mit dem Schieberegister. 2. Variante: Mit Schieberegister Vor dem Eintritt in die While-Schleife wird schon die erste Zeile ausgelesen und damit das Schieberegister initialisiert. Beim ersten schleifendurchlauf (= Einlesen der 2. Zeile) kommt es sofort zur Fehlermeldung. Die Stringkonvertierung in der Schleife erfolgt aber immer eine Zeile vorher, als alles noch fehlerfrei war (hier bei nur 1 Zeile also mit dem Initialisierungewert). Es wird also insgesamt nur 1 Punkt erzeugt, die Schleife nur einmal ausgeführt, und alles ist in Butter. |