예제 #1
0
        /// <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();
        }