#include "stdafx.h" #include #include "All.h" #include "MACHINE_DPC.h" #include "MACHINE_Logical.h" #include "DIOSDICOMInfo.h" CMACHINE_Logical::CMACHINE_Logical(void) { } CMACHINE_Logical::~CMACHINE_Logical(void) { } bool CMACHINE_Logical::DPCPoint(CMACHINE_DPC* pMACHINE_DPC) { m_pMACHINE_DPC = pMACHINE_DPC; return true; } RET_STATUS OEM_IF CMACHINE_Logical::SelectExamMode(const char *pExamKey) { printf("\n !!!!!!!!!!!!!!!!!!!!!SelectExamMode :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", pExamKey); if ((string)pExamKey == "DX") { m_CurrentExam = ExamList["DX"].GetKey(0); printf("\n !!!!!!!!!!!!!!!!!!!!!CurrentExamMode :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", m_CurrentExam.c_str()); if (m_CurrentExam == "TOMO") { //m_pMACHINE_DPC->SendTomoExam(); } else { //m_pMACHINE_DPC->ClearMoveState(); } } else if ((string)pExamKey == "RF") { m_CurrentExam = ExamList["RF"].GetKey(0); printf("\n !!!!!!!!!!!!!!!!!!!!!CurrentExamMode :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", m_CurrentExam.c_str()); if (m_CurrentExam == "TOMO") { //m_pMACHINE_DPC->SendTomoExam(); } else { //m_pMACHINE_DPC->ClearMoveState(); } } return RET_SUCCEED; } RET_STATUS CMACHINE_Logical::SetExamInfo(ResDataObject& PARAM_IN pParam) { if (pParam.size() == 0) { return RET_FAILED; } printf("\n !!!!!!!!!!!!!!!!!!!!!SetExamInfo :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", pParam.encode()); ExamList = pParam; return RET_SUCCEED; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameAcq() { return true; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameIn() { return false; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameEnd() { return true; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_FramePost() { return true; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameError() { return true; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_SeqError() { return true; } bool DEVICE_SUPPORT CMACHINE_Logical::Support_SeqEnd() { return true; } RET_STATUS DATA_ACTION CMACHINE_Logical::FrameAcq() { //if (m_CurrentExam != "TOMO") //{ // return RET_SUCCEED; //} //m_pMACHINE_DPC->StartMove(true); return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::FrameIn() { //if (m_CurrentExam != "TOMO") //{ // return RET_SUCCEED; //} //m_pMACHINE_DPC->SendIXRAY(); return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::FrameEnd() { if (m_CurrentExam != "TOMO") { return RET_SUCCEED; } m_pMACHINE_DPC->StartMove(false); return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::FrameError() { m_pMACHINE_DPC->StartMove(false); return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::SeqError() { m_pMACHINE_DPC->StartMove(false); return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::SeqEnd() { m_pMACHINE_DPC->StartMove(false); return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::FramePost() { m_pMACHINE_DPC->StartMove(false); return RET_SUCCEED; } RET_STATUS CMACHINE_Logical::SetTechParamsInfo(ResDataObject PARAM_IN& pParam) { TECHPARAM_INFO info; info.SetVal(pParam.encode()); USHORT nbodypart; string strpositionnumber = info.m_PositionNumber; m_pMACHINE_DPC->ClearMoveState(); //int ntemp = atoi(strpositionnumber.c_str()); m_pMACHINE_DPC->SetPositionNum(strpositionnumber.c_str()); if (m_CurrentExam == "TOMO") { m_pMACHINE_DPC->SendTomoExam(); } return RET_SUCCEED; } bool CMACHINE_Logical:: GetMachineryReadyState() { return true; } RET_STATUS DATA_ACTION CMACHINE_Logical::StartMove() { if (m_CurrentExam != "TOMO") { return RET_SUCCEED; } m_pMACHINE_DPC->StartMove(true); if (m_pMACHINE_DPC->MechMoveReady()) { return RET_SUCCEED; } else { return RET_FAILED; } return RET_SUCCEED; } RET_STATUS DATA_ACTION CMACHINE_Logical::StopMove() { return RET_SUCCEED; } RET_STATUS CMACHINE_Logical::GetTomoResults(ResDataObject &resultHeightresultAngle, ResDataObject &resultHeight) { RET_STATUS ret = RET_SUCCEED; //if (WAIT_OBJECT_0 == WaitForSingleObject(m_pMACHINE_DPC->m_hGetPostionFinished, 500)) //{ // for (int i = 0; i < m_pMACHINE_DPC->m_resultAngle.size(); i++) // { // resultHeightresultAngle.update(m_pMACHINE_DPC->m_resultAngle.GetKey(i), (float)m_pMACHINE_DPC->m_resultAngle[i]); // resultHeight.update(m_pMACHINE_DPC->m_resultHeight.GetKey(i), (float)m_pMACHINE_DPC->m_resultHeight[i]); // } //} if (m_pMACHINE_DPC->MechGetPosReady()) { ResDataObject res1, res2; m_pMACHINE_DPC->GetPosition(res1, res2); for (int i = 0; i < res1.size(); i++) { resultHeightresultAngle.update(res1.GetKey(i), (float)res1[i]); resultHeight.update(res2.GetKey(i), (float)res2[i]); } return RET_SUCCEED; } else { return RET_FAILED; } return ret; } RET_STATUS CMACHINE_Logical::SetXrayOnNum(int nNum) { if (m_CurrentExam != "TOMO") { return RET_SUCCEED; } m_pMACHINE_DPC->SendIXRAY(); return RET_SUCCEED; }