LabVIEWForum.de - 2D Array erstellen; Anzahl Zeilen abhängig von Cases

LabVIEWForum.de

Normale Version: 2D Array erstellen; Anzahl Zeilen abhängig von Cases
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Moin Dommas!

' schrieb:Ich verstehe nicht ganz, was du in deiner Schleife so anstellst.

Ich habe auch gerade versucht zu verstehen was du nun genau machen willst. Bisher stehe ich allerdings vollkommen auf dem Schlauch. Die erste Frage die mir aufkam ist die, was die Schleife denn nun genau machen soll? Sollen deine Arrays in nächsten Schleifendurchlauf weiterverarbeitet werden und betrachten wir das ganz nur statisch?
Des weiteren ist die Frage, ob bei der späteren Behandlung für dich die Info notwendig ist in welchen Case Daten zu deinen Array hinzugefügt wurden. Falls ja nehme doch statt 9 Elemente pro Reihe 10 und nutze das 0te Element dazu um dir eine Idee deines Case dort zu hinterlegen. Vorteil du brauchst nur dann was zu deinem Array hinzufügen, wenn das auch muss und hast trotzdem die Info woher die Daten stammen. Oder ist das Resultat 8x9 letztlich entscheidend?

Schöne Grüße
Falk
Hallo,

ich habe jetzt nochmal ein bischen umgebaut, ich hoffe jetzt wirds klarer. Die Sachen, die ich gelöscht habe, sollten sowas wie alternative Wege darstellen, aber ich glaube das war einfach nur Blödsinn.

Der Übersichtlichkeit halber habe ich hier nur einen Teil des ganzen VIs (also auch der Schleife) und auch nur 3 Cases dargestellt, insgesamt sind es aber 8, dazu gleich mehr. Die Arrays die am Ende erstellt werden (eines davon fällt noch weg) werden im gleichen Schleifendurchlauf noch verarbeitet.

Die Schleife soll, wenn ein Case aktiviert ist, aus dem Cluster die jeweiligen Werte holen, und im SubVI (EPDC_S3C_Command) ein Array daraus erstellen, das dann ein Format hat, das ich direkt auf den CAN schreiben kann. Ein Case steht also immer für ein Gerät am CAN.
Ich kann maximal 8 Geräte anschließen, deswegen soll das fertige 2D-Array 8 Zeilen haben. Die 9 Spalten sind meine 8 Byte CAN Daten und ein Element das später im Programm wieder gelöscht wird (das ist sowas in der Art, wie Falk gesagt hat), aber dazwischen drin noch gebraucht wird.
Die FOR-Schleife habe ich drin um aus dem auf 8x9 Elemente initialisierte Array die leeren Zeilen wieder zu löschen. Array oder Array2 ist dann das Ding, dass ich auf den CAN geben will. Wobei ich noch schauen will (interessehalber), ob ich einen Unterschied bei der Geschwindigkeit merke, wenn ich nach einem Element "0" suche und dann schaue, ob das an 0ter Stelle steht (oberer Case in der FOR-Schleife), oder wenn ich ihm sage schau dir das 0te Element an, ob das 0 ist.

Soviel zum Hintergrund.

Da ich damit rechne, dass mit den VIs Dauerlauftests gemacht werden sollen, möchte ich jetzt gerne sicherstellen, dass das Array speichermäßig immer das gleiche ist, also dass ich nicht durch irgendwelche Programmierfehler oder Unachtsamkeiten meinen Speicher voll mülle.
Ist das jetzt so sichergestellt, oder wo muss ich da noch was ändern, dass das passt?

{EDIT:
Und ich sehe gerade, dass ich in der FOR-Schleife auch mit Replace arbeiten muss, oder? Dann einfach den Iterator an "Index(row)" vom Replace anschließen und es müsste klappen denke ich mal, oder?

OK, das geht nicht. Replace geht ja nur mit einem Initialisierten Array}


Ich hoffe Ihr versteht jetzt halbwegs was ich will/brauche.

Danke und Gruß
Dommas

Lv09_img2
Hallo Dommas,

solange du nur mit 8*9 Werte arbeitest, würde ich diesen Aufwand mit Array-Konstante, Zeilen ersetzen, leere Zeile löschen etc. sparen und einfach die nötigen Zeilen per BuildArray zusammensetzen.
Jeder auch nur halbwegs moderne Rechner schafft das in <5µs und müllt dabei nicht den Speicher zu. (LabVIEW ist da manchmal intelligenter, als man denkt und benutzt schon einmal angeforderten Speicher erneut...)
Ok, alles klar. Dann mach ich das einfach mal so und zerbrich mir nicht weiter den Kopf.

Danke schön
Seiten: 1 2
Referenz-URLs