LabVIEWForum.de
shared Memory - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: shared Memory (/Thread-shared-Memory)

Seiten: 1 2


shared Memory - M@rRy - 27.10.2011 14:29

Mahlzeit,

leider ist die UDP-Lösung durchgefallen, deshalb muss jetzt was neues her. Nach elend langem gesuche möchte ich euch nochmal nerven. Und zwar habe ich mir dieses Paket hier runtergeladen, leider funktioniert das ganze nicht. Fehler ist immer eine nicht vorhandene DLL. Wie arbeite ich am besten mit shared Memory und hat vielleicht jemand einen Link wo die SubVI's funktionieren.

Gruß
Daniel


RE: shared Memory - M@rRy - 28.10.2011 08:42

Guten Morgen,
nachdem ich nun ein drittes mal das ganze runtergeladen habe war die DLL auch dabei Smile Nun klappt die Übertragung bei zwei VIs, nicht aber bei zwei Applikationen. Muss ich hier auf irgendetwas spezielles achten?

Anbei sind die beiden VIs und in der Rar die daraus gebauten Applikationen.


RE: shared Memory - Y-P - 28.10.2011 09:24

Mit der Zeit, die Du mit dem Problem hier verdaddelst, könnte Dir Dein Chef auch längst eine neue LabVIEW-Version kaufen. Da wärst Du schon längst fertig. So hast Du noch nicht mal angefangen.
Mit "Shared Memory" kenne ich mich leider nicht aus. Das habe ich bisher (zum Glück) nicht benötigt. Big Grin

Gruß Markus


RE: shared Memory - M@rRy - 28.10.2011 09:28

Ich war mit UDP schon fast fertig als raus kam das es nicht sicher genug ist. Naja!


RE: shared Memory - BNT - 28.10.2011 12:39

(28.10.2011 08:42 )M@rRy schrieb:  nachdem ich nun ein drittes mal das ganze runtergeladen habe war die DLL auch dabei Smile Nun klappt die Übertragung bei zwei VIs, nicht aber bei zwei Applikationen. Muss ich hier auf irgendetwas spezielles achten?

Hast Du Dir mal das Beispiel angesehen, das in der Treiberbibliothek enthalten ist?
Das ist mehr zu tun als Du in Deinen VI getan hast, z.B. Buffer allokieren und wiederr freigeben. Etwas Wissen über C und Pointer kann bei Shared/Global-Memory-Applikationen nicht schaden.

Gruß Holger


RE: shared Memory - M@rRy - 28.10.2011 12:50

Habe ich mir angeschaut, ja. Der Speedtest gibt nicht viel her, die anderen beiden Beispiele machen auch nicht mehr als set und get, nicht einmal ein wirkliches init wird verwendet. Das Problem ist einfahc, wenn ich es richtig verstanden habe, unterscheidet die ganze Geschichte zwischen shared Memory und globalem Memory. Globaler dürfte nur in der Applikation verfügbar sein, hingegen der shared auch für eine andere Anwendung. So habe ich es jetzt zumindestens gedeutet. Eine Möglichkeit nach dem shared Mem zu suchen, wie es für den globalen Buffer vorhanden ist, gibt es nicht. Daraus habe ich geschlossen das es auch nur einen Speicherort gibt und Ende. Die Anwendung klappt als VI ja auch so, nur als executable nicht mehr. Aber warum?

Gruß


RE: shared Memory - BNT - 28.10.2011 13:11

(28.10.2011 12:50 )M@rRy schrieb:  wenn ich es richtig verstanden habe, unterscheidet die ganze Geschichte zwischen shared Memory und globalem Memory. Globaler dürfte nur in der Applikation verfügbar sein, hingegen der shared auch für eine andere Anwendung. So habe ich es jetzt zumindestens gedeutet.

Es ist genau umgekehrt. Shared-Memory ist nur innerhalb einer Applikation verfügbar. Global-Memory ist auch zwischen Applikationen verfügbar. Du kannst das entsprechende Beispiel in zwei VIs splitten und in separate Executables übersetzten. Die sollten dann miteinander reden können.

Auf der Treiberseite gibt es einen Link zu etwas Dokumentation.

Gruß Holger


RE: shared Memory - M@rRy - 28.10.2011 21:06

Ja auch so rum komme ich mit der ganzen Sache nicht auf einen grünen Zweig. Hab ja schon beides ausprobiert aber anbei nochmal der zweite, klägliche Versuch.

Zitat:M@rRy schrieb: wenn ich es richtig verstanden habe, unterscheidet die ganze Geschichte zwischen shared Memory und globalem Memory. Globaler dürfte nur in der Applikation verfügbar sein, hingegen der shared auch für eine andere Anwendung. So habe ich es jetzt zumindestens gedeutet.

BNT schrieb:
Es ist genau umgekehrt. Shared-Memory ist nur innerhalb einer Applikation verfügbar. Global-Memory ist auch zwischen Applikationen verfügbar. Du kannst das entsprechende Beispiel in zwei VIs splitten und in separate Executables übersetzten. Die sollten dann miteinander reden können.

Auf der Treiberseite gibt es einen Link zu etwas Dokumentation.

Global sollte also für meine Zwecke das richtige sein, also zur Übergabe zwischen zwei Applikationen, dazu mal hier ein Auszug aus der Doku:
Global memory:
Please note, that global buffers allocated by the GlobalMem dll can NOT be shared between any applications, as described in the introduction.

Shared ist nur in der Applikation, auch dazu ein Auszug:
Shared memory:
As an additional feature, the dll provides one dedicated memory buffer of fixed size, that can be shared between different Windows applications.

Jetzt bin ich restlos verwirrt, bitte klär mich auf.


Gruß und gute Nacht fürs erste
Daniel


RE: shared Memory - M@rRy - 01.11.2011 08:26

Morgen,

besteht eventuell die Möglichkeit das du mir mal die Quelldatei zu der DLL zeigen kannst? Hab das Problem das man mit der DLL so ja jetzt nur ein unsigned Byte übergeben kann. Ich würde aber gerne nen unsigned long übergeben.

Gruß
Daniel


RE: shared Memory - BNT - 01.11.2011 10:52

Hi Daniel
beim Starten eines Beispiel-Executables wird es von meinem Virenprogramm in Isolationshaft genommen.

Wenn ich das Problem gelöst habe, melde ich mich wieder.

Gruß Holger