Arkadaşlar Merhabalar,
Labview ile geliştirmiş olduğumuz bir yazılımı ,başka bir Labview yazılımı ile yada başka bir dille yazılmış yazılım ile haberleştirmek istediğimizde kernel32.dll içerisindeki FileMapping fonksiyonlarını Labview'de kullanarak bir çözüm yaratabiliriz. Burada bu çözüme başvurmamızın amacı farklı bir dil ile geliştirilmiş olan yazılım ile Labview tarafında geliştirilen yazılım arasında ortak bir hafıza noktası oluşturmaktır. Bazı durumlarda iki yada daha fazla sayıda farklı yazılımın aynı bilgisayar üzerinde çeşitli nedenlerden dolayı haberleştirilmesi istenilebilir.
Bu durumda kernel32.dll'i içerisindeki :
CreateFileMapping
MapViewOfFile
fonksiyonları ve
msvcrt.dll'i içerisindeki :
memcpy fonksiyonları aracılığıyla ortak bir haberleşme noktası oluşturabiliriz.
Şimdi ekte'de paylamış olduğum memoryMapping ile ilgili yapmış olduğum çalışmayı sizlere aktarayım.
MemoryMappingLib içerisinde 4 adet vi bulunmaktadır.
-createFileMap.vi :
Ortak hafıza bölgesi ismi ve hafıza boyutunu input olarak alır , CreateFileMapping ve MapViewOfFile fonksiyonları aracılığıyla ile bir hafıza bölgesi oluşturur.(kernel32.dll)
-writeMessage.vi:
Mesajı ,mesajın boyutunu ve mesajın yazılacağı adresi input olarak alır ve bu adrese mesajı yazar. (msvcrt.dll)
-readMessage.vi:
Mesajın yazılacağı değişkeni, okunacak adresi ve mesaj boyutunu input olarak alır ve adresten mesajı okur.
-destroyFileMap.vi:
Bu vi en başta oluşturulmuş olan hafıza bölgesini memory'den kaldırır.
Bu vi'lara ve örnek kodlamaları içeren projeyi ekten indirebilirsiniz.
Umarım sizler için faydalı olur...
Saygılarımla...
Himmet GENCER
Software Development Coordinator at TDG
himmetgencer@gmail.com