LabVIEWForum.de - shared Memory

LabVIEWForum.de

Normale Version: shared Memory
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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.
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
Ich war mit UDP schon fast fertig als raus kam das es nicht sicher genug ist. Naja!
(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
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ß
(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
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
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
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
Seiten: 1 2
Referenz-URLs