/// <summary> /// 读取输入信息 /// </summary> private void ReadInput() { ushort ioInput; short rtn; lock (cardActLock) { rtn = GT400.GT_ExInpt(out ioInput); } runningError("io输入读取", rtn); //固高数据为低电平为1,实际要取反 ioInput = (ushort)~ioInput; mutexShMem.WaitOne(); // 共有存储在存储器 int ofst = DMI_OFST + 0 * Marshal.SizeOf(typeof(short)); //将读取到的PLC数据写入到相应的内存区域 Marshal.WriteInt16(mapAddrPtr, ofst, (short)ioInput); // 解除 mutexShMem.ReleaseMutex(); }