2016-07-19 43 views
1

Derzeit entwickle ich ein Datenerfassungsprogramm für mein Experiment in C++ von einem Linux-basierten Rechner (Ubuntu), ich habe auch viele VIs in Labview, die in Windows programmiert sind Kontrolliere die Instrumente des Experiments (Motoren, Signalgenerator ..). Der Zweck besteht darin, eine 2-Wege-Kommunikation zwischen 2 PCs zu haben, das Linux fragt, welche VIs ausgeführt werden sollen, und wenn es fertig ist, sendet es ein Signal an die Linux-Maschine zurück. Meine Fragen sind:Senden von Signal/Text von Linux Machine nach Labview in Window

  1. Kann ich ein Signal oder einen Befehl an Labview in Windows von Linux senden (Terminal, und es kann in meinen C-Code implementiert wird) und umgekehrt? Wie?
  2. TCP Labview könnte eine Lösung sein? Oder sollte ich versuchen, den Inter-PC über die serielle Kommunikation "sprechen" zu lassen (was einfach physikalisch einzurichten ist)?

Antwort

1

Die beste (auch die einfachste) Weg ist, TCP-basierten Client-Server-Kommunikation zu implementieren (TCP stellt sicher, Daten verlustfrei ist. Bei Verwendung anderer Mechanismen wie UDP oder serielle Sie sollten immer darauf achten, werden Ihre Befehle empfangen korrekt).

An der LabVIEW-Site haben Sie einen TCP-Listener (Server), der Befehle von der Linux-Maschine an Ihrem angegebenen Port abhören kann.

Nach dem Empfang des Befehls kann der LabVIEW-Code die Arbeit verrichten und mit derselben TCP-Verbindung antworten.

Das ist sehr guter Artikel über Ihre Frage: https://decibel.ni.com/content/docs/DOC-9131

-1

Ihr sind mehrere Möglichkeiten für die Kommunikation zwischen C++ und LabVIEW. (Sowie Linux/Windows).

Wenn Sie LabVIEW auf Ihrem Linux-Computer ausführen möchten, können Sie mehrere LabVIEW-Kommunikationsarchitekturen verwenden. Hier ist das Whitepaper von NI. http://www.ni.com/white-paper/12079/en/ Bietet Optionen wie gemeinsame Variable, Netzwerkstreams, Webdienste, TCP/IP.

Sie können auch Ihren LabVIEW-Code in eine DLL kompilieren und aus C++ aufrufen, um einige der oben genannten Funktionen zu nutzen. Wenn nicht, müssen Sie wahrscheinlich zur TCP/IP-Route oder zum Webdienst gehen.

Ich würde die Verwendung von TCP/IP empfehlen, es ist ziemlich einfach auf beiden Seiten zu implementieren. Wenn Sie mit seriellen Protokollen vertraut sind, können Sie diese auch zur Kommunikation verwenden.