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 

Event-driven VI Example (LV 2014)



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!

08.02.2015, 15:28 (Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2015 15:43 von Lucki.)
Beitrag #1

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Event-driven VI Example (LV 2014)
Ich habe mir mal die Mühe gemacht, ein Musterbeispiel aus dem (schon lange vergriffenen) Buch David J. Ritter "LabVIEW GUI Essential Techniques" zu modernisieren. Das Beispiel war in Version 5.1, damals gab es noch gar keine Ereignisstruktur. Der Code ist gegenüber dem Original ganz anders; unverändert geblieben ist nur das FP und die Funktion.
Das aufzurufende VI ist "Event-Driven_Main.vi"
Geeignet als Lehrbeipiel für:
Event driven State-Machines mit Queues.
Öffnen und Schließen von Sub-Vis als Popup.
Es ist möglicherweise nicht perfekt. Kritiken sind hochwillkommen!
Gruß Ludwig.
PS: Falls das Interesse die Erwartungen übersteigt, könnten evtl noch einige Erklärungen nachgereicht werden...
Oder auf niedrigere Version kompilieren...


Angehängte Datei(en)
0.0 .zip  Event driven Example.zip (Größe: 200,03 KB / Downloads: 519)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.02.2015, 19:15
Beitrag #2

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Event-driven VI Example (LV 2014)
(08.02.2015 15:28 )Lucki schrieb:  ...
Oder auf niedrigere Version kompilieren...

Hallo Ludwig,

da sachste was! Smile
wenn es nicht zu viel Mühe macht, wäre es nett, wenn du das Paket auf mein Niveau runterspeichern könntest.

Danke!

Gruß, Marko



PS: gespannt auf die Antwort...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.02.2015, 23:39
Beitrag #3

teegee Offline
LVF-Grünschnabel
*


Beiträge: 49
Registriert seit: Jan 2015

2014
2003
EN


Sonstige
RE: Event-driven VI Example (LV 2014)
Ich hab das Beispiel im Buch und die Loesung nicht gesehen aber die moderne Version schaut nett aus.

Ein paar Sachen, die mir beim Anschauen aufgefallen sind.

- Das sequence diagram in Main ist wohl eines der seltenen Beispiele, wo eine state-machine overkill ist Smile Gute Wahl.
- Die Queues werden in sub-VIs erzeugt. Das macht den Zugriff in sub-VIs einfach, da sie nicht als Parameter uebergeben werden muessen. Der Uebersicht halber wuerde ich alle Get-Queue VIs in ein disabled diagram auf das Main BD legen.
- Im VI Ref Manager haette ich anstatt eines named cluster die Funktion Set/Get Variant Attribute benutzt. Bei der Anzahl der Elemente im Array macht das wahrscheinlich absolut nichts aus, aber da es sich um ein Beispiel handelt, ist dieses VI eine gute Gelegenheit dafuer.
- Das sequence diagram im VI Ref Manager (Return a Reference / True) gefaellt mir nicht. Es macht wenig Sinn die Haelfte vom code zu verstecken, nur um ein bisschen Platz zu sparen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2015, 09:31 (Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2015 09:58 von Lucki.)
Beitrag #4

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Event-driven VI Example (LV 2014)
@trinitatis
Hier die herunterkompilierte Version auf 2011:

0.0 .zip  Event-Driven_Main 2011.zip (Größe: 136,47 KB / Downloads: 423)

@teegee
Danke für die Anregungen, ich werde mich ernsthaft damit auseinandersetzen, aber das dauert.
Das Originalbeispiel ist zwar nicht so alt, dass es von der Version her auf lv2014 überhaupt nicht mehr laufen kann. Es läuft aber trotzdem nicht, irgendwelche Funktionen scheinen sich inzwischen verändert zu haben. Aber nichtsdestotrotz - hier das Original (Version 6.?):

80.8 .llb  Event-Driven(LV6).llb (Größe: 570,77 KB / Downloads: 387)

Das Buch ist übrigens neu nur noch in einem einzigen Exemplar verfügbar - also schnell zugreifen:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2015, 11:17
Beitrag #5

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Event-driven VI Example (LV 2014)
(10.02.2015 09:31 )Lucki schrieb:  @trinitatis
Hier die herunterkompilierte Version auf 2011:

Danke!


Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2015, 11:46
Beitrag #6

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
RE: Event-driven VI Example (LV 2014)
(10.02.2015 09:31 )Lucki schrieb:  Das Buch ist übrigens neu nur noch in einem einzigen Exemplar verfügbar - also schnell zugreifen:

$3,99 Porto?! Übertrieben teuer ... ohne mich!

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.02.2015, 12:53
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Event-driven VI Example (LV 2014)
Die 3,99 passen aber prima zum Verkaufspreis, da schreibt sich der Rechnungsbetrag viel einfacher… Smile

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2015, 15:13 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2015 18:04 von Lucki.)
Beitrag #8

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Event-driven VI Example (LV 2014)
(09.02.2015 23:39 )teegee schrieb:  - Die Queues werden in sub-VIs erzeugt. Das macht den Zugriff in sub-VIs einfach, da sie nicht als Parameter uebergeben werden muessen. Der Uebersicht halber wuerde ich alle Get-Queue VIs in ein disabled diagram auf das Main BD legen.
Bei diesen SubVIs handelt es sich um Funktionale Globale Variablen für die Queue-Referenzen. Als Nachteil von Queues habe ich immer empfunden, dass sich die fetten Referenzdrähte immer durch das ganze Projekt ziehen und die BD-Optik versauen. Die fallen jetzt weg. Und das Besondere in diese FGVs ist noch, dass sie sich beim ersten Aufruf mit ihrem eigenem Code selbst initialisieren:
   
Das mit dem Disabled-Struktur hatte ich ursprünglich gemacht, allerdings nicht für die 3 Queue-Referenz-FGVs, sondern für die drei echten SubVIs. Diese werden nämlich nur über Methodenknoten von Haupt-VI aus aufgerufen und erscheinen deshalb nirgendwo im Projekt-Manager. (Genau genommen: Sie erscheinen nur dann im Projekt-Manager in den Abhängigkeiten, solange das Haupt-VI läuft). Ich habe das deshalb wieder herausgenommen, weil ich befürchtete, dass das meinen Dilletantismus offenbart Big Grin - ich habe ja nie an einem teuren Lehrgang von Ni teilgenommen. Jetzt sind die 3 SubVIs im Projektmanager dort, wo sich auch das Haupt-VI befindet. Der Nachteil ist jetzt, dass man nicht erkennt, welche von den 4 Vis das anzuklickende Haupt-VI ist. (Falls jemand einen besseren Vorschlag hat, wie man solche SubVIs in den Projektmanager integriert - her damit)
(Anmerkuung: Die gepostete 2011-Version ist ohne Projektmanager)
Zitat:- Im VI Ref Manager haette ich anstatt eines named cluster die Funktion Set/Get Variant Attribute benutzt. Bei der Anzahl der Elemente im Array macht das wahrscheinlich absolut nichts aus, aber da es sich um ein Beispiel handelt, ist dieses VI eine gute Gelegenheit dafuer.
Bei dem VI-Referenz-Array handelt es sich um ein Cluster-Array. In jedem Cluster befindet sich außer der eigentlichen Referenz noch der Name des VIs und dessen Pfad. Ein Attribut, welches Du für den Namen vorschlägst, kann ich doch nur in einem Variant unterbringen: Ohne Variant kein Attribut möglich. Dehalb verstehe ich Deinen Vorschlag nicht.

Zitat:- Das sequence diagram im VI Ref Manager (Return a Reference / True) gefaellt mir nicht. Es macht wenig Sinn die Haelfte vom code zu verstecken, nur um ein bisschen Platz zu sparen.
Der Code ist aber nicht mehr "versteckt" als das z.B bei jeder Case-Struktur auch der Fall ist. Diese ist genau so gestapelt wie die gestapelte Sequenz, und die Aufregung, dass das so ist, hält sich bei der Cases-Struktur in Grenzen bzw. ich habe nie etwas davon gehört. Da es sich hier nur um eine Art bla-bla-Code für die Fehlermeldung handelt, würde ich das Diagramm deswegen nicht aufblähen wollen. Es ist aber Geschmackssache.

Gruß Ludwig
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2015, 01:45
Beitrag #9

teegee Offline
LVF-Grünschnabel
*


Beiträge: 49
Registriert seit: Jan 2015

2014
2003
EN


Sonstige
RE: Event-driven VI Example (LV 2014)
(10.02.2015 15:13 )Lucki schrieb:  Bei dem VI-Referenz-Array handelt es sich um ein Cluster-Array. In jedem Cluster befindet sich außer der eigentlichen Referenz noch der Name des VIs und dessen Pfad. Ein Attribut, welches Du für den Namen vorschlägst, kann ich doch nur in einem Variant unterbringen: Ohne Variant kein Attribut möglich. Dehalb verstehe ich Deinen Vorschlag nicht.

Meinen Vorschlag habe ich mal angehaengt:

14.0 .vi  VI Ref Manager.vi (Größe: 48,54 KB / Downloads: 400)


(10.02.2015 15:13 )Lucki schrieb:  Der Code ist aber nicht mehr "versteckt" als das z.B bei jeder Case-Struktur auch der Fall ist. Diese ist genau so gestapelt wie die gestapelte Sequenz, und die Aufregung, dass das so ist, hält sich bei der Cases-Struktur in Grenzen bzw. ich habe nie etwas davon gehört. Da es sich hier nur um eine Art bla-bla-Code für die Fehlermeldung handelt, würde ich das Diagramm deswegen nicht aufblähen wollen. Es ist aber Geschmackssache.

Im Falle "VI name nicht gefunden" werden alle Werte des clusters auf "default" gesetzt. Das kann man doch einfach mit einem "Use Default if unwired" erschlagen. Das hab ich in meiner Loesung so gemacht. Dafuer muessen natuerlich die indicators aus der case Struktur raus, aber das mach ich eh immer, so dass alle indicators zu jeder Zeit auf dem BD sichtbar und zurueckverfolgbar sind.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: