Hallo,
ich habe folgendes Problem, ich habe zwei Executables auf meinem PC welche per Network Stream mit jeweils einem cRio kommunizieren sollen.
Sowohl auf dem Rechner als auf auf dem cRIO wird ein Reader und ein Writer Endpoint erstellt.
Wenn ich die Executables einzeln ausführe und mich mit einem cRIO verbinden will funktioniert das wunder bar, jedoch sobald ich parallel die beide Executables starte um mich mit den cRIOs zu verbinden klappt das nicht. Es verbindet sich nur einer.
Ich bekomme erst eine Verbindung mit der anderen Executable aufgebaut wenn ich die bereits mit dem cRIO verbundene Executable beende bzw. die verbindung unterbreche.
Wenn ich das ganze aus LabVIEW durchführe funktioniert alles.
Alle Writer und Reade bekommen als URL die IP+Name.
Hat jemand eine Idee?
Gruß
Tim
Hallo Tim,
ich habe noch nicht mit Streams gearbeitet, könnte aber trotzdem den Fehler deuten:
- Network-Streams sind Point-to-Point-Verbindungen. An jedem Ende der Verbindung kann nur eine Instanz darauf zugreifen.
- Wenn du deine VIs in der Entwicklungsumgebung startest, stellt LabVIEW den einen (!) Endpunkt dar und beide VIs bekommen Daten.
- Wenn du zwei Executables startest, bekommt nur einer den Zugriff, da sich hier zwei unabhängige Instanzen (!) um eine Resource prügeln: der schnellere gewinnt...
Was sagt eigentlich die Fehlermeldung aus, die du bekommen solltest?
Hallo Gerd,
natürlich kann immer nur ein Writer mit einem Reader kommunizieren.
Ich habe zwei Applikationen und 2 cRIOs
Applikation 1 kommuniziert mit cRIO 1
Applikation 2 kumminuziert mit cRIO 2
Dadurch das ich den Gegenpart jedes Writers bzw. Readers genau definiere, über IP und Name, sollten die beiden nicht mit einander konkurrieren.
In der Entwicklungsumgebung greift jede Applikation auf das richtige cRio zu, da es sich hier um unterschiedliche Projekte handelt ferner sehe ich das an den ankommenden Daten.
Gruß Tim
Hallo Tim,
ich hatte das Wörtchen "jeweils" in Beitrag #1 übersehen...
Bleibt noch die Frage nach der Fehlermeldung!
Kommt, ich muss nur schnell in die Executable rein debuggen
Error -314350 occurred at Sendeendpunkt für Netzwerk-Stream erstellen in HostStreamingWriterControl.vi->ShockStreamingWrapper.vi:1->Host_ShockAcq.vi
Possible reason(s):
LabVIEW: Eine andere Applikation überträgt bereits Daten an den Endpunkt im angegbenen Kontext. Der Kontextname im Empfänger/Sender-URL-Anschluss des Endpunkts muss eindeutig sein. Wenn Sie keinen Kontextnamen angegeben haben, tun Sie das jetzt.
Die URL ist eindeutig!!!!
Hallo Tim,
du hast geschrieben:
Zitat:Alle Writer und Reade bekommen als URL die IP+Name.
Lt. Hilfe soll aber nur der Empfänger
oder der Sender eine URL bekommen...
Das was in der Hilfe steht habe ich auch gestestet funktioniert nicht.
Die Hilfe bezieht sich auf einen
Host Writer -> RT Reader App1
Host Reader -> RT Writer App2
Aber ich habe das ganze gelöst:
Wenn man 2 Applicationen hat mit Jeweils einem Reader und Writer auf dem Host und dem RT MUSS man den Namen und dien URL bei allen wie folgt vorgeben:
IP:Context_Name/Name
Also z.B.:
App1
Host IP 10.0.1.1
RT IP 10.0.1.2
Host Writer -> RT Reader
Name: 10.0.1.1:App1/HostWriter -> 10.0.1.2:App1/RTReader
URL: 10.0.1.2:App1/RTReader -> 10.0.1.1:App1/HostWriter
Host Reader <- RT Writer
Name: 10.0.1.1:App1/HostReader <- 10.0.1.2:App1/RTWriter
URL: 10.0.1.2:App1/RTWriter <- 10.0.1.1:App1/HostReader
App2
Host IP 10.0.1.3
RT IP 10.0.1.4
Host Writer -> RT Reader
Name: 10.0.1.3:App2/HostWriter -> 10.0.1.4:App2/RTReader
URL: 10.0.1.4:App2/RTReader -> 10.0.1.3:App2/HostWriter
Host Reader <- RT Writer
Name: 10.0.1.3:App2/HostReader <- 10.0.1.4:App2/RTWriter
URL: 10.0.1.4:App2/RTWriter <- 10.0.1.3:App2/HostReader
Gruß
Tim
Kleine Korrektur zum Beispiel.
Natürlich ist die Host-IP für APP1 & APP2 identisch