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:

TCP mit asynchronem VI



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!

24.06.2019, 15:08
Beitrag #11

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: TCP mit asynchronem VI
Ich hatte mir das auch angeschaut, interessant finde ich, dass dein Aufbau ohne (oder nur minimaler) Wartezeit nach der Queue-Abfrage funktioniert, nur bei längerer Wait funktioniert dann dein Konstrukt nicht.

Spekulation meinerseits: Auf Grund des dynamischen Aufruf des Sub-VI wird das irgendwann komplett aus dem Speicher entfernt (im Gegensatz zu einem normalen Sub-VI Aufruf), und das reisst die TCP/IP-Verbindung mit ins Nirvana. Hast du einen aktuell gültigen SSP-Vertrag? Dann würde ich das mal NI vorlegen!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2019, 15:45
Beitrag #12

83Daniel Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2017

2019
2010
DE_EN


Deutschland
RE: TCP mit asynchronem VI
Vielen Dank,

ja, habe einen SSP werde ich dann dort mal anfragen und ggf. Antwort hier posten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2019, 20:59 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2019 21:13 von rolfk.)
Beitrag #13

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: TCP mit asynchronem VI

Akzeptierte Lösung

(18.06.2019 08:19 )83Daniel schrieb:  Ich hab da ein Problem mit dem Starten einer TCP Verbindung wenn ich sie in einem asynchronen VI starte.


Ich starte asynchron ein VI und gebe diesem IP, Port und ein Queue mit. In dem VI wird die Verbindung aufgebaut, und die Referenz über das Queue weitergeben. Wenn ich anschließend an einer anderen Stelle die Verbindungsreferenz aus dem Queue entnehme und etwas über die Verbindung senden will erhalte ich den LabVIEW Fehler: (Hex 0x1) Ungültiger Eingangsparameter…
Die Referenz ist nicht 0 / NULL.

Kennt jemand dieses Verhalten oder könnte es mir erklären?

Du hast hier noch ein Problem. TCP Refnums sind LabVIEW Refnums und die Unterliegen einer automatischen Aufräumung in LabVIEW sobald das ToplevelVI in dem die Refnum erzeugt wurde beendet wird. Ein VI das als asynchrones VI aufgerufen wird, gilt als ToplevelVI da es kein Diagram gibt in dem es als subVI aufgerufen wird. Deine Idee um das Öffnen der TCP Verbindung in einem asynchronen VI zu machen, das die Referenz dann in eine Queue schiebt und sich danach beendet funktioniert also nicht. Und es gibt KEINE Möglichkeit um LabVIEW zu sagen dass es die Referenz nicht automatisch aufräumen soll. Und die Refnum ist nicht NULL aber eben doch abgeschlossen, wie wenn Du ein TCP Close darauf ausgeführt hättest, und daher ungültig.

Mögliche Lösungen:

1) Öffnen der Verbindung nicht asynchron machen sondern innerhalb des Codes an dem jetzt Du Dein asynchrones VI startest.

2) Nicht nur die Verbindung in Deinem asynchronen VI machen sondern auch die ganze Datenkommunikation mit dem Server. Dein asynchrones VI ist dann also ein selbständiger Thread der solange aktiv bleibt wie die Verbindung mit dem Server instand bleibt. Statt die Refnum durch eine Queue an Dein Programm durchzugeben sollte Dein Connectionhandler stattdessen selber eine CommandQueue verwenden mit der Du Kommandos schicken kannst um etwas zum Server zu schicken oder zu lesen, aber auch ein Quit event, wenn der Handler sich beenden soll, und eine ResponseQueue mit dem Dein Handler Daten an Deine Applikation liefern kann.
Diese Möglichkeit scheint Dir vielleicht am Anfang komplizierter aber ist eigentlich logischer, da alle Kommunikation in Deinem Handler zusammengefasst ist. Und wenn Du diesen Handler als Clone konfigurierst kannst Du ohne extra Mühe auch mehere solcher Handler nacheinander zu verschiedenen Servern starten und parallel laufen lassen.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2019, 21:05
Beitrag #14

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: TCP mit asynchronem VI
(24.06.2019 15:08 )jg schrieb:  Spekulation meinerseits: Auf Grund des dynamischen Aufruf des Sub-VI wird das irgendwann komplett aus dem Speicher entfernt (im Gegensatz zu einem normalen Sub-VI Aufruf), und das reisst die TCP/IP-Verbindung mit ins Nirvana. Hast du einen aktuell gültigen SSP-Vertrag? Dann würde ich das mal NI vorlegen!

(26.06.2019 20:59 )rolfk schrieb:  Du hast hier noch ein Problem. TCP Refnums sind LabVIEW Refnums und die Unterliegen einer automatischen Aufräumung in LabVIEW sobald das ToplevelVI in dem die Refnum erzeugt wurde beendet wird. Ein VI das als asynchronoes VI aufgerufen wird, gilt als ToplevelVI da es kein Diagram gibt in dem es als subVI aufgerufen wird. Deine Idee um das Öffnen der TCP Verbindung in eine asynchronen VI zu machen dass die Referenz dann in eine Queue schibt und sich danach beendet funktioniert also nicht. Und es gibt KEINE Möglichkeit um LabVIEW zu sagen dass es die Referenz nicht automatisch aufräumen soll.

Da habe ich also richtig spekuliert. Vielen Dank an den LabVIEW-Guru1 Rolf!!!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2019, 06:42
Beitrag #15

83Daniel Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2017

2019
2010
DE_EN


Deutschland
RE: TCP mit asynchronem VI
Danke, für der Erklärung!

Ich erledige diesen Programmteil jetzt auch mit dem Actor Framework. Damit sind alle meine Randbedigungen erfüllt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: