我想實現Python和C#之間的進程間通信,以便讀取由我的C#應用程序中的Python腳本編寫的值。 在C#中,我使用的是MemoryMappedFile類:讀取後存儲器映射的文件值設置爲零
MemoryMappedFile mmfSimPro = MemoryMappedFile.CreateOrOpen("MyFileMappingObject_SimPro", 20);
MemoryMappedViewAccessor accessorAxesSimPro = mmfSimPro.CreateViewAccessor(0, 20);
for (int i = 0; i < axesSimPro.Length; i++)
axesSimPro[i] = accessorAxesSimPro.ReadSingle(sizeof(float) * i);
,成功讀取值,但之後它設置在內存映射文件到零值。所以如果我再次讀取內存映射文件(並且它還沒有被Python腳本覆蓋),我將只讀取零。我怎樣才能防止呢?
我的Python腳本如下所示:
def WriteAxes():
shmem = mmap.mmap(0,256, "MyFileMappingObject_SimPro",mmap.ACCESS_WRITE)
struct.pack_into('f',shmem,0,_ctrl.Joints[1].CurrentValue)
struct.pack_into('f',shmem,4,_ctrl.Joints[0].CurrentValue)
struct.pack_into('f',shmem,8,_ctrl.Joints[2].CurrentValue)
struct.pack_into('f',shmem,12,_ctrl.Joints[3].CurrentValue)
struct.pack_into('f',shmem,16,_ctrl.Joints[4].CurrentValue-90)
shmem.close()