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 

Dieses Thema hat akzeptierte Lösungen:

Verständnisfrage Actor Framework



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!

18.09.2020, 11:21
Beitrag #1

lol Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2020

2019
2017
EN


Deutschland
Verständnisfrage Actor Framework
Hallo Leute,

ich habe ein neuen Versuch mit dem Actor Framework gewagt,
und bin nun an ein "totes Ende" gelangt.

Zum Projekt:
Ich habe einen Root Actor der weitere (Nested) Actors nach Auswahl des Nutzers starten soll
Dafür habe ich für jeden Nested Actor ein "VI from Static Dispatch Template" erstellt in dem der entsprechende
Nested Actor gestartet werden soll,
(siehe Anhang 1) und mir dann eine Message erstellen lassen.

Im "Actor Core.vi" des Top Level Actor soll diese Nachricht dann aufgerufen werden.
Also "Read Self Enqueuer" Ausgang an den "Message Enqueuer" Eingang gehangen, sollte ja eigentlich funktionieren.
(siehe Ahnang 2)
Das macht es aber nicht, habe mir das ganze im Probe Watch mal angesehen und festgestellt, dass das "Do.vi" von meiner
Nachricht überhaupt nicht ausgeführt wird (jede Verbindung bleibt auf "not executed")

Jetzt stehe ich völlig auf dem Schlauch und weiß überhaupt nicht warum das so ist. Sad
Ich bin für jeden Ratschlag dankbar der zur Behebung des Fehlers führt.

Vielen Dank schonmal im Vorraus, und allen ein schönes Wochenende.

Gruß lol


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.09.2020, 11:46 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2020 11:48 von BNT.)
Beitrag #2

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Verständnisfrage Actor Framework
Actor Core.vi und Do.vi sind reentrant. Setz mal einen Breakpoint.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.09.2020, 14:28
Beitrag #3

lol Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2020

2019
2017
EN


Deutschland
RE: Verständnisfrage Actor Framework
Hallo Holger,
Danke für die schnelle Antwort..
Wo soll ich deiner Meinung nach den Breakpoint setzen?

Gruß lol
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.09.2020, 14:33
Beitrag #4

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Verständnisfrage Actor Framework
Auf den Draht von von Error in am Beginn der VI's.

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2020, 08:21
Beitrag #5

lol Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2020

2019
2017
EN


Deutschland
RE: Verständnisfrage Actor Framework
Hallo Holger,

ich habe soeben die Breakpoints an "Error In" gesetzt,
das hat mich nur bedingt klüger gemacht .. denn die Nachricht wird defintiv gesendet
aber ihre Ausführung auf unerklärliche Weise verworfen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2020, 08:59
Beitrag #6

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Verständnisfrage Actor Framework
Es wäre gut, wenn ich das komplette Blockdiagramm des Actor Core.vi sehen könnte, ohne kann ich nur spekulieren.

In Deinem Actor Core.vi gibt es offenbar eine Dekorator-Schleife mit GUI Funktionalität. In Deinem Actor Core.vi musst Du ja auch das Actor Core.vi der Ancestor-Klasse aufrufen, denn dort lebt der Aktor ja eigentlich.
  • Werden die Actor Core.vi's aller Ancestor-Klassen wirklich ausgeführt? Also auch das Actor Framework.lvlib:Actor.lvclass:Actor Core.vi?
  • Wird das Actor Core.vi der Ancestor-Klasse vielleicht vorzeitig bzw. unerwartet beendet? Setz mal 'ne Probe auf den Error-Draht dahinter. Wenn es beendet wird, bevor Du die Nachricht sendest, kann sie auch nicht abgearbeitet werden.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2020, 11:16
Beitrag #7

lol Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2020

2019
2017
EN


Deutschland
RE: Verständnisfrage Actor Framework
Hallo Holger,

Hie wäre erstmal das Block Diagramm, bei Bedarf kann ich Dir das gesamte Projekt gezippt zur Verfügung stellen.
Tatsächlich war dein zweiter Gedanke ebenfalls ein Fehler, den ich bereits entdeckt und behoben habe.

Bei meinen Nachforschungen mit den Breakpoints habe ich jetzt folgendes herausgefunden:

Sobald der Root Actor stoppt, wird das Do.vi der Nachricht ausgeführt, und damit eben auch der Nested gestartet.
Warum das so ist kann ich mir nicht erklären.
Ich vermute mal es liegt am Aufbau meines Actor Core

Gruß lol


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2020, 12:11
Beitrag #8

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Verständnisfrage Actor Framework

Akzeptierte Lösung

Klassische Datenflussfehler!
Bedingt durch den Error-Draht, den Du durch Deine Schleife hindurch gezogen hast, wird das Actor Core.vi der Ancestor-Klasse erst ausgeführt, nachdem die While-Schleife beendet wurde. Zieh den Error-Draht also an der Schleife vorbei, und verbinde ihn direkt mit dem Actor Core.vi der Ancestor-Klasse.

Eine Stop-Nachricht geht natürlich auch an das Actor Framework.lvlib:Actor.lvclass:Actor Core.vi und danach wird das Stop Core.vi aufgerufen. Das solltest Du überschreiben, um von dort die Dekorator While-Schleife zu beenden. Du solltest die Scheife nicht direkt beenden, sonder nur via Stop Core.vi und z.B. User-Defined-Stop-Event, damit sie bis zum Schluss reaktiv bleibt. Dazu kannst Du eine Stop-Nachricht an Deinen Self-Enqueuer senden.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.10.2020, 13:05
Beitrag #9

lol Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2020

2019
2017
EN


Deutschland
RE: Verständnisfrage Actor Framework
Hallo Holger,

Der Fehler war der Error Draht.
Auch das "Stop" Verfahren habe ich korrigiert.

Vielen Dank!
Gruß lol
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Vorschlag für Asynchrone Rückantworten im Actor Framework BNT 1 4.764 10.10.2019 19:03
Letzter Beitrag: BNT
  NI Actor Framework - Eine Einführung BNT 11 24.540 25.07.2018 11:08
Letzter Beitrag: BNT
  Actor-Oriented Design in LabVIEW Course BNT 1 7.438 01.07.2016 14:28
Letzter Beitrag: BNT
  CS++ - A LVOOP Actor based Framework BNT 18 30.481 14.03.2015 14:26
Letzter Beitrag: BNT
  Actor FW - Response Msg D_Sev 1 8.609 19.02.2014 16:19
Letzter Beitrag: BNT
  UI Plugin Framework - Plugins in Runtime austauschbar? Tschirno 0 9.372 30.08.2012 09:25
Letzter Beitrag: Tschirno

Gehe zu: