Debug-Auswertung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Debug-Auswertung (/Thread-Debug-Auswertung) |
Debug-Auswertung - mijarena - 22.03.2016 10:11 Hallo zusammen. Ich hab jetzt schon mit google und der Forumssuche und der Labviewhilfe probiert einiges rauszubekommen, und den ersten Teil habe ich auch selber geschafft. Ich beschreibe trotzdem mal alles, denn als Labview-Neuling stecke ich vielleicht bzw wahrscheinlich noch viel zu sehr in herkömmlicher Programmierung fest. Also, ich habe hier ein Arduino-Programm welches mir vorgegeben ist, die Schaltung auch. (Es handelt sich um eine Prüfungsvorbereitung. Um genau herauszufinden was nun Programm und Schaltung machen, habe ich das Programm um eine Debug-Ausgabe erweiter. So werden bei jedem Durchlauf alle Werte gesammelt, zu einem String zusammengefasst und am Ende der Schleife über den Seriellen Port ausgegeben. Es handelt sich pro Schleifendurchgang um eine Zeile, abgeschlossen mit einem Zeilenvorschub. Die Wertepaare sind durch ein "!" voneinander getrennt, Bezeichner und Wert duch ein ":". Eine Zeile schaut dabei z.B. folgendermaßen aus: Code: OL:0!OR:0!UT:404!NL:0!NR:0!BR:1!UM:405!UF:387!UD:603!UA:603!FE:1!EC:63!ZC:253!ZS:6!ES:0 Geplant ist folgende Funktion: Übersichtliche grafische Anzeige der Werte des aktuellen Schleifendurchlaufes, Anzeige der Werte als String zur Verlaufsanalyse, Maximal 20 vorherige Werte sollen angezeigt werden. Bis jetzt geschafft habe ich, per VISA die Schnittstelle auszulesen und, so hoffe ich, in ein eindimensionales String-Array überführt. Nun will ich jede Zeile des eindimensionalen Arrays trennen und in Abhängigkeit vom Bezeichner die Anzeige aktualisieren. Im Normalfall (also, im Programmiermodus den ich gewohnt bin) hätte ich das mit einem case gemacht: Also in etwa so: Code: case $Bezeichner in Aber ich hänge absolut fest und ich finde keine Lösung. Ich übergebe gerade das eingelesene String-Array an eine Forschleife mit Autoindex. In der Forschleife mache ich wieder ein "Tabellen-String nach Array" ... und weiter komme ich nicht. Lieben Gruß, Miia RE: Debug-Auswertung - Valduril - 22.03.2016 10:48 Ich habe deine Beispielzeile mal angenommen. In der ersten While-Schleife wird der String solange an jedem "!" geteilt bis kein Trennzeichen mehr gefunden wird. Die gefundenen Stellen werden dabei in ein neues Array überführt und der Rest-String in die nächste Iteration per Schieberegister übergeben. Sobald kein Trennzeichenmehr gefunden wird ist der zweite String leer und damit die Bedingung zum Beenden der Schleife TRUE. Die zweite Schleife durchläuft in Abhängigkeit von dem Array nun jeden Wert und teilt diesen nach dem zweiten Trennzeichen. Am Ende hast du zwei Arrays, einmal die Bezeichner und auf dem gleichen Index im anderen Array die Werte. Der Anhang unten kann als .png abgespeichert werden und dann einfach per Drag&Drop in ein leeres VI gezogen werden, damit der Code sofort erstellt ist. (Siehe VI-Snipplet) (Notfalls ist der Code in der 14.0 Version mit hinzugefügt.) Die Anzeige und der Rest sollte eigentlich einfach sein Die Arrays durchlaufen und per CASE Struktur die jeweilige Anzeige eben aktualisieren bzw. die Historie erweitern. RE: Debug-Auswertung - Freddy - 22.03.2016 10:49 Mein Lösungsvorschlag: RE: Debug-Auswertung - Valduril - 22.03.2016 10:54 (22.03.2016 10:49 )Freddy schrieb: Mein Lösungsvorschlag: Feine Sache. Diese Anwendung der Tabellen-String Funktion war mir auch noch nicht bekannt. Vielen Dank RE: Debug-Auswertung - mijarena - 22.03.2016 10:56 Danke, aber das Attatchment bekomme ich nicht angezeigt (Fehler: Beitrag existiert nicht) und das vi (jep, ich habe 2014) kann ich erst heute abend anzeigen lassen. Ich bin hier gerade in der Schule und mein Privatrechner, auf dem Labview drauf ist, ist hier nicht vernetzt. Aber trotzdem Danke, ich bin sicher, das hilft mir dann schon mal weiter. Lieben Gruß, Miia RE: Debug-Auswertung - mijarena - 22.03.2016 11:22 Wärend ich noch geschrieben hatte änderte sich einiges, 1: ich kann jetzt das Bild sehen, und zweitens, es ist noch ein Beitrag mit einer Wundervollen Lösung dazugekommen. Ergo: bin wieder dabei mich weiter durchzuwühlen. Vielen Dank. Lieben Gruß, Miia RE: Debug-Auswertung - mijarena - 22.03.2016 14:00 So, ich habe jetzt mehr als 2 Stunden damit verbracht weiterzukommen. Aber .... Das Array habe ich ja jetzt. Nur, wie gebe ich es jetzt aus. Also, außer mit dem Array-Ausgabe-Feld. Ich möchte sowas wie Zeigerinstrumente etc. Aber alles was ich bis jetzt geschafft habe ist, von der letzten Zeile des Arrays beides wieder zu einem String zu verknüpfen und auszugeben. Und wirklich nur das letzte Element, nicht mal alle anderen vorher der Reihe nach durch. Ich würde mir ja jetzt sowas wie ein "foreach/key/value" wünschen... Kann mir jemand bei diesem Teilabschnitt ein paar Hinweise geben? Lieben Gruß, Miia RE: Debug-Auswertung - jg - 22.03.2016 14:07 Dann setzte jetzt deinen Pseudo-Code um. Die "Case"-Anweisung ist in LabVIEW die Case-Structure. Edit: Und ein "ForEach", das ist eine For-Loop. Gruß, Jens RE: Debug-Auswertung - mijarena - 22.03.2016 14:15 Die For Loop habe ich, aber wie schon erwähnt, ich bekomme immer nur die letzte Zeile des Arrays angezeigt. Also, wenn ich mir das Array vor der Loop anzeige, mithilfe eines Anzeigeelementes, dann kann ich alle Zeilen durchgehen. Einwandfrei. Aber innerhalb der Loop habe ich plötzlich nur noch eine einzige Zeile. Ich vermute netürlich, dass ich da irgendetwas falsch verdrahte oder einstelle, aber ich habe inzwischen keine Idee mehr, was. EDIT: ich habe nun die Sonde gefunden und stelle fest, dass zwar alle Werte in die For Loop reingehen, der Indexzähler aber immer nur den höchsten Wert referenziert. Wie bringe ich das Teil jetzt dazu alles durchzuzählen? RE: Debug-Auswertung - jg - 22.03.2016 14:20 Dann zeig doch mal, was du machst, anstatt rumzueiern. Gruß, Jens |