Codesys V3.5 平台 提供了库SysShm,其中包含了共享内存操作的接口函数:
SysSharedMemoryClose;
SysSharedMemoryCreate;
SysSharedMemoryDelete;
SysSharedMemoryGetPointer;
SysSharedMemoryOpen2;
SysSharedMemoryRead;
SysSharedMemoryReadByte;
SysSharedMemoryWrite;
SysSharedMemoryWriteByte;
与其进行共享内存通讯的平台Linux,window;下的编程Demo:
Linux:
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
struct DataExchange {
int i1;
int i2;
};
int main(int argc, char **argv)
{
struct DataExchange *pRead, *pWrite;
char sSharedMemReadName[100] = "_CODESYS_SharedMemoryTest_Write";
char sSharedMemWriteName[100] = "_CODESYS_SharedMemoryTest_Read";
int fdRead = shm_open(sSharedMemReadName, O_CREAT | O_RDWR, S_IRWXU | S_IRWXG);
printf("Shared Memory Read: %s %d\n\n",sSharedMemReadName, fdRead);
ftruncate(fdRead, sizeof(*pRead));
pRead = mmap(0, sizeof(*pRead), PROT_READ | PROT_WRITE, MAP_SHARED, fdRead, 0);
close(fdRead);
int fdWrite = shm_open(sSharedMemWriteName, O_CREAT | O_RDWR, S_IRWXU | S_IRWXG);
printf("Shared Memory Write: %s %d\n\n",sSharedMemWriteName, fdWrite);