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 

Grundlegene Möglichkeiten - C -> Labview



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!

20.02.2013, 10:50
Beitrag #1

labview2013 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 57
Registriert seit: Sep 2012

2011
-
kA



Grundlegene Möglichkeiten - C -> Labview
Hallo,

welche grundlegenden Möglichkeiten gibt es zwischen einem LabView und C Programm Daten auszutauschen?
Die Daten werden vom C Programm erzeugt und müssen zur Laufzeit in LabView eingebunden und weiterverarbeitet werden.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 11:07
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Grundlegene Möglichkeiten - C -> Labview
Hallo labview2013,

die gleichen Möglichkeiten, die auch zwischen 2 C-Programmen (oder C- und C++ oder C- und Java oder beliebige andere Kombinationen...) bestehen.

- Dateien
- Netzwerkverbindungen ("localhost")
- Clipboard des Betriebssystems
- ...

Du musst immer im Hinterkopf haben, dass Programme in einem modernen Multitasking-OS wie Windows jeweils in ihrem eigenen abgeschirmten Addressbereich laufen und nicht einfach auf den Speicher eines anderen Programms zugreifen können!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 12:50
Beitrag #3

alieninvader Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Jan 2013

7.1, 8.5
2006
DE_EN

55xxx
Deutschland
RE: Grundlegene Möglichkeiten - C -> Labview
Servus,

alternativ besteht natürlich die Möglichkeit, den C- Code als dll zu kompilieren und anschließend in LabView einzubinden. Damit hätte man sich auch des Problems entledigt, dass man das C- Programm separat starten muss.

Gruß

Stefan

Wenn du willst, dass es funktioniert, bau es größer.
Wenn du willst, dass es gleich funktinoiert, bau es gleich größer!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 13:01 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2013 13:02 von labview2013.)
Beitrag #4

labview2013 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 57
Registriert seit: Sep 2012

2011
-
kA



RE: Grundlegene Möglichkeiten - C -> Labview
Das mit der DLL geht leider nicht.

Ist es den nicht möglich einfach einen Adressbereich zu allokieren und diesen dann dafür zu nutzen?
Ich schätze mal wenn nicht, ist ein localhost die Laufzeit schnellste Verbindung ?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 13:44 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2013 13:49 von Wall-E.)
Beitrag #5

Wall-E Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Jan 2013

2012
2010
EN



RE: Grundlegene Möglichkeiten - C -> Labview
(20.02.2013 13:01 )labview2013 schrieb:  Ist es den nicht möglich einfach einen Adressbereich zu allokieren und diesen dann dafür zu nutzen?
Ich kann mir nicht vorstellen, dass das geht, solange der Speicherverwalter (also das OS) es nicht explizit unterstützt. Denn an sich soll es ja die Speicherbereiche von zwei Programmen auf jeden Fall getrennt halten. Ist aber nur so ein Bauchgefühl.

Hilfreicher vielleicht:
Laut diesem Whitepaper (http://www.ni.com/white-paper/4679/en) kann man "Shared Variables" auch aus C heraus beschreiben. Das sollte auf jeden Fall rattenschnell sein - habe ich aber auch noch nie gemacht und viel mehr als das es geht, steht in dem Whitepaper auch nicht drin. Die Shared Variables sind nicht ganz so trivial und haben einige Tücken, aber sie sind schnell, unterstützen FIFO-Buffering, Timestamps, ... vielleicht hilft es ja.

EDIT: Hier steht ein Bisschen mehr dazu wie das geht. http://stackoverflow.com/questions/45966...nd-labview
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 14:21 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2013 14:25 von jg.)
Beitrag #6

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Grundlegene Möglichkeiten - C -> Labview
Hi
Sieh Dir doch mal diesen Beitrag an. Stichwort: Shared Memory.

Beitrag 14 im Thread Shared Memory

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.02.2013, 16:09 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2013 16:11 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Grundlegene Möglichkeiten - C -> Labview
Hallo Holger,

so sehr ich diesen Ansatz mit der SharedMemory-DLL bewundere, aber: Es sieht schon sehr nach "Hack" aus...

Unterstützt diese DLL auch Win7-64bit und Win8?

@labview2013:
Zitat:Ist es den nicht möglich einfach einen Adressbereich zu allokieren und diesen dann dafür zu nutzen?
Eben, es ist nicht einfach möglich. Selbst wenn du in einer Applikation einen Speicherbereich reservierst, nutzt es dem anderen Prozess nichts, dessen Speicheradresse zu kennen. Warum? Weil alles virtuelle Adressen sind und jeder Prozess seinen eigenen Adressbereich bekommt - womöglich sogar identische (aber halt virtuelle) Adressen...

Der Umweg über die genannte DLL mag zwar gehen. Aber ich habe da so meine Zweifel, was die Sicherheitskonzepte aktueller Betriebssysteme angeht (zertifizierte DLLs etc.). Wir sind schon lange aus der MS-DOS/CP-M/C64/u.a-Ära entwachsen, wo man wild im Speicher rumfuhrwerken konnte...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 17:06
Beitrag #8

labview2013 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 57
Registriert seit: Sep 2012

2011
-
kA



RE: Grundlegene Möglichkeiten - C -> Labview
Vielen Dank für die Zahlreichen Antworten, ich werde das Problem als Localhost im Netzwerk lösen.

Danke!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.02.2013, 18:45
Beitrag #9

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Grundlegene Möglichkeiten - C -> Labview
(20.02.2013 16:09 )GerdW schrieb:  so sehr ich diesen Ansatz mit der SharedMemory-DLL bewundere, aber: Es sieht schon sehr nach "Hack" aus...

Unterstützt diese DLL auch Win7-64bit und Win8?

Der Umweg über die genannte DLL mag zwar gehen. Aber ich habe da so meine Zweifel, was die Sicherheitskonzepte aktueller Betriebssysteme angeht (zertifizierte DLLs etc.). Wir sind schon lange aus der MS-DOS/CP-M/C64/u.a-Ära entwachsen, wo man wild im Speicher rumfuhrwerken konnte...

Hi Gerd

Ich stimme Dir vollständig zu.

Das SharedMemory war auch nur als Hack von uns gedacht (und nur unter Windows XP 32Bit getestet) und wird von mir nicht als dauerhafte Lösung angepriesen. Ich weise nur darauf hin, dass es unter bestimmten Umständen möglich ist. Jeder Entwickler muss schon auf Grund seiner Anforderungen für sich selbst entscheiden, ob es eine Lösung sein kann.

Erschwerend kommt ja oft noch das Zeitverhalten von verschiedenen Applikationen dazu. Ich favorisiere den Austausch von Daten über das Netzwerk. Dann können verschiedene Programme auch zwanglos auf verschiedenen Rechner laufen. Das erhöht die Skalierbarkeit. Über den localhost kann man ja auch ziemlich gute Transferraten erreichen, das ist fast so gut, wie das SharedMemory.

Man sollte auch unterscheiden, ob die Daten unbedingt synchron ausgetauscht werden müssen, oder ob nicht auch ein asynchroner Austausch genügt. Für die synchrone Peer-2-Peer Kommunikation bieten sich einfache TCP/IP-Sockets an. Benötigt man eine Art Netzwerk-Transaktion könnte DIM (http://www.cern.ch/dim) in Frage kommen. DIM bietet zudem die Möglichkeit, verteilte heterogene Systeme miteinander zu verheiraten. Für die asynchrone Kommunikation kommen einfacherweise SharedVariablen oder Networkstreams in Frage. Es bieten sich aber auch andere Möglichkeiten an DataSocket, OPC oder andere echtzeitfähige Prozessdatenbanken an.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.02.2013, 13:09
Beitrag #10

labview2013 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 57
Registriert seit: Sep 2012

2011
-
kA



RE: Grundlegene Möglichkeiten - C -> Labview
Danke für die Antworten,

eine abschließende Frage beschäftigt mich aber noch. In welchr Form soll das C Programm die Daten verschicken. Habe das unter LabView ausprobiert mit TCP Client und Server und es funktioniert. Jedoch ist mir nicht ganz klar in welcher aufbereiteten Form in C die Daten an den Port geschickt werden sollen.

Vielen Dank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Möglichkeiten und Merkmale von LabVIEW Praktikantin 13 7.814 18.08.2015 12:15
Letzter Beitrag: jg
  MS Office Report weitere Möglichkeiten? Booner 4 3.897 28.03.2013 09:58
Letzter Beitrag: Booner
  Case Struktur Selektor mit drei Möglichkeiten samuel-stinger 1 4.077 09.12.2010 10:08
Letzter Beitrag: chrissyPu
  Möglichkeiten zur Speicherung von Frontpaneleingaben lrad 3 4.078 30.03.2010 11:47
Letzter Beitrag: Y-P
  Möglichkeiten für Zählvariablen gesucht RuffRyder 8 6.685 20.03.2006 17:30
Letzter Beitrag: RuffRyder

Gehe zu: