LabVIEWForum.de - Daten aus einer For-Schleife werden nicht korrekt übertragen

LabVIEWForum.de

Normale Version: Daten aus einer For-Schleife werden nicht korrekt übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo brik,

lad doch nochmals dein aktuelles VI hoch. Da sind noch ein paar Sachen, die können so nicht bestehen bleiben. Beispielsweise der Zugriff auf ein Element per Eigenschaftsknoten. Außer der mangelnden Performance, die hier wahrscheinlich keine Rolle spielt, handelst du dir Race Conditions ein.
' schrieb:Hallo brik,

lad doch nochmals dein aktuelles VI hoch. Da sind noch ein paar Sachen, die können so nicht bestehen bleiben. Beispielsweise der Zugriff auf ein Element per Eigenschaftsknoten. Außer der mangelnden Performance, die hier wahrscheinlich keine Rolle spielt, handelst du dir Race Conditions ein.

Hallo Julius,

selbstverständlich lade ich mein VI hoch. Jedoch sind in der aktuellen Version noch "ein paar" Funktionen hinzugekommen, so dass sich hier einige eventuell wieder die Haare raufen werden.

Sollten du oder jemand anderes der Meinung sein, dass eine Funktion so wie ich sie realisiert habe, auf gar keinen Fall ausgeführt werden sollte, so würde ich mich natürlich über Verbesserungsvorschläge sehr freuen. Es bringt mir allerdings sehr wenig, wenn einfach etwas geändert wird, bei dem ich nicht nachvollziehen kann was und/oder warum. Dann mache ich es beim nächsten Mal ja wieder falsch und ich würde gerne noch was lernen. Eine entsprechende Erklärung wäre also super.

Also, danke schon mal für die Hilfe und hier ist mein VI:

Lv10[attachment=31903]

+ entsprechende SubVIs im Anhang
+ benötigte Textdatei zum Einlesen.

Thanx
Ich hab ein paar Änderungen vorgenommen. Jedoch solltest du den Aufbau deines Programmes überdenken. Ich würde für so etwas ein Statemachine verwenden, denn so ließen sich bei dir unvermeidlich Konflikte vermeiden. Wenn dein Programm allerdings soweit funzt und keine durchschnittlischer User damit schaffen muss, dann kannst es auch lassen. Ich prophezeie dir allerdings, dass es mit dem Programm massive Probleme geben wird, wenn nicht nur du es bedienen muss. Zur Inspiration schau dir in Labview unter Datei -> Neu... doch die Entwursmuster für "Erzeuger/Verbrauch" an und schau dir auch mal die Beispiel-VIs an. Da gibt es zwar keine Funde unter den Stichworten Statemachine oder Zustandsautomat, aber einiger der Beispiele beruhen auf solch einem Entwurfsmuster. Nicht zu vergessen das Gegenteil davon.

Lv10[attachment=31918]
Lv10[attachment=31919]
Hab's jetzt nur überflogen, aber zwei Eventstrukturen in einem VI würde ich vermeiden (wird auch von NI empfohlen). Was gar nicht gehen würde, wären zwei Eventstrukturen in einem VI. Und wie Schrotti schon sagt, eine Statemachine wäre für so etwas besser geeignet.

Gruß Markus
' schrieb:Ich hab ein paar Änderungen vorgenommen. Jedoch solltest du den Aufbau deines Programmes überdenken. Ich würde für so etwas ein Statemachine verwenden, denn so ließen sich bei dir unvermeidlich Konflikte vermeiden. Wenn dein Programm allerdings soweit funzt und keine durchschnittlischer User damit schaffen muss, dann kannst es auch lassen. Ich prophezeie dir allerdings, dass es mit dem Programm massive Probleme geben wird, wenn nicht nur du es bedienen muss. Zur Inspiration schau dir in Labview unter Datei -> Neu... doch die Entwursmuster für "Erzeuger/Verbrauch" an und schau dir auch mal die Beispiel-VIs an. Da gibt es zwar keine Funde unter den Stichworten Statemachine oder Zustandsautomat, aber einiger der Beispiele beruhen auf solch einem Entwurfsmuster. Nicht zu vergessen das Gegenteil davon.

Lv10[attachment=61088:024_Date...lidieren.vi]
Lv10[attachment=61089:101_SubV...0_string.vi]

Vielen Dank für die Verbesserungen und die Erklärungen.
Ich sehe absolut ein, was du zu der Realisierung mit einer Statemachine sagst. Ich bin mir sicher, dass das dadurch sehr viel strukturierter und ressourcenschonender würde, allerdings bin ich schon bei den ersten Ansätzen bei der Umsetzung einer Statemachine gescheitert. Ich hätte zu dieser Realisierung weitaus mehr Zeit benötigt als bei meinem jetzigen Programm.
Nichtsdestotrotz werde ich mich weiter mit dem Thema auseinandersetzen und gucken, ob ich es vielleicht nicht doch noch hin bekomme.
Was siehst du denn für potentielle Probleme in meinem Programm, gerade im Bezug auf fremde Benutzer?

Und gut, dass du noch in das SubVI reingeschaut hast. Die Lösung mit dem Array, was aus 36 Elementen bestand war nur provisorisch. Als ich an den Divisionsknoten eine Konstante angefügt habe, hat er mir automatisch ein Array erstellt und ich wusste auf die Schnelle nicht, wie ich das ändern kann. Die Lösung mit der Konstante ist natürlich mehr als trivial, aber ich habe es nachher schlichtweg vergessen.


' schrieb:Hab's jetzt nur überflogen, aber zwei Eventstrukturen in einem VI würde ich vermeiden (wird auch von NI empfohlen). Was gar nicht gehen würde, wären zwei Eventstrukturen in einem VI. Und wie Schrotti schon sagt, eine Statemachine wäre für so etwas besser geeignet.

Gruß Markus

Ah, das war mir nicht bewusst. Allerdings habe ich es einfach nicht hinbekommen, die TCP-Verbindungsinformationen aus der Schleife mit Meldern an die Casestruktur zu übergeben, deswegen brauche ich einmal die Schleife, die abbricht, wenn die Verbindung hergestellt wurde und einmal die Schleife die weiter läuft.
Bei der Ereignisstruktur ganz rechts mit den booleschen Abfragen habe ich es auch nicht anders hinbekommen.Sad
Ich werde bei Gelegenheit weiter daran arbeiten und versuchen es zu ändern.

Soweit läuft mein Programm jetzt aber so wie ich es mir vorgestellt habe. Deswegen haben aus Zeitmangel nun andere Dinge Priorität.

Nochmals Danke, ihr wart bis jetzt schon eine sehr große Hilfe.
Seiten: 1 2
Referenz-URLs