public bool[] readOutput_Map() { short nIndex = 0; uint uDataHigh = 0, uDataLow = 0, uFlagHigh = 0, uFlagLow = 0, uModuleID = 0; int nBoardNo = 0, nModulePos = 0; int boolArrayQuentity = this.m_Otp_Module_Quentity * 32; bool[] m_bReadResultIOMap = new bool[boolArrayQuentity]; for (int moduleNo = 0; moduleNo < this.m_Otp_Module_Quentity; moduleNo++) { CAXD.AxdInfoGetModule(moduleNo + 3, ref nBoardNo, ref nModulePos, ref uModuleID); CAXD.AxdoReadOutportWord(moduleNo + 3, 0, ref uDataHigh); CAXD.AxdoReadOutportWord(moduleNo + 3, 1, ref uDataLow); for (nIndex = 0; nIndex < 16; nIndex++) { int wIndex = nIndex + 32 * moduleNo; // Verify the last bit value of data read uFlagHigh = uDataHigh & 0x0001; uFlagLow = uDataLow & 0x0001; // Shift rightward by bit by bit uDataHigh = uDataHigh >> 1; uDataLow = uDataLow >> 1; // Updat bit value in control if (uFlagHigh == 1) { m_bReadResultIOMap[wIndex] = true; } else { m_bReadResultIOMap[wIndex] = false; } if (uFlagLow == 1) { m_bReadResultIOMap[wIndex + 16] = true; } else { m_bReadResultIOMap[wIndex + 16] = false; } } } return(m_bReadResultIOMap); }
public void Read() { int i = 0; UInt32 value = 0; lock (this) { if (Type == EAxtDio.DI) { foreach (AxtDioWordModule module in modules) { i = module.ModuleNo * 2; Validate(CAXD.AxdiReadInportWord(module.ModuleNo, module.Offset, ref value)); oldValue.Word(i, nowValue.Word(i)); nowValue.Word(i, (UInt16)value); } foreach (KeyValuePair <int, UlTripState> trip in trips) { if (trip.Value.Tripped(nowValue[trip.Key]) == true) { TripCode = trip.Value.Code; break; } } foreach (KeyValuePair <int, UlRelayTimer> timer in timers) { timer.Value.IN = nowValue[timer.Key]; } } else { foreach (AxtDioWordModule module in modules) { i = module.ModuleNo * 2; Validate(CAXD.AxdoReadOutportWord(module.ModuleNo, module.Offset, ref value)); oldValue.Word(i, nowValue.Word(i)); nowValue.Word(i, (UInt16)value); tempValue.Word(i, (UInt16)value); } } } }
public void Update() { for (int i = 0; i < m_iModuleCnt; i++) { if (m_aModuleInfo[i].iCntIn == 32 || m_aModuleInfo[i].iCntOut == 32) { CAXD.AxdoWriteOutportDword(i, 0, m_aModuleInfo[i].uDataOutSet); CAXD.AxdoReadOutportDword(i, 0, ref m_aModuleInfo[i].uDataOutGet); CAXD.AxdiReadInportDword(i, 0, ref m_aModuleInfo[i].uDataIn); } else if (m_aModuleInfo[i].iCntIn == 16 || m_aModuleInfo[i].iCntOut == 16) { CAXD.AxdoWriteOutportWord(i, 0, m_aModuleInfo[i].uDataOutSet); CAXD.AxdoReadOutportWord(i, 0, ref m_aModuleInfo[i].uDataOutGet); CAXD.AxdiReadInportWord(i, 0, ref m_aModuleInfo[i].uDataIn); } //m_aModuleInfo[i].uDataOutSet = 0;// m_aModuleInfo[i].uDataOutGet; } }
private bool SelectModule() { int nModuleCount = 0; CAXD.AxdInfoGetModuleCount(ref nModuleCount); if (nModuleCount > 0) { int nBoardNo = 0; int nModulePos = 0; uint uModuleID = 0; short nIndex = 0; uint uDataHigh = 0; uint uDataLow = 0; uint uFlagHigh = 0; uint uFlagLow = 0; uint uUse = 0; CAXD.AxdInfoGetModule(comboModule.SelectedIndex, ref nBoardNo, ref nModulePos, ref uModuleID); switch ((AXT_MODULE)uModuleID) { case AXT_MODULE.AXT_SIO_DI32: case AXT_MODULE.AXT_SIO_RDI32: groupHigh.Text = "INPUT 0bit ~ 15Bit"; groupLow.Text = "INPUT 16bit ~ 31Bit"; if (((AXT_MODULE)uModuleID) == AXT_MODULE.AXT_SIO_RDI32) { checkInterrupt.Checked = false; radioCallback.Enabled = false; radioMessage.Enabled = false; radioEvent.Enabled = false; checkRigingEdge.Checked = false; checkFallingEdge.Checked = false; } else { checkInterrupt.Checked = true; radioCallback.Enabled = true; radioMessage.Enabled = true; radioEvent.Enabled = true; checkRigingEdge.Checked = true; checkFallingEdge.Checked = true; CAXD.AxdiInterruptGetModuleEnable(comboModule.SelectedIndex, ref uUse); if (uUse == (uint)AXT_USE.ENABLE) { checkInterrupt.Checked = true; SelectMessage(); } else { checkInterrupt.Checked = false; } CAXD.AxdiInterruptEdgeGetWord(comboModule.SelectedIndex, 0, (uint)AXT_DIO_EDGE.UP_EDGE, ref uDataHigh); CAXD.AxdiInterruptEdgeGetWord(comboModule.SelectedIndex, 1, (uint)AXT_DIO_EDGE.UP_EDGE, ref uDataLow); if (uDataHigh == 0xFFFF && uDataLow == 0xFFFF) { checkRigingEdge.Checked = true; } else { checkRigingEdge.Checked = false; } CAXD.AxdiInterruptEdgeGetWord(comboModule.SelectedIndex, 0, (uint)AXT_DIO_EDGE.DOWN_EDGE, ref uDataHigh); CAXD.AxdiInterruptEdgeGetWord(comboModule.SelectedIndex, 1, (uint)AXT_DIO_EDGE.DOWN_EDGE, ref uDataLow); if (uDataHigh == 0xFFFF && uDataLow == 0xFFFF) { checkFallingEdge.Checked = true; } else { checkFallingEdge.Checked = false; } } for (nIndex = 0; nIndex < 16; nIndex++) { checkHigh[nIndex].Text = String.Format("{0:D2}", nIndex); checkLow[nIndex].Text = String.Format("{0:D2}", nIndex + 16); } break; case AXT_MODULE.AXT_SIO_DO32P: case AXT_MODULE.AXT_SIO_DO32T: case AXT_MODULE.AXT_SIO_RDO32: groupHigh.Text = "OUTPUT 0bit ~ 15Bit"; groupLow.Text = "OUTPUT 16bit ~ 31Bit"; checkInterrupt.Checked = false; radioCallback.Enabled = false; radioMessage.Enabled = false; radioEvent.Enabled = false; checkRigingEdge.Checked = false; checkFallingEdge.Checked = false; //++ // Read outputting signal in WORD CAXD.AxdoReadOutportWord(comboModule.SelectedIndex, 0, ref uDataHigh); CAXD.AxdoReadOutportWord(comboModule.SelectedIndex, 1, ref uDataLow); for (nIndex = 0; nIndex < 16; nIndex++) { // Verify the last bit value of data read uFlagHigh = uDataHigh & 0x0001; uFlagLow = uDataLow & 0x0001; // Shift rightward by bit by bit uDataHigh = uDataHigh >> 1; uDataLow = uDataLow >> 1; // Updat bit value in control if (uFlagHigh == 1) { checkHigh[nIndex].Checked = true; } else { checkHigh[nIndex].Checked = false; } if (uFlagLow == 1) { checkLow[nIndex].Checked = true; } else { checkLow[nIndex].Checked = false; } checkHigh[nIndex].Text = String.Format("{0:D2}", nIndex); checkLow[nIndex].Text = String.Format("{0:D2}", nIndex + 16); } break; case AXT_MODULE.AXT_SIO_DB32P: case AXT_MODULE.AXT_SIO_DB32T: case AXT_MODULE.AXT_SIO_RDB128MLII: groupHigh.Text = "INPUT 0bit ~ 15Bit"; groupLow.Text = "OUTPUT 0bit ~ 15Bit"; // Only Digital Input was used checkInterrupt.Enabled = true; checkRigingEdge.Enabled = true; checkFallingEdge.Enabled = true; CAXD.AxdiInterruptGetModuleEnable(comboModule.SelectedIndex, ref uUse); if (uUse == (uint)AXT_USE.ENABLE) { checkInterrupt.Checked = true; SelectMessage(); } else { checkInterrupt.Checked = false; } CAXD.AxdiInterruptEdgeGetWord(comboModule.SelectedIndex, 0, (uint)AXT_DIO_EDGE.UP_EDGE, ref uDataHigh); if (uDataHigh == 0xFFFF) { checkRigingEdge.Checked = true; } else { checkRigingEdge.Checked = false; } CAXD.AxdiInterruptEdgeGetWord(comboModule.SelectedIndex, 0, (uint)AXT_DIO_EDGE.DOWN_EDGE, ref uDataHigh); if (uDataHigh == 0xFFFF) { checkFallingEdge.Checked = true; } else { checkFallingEdge.Checked = false; } //++ // Read outputting signal in WORD CAXD.AxdoReadOutportWord(comboModule.SelectedIndex, 0, ref uDataLow); for (nIndex = 0; nIndex < 16; nIndex++) { // Verify the last bit value of data read uFlagLow = uDataLow & 0x0001; // Shift rightward by bit by bit uDataLow = uDataLow >> 1; // Updat bit value in control if (uFlagLow == 1) { checkLow[nIndex].Checked = true; } else { checkLow[nIndex].Checked = false; } checkHigh[nIndex].Text = String.Format("{0:D2}", nIndex); checkLow[nIndex].Text = String.Format("{0:D2}", nIndex); } break; } } return(true); }