123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550 |
- #include "stdafx.h"
- #include "LogicDeviceMechCarm.h"
- #include "ExamHandlerManager.h"
- #include "LogicDriverThreadLocker.h"
- #include "IExamHandler.h"
- #include "CArmWorkflowManager.h"
- #include "PositionManager.h"
- #include "ICArmGeneralHandler.h"
- #include "..\\ExamHandlerNameDef.h"
- #include "ICBCTExamHandler.h"
- #include "DIOS.Dev.Machinery.Driver.ECOM.h"
- using namespace DIOS::Dev::Detail::MachineryECOM;
- LogicDeviceMechCarm::LogicDeviceMechCarm(MachineryECOMDriver* pMachineryDriver)
- :MotionControlUnit(pMachineryDriver)
- {
- }
- LogicDeviceMechCarm::~LogicDeviceMechCarm()
- {
- }
- //
- //RET_STATUS LogicDeviceMechCarm::SetExamInfo(ResDataObject& ParamIn)
- //{
- // RET_STATUS ret = RET_STATUS::RET_SUCCEED;
- //
- // if (ParamIn.IsObject())
- // {
- // const char* pszKey = ParamIn.GetKey(0);
- // if (pszKey)
- // {
- // int idx = m_ExamList.GetFirstOf(pszKey);
- // if (idx >= 0)
- // {
- // m_ExamList[pszKey] = ParamIn[pszKey];
- // }
- // else
- // {
- // //new one
- // m_ExamList.add(pszKey, ParamIn[pszKey]);
- // }
- //
- // return RET_STATUS::RET_SUCCEED;
- // }
- // }
- //
- // return ret;
- //}
- //
- //RET_STATUS LogicDeviceMechCarm::SelectExamMode(const char *pExamKey)
- //{
- // RET_STATUS ret = RET_STATUS::RET_FAILED;
- //
- // LogicDriverThreadLocker::Instance()->Lock();
- //
- // const char* pExamType = "DX";
- //
- // pExamType = m_ExamList[pExamKey].GetKey(0);
- //
- // m_Mode = (EXAM_MODE)CArmWorkflowManager::Instance()->ChangeExamMode(pExamKey, pExamType);
- //
- // LogicDriverThreadLocker::Instance()->UnLock();
- //
- // return ret;
- //}
- RET_STATUS LogicDeviceMechCarm::EnterCalibration()
- {
- return RET_STATUS::RET_SUCCEED;
- }
- RET_STATUS LogicDeviceMechCarm::ExitCalibration()
- {
- return RET_STATUS::RET_SUCCEED;
- }
- /****************************
- "P0": "TOMO"
- "P0": "Single"
- *****************************/
- RET_STATUS LogicDeviceMechCarm::SetExpMode(const char* pExpMode)
- {
- RET_STATUS ret = RET_STATUS::RET_SUCCEED;
- LogicDriverThreadLocker::Instance()->Lock();
- const char* pExamType = "DX";
- if(gbusinessLog) gbusinessLog->Info("[SelectExamMode]->[ExamKey={$}, ExamType={$}]", pExamType, pExpMode);
- m_Mode = (EXAM_MODE)CArmWorkflowManager::Instance()->ChangeExamMode(pExamType, pExpMode);
- LogicDriverThreadLocker::Instance()->UnLock();
- if(gbusinessLog) gbusinessLog->Info("[SelectExamMode]->[Leave]");
- return ret;
- }
- bool LogicDeviceMechCarm::GetMachineryReadyState()
- {
- return PositionManager::Instance()->IsSystemReady();
- }
- RET_STATUS LogicDeviceMechCarm::NotifyMachineryReadyState(bool bMachineryReady)
- {
- m_MachineryReady[AttrKey::MachineryReady] = bMachineryReady;
- return RET_STATUS::RET_SUCCEED;
- }
- RET_STATUS LogicDeviceMechCarm::GetTomoResult(ResDataObject &resultAngle, ResDataObject &resultHeight)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- ICBCTExamHandler *handler = (ICBCTExamHandler *)ExamHandlerManager::Instance()->GetHandler(CBCT_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnGetExposurePositions(resultAngle, resultHeight);
- }
- return ret;
- }
- //RET_STATUS LogicDeviceMechCarm::StopMech()
- //{
- // RET_STATUS ret = RET_STATUS::RET_FAILED;
- //
- // LogicDriverThreadLocker::Instance()->Lock();
- //
- // IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- // if (handler)
- // {
- // ret = handler->OnStopMech();
- // }
- //
- // LogicDriverThreadLocker::Instance()->UnLock();
- //
- // return ret;
- //}
- RET_STATUS LogicDeviceMechCarm::StartMove()
- {
- RET_STATUS ret = RET_STATUS::RET_SUCCEED;
- if(gbusinessLog) gbusinessLog->Info("[StartMove]");
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::StopMove()
- {
- RET_STATUS ret = RET_STATUS::RET_SUCCEED;
- if(gbusinessLog) gbusinessLog->Info("[StopMove]");
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::ForceStopAllMotion()
- {
- if(gbusinessLog) gbusinessLog->Info("[ForceStopAllMotion]");
- LogicDriverThreadLocker::Instance()->Lock();
- //auto handler = CArmWorkflowManager::Instance()->GetCurrentWorkFlowHandler();
- //if (handler)
- //{
- // handler->OnStopMech();
- //}
- auto handler = ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- handler->OnStopMech();
- }
-
- LogicDriverThreadLocker::Instance()->UnLock();
- return RET_STATUS::RET_SUCCEED;
- }
- RET_STATUS LogicDeviceMechCarm::FramePrep()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFramePrep();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::FrameReady()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFrameReady();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::FrameAcq()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[FrameAcq]");
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFrameAcq();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::FrameStart()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFrameStart();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::FrameEnd()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFrameEnd();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::FramePost()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFramePost();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::FrameError()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnFrameError();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::SeqError()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnSeqError();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::SeqEnd()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnSeqEnd();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::SetFrameRate(FLOAT frameRate)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnSetFrameRate(frameRate);
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::SetTechParamsInfo(ResDataObject& pParam)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetCurrentHandler();
- if (handler)
- {
- ret = handler->OnSetTechParamsInfo(pParam);
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::CalMotionTubeLineV(ResDataObject& ParamIn)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnTubeCircular(ParamIn);
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::CalMotionTubeAngleRotate(ResDataObject& ParamIn)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnTubeSwing(ParamIn);
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::CalGetEncoderofTubeLineV(ResDataObject& ParamOut)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[CalGetEncoderofTubeLineV]");
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnGetTubeCircularEncoder(ParamOut);
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::CalGetEncoderofTubeAngle(ResDataObject& ParamOut)
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[CalGetEncoderofTubeAngle]");
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnGetTubeSwingEncoder(ParamOut);
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::ActiveTubeAngleZAxisClear()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[ActiveTubeAngleZAxisClear]");
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnActiveTubeSwingZAxis();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::CancelTubeAngleZAxisClear()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[CancelTubeAngleZAxisClear]");
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnCancleTubeSwingZAxis();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::ActiveTubeHeightZAxisClear()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[ActiveTubeHeightZAxisClear]");
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnActiveTubeCircularZAxis();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::CancelTubeHeightZAxisClear()
- {
- RET_STATUS ret = RET_STATUS::RET_FAILED;
- if(gbusinessLog) gbusinessLog->Info("[CancelTubeHeightZAxisClear]");
- LogicDriverThreadLocker::Instance()->Lock();
- ICArmGeneralHandler *handler = (ICArmGeneralHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER);
- if (handler)
- {
- ret = handler->OnCancleTubeCircularZAxis();
- }
- LogicDriverThreadLocker::Instance()->UnLock();
- return ret;
- }
- RET_STATUS LogicDeviceMechCarm::NotifyMachineryTechParams(float tid, float sid, int project, float angle, int direction, std::string geometry)
- {
- m_MachineryTID[AttrKey::MachineryTID] = tid;
- m_pMachineryDriver->FireNotify(AttrKey::MachineryTID, to_string(tid));
- m_MachinerySID[AttrKey::MachinerySID] = sid;
- m_pMachineryDriver->FireNotify(AttrKey::MachinerySID, to_string(sid));
- m_MachineryProjectionNumber[AttrKey::MachineryProjectionNumber] = project;
- m_pMachineryDriver->FireNotify(AttrKey::MachineryProjectionNumber, to_string(project));
- m_MachineryScanAngle[AttrKey::MachineryScanAngle] = angle;
- m_pMachineryDriver->FireNotify(AttrKey::MachineryScanAngle, to_string(angle));
- m_MachineryScanDirection[AttrKey::MachineryScanDirection] = direction;
- m_pMachineryDriver->FireNotify(AttrKey::MachineryScanDirection, to_string(direction));
- m_MachineryScanGeometry[AttrKey::MachineryScanGeometry] = geometry.c_str();
- m_pMachineryDriver->FireNotify(AttrKey::MachineryScanGeometry, geometry);
- return RET_STATUS::RET_SUCCEED;
- }
|