Frage zu Arrays - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Frage zu Arrays (/Thread-Frage-zu-Arrays) Seiten: 1 2 |
Frage zu Arrays - Y-P - 03.02.2010 10:17 Ich habe das Gefühl, dass Du mit aller Gewalt die Denkweise von C++, Java,... auf LabVIEW übertragen möchtest. Es ist besser wenn Du bei LabVIEW offen für was neues bist und Dir die "normale" LabVIEW-Programmierung aneignest. Die objektorientierte Programmierung mit LabVIEW macht die ganze Sache nur viel schwieriger, vor allem wenn Du auch hier im Forum mal Fragen zu irgendetwas hast. Letzendlich bleibt das aber Deine Entscheidung. Gruß Markus Frage zu Arrays - eliot - 03.02.2010 11:30 @SeBa Ah, danke für den Tipp! @all Vielen Dank für eure wirklich guten Antworten und die Unterstützung. Echt sehr nette Leute hier im Forum. Das Beispiel hier war eher zu Lehrzwecken meinerseits gedacht, nicht als funktionales Beispiel (ich wollte Klassen und Arrays ausprobieren). Ich habe hier ebenfalls ein Buch zu LabVIEW: Einführung in LabVIEW von Wolfgang Georgi Das Buch läßt leider viele Fragen offen (wie das Handbuch von LabVIEW auch). Mir scheint die Literatur zum Thema LabVIEW scheint sich nicht gerade an Informatiker zu richten, vielleicht habe ich auch einfach die falsche Sichtweise auf die Dinge. Viele Dinge sind nicht eindeutig und hinreichend Dokumentiert, oder ich mache mir einfach zu viele Gedanken. Eine Frage zu Clustern (Structs im weiteren Sinne): Kann ich diese irgendwie so definieren, dass sie in mehreren Vis zur Verfügung stehen? Denn aufteilen in Funktionen (SubVis) würde ich gerne weiterhin, auch ohne Klassen (das macht die Sache einfach übersichtlicher). Wie würde das obere Beispiel (Cluster: Vector3D, SubVi Set und Get) als mit Cluster aussehen? EDIT: Wenn ich den Debug Modus Aktiviere (gelbe Lampe) kann ich die den Datenfluss verfolgen. Aber leider sehe dann nicht, was in den SubVis geschieht. Gibt es da eine Möglichkeit? BTW Ich glaube ich sollte das Thema dieses Threads in "Noob Fragen" ändern Frage zu Arrays - Y-P - 03.02.2010 11:40 Dafür könntest Du z.B. eine FGV (Funktionale globale Variable) nehmen. Gruß Markus ' schrieb:Eine Frage zu Clustern (Structs im weiteren Sinne): Kann ich diese Frage zu Arrays - GerdW - 03.02.2010 11:42 HAllo eliot, was du suchst sind typedefs! Einfach den Cluster definieren, markieren, Menu->Edit->Customize Control, dort dann als typedef einstellen und speichern. Dann kannst du den Cluster überall einfügen (Rechts-Klick auf Frontpanel->choose control) und er wird (bei Änderungen am typedef) automatisch angepasst. Dazu gibt's auch was in der LabVIEW-Hilfe Edit: Beim Debuggen auf Einzelschritt umstellen. Dann kannst du auch in SubVIs hineinsteppen... EditEdit: Den Vorschlag mit FGVs hattest du ja schon weiter oben erhalten. Und der Tipp, den Datenfluß mit einem ErrorCluster zu bestimmen, kam bestimmt auch schon... "BTW ..." JA! Edit3: Wenn du erst ein Array mit 3 Werten initialisiert und danach dann die 3 Werte durch andere ersetzt, dann kannst du auch gleich einfach ein Array bauen aus den 3 Werten... Frage zu Arrays - eliot - 03.02.2010 11:52 ' schrieb:HAllo eliot, Was sind FGVs? EDIT: Ziehe die Frage zurück, das Buchweiss was dazu Wie kann ich ein Array gleich mit drei Werten initialisieren? EDIT2: Ok, einfach aufziehen! Typedefs, gute Sache, das werde ich mir anschauen (Endlich mal wieder ein bekanntes Wort)! Frage zu Arrays - eliot - 03.02.2010 12:15 Hmm, das Array Initialisieren scheint nicht zu gehen. Das Array wird wie in Bild eins Konfiguriert, allerdings hatt es dennoch die Länge 0. Da ich im Set Vi das Array erstellen raus genommen habe (da nicht mehr notwendig), kann die Array erstzen Funktion nichts machen (Array hat dir Länge 0). Frage zu Arrays - IchSelbst - 03.02.2010 12:26 Zum ersten Bild: Wenn in der Indexanzeige 3 steht, dann bedeutet das, dass das erste im Frontpanel angezeigte Element den Index 3 hat. Die Elemente Index 0, 1 und 2 sind also nicht sichtbar. Demzufolge kann man aus dem Bild nicht ersehen, ob die Länge 3 ist oder nicht. Zum zweiten Bild: Das mit "In Array ersetzen" stimmt so aber nicht: Du hast auf den zweiten Index-Eingang die variable Y gelegt. Eins zur Typdefinition: Ich ziehe strikte Typdefinitionen vor. Frage zu Arrays - eliot - 03.02.2010 13:17 ' schrieb:Zum ersten Bild: Ups, ja, Arrays setzen war falsch verbunden, danke! Zum ersten Bild: Wie initialisiere ich denn dann Array mit uint32 der Länge 3??? Laut Buch, soll ich das Array auf 3 Elemente aufziehen, dann wird ein Array der länge 3 initialisiert?! Vorher hatte ich die Funktion "Array initialisieren" genutzt, wenn die Länge des Arrays nicht 3 ist (in der set Mehode/Vi). Das hatte dan Funktioniert. Ich habe die Änderung vorgenommen, da mir gesagt wurde, dass ich Blockdiagramm das Array schon mit 3 Werten vorbelegen kann, eine anschließdene Initialiserung ist dann nicht mehr nötig! regards eliot EDIT: Ok, das Aufziehen eines Ararys allein reicht nicht aus. Man muss zusätzlich noch folgendes ausführen: Bearbeiten -> Aktuelle Werte als Standard. Dann wird das Array der Länge 3 initialisiert. Das Problem ist nur: Man hat keinerlei Kontrollmöglichekiten, ob eine Array mit einem Standard intiialisiert wird oder nicht. Wie kan ich festellen, dass ein Array mit Standards versheen ist? Frage zu Arrays - GerdW - 03.02.2010 13:45 Hi eliot, ich hatte nicht gesagt, dass du weiterhin "replace array subset" benutzen sollst... Ich sagte (äh: meinte), dass du stattdessen einfach "Build Array" benutzt! Warum erst initialisieren und Werte ersetzen, wenn ein einfache BuildArray (hier) genauso gut funktioniert... Edit: Für ein "BuildArray" musst du vorher nichts initialisieren (wir sind ja hier nicht bei C#, oder so ) @IchSelbst: Strikte TypeDefs haben den Vorteil (?), dass auch "kosmetische" Einstellungen propagiert werden. Dies ist für einen einfachen Datenbuffer, der m.M. nach in diesem Fall nie auf dem Userinterface zu sehen sein wird, reichlich Overkill... EditEdit: Wenn du ein Array initialisierst (ich rede von der Funktion "Init Array"!), dann gibst du einen Standardwert vor. Du weißt also, ob und womit initialisiert wurde... Wenn du das hinterher nochmal überprüfen willst, musst du dir eine der zahlreichen Vergleichsfunktionen aussuchen. Frage zu Arrays - IchSelbst - 03.02.2010 14:02 ' schrieb:Strikte TypeDefs haben den Vorteil (?), dass auch "kosmetische" Einstellungen propagiert werden.Das ist kein Vorteil, sondern ein Nachteil Zitat:Dies ist für einen einfachen Datenbuffer, der m.M. nach in diesem Fall nie auf dem Userinterface zu sehen sein wird, reichlich Overkill...Gerade wenn der Cluster nicht am FP zu sehen ist, ist es sinnvoller eine strikte Definition zu machen. Mit normalen Definitionen habe ich bisher mehr Probleme (keine Schwierigkeiten, sondern Probleme) gehabt, als die strikte Definition Einschränkungen hat. Probleme treten immer dann auf, wenn der Typ geändert werden soll. |