C#-Daten in Labview empfangen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: ActiveX & .Net (/Forum-ActiveX-Net) +---- Thema: C#-Daten in Labview empfangen (/Thread-C-Daten-in-Labview-empfangen) |
C#-Daten in Labview empfangen - Rauth - 15.08.2012 10:59 Hallo zusammen, vielleicht kann mir jemand bei folgendem Problem weiterhelfen: Ich habe eine C# .exe die regelmäßig in einer Void Positionsdaten (x/y) errechnet. Normalerweise sind die Daten zur Maussteuerung, ich brauche sie aber in Labview. Wie bekomme ich die Daten also herüber? Erster Gedanke wäre eine .dll an die die Daten geschickt werden und die dann wiederum in bestimmten Zeitintervallen von LV abgerufen werden. Die Zeitintervalle wären aber nicht das präziseste, gibt es da auch eine saubere Lösung? Meine Labviewerfahrung diesbezüglich hält sich in Grenzen, bisher habe ich nur .dll-Funktionen mit LV aufgerufen. Danke und Grüße, Rauth RE: C#-Daten in Labview empfangen - VDB - 15.08.2012 11:59 Am einfachsten per TCP Kommunikation über Lokalhost. VDB RE: C#-Daten in Labview empfangen - VDB - 15.08.2012 14:10 Diese Aufgabe hat mich dann doch gereizt... Unter .NET bietet das Windows Communication Framework eine gute Lösung für solche Aufgaben. LabVIEW bietet die Möglichkeit auf relativ einfache Weise .NET-Assemblies einzubinden. Ich habe mal gebastelt und einen WCF Client programmiert der sich in LabVIEW einbinden lässt: & .NET Framework 3.0 [attachment=41101]
[attachment=41098] Den kompletten C# Sourcecode findet Ihr im Anhang. Als Protokoll wird hier Named Pipes (localhost) genutzt, natürlich können auch alle anderen WCF Addresses, Bindings und Contracts genutzt werden. VDB RE: C#-Daten in Labview empfangen - rolfk - 17.08.2012 09:59 (15.08.2012 10:59 )Rauth schrieb: Hallo zusammen, Das ruft nach Interprocesskommunikation. Die einfachsten Varianten dazu sind alle Arten von Netzwerkkommunikation wie TCP/IP, Pipes, sockets, etc, ein andere Möglichkeit ist Shared Memory. VDB hat ja schon ein nettes Beispiel beieinander gebaut. Die Idee mit der shared DLL ist eine Sackgasse. Windows lädt mit Ausnahme von einigen privilegierten Kernel Komponeneten jede DLL in den eigenen Speicher eines Prozesses. Die DLL XYZ.DLL in Prozess A hat keinerlei Zugang zu Daten in DLL XYZ.DLL im Prozess B und umgekehrt. RE: C#-Daten in Labview empfangen - Rauth - 17.08.2012 21:25 Ah gut, Danke. Habe mich schon gewundert wieso das nicht recht funktionieren wollte. Werde das mit TCP bald mal ausprobieren, warte gerade noch auf Komponenten die zum ordentlichen Testen der Exe nötig sind. |