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!

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
Antwort schreiben 


Nachrichten in diesem Thema
TCP mit asynchronem VI - 83Daniel - 18.06.2019, 08:19
RE: TCP mit asynchronem VI - Freddy - 19.06.2019, 08:06
RE: TCP mit asynchronem VI - 83Daniel - 19.06.2019, 08:34
RE: TCP mit asynchronem VI - Freddy - 21.06.2019, 08:59
RE: TCP mit asynchronem VI - 83Daniel - 24.06.2019, 07:11
RE: TCP mit asynchronem VI - IchSelbst - 24.06.2019, 09:45
RE: TCP mit asynchronem VI - Freddy - 24.06.2019, 08:26
RE: TCP mit asynchronem VI - 83Daniel - 24.06.2019, 10:48
RE: TCP mit asynchronem VI - IchSelbst - 24.06.2019, 11:46
RE: TCP mit asynchronem VI - 83Daniel - 24.06.2019, 12:12
RE: TCP mit asynchronem VI - jg - 24.06.2019, 15:08
RE: TCP mit asynchronem VI - 83Daniel - 24.06.2019, 15:45
RE: TCP mit asynchronem VI - rolfk - 26.06.2019 20:59
RE: TCP mit asynchronem VI - jg - 26.06.2019, 21:05
RE: TCP mit asynchronem VI - 83Daniel - 27.06.2019, 06:42

Gehe zu: