/// <summary> /// P32C32 지정된 포트가 동작하고 있는지 읽어 온다. /// </summary> /// <param name="Pos"></param> /// <returns></returns> public bool OutputCheck(short Pos) { __IOData__ Value = IOCheck(Pos); if ((P32C32.OutData[Value.Card][Value.Pos] & Value.Data) == Value.Data) return true; else return false; }
/// <summary> /// P32C32 지정된 포트의 I/O 위치를 알아낸다. /// </summary> /// <param name="Pos"></param> /// <returns></returns> public __IOData__ IOCheck(int Pos) { __IOData__ value = new __IOData__(); int OPos = Pos / 8; byte Data = (byte)(0x01 << (Pos % 8)); value.Card = (short)(OPos / 4); value.Pos = (short)(OPos % 4); value.Data = Data; return value; }
/// <summary> /// P32C32 지정된 포트를 On/Off 한다. /// </summary> /// <param name="Pos"></param> /// <param name="OnOff"></param> public void outportb(int Pos, bool OnOff) { #if PROGRAM_RUNNING __IOData__ Value = IOCheck(Pos); if (OnOff == true) P32C32.OutData[Value.Card][Value.Pos] |= Value.Data; else P32C32.OutData[Value.Card][Value.Pos] &= (byte)~Value.Data; outportb(Value.Card, Value.Pos, P32C32.OutData[Value.Card][Value.Pos]); #endif return; }
/// <summary> /// 지정 포트가 동작 되었는지 읽어 온다. /// </summary> /// <param name="Pos"></param> /// <returns></returns> public bool inportb(short Pos) { __IOData__ Value = IOCheck(Pos); #if PROGRAM_RUNNING bool Data; uint DIVal = 0; wInitialCode = UniDAQ.Ixud_ReadDI(P32C32.In[Value.Card], (ushort)Value.Pos, ref DIVal); Data = false; if (((byte)~DIVal & Value.Data) == Value.Data) Data = true; return Data; #else return false; #endif }