//상속된것들. public bool Init() { //통합 보드 초기화 부분. if (CAXL.AxlIsOpened() == 0) { // 통합 라이브러리가 사용 가능하지 (초기화가 되었는지) 확인 if (CAXL.AxlOpenNoReset(7) != 0) { // 통합 라이브러리 초기화 Log.ShowMessage("Aio", "AJIN AXL Lib Loading Error"); return(false); } } uint uiStatus = 0; uint uiRet = CAXA.AxaInfoIsAIOModule(ref uiStatus); if (uiRet != 0) { if (uiStatus == 0) { Log.ShowMessage("Dio", "AJIN AXL No Exist IO Module"); } else { Log.ShowMessage("Dio", "AJIN AXL Init Failed"); } return(false); } //모듈 정보 확인 부분. //InPut OutPut Count Set CAXA.AxaInfoGetModuleCount(ref m_iModuleCnt); //Get Max I Module , O Module Count. int iInputCnt = 0, iOutputCnt = 0; m_aModuleInfo = new TModuleInfo[m_iModuleCnt]; for (int i = 0; i < m_iModuleCnt; i++) { CAXA.AxaInfoGetInputCount(i, ref iInputCnt); CAXA.AxaInfoGetOutputCount(i, ref iOutputCnt); m_iMaxIn += iInputCnt; m_iMaxOut += iOutputCnt; m_aModuleInfo[i].iCntIn = iInputCnt; m_aModuleInfo[i].iCntOut = iOutputCnt; } //Range Setting if (dMin < -10 || dMin > 10) { dMin = 0; } if (dMax < -10 || dMax > 10) { dMax = 0; } for (int i = 0; i < m_iMaxIn; i++) { CAXA.AxaiSetRange(i, dMin, dMax); CAXA.AxaiSetTriggerMode(i, 1); //1 - Normal Trigger , 2 - Timer Trigger , 3 - External Trigger //CAXA.AxaiHwSetBufferOverflowMode(i, 0); //CAXA.AxaiHwSetSamplePeriod(i, 100); //CAXA.AxaiHwSetSampleFreq(i, 10); //CAXA.AxaiHwGetSampleFreq(0, ref d1); } for (int i = 0; i < m_iMaxOut; i++) { CAXA.AxaoSetRange(i, dMin, dMax); } return(true); }
public void activate(AXT_MODULE sub1, AXT_MODULE sub2, AXT_MODULE sub3, AXT_MODULE sub4, out bool b, out string s) { try { if (dev.NotExistHW.AXT) { b = true; s = "OK"; return; } isActivate = false; try { CAXL.AxlClose(); } catch { b = false; s = "Cannot find AXL.DLL"; return; } int lIrqNo = 19; uint uStatus = 0; int nDIOModule = 0; int nAIOModule = 0; DI_ModulCount = 0; DO_ModulCount = 0; AIO_ModulCount = 0; if (sub1 == AXT_MODULE.AXT_SIO_DI32) { DI_ModulCount++; } if (sub2 == AXT_MODULE.AXT_SIO_DI32) { DI_ModulCount++; } if (sub3 == AXT_MODULE.AXT_SIO_DI32) { DI_ModulCount++; } if (sub4 == AXT_MODULE.AXT_SIO_DI32) { DI_ModulCount++; } if (sub1 == AXT_MODULE.AXT_SIO_DO32P) { DO_ModulCount++; } if (sub2 == AXT_MODULE.AXT_SIO_DO32P) { DO_ModulCount++; } if (sub3 == AXT_MODULE.AXT_SIO_DO32P) { DO_ModulCount++; } if (sub4 == AXT_MODULE.AXT_SIO_DO32P) { DO_ModulCount++; } if (sub1 == AXT_MODULE.AXT_SIO_AI8AO4HB) { AIO_ModulCount++; } if (sub2 == AXT_MODULE.AXT_SIO_AI8AO4HB) { AIO_ModulCount++; } if (sub3 == AXT_MODULE.AXT_SIO_AI8AO4HB) { AIO_ModulCount++; } if (sub4 == AXT_MODULE.AXT_SIO_AI8AO4HB) { AIO_ModulCount++; } uint uResult = CAXL.AxlOpen(lIrqNo); AXT_FUNC_RESULT enReult; if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum b = false; s = String.Format("AxlOpen Fail : IRQ[{0}], Error Code[{1}] - {2}", lIrqNo, uResult, enReult); return; } #region DIO Modul Check uResult = CAXD.AxdInfoIsDIOModule(ref uStatus); if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum b = false; s = String.Format("DIO Module Exist Check Fail : Error Code[{0}] - {1}", uResult, enReult); return; } if ((AXT_EXISTENCE)uStatus != AXT_EXISTENCE.STATUS_EXIST) { if (DI_ModulCount + DO_ModulCount > 0) { b = false; s = "CANNOT Find DIO Module!"; return; } } //uResult = CAXD.AxdInfoGetModuleCount(ref nDIOModule); //if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) //{ // enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum // b = false; s = String.Format("DIO Module Count Check Fail : Error Code[{0}] - {1}", uResult, enReult); return; //} //if (DI_ModulCount + DO_ModulCount != nDIOModule) //{ // b = false; s = String.Format("DIO Module Count Mismatch : Find[{0}] Need[{1}]", nDIOModule, (DI_ModulCount + DO_ModulCount)); return; //} int nBoardNo = 0; int nModulePos = 0; uint uModuleID = 0; for (int i = 0; i < nDIOModule; i++) { uResult = CAXD.AxdInfoGetModule(i, ref nBoardNo, ref nModulePos, ref uModuleID); if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum b = false; s = "DIO Module[" + i.ToString() + "] Check Fail : Error Code[" + uResult.ToString() + "] - " + enReult.ToString(); return; } if (nBoardNo == 0) { if (nModulePos == 0) { if (sub1 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub1 modul " + sub1.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else if (nModulePos == 1) { if (sub2 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub2 modul " + sub2.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else { b = false; s = "nBoardNo[0] uModuleID : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else if (nBoardNo == 1) { if (nModulePos == 0) { if (sub3 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub3 modul " + sub3.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else if (nModulePos == 1) { if (sub4 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub4 modul " + sub4.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else { b = false; s = "nBoardNo[1] uModuleID : " + ((AXT_MODULE)uModuleID).ToString(); return; } } //if (nBoardNo != 0) { b = false; s = "Fail : DIO nBoardNo " + nBoardNo.ToString(); return; } //if (nModulePos == 0) //{ // if (sub1 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub1 modul " + sub1.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} //if (nModulePos == 1) //{ // if (sub2 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub2 modul " + sub2.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} //if (nModulePos == 2) //{ // if (sub3 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub3 modul " + sub3.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} //if (nModulePos == 3) //{ // if (sub4 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub4 modul " + sub4.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} } #endregion #region AIO Modul Check uResult = CAXA.AxaInfoIsAIOModule(ref uStatus); if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum b = false; s = "DIO Module Exist Check Fail : Error Code[" + uResult.ToString() + "] - " + enReult.ToString(); return; } if ((AXT_EXISTENCE)uStatus != AXT_EXISTENCE.STATUS_EXIST) { if (AIO_ModulCount > 0) { b = false; s = "CANNOT Find AIO Module!"; return; } } uResult = CAXA.AxaInfoGetModuleCount(ref nAIOModule); if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum b = false; s = "AIO Module Count Check Fail : Error Code[" + uResult.ToString() + "] - " + enReult.ToString(); return; } if (AIO_ModulCount != nAIOModule) { b = false; s = "AIO Module Count Mismatch : Find[" + nAIOModule.ToString() + "] Need[" + (AIO_ModulCount).ToString() + "]"; return; } for (int i = 0; i < nAIOModule; i++) { uResult = CAXA.AxaInfoGetModule(i, ref nBoardNo, ref nModulePos, ref uModuleID); if (uResult != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { enReult = (AXT_FUNC_RESULT)uResult; // convert int to enum b = false; s = "Analog Module[" + i.ToString() + "] Check Fail : Error Code[" + uResult.ToString() + "] - " + enReult.ToString(); return; } if (nBoardNo == 0) { if (nModulePos == 0) { if (sub1 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub1 modul " + sub1.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else if (nModulePos == 1) { if (sub2 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub2 modul " + sub2.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else { b = false; s = "nBoardNo[0] uModuleID : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else if (nBoardNo == 1) { if (nModulePos == 0) { if (sub3 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub3 modul " + sub1.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else if (nModulePos == 1) { if (sub4 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub4 modul " + sub2.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } } else { b = false; s = "nBoardNo[1] uModuleID : " + ((AXT_MODULE)uModuleID).ToString(); return; } } //if (nBoardNo != 1) { b = false; s = "AIO nBoardNo " + nBoardNo.ToString() + " : Fail"; return; } //if (nModulePos == 0) //{ // if (sub1 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub1 modul " + sub1.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} //if (nModulePos == 1) //{ // if (sub2 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub2 modul " + sub2.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} //if (nModulePos == 2) //{ // if (sub3 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub3 modul " + sub3.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} //if (nModulePos == 3) //{ // if (sub4 != (AXT_MODULE)uModuleID) { b = false; s = "Fail : sub4 modul " + sub4.ToString() + " : " + ((AXT_MODULE)uModuleID).ToString(); return; } //} } CAXA.AxaoInfoGetChannelCount(ref AO_ChannelCount); if (AO_ChannelCount != nAIOModule * 4) { b = false; s = "Anlog Output Channel Count Check Fail : " + (nAIOModule * 4).ToString() + " : " + AO_ChannelCount.ToString(); return; } for (int i = 0; i < AO_ChannelCount; ++i) { // 출력 Channel에 0V를 출력한다. CAXA.AxaoWriteVoltage(i, 0); } CAXA.AxaiInfoGetChannelCount(ref AI_ChannelCount); if (AI_ChannelCount != nAIOModule * 8) { b = false; s = "Analog Input Channel Count Check Fail : " + (nAIOModule * 8).ToString() + " : " + AI_ChannelCount.ToString(); return; } #endregion b = true; s = "OK"; isActivate = true; } catch { b = false; s = "Exception Error"; isActivate = false; } }