LabVIEWForum.de - TCP Server mit mehreren Verbindungen

LabVIEWForum.de

Normale Version: TCP Server mit mehreren Verbindungen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

also ich lese vom COM Port und schreibe die Daten in eine Datei. Außerdem möchte ich die Daten noch über TCP schicken.

Wenn ich außen auf eine Verbindung lausche, wartet er mit allen aktionen bis er eine TCP Verbindung hat, dann schreibt er allerdings korrekt alles auch darüber.

eigentlich wollte ich, dass er schonmal anfängt mit dem schreiben und man sich zu beliebigen zeitpunkten, am besten auch mehrmals connecten kann, und dann die daten bekommt die gerade so am COM port anliegen ..

Lv80_img
Seltsames Programm, das soll was über TCP-IP liefern?
[attachment=24864]
Gruß, Jens
Jens: Ja oben ganz rechts?

Chopper: Eine richtiges Applikations-Design muss schon her. Erstens Producer-Consumer Design und zweitens musst Du den TCP/IP Server in einen eignen Task (Loop) setzen und intelligent programmieren. Das geht (mache ich selber öfter) ist aber nicht gerade Anfängerkost.

Für einen multiconnectionfähigen Server schaust Du Dir mal das Beispiel "examplescommTCP.llbMultiple Connections - Server.vi"an. Dies als SubVI in Deinem Programm mit entsprechenden Anpassungen um ihn vom Hauptprogram aus beenden zu können und natürlich auch eine Weise um die Daten aus dem anderen Teil des Programmes abfragen zu können.

Grundsätzlich kann das dataflowunabhängige Übergeben von Daten zwischen Tasks durch:

1) Queues
2) Intelligente globale Variablen
3) LabVIEW Globals (Pfui!)

gemacht werden. Die Queue Variante kannst Du in verschiedenen Consumer-Producer Beispielen hier im Forum finden.
' schrieb:Jens: Ja oben ganz rechts?
Aber nach Datenflussregel startet die Schleife NIE.

Gruß, Jens
' schrieb:Aber nach Datenflussregel startet die Schleife NIE.

Gruß, Jens

Technisch hast Du natürlich recht. :DAber es ist deutlich dass zumindest von der Intention her das Programm durchaus den TCP Code enthält um das Gewünschte zu tun, auch wenn ich denke dass die Implementation so wie sie drin ist auch wieder sehr kurz angedacht ist. Wink

Und Du erklärst zwar warum es nicht macht was der OP gerne möchte aber nicht wo und wie man ansetzen sollte um es zu verändern.
' schrieb:Und Du erklärst zwar warum es nicht macht was der OP gerne möchte aber nicht wo und wie man ansetzen sollte um es zu verändern.
Ich wollte dir noch was übrig lassen zum Erklären.Wink

Gruß, Jens
Hehe, ja dass es so nicht funktioniert, ist mir durchaus aufgefallen ^^ ... Ursprünglich hatte ich die TCP Verbindung außerhalb der Schleife angenommen, und in der Schleife reingeschrieben. So hatte er aber erst mit der Schleife begonnen, wenn jemand connected hatte ... und wenn die Verbindung abbrach, musste man auch den Server neustarten.

Ich dachte so wird deutlicher was ich machen will, also, dass parallel die TCP IP Verbindungen laufen.

Hatte mir das TCP multiple Connection Server beispiel angeschaut, aber es erst nicht so ganz geblickt.

Im Beispiel gab es ja 2 schleifen in der einen wurden Verbindungen angenommen und in der anderen parallelen Schleife, waren aber das array mit den Verbindungen.

(Nebenbei, wie erstell ich ein Array of TCP Connections? ich habe das halt kopiert aus dem Beispiel. Andere Arrays habe ich halt im Frontend erstellt, ein leeres Array und dann einfach ein Zahlenfeld reingepackt, dann wurde es automatisch ein Array of Strings, Numbers oder sonst was ... )

EDIT: Aber ich glaube ich weiß nun grob, was ich machen muss. Also wenn ich die Schleife zum Annehmen der TCP Con innerhalb des while loop dort mache, und IN der IF Clause, dann halt das Array der Verbindungen durchgehe und in jede Schreibe müsste es ja klappen oder ? Naja am Montag mache ich weiterSmile

Grüße
Chopper
Referenz-URLs