LabVIEWForum.de
Array index durch Boolean - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array index durch Boolean (/Thread-Array-index-durch-Boolean)



Array index durch Boolean - Dom0503 - 20.09.2011 07:40

Hallo Zusammen,

ich versuche jetzt schon länger einen "Zeilenwechsel eines Arrays" durch einen Boolean zu bewirken. Ich krieg das einfach nicht hin.

Ich habe einen 1D Array den ich gerne auf Knopfdruck Splitten würde.

Ein Beispiel:

Array vorher: 1, 2, 3, 4, 5, 6

wenn ich nun zum Zeit Punkt 3 einen Boolean betätige möchte ich daraus:

Array nachher:

1, 2, 3
4, 5, 6

haben.

Anbei noch meinen kläglichen Versuch das umzusetzten Wink


RE: Array index durch Boolean - M@rRy - 20.09.2011 07:49

Guten Morgen,

wenn du dein VI als Bild hochlädst schaue ich mir das gerne an.

Was heißt denn für dich "Zeitpunkt 3"? Wenn du nach 3 Sekunden auf den Knopf drückst oder wie? Was mir dazu spontan einfällt wäre ein event das zum beispiel auf "Value Change" des Boolean reagiert und daraufhin aus einem Zeitstempel deinen "Zeitpunkt" nimmt und den in eine Variable schreibt um dann im Hauptmenü diese zum splitten zu nutzen.
Eventuell müsstest du dann hier noch eine kleine skalierung auf die Länge des Arrays vornehmen, damit, wenn ein User auf die Idee kommt nach 2 Minuten auf den Knopf zu drücken, auch was sinnvolles passiert.

Gruß


RE: Array index durch Boolean - GerdW - 20.09.2011 08:26

Hallo Dom,

erster Fehler: Dein OutputArray2 ist leer und du versuchst bei Zeile 1 etwas einzufügen. Da nicht einmal Zeile 0 existiert, kann auch nichts eingefügt werden...

Zweiter Fehler:
Dein OutputArray wächst konstant an. Du willst immer das komplette Array in Array2 einfügen, d.h. dein Array2 muss beständig erweitert werden, da bei einem 2D-Array alle Zeilen gleich lang sein müssen.

Dritter Fehler: Übermäßiger und unnötiger Gebrauch von lokalen Variablen.

Hier mal dein VI ohne locals, und ohne Änderung der Arbeitsweise:
[attachment=35991]

Du musst jetzt noch:
- merken, wann das letzte mal ein Umbruch stattfand, um nur den danach neu erzeugten Teil von OutputArray zu übernehmen
- dein Array2 ordentlich initialisieren
- überlegen, ob BuildArray nicht sinnvoller ist (da du nur Zeilen unten anhängen willst), statt InsertIntoArray...
- überlegen, ob die gewählte Datenstruktur wirklich die am besten geeignete für deinen Zweck ist


RE: Array index durch Boolean - jg - 20.09.2011 08:32

Ich verstehe nicht, was dein VI mit deiner Frage zu tun hat. Da ist doch nichts von Array splitten drin?!

Vielleicht meinst du sowas hier?
[attachment=35992]

Gruß, Jens


RE: Array index durch Boolean - Dom0503 - 20.09.2011 09:02

Tut mir leid ich glaube ich habe mich da etwas undeutlich ausgedrückt. Und auch das Vi was ich hochgeladen habe ist im nachhinein betrachtet witzlos. War mit dem Post was übereifrig....bzw. habe ich auch nen anderen Ansatz gefunden.

So nochmal was ich eigentlich vorhabe:

Ich starte ein SubVi.

In diesem SubVi wird in einer begrenzten Forschleife ein Array (1D) erzeugt.

Wenn das SubVi erneut ausgeführt wird, wird das 1D Array wieder erzeugt. Die 1D Arrays sollen nacheinander in ein 2D Array geschrieben werden.

So und da ich den Ansatz jetzt habe, habe ich das Problem auch selber gelöst Wink

Daran kann man sehen, das wenn man eine konkrete Frage formuliert man schneller an die Antwort kommt.

Danke trotzdem für die Mühe.
Anbei noch die Lösung.


RE: Array index durch Boolean - jg - 20.09.2011 09:16

Unnötiger Gebrauch von lokalen Variablen, vor allem, wenn das Ganze als SubVI laufen soll.

Anbei 2 Varianten, verpackt in einem VI.
[attachment=36000]
Gruß, Jens


RE: Array index durch Boolean - Dom0503 - 20.09.2011 09:39

Danke für die Lösung.

Immer diese Lokalen Variablen. Muss die mal stark reduzieren.