[問題] 即時軟體RTX的Shared memory
各位版大好
我最近在使用real time軟體(RTX)撰寫運動控制程式
須用到共用記憶體的技術
程式碼如下:
public struct ShareMem
{
public byte[] A;
}
[DllImport("rtapi_w32.dll", CharSet = CharSet.Auto)]
static extern int RtCreateSharedMemory(
int flProtect,
int dwMaximumSizeHigh,
int dwMaximumSizeLow,
[MarshalAs(UnmanagedType.LPWStr)] string lpName,
ref IntPtr location);
ShareMem RTXDataPtr;
public void InitShareMemory(){
RTXDataPtr.A = new byte[4];
pCMD0 = Marshal.AllocHGlobal(Marshal.SizeOf(RTXDataPtr));
hCMD0 = RtCreateSharedMemory(1, 0, Marshal.SizeOf(RTXDataPtr),
"RTX_DATA", ref pCMD0);
RTXDataPtr = (ShareMem)Marshal.PtrToStructure(pCMD0, typeof(ShareMem));
}
現在的問題是當我使用程式碼如
RTXDataPtr.A[0] = 1;
時會產生"並未將物件參考設定為物件的執行個體"的錯誤訊息
請問我該如何修正程式碼?
感謝!
PS:RtCreateSharedMemory為RTX軟體提供的函式,其原始呼叫碼如下:
HANDLE RTAPI RtCreateSharedMemory(
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCSTR lpName,
VOID ** location
);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.118.185
※ 編輯: immj 來自: 122.117.118.185 (10/13 12:34)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章