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]
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]