Hallo zusammen,
ich beschäftige mich nun seid ca. 3 Tagen mit LabView und hab daher nicht wirklich viel Erfahrung.
Nun zu meinem Problem:
Ich habe 3 Cluster erstellt. Jedes Cluster enthält einen Schalter und einen Ring.
Während des Betriebs dürfen gleichzeitig alle Schalter aktiv sein, jedoch muss der Wert des Rings unterschiedlich sein, bzw. wenn die Werte gleich sind muss eine Fehlermeldung ausgegeben werden(z.b Schalter 1 hat gleichen Wert wie Schalter 2).
Sobald der Fall eintritt das alle Schalter aktiv sind klappt es nicht mehr, die Fehler überschreiben sich gegenseitig.
Meiner Meinung nach habe ich die Code viel zu aufwendig gestaltet. Gibt es noch andere Möglichkeiten? Wie lässt sich ein überschreiben der Fehler verhindern?
Für Tipps und Hilfe wäre ich sehr dankbar.
Vielen Dank im Voraus.
Hi,
ich glaube du hast da was mit den Fehler falsch verstanden. Zum einen sind die Fehlercodes bereits mit definierten Fehlern belegt, zum anderen ist der String nicht die Fehlermeldung sondern die Fehlerquelle. Schau dir lieber erst mal die Hilfe zum Errorhandling an.
Zu deinem Programmablauf denke ich schau dir mal "in range" und "min max" an, befindet sich in der Palette der Vergleichsoperatoren. Damit sollte es einfacher gehen.
Gruß
Meinst du so etwas?
So wie das hier sind es nur 2 OpenG-Funktionen.
Sobald in "doppelteEinträge" etwas drin steht (ArrayGröße>0) sind doppelte Einträge vorhanden. Das Array spuckt gleich die Indizes mit aus, an welcher Stelle die doppelten Einträge zu finden sind im UrsprungsKanalwahl-Array
[
attachment=35759]
Hallo,
danke für die schnellen Antworten, hab es mittlerweile auch gelöst bekommen, nur allerdings sehr umständlich und es macht vielleicht den kompletten Ablauf etwas langsamer.
@erik.brenncke:
Ja von der Beschreibung her suche ich so etwas, verstehe aber deinen Code leider nicht, dafür fehlt mir einfach die Erfahrung.
Wenn du OpenG installiert hast, dann schau dir die Hilfe-Einträge zu den beiden Funktionen an.
Ich habe den QuellCode nur hineinkopiert für den Fall, dass du kein OpenG hast/kennst.
Also zuerst einmal habe ich 2 Arrays, statt 2 Cluster. Somit ist die Verarbeitung sehr einfach. Es sind also ein Array der Kanalauswähler und ein Array, das diese Kanalauswahl jeweils aktiviert/deaktivert.
Danach sind es nur 2 Funktionen:
1. Kanäle filtern. Es interessieren ja nur die Kanalauswähler, die auf sichtbar geschaltet sind. Nur in diesen wird auf doppelte Einträge geprüft. Zum filtern wird einfach das Array durchgegangen und wenn der einzelne gewählte Kanal auf sichtbar geschaltet ist, wird er zum Ausgangsarray hinzugefügt. So ensteht das Array, das nur sichtbare Kanäle enthält
2. Dieses gefilterte Array wird nun auf doppelte Einträge geprüft. Dazu wird jedes Element im Array nochmal gesucht, taucht es erneut auf, ist der Eintrag mindestens doppelt vorhanden. Er wird gelöscht und der Index des Eintrages wird sich gemerkt. Am Ende kommt das "bereinigte" Array (ohne doppelte Einträge) heraus, sowie die Indizes aller doppelten Einträge, welche ja gelöscht wurden.
Mit diesem Ergebnis siehst du nun sofort:
Wenn doppelte Einträge gefunden wurden, hast du die Indizes der betroffenen Kanalauswähler gleich zurückbekommen.
Bsp.: im Array "doppelte Kanäle" steht 2,5. Dann sind die Kanäle, die an Stelle 2 und Stelle 5 (Achtung Zählung beginnt bei 0) gewählt wurden doppelt und sollten verändert werden.
Wenn du Fragen hast, immer her damit.
Hi,
ich habe die Cluster nun in ein Array gepackt (mittels Array erstellen) und möchte mittels einer Schleife nach "aktiven" Schaltern suchen. Die Schleife hat Anzahl (Array Größe ) Durchläufe. Mit welcher Funktion kann ich nun auf die einzelnen Attribute der Cluster zugreifen?
Warum müssen die Schalter denn unbedingt in Clustern sein?
Du kannst nicht so ohne weiteres in einem Cluster suchen, es muss immer der Wert herausgezogen werden.
Ich gehe mal davon aus, dass du den Cluster verwendest damit der Kanal und der Schalter immer zusammen sind und du eine Bessere Übersicht behältst, erschwert dir aber den weiteren Ablauf deines Programms. Ich empfehle dir die Buttons in ein Array und die Kanäle in ein anderes zu packen, das ist programmtechnischen einfacher und du kannst mit den Array-Funktionen arbeiten.
Das sehe ich genauso wie illuminus.
So wie ich das sehe, möchtest du das Durchsuchen der Buttons "noch einmal zu Fuß" nachprogrammieren. Daran ist nichts verkehrt, so lernt man. Dennoch möchte ich dir noch einmal ans Herz legen, Dir den Quellcode anzuschauen, den ich gepostet habe. Bitte versuch ihn auch zu verstehen.
Zu deiner Frage: Die Funktionen die du suchst sind wahrscheinlich Index Array und "unbundle" / "unbundle by name" (aufschlüsseln - unter Cluster).
Bei weiteren Fragen, immer her damit.
(08.09.2011 16:08 )illuminus schrieb: [ -> ]Warum müssen die Schalter denn unbedingt in Clustern sein?
Du kannst nicht so ohne weiteres in einem Cluster suchen, es muss immer der Wert herausgezogen werden.
Ich gehe mal davon aus, dass du den Cluster verwendest damit der Kanal und der Schalter immer zusammen sind und du eine Bessere Übersicht behältst, erschwert dir aber den weiteren Ablauf deines Programms. Ich empfehle dir die Buttons in ein Array und die Kanäle in ein anderes zu packen, das ist programmtechnischen einfacher und du kannst mit den Array-Funktionen arbeiten.
Ich muss das Projekt weiterführen und kann deshalb nicht besonders viele Änderungen mehr vornehmen.