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 |
RE: shared Memory - BNT - 01.11.2011 11:28 Hi Daniel, das war wohl mein Fehler. Die Erinnerung trügte mich und die Doku habe ich dann doch nicht mehr so genau gelesen. Du hattest Recht. SharedMemory ist die richtige Wahl, um Memory von verschiedenen Executables zu schreiben und zu lesen. Ich habe das in der Treiberbibliothek enthaltene Beispiel SharedMem_SharedMemApplicationExample.vi in zwei aufgeteilt und zwei Executables gebaut, die über das SharedMem kommunizieren können. (Das Virus-Problem wurde durch eine Ausnahme-Verzeichnis gelöst.) Ich habe sie als VI-Snippets angehängt. Das Geheimnis ist ein Stück Memory, das statisch von der DLL allokiert wird. Über die Hilfs-VIs kann man die Start-Adresse und Größe abfragen. Es können beliebige Daten geschrieben werden. Die Daten müssen jedoch via Typecast in ein Byte-Array verwandelt werden. Beim Schreiben und Lesen wird dann der Offste von der Start-Adresse und die Länge der zu lesenden/schreibenden Daten angegeben. Es ist also nicht nötig die DLL für verschiedene Datentypen anzupassen oder zu erweitern. Für das Memory Layout ist also der Entwickler zuständig. Die DLL-Quelle muss ich erst beim Entwickler anfragen. Gruß Holger [attachment=36833] [attachment=36834] RE: shared Memory - M@rRy - 01.11.2011 14:36 Gelten zur Verwendung hiervon irgendwelche Regeln? Sowas wie "Beide Applikation müssen im selben Ordner sein"? Ich hab es nun ein paar mal versucht aber so wirklich funktionieren möchte es bei mir nicht. Gruß Daniel RE: shared Memory - BNT - 02.11.2011 08:33 Hi Daniel Beide Applikationen müssen dieselbe DLL verwenden, weil diese den Speicher statisch allokiert. Zwei DLLs -> zwei verschiedene Speicher! Du könntest die DLL in das Windows\system 32 schieben, wenn Deine Applikationen in verschiedenen Ordnern liegen. system32 ist normalerweise im Suchpfad enthalten, sodass die DLL auch dort gefunden werden sollte. Gruß Holger RE: shared Memory - BNT - 02.11.2011 11:20 Hi Daniel Ich habe mal meine Executables, die ich in ein Zielverzeichnis gebaut hatte, als Anhang bereitgestellt. Die zwei Executables entsprechen den zwei VI-Snippets aus dem Beitrag 11. Probier doch mal aus. Gruß Holger RE: shared Memory - M@rRy - 02.11.2011 12:39 Ja nun gehts auch. Mhh. Also wenn ich das so richtig verstanden habe ist es immer wichtig auf die Größe und die Daten zu achten die geschrieben werden. Oke aber so geht es ja erstmal, mal sehen was meine Programme nun dazu sagen ^^ Vielen Dank erstmal und wenn du wegen dem Quellcode was hast wäre ich noch dankbarer Gruß Daniel |