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 

C#-Daten in Labview empfangen



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!

15.08.2012, 10:59
Beitrag #1

Rauth Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Aug 2012

2009 SP1
2012
DE



C#-Daten in Labview empfangen
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.08.2012, 11:59
Beitrag #2

VDB Offline
LVF-Stammgast
***


Beiträge: 426
Registriert seit: Oct 2005

2010-2011
1997
kA

52134
Deutschland
RE: C#-Daten in Labview empfangen
Am einfachsten per TCP Kommunikation über Lokalhost.

VDB
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2012, 14:10 (Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2012 14:15 von VDB.)
Beitrag #3

VDB Offline
LVF-Stammgast
***


Beiträge: 426
Registriert seit: Oct 2005

2010-2011
1997
kA

52134
Deutschland
RE: C#-Daten in Labview empfangen
Diese Aufgabe hat mich dann doch gereizt... Big Grin

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:

Lv10 & .NET Framework 3.0


0.0 .zip  WCF_LabVIEW.zip (Größe: 73,67 KB / Downloads: 319)

  • ZIP Datei auspacken
  • Im Verzeichnis "..\WCF_LabVIEW\ClientTest LabVIEW" gehen und das LabVIEW Projekt öffnen
  • Im Projektbaum die Consolen-Anwendung ServerTest.exe doppelklicken
  • Jetzt ClientTest.exe doppelklicken. Das Programm meldet "Data from server:0,436386971472011 0,762276596744674. Press any key to exit" zurück wenn alles geklappt hat
  • ClientTest.exe beenden durch Tastendruck. ServerTest weiter laufen lassen!
  • Jetzt TestClient.vi öffnen und ausführen. Dieses VI holt die Daten kontinuierlich vom Server ab.

   

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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.08.2012, 09:59
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: C#-Daten in Labview empfangen
(15.08.2012 10:59 )Rauth schrieb:  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

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.

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
17.08.2012, 21:25
Beitrag #5

Rauth Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Aug 2012

2009 SP1
2012
DE



RE: C#-Daten in Labview empfangen
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Daten mit Kistler 5134b mit Labview erfassen TobiasMo 1 4.116 14.01.2012 08:36
Letzter Beitrag: Y-P

Gehe zu: