INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Daten in eine Sub.vi transferieren.



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

05.03.2010, 14:55
Beitrag #1

bluesaturn Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 145
Registriert seit: Jan 2010

2009
2010
en

-
United Kingdom
Daten in eine Sub.vi transferieren.
Hallo LabVIewForum.

Ich wuerde Euch erneut bitte etwas fragen, weil ich eine Anfaengerin bin.

In meiner Main.vi sind drei PushButton.vis, die jeweils ein Cluster namens 'Memory' ausgeben. Da mein Frontpanel schon zu voll ist, moechte ich diese Daten gerne in einem zweiten Fenster oder mit der Hilfe eines Tabs als Liste einbauen. Im zweiten Fenster (oder zweitem Tab) sollen diese Cluster in der Reihenfolge aneinander angehaengt werden, wie die entsprechenden Knoepfe (Sample, Air, Buffer) im Main.VI gedrueckt worden sind. Ich moechte sozusagen aufzeichnen, was passiert. Am Ende soll eine Liste wie folgt im Fenster stehen:
Sample 5 ml 1
Air 5 ml 0
Buffer 10 ml 1
1 oder 0 sind Flags, die mir sagen, ob die entsprechende Fluessigkeit injiziert oder herausgesaugt worden ist.
Wie sammelt man Daten und schickt sie in eine Sub.vi in ein zweites Zimmer bzw. wie schickt man sie auf Kommando in die Sub.Vi und in das zweite Fenster?


Koennte mir bitte jemand ein paar Tips geben? Das waere klasse.
Ueber Stichworte freue ich mich auch. Eventstrukturen kann ich leider nicht nutzen.

Ich haenge meine Main_v1.vi an und die Pushbutton_X.vi an. Die Pushbutton_X.vi produziert das Memory-Cluster.
Es istLv85_img.

Vielen Dank fuer Hinweise.
Viele Gruesse
Blue


Angehängte Datei(en)
Sonstige .vi  PushButton_X.vi (Größe: 38,57 KB / Downloads: 183)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.03.2010, 15:08
Beitrag #2

BsaiboT Offline
LVF-Stammgast
***


Beiträge: 449
Registriert seit: Nov 2009

2010
2007
kA

22459
Deutschland
Daten in eine Sub.vi transferieren.
Du hast das main.vi vergessen....

Aber im Prinzip, kannst du die Cluster, sofern sie vom Typ identisch sind, in ein Array speichern, sobald einer der Buttons gedrückt wird.
Da du keine Events nutzen kannst, musst du hierfür halt mit Fallunterscheidungen arbeiten. Das Array kannst du leicht in einem Schieberegister halten und somit immer nur bei Betätigung eines Buttons ein weiteres Element (Cluster) einfügen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2010, 16:08
Beitrag #3

bluesaturn Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 145
Registriert seit: Jan 2010

2009
2010
en

-
United Kingdom
Daten in eine Sub.vi transferieren.
Upps, tut mir leid. Ich dachte,ich haette das Main angefuegt. Sie funktioniert gerade nicht, weil ich mit dem Cluster rumprobiere, aber ich haenge sie trotzdem an.
Ja, die Cluster sind immer identisch. Zumindest sind sie alle gleich aufgebaut.
Um sie in ein Array abspeichern zu koennen, muss ich irgendwas beachten?

Mein bisheriger Ansatz war auch, ein Cluster vor dem Schieberegister (links) zu initialisieren, um dann die anderen Cluster anzufuegen. Ich haette den Cluster unveraendert durch die False-Schleife laufen lassen und ein 'Append' im True-Case versucht. Ich nehme an, das hast du gemeint, falls ich dich richtig verstanden habe.
Im Moment kaempfe ich gerade noch mit dem Anhaengen eines Cluster an einen anderen. Vielleicht muss man doch den Weg ueber Insert Array oder Replace Subset Array gehen. Ich probier das einmal aus.

Vielen Dank
Gruesse Blue

LabVIEW VersionLv85_img


Angehängte Datei(en)
Sonstige .vi  Main_v1.vi (Größe: 90,28 KB / Downloads: 193)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2010, 17:32 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2010 17:32 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Daten in eine Sub.vi transferieren.
Hallo Blue,

ich habe der Einfachheit halber mal ein "Build Array" an der fraglichen Stelle eingefügtSmile

Warum initialisierst du das Shiftregister mit einem Array mit einem Element? Sollte das Array nicht leer sein, d.h. 0 Elemente haben?


Angehängte Datei(en)
Sonstige .vi  Main_v1.vi (Größe: 87,85 KB / Downloads: 175)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2010, 18:31 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2010 18:31 von bluesaturn.)
Beitrag #5

bluesaturn Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 145
Registriert seit: Jan 2010

2009
2010
en

-
United Kingdom
Daten in eine Sub.vi transferieren.
' schrieb:Hallo Blue,

ich habe der Einfachheit halber mal ein "Build Array" an der fraglichen Stelle eingefügtSmile

Warum initialisierst du das Shiftregister mit einem Array mit einem Element? Sollte das Array nicht leer sein, d.h. 0 Elemente haben?

Hallo Gerd,

bevor ich deinen Beitrag gesehen habe, hatte ich diese Funktion auch endlich gesehen:)Ich kenne noch nicht alle Funktionen und so hat es ein wenig gedauert. (:rolleyes:auf mich bezogen). Man muss halt selber lernen ...Smile
Ja, das Array sollte am Anfang leer sein. Ich habe das jetzt wie folgt geloest: Einen fastleeren Cluster (warum kann man kein empty double haben? empty strng geht doch auch?) als Element fuer "Initialize Array.vi" angehaengt. Die Dimension auf 0 gesetzt. Das sollte mir ein leeres Array geben, dass ich spaeter zum Anhaengen der Cluster nutze.

Das Programm funktioniert jetzt insofern, als dass die Cluster solange angehaengt werden, bis die Schleife stoppt.
Leider existiert aber noch folgende Probleme, um die ich mich kuemmern moechte:

1. Die gesammelten Cluster muss ich noch in ein anderes Fenster oder einen Tab auslagern und am besten Speichern.
2. Die Main.vi besteht ja im wesentlichen aus einer Schleife und einzelnen Cases, die zusammen eine Event-Struktur ergeben. So habe ich das bisher verstanden. Drueckt man den Sample-Knopf, wird das Programm, was sich dahinter verbirgt, ausgefuehrt. Zuvor hat man z.B. das zu injizierende Sample-Volumen eingegeben. Dann laeuft die Main.vi kontinuierlich.
Hier jetzt das Problem: Man kann zwar im Run Continuously Mode immer noch ein anderes Sample-Volume am Control-Icon eingeben, jedoch wird das nicht akzeptiert. Man muss rest den Stop-Button druecken, damit dieser Wert aktualisiert wird.
Das wiederum ist total daemlich, weil ich dann meine Liste, die aus den oben genannten Clustern hervorgeht, verliere, weil die Schleife wieder von vorne startet und das Schieberegister mit dem Array neu initialisiert wird. Gibt es fuer solche Faelle auch eine Loesung?
Ich dachte daran, dass man vielleicht eine Vi an das Schieberegister anbaut, die entweder die alte Liste, die zuvor als Textdatei auf Platte geschrieben wird, einliest und weiterbenutzt, oder ggf. eine neue Liste anfaengt. Das kaeme mir jetzt als erstes in den Sinn, aber vielleicht gibt es bessere Moeglichkeiten?

Ich haenge nochmal meine aktuelle Version an.
Lv85_img

Beste Gruesse und vielen Dank fuer Eure Geduld. Ich bemuehe mich wirklich.

Blue


Angehängte Datei(en)
Sonstige .vi  Main_v1.vi (Größe: 110,89 KB / Downloads: 164)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2010, 22:02 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2010 22:16 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Daten in eine Sub.vi transferieren.
Hallo Blue,

"Hier jetzt das Problem: Man kann zwar im Run Continuously Mode..."

Uh-oh, rotes Tuch - tief durchatmen, bis 10 zählen.

Benutze bitte nie, niemals, unter keinen Umständen den "Run Continuous Mode" für ein "lauffähiges" Programm. Der ist nur, wirklich nur, kannste mir wirklich glauben, zum Debuggen gedacht! Es gibt im NI IdeaExchange einen Vorschlag, den per Default zu verstecken - ich habe den Vorschlag unterstütztSmile

So, jetzt wo ich das gesagt habe, kann's weitergehen. Puls wieder unter 120Smile

Das Problem liegt z.T. am Run Continuous Mode und zum anderen an deinem VI. Mach einfach eine Schleife um deinen bisherigen Code, dann hast du schon mal das gleiche wie im RunCont*** erreicht. Jetzt musst du noch den Datenfluß beachten. Wenn die Änderung eines Controls in einer Schleife ausgewertet werden soll, dann muss das Control auch in der Schleife liegen. Datenfluß!!!

"warum kann man kein empty double haben?"
Kannst du mal erklären, wie das aussehen soll? Egal in welcher Programmiersprache? Du definierst eine "Variable" als Zahl, es wird Speicher reserviert und es steht ein Wert im Speicher (egal ob ein definierter wie Null oder irgendwelcher Datenmüll). Die Zahl beansprucht Speicherplatz und hat per se einen Wert. Bei einem String ist das was anderes. Der besteht aus 2 Werten: der Zeichenkette und einer Längenangabe. Da kann der String leer sein, dann ist die Länge halt Null. Du siehst aber nicht, das LV im Hintergrund mindestens 4 Byte Speicherplatz belegt hat (eher 8 Byte auf einem 32bit-OS: LONG length + [empty] MEMPTR)...
Um ein leeres Array zu definieren, brauchst du keinen leeren Cluster. Der dient beim InitArray (quasi) nur als TypDefinition, wenn du als Dimensionsgröße Null angibst..

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.03.2010, 10:24
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Daten in eine Sub.vi transferieren.
Hat mit der Sache um die es geht nichts zu tun: Habe mal durch zusätzliches Clustering einen Teil des BD eleganter gestaltet. Die Cluster sind transparent, so daß sich am Aussehen des FP überhaupt nichts ändert.
Lv85_img
Sonstige .vi  Main_v1_WA.vi (Größe: 83,92 KB / Downloads: 201)

Sonstige .vi  PushButton_X_WA.vi (Größe: 37,44 KB / Downloads: 186)

Sonstige .ctl  Settings.ctl (Größe: 11,11 KB / Downloads: 201)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2010, 12:36
Beitrag #8

bluesaturn Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 145
Registriert seit: Jan 2010

2009
2010
en

-
United Kingdom
Daten in eine Sub.vi transferieren.
' schrieb:Hallo Blue,

"Hier jetzt das Problem: Man kann zwar im Run Continuously Mode..."

Uh-oh, rotes Tuch - tief durchatmen, bis 10 zählen.

Benutze bitte nie, niemals, unter keinen Umständen den "Run Continuous Mode" für ein "lauffähiges" Programm. Der ist nur, wirklich nur, kannste mir wirklich glauben, zum Debuggen gedacht! Es gibt im NI IdeaExchange einen Vorschlag, den per Default zu verstecken - ich habe den Vorschlag unterstütztSmile

So, jetzt wo ich das gesagt habe, kann's weitergehen. Puls wieder unter 120Smile

Das Problem liegt z.T. am Run Continuous Mode und zum anderen an deinem VI. Mach einfach eine Schleife um deinen bisherigen Code, dann hast du schon mal das gleiche wie im RunCont*** erreicht. Jetzt musst du noch den Datenfluß beachten. Wenn die Änderung eines Controls in einer Schleife ausgewertet werden soll, dann muss das Control auch in der Schleife liegen. Datenfluß!!!

"warum kann man kein empty double haben?"
Kannst du mal erklären, wie das aussehen soll? Egal in welcher Programmiersprache? Du definierst eine "Variable" als Zahl, es wird Speicher reserviert und es steht ein Wert im Speicher (egal ob ein definierter wie Null oder irgendwelcher Datenmüll). Die Zahl beansprucht Speicherplatz und hat per se einen Wert. Bei einem String ist das was anderes. Der besteht aus 2 Werten: der Zeichenkette und einer Längenangabe. Da kann der String leer sein, dann ist die Länge halt Null. Du siehst aber nicht, das LV im Hintergrund mindestens 4 Byte Speicherplatz belegt hat (eher 8 Byte auf einem 32bit-OS: LONG length + [empty] MEMPTR)...
Um ein leeres Array zu definieren, brauchst du keinen leeren Cluster. Der dient beim InitArray (quasi) nur als TypDefinition, wenn du als Dimensionsgröße Null angibst..


Hallo Gerd,
danke fuer deine Geduld und entschuldige, dass ich dich auf die Palme gebracht habe. Entschudige fuer die verspaetete Rueckmeldung, ich war leider krank.

Ich muss kurz etwas zu meiner Verteidigung sagen:

Meine Main.vi basiert auf einem Beispiel der Firma Harvard Apparatus. Ein Programmierer dieser Firma hat diese Treiber ins Netz gestehlt und eben dieses Beispiel, was ich weiter modifiziert habe, auch. Da ich leider absolute Anfaengerin bin, dachte ich mir nix weiter. Ich habe erstmal nicht vermuten, dass hier etwas falsch programmiert wurde. Das ist dann auf meine eigene Unwisseneit zurueckzufueren.

Gerd, der gesamte Code soll in eine Schleife? Okay, daran probiere ich mich einmal heute. Den Datenfluss schaue ich mir auch einmal genauer an.

Empty double: Danke fuer die sehr gute Erklaerung. Ja, ich meinte soetwas wie einen leeren String.
Um ein empty array mit Typdefinition Cluster anzugeben, ist es notwenig InitArray dem Typ Cluster mitzuteilen. Habe ich das richtig verstanden, dass man, wenn der Cluster selbst aus String, Double, String besteht, diese Art Cluster InitArray auch mitteilen muss, damit man solche Cluster spaeter auch anhaengen kann? Jedenfalls habe ich gerade probiert, ein leeres Cluster an InitArray zu haengen (Rest gleich) und es gab eine Fehlermeldung, dass die Cluster unterschiedlich sind.

Viele Gruesse
Blue
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2010, 12:47 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2010 12:49 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Daten in eine Sub.vi transferieren.
Hallo Blue,

InitArray legt ein Array mit einem bestimmten Datentyp an. Um welchen Datentyp es sich handelt, musst du natürlich mitteilen. Und ein leerer Cluster (d.h. nur die Cluster-Konstante ohne irgendwelche Elemente) ist da wenig hilfreich. Ein Cluster ist erstmal nur eine Art Container oder Hülle - aber keine gültige Datentyp-Beschreibung.

Wenn du also ein Array von Cluster von (String, DBL, String) haben willst, dann musst du als Datentyp ein Cluster(String, DBL, String) vorgeben!

Ich sagte nicht "soll". Aber der RunCont.Mode macht nichts weiter als dein VI immer wieder neu zu starten (leider mit Nebeneffekten,wie du gemerkt hast). Deshalb der Rat, eine Schleife zu benutzen - die macht genau das gleiche, ohne diese Nebeneffekte.
Gruß

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2010, 13:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2010 13:41 von bluesaturn.)
Beitrag #10

bluesaturn Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 145
Registriert seit: Jan 2010

2009
2010
en

-
United Kingdom
Daten in eine Sub.vi transferieren.
' schrieb:Hat mit der Sache um die es geht nichts zu tun: Habe mal durch zusätzliches Clustering einen Teil des BD eleganter gestaltet. Die Cluster sind transparent, so daß sich am Aussehen des FP überhaupt nichts ändert.
Lv85_img[attachment=53388:Main_v1_WA.vi] [attachment=53389:PushButton_X_WA.vi] [attachment=53390:Settings.ctl]

Guten Tag, Lucki.
Danke fuer deine Hilfe. Wenn ich es richtig verstanden habe, versteckst du die drei Cluster in diesem Settings.ctl (Control Element?), was anscheinend ein non-strict array ist. Magst du vielleicht bitte kurz erklaeren, was die Vorteile eines non-strict arrays sind. Ich lese darueber auch gleich etwas.
Was bedeutet bitte BD und "die Cluster sind transparent, so dass sich das Aussehen des FrontPanels nicht aendert"?

Hast du den Cluster Settings in Main.vi dadurch erzeugt, dass du dreimal setings.ctl darin eingefuegt hast?

Lucki, eine Frage bitte noch, hat es einen besonderen Grund, warum du close.vi ausgetauscht hast? Das sieht jetzt ganz anders aus als vorher.

Danke nochmals.
Viele Gruesse
Blue
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Daten in eine Tabelle speichern Gottimp 4 3.567 28.07.2021 16:47
Letzter Beitrag: jg
  Komplexe Daten in eine Datei schreiben smb 1 3.253 19.12.2016 15:33
Letzter Beitrag: GerdW
  So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden Matze 10 11.291 23.07.2010 15:27
Letzter Beitrag: Matze
  Gibt es eine Möglichkeit SubVIs zu erstellen ohne dass diese in eine neue Datei ausgelagert werden? hans_p 2 4.365 29.05.2009 08:20
Letzter Beitrag: VDB
  Mehrere Daten in eine Datei schreiben Destiny 5 4.981 19.08.2008 07:23
Letzter Beitrag: Xaran
  Daten in Echtzeit in eine Tabelle o.ä. schreiben? Marcus A 3 3.868 03.02.2007 15:03
Letzter Beitrag: Y-P

Gehe zu: