| SourceCode/Bond/Servo/CMaster.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CRobotTask.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CRobotTask.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/Model.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
SourceCode/Bond/Servo/CMaster.cpp
@@ -551,7 +551,7 @@ PORT_GET: if (m_pActiveRobotTask != nullptr) { m_pActiveRobotTask->run(); m_pActiveRobotTask->pick(); std::string strDescription = m_pActiveRobotTask->getDescription(); unlock(); if (m_listener.onRobotTaskEvent != nullptr) { @@ -677,17 +677,24 @@ BOOL bOk = FALSE; lock(); if (m_pActiveRobotTask != nullptr) { if (m_pActiveRobotTask->getTarPosition() == p->getID()) { // 是否已经进入手臂(即取片完成),进入下一步,放片 if (m_pActiveRobotTask->isPicking() && ((m_pActiveRobotTask->getArmNo() == 1 && p->getID() == EQ_ID_ARM_TRAY1) || (m_pActiveRobotTask->getArmNo() == 2 && p->getID() == EQ_ID_ARM_TRAY2)) ) { slot = 1; bOk = TRUE; } // 是否放片完成 else if (m_pActiveRobotTask->isPlacing() && m_pActiveRobotTask->getTarPosition() == p->getID()) { CGlass* pGlass = p->getGlassFromSlot(m_pActiveRobotTask->getTarSlot()); if (pGlass == nullptr) { bOk = TRUE; slot = m_pActiveRobotTask->getTarSlot(); LOGI("<CMaster>onPreFethedOutJob, 已校验数据一致性."); } } else if (p->getID() == EQ_ID_ARM_TRAY1 || p->getID() == EQ_ID_ARM_TRAY2) { slot = 1; bOk = TRUE; } } unlock(); @@ -710,21 +717,30 @@ if (code == EDCC_FETCHOUT_JOB) { lock(); if (m_pActiveRobotTask != nullptr && m_pActiveRobotTask->getSrcPosition() == p->getID()) { m_pActiveRobotTask->fetchOut(); LOGI("开始取片..."); } unlock(); } else if (code == EDCC_STORED_JOB) { lock(); if (m_pActiveRobotTask != nullptr && m_pActiveRobotTask->getTarPosition() == p->getID()) { if (m_pActiveRobotTask != nullptr && m_pActiveRobotTask->isPicking() && ((m_pActiveRobotTask->getArmNo() == 1 && p->getID() == EQ_ID_ARM_TRAY1) || (m_pActiveRobotTask->getArmNo() == 2 && p->getID() == EQ_ID_ARM_TRAY2)) ) { LOGI("取片完成."); m_pActiveRobotTask->fetchOut(); m_pActiveRobotTask->place(); } else if (m_pActiveRobotTask != nullptr && m_pActiveRobotTask->isPlacing() && m_pActiveRobotTask->getTarPosition() == p->getID()) { m_pActiveRobotTask->stored(); m_pActiveRobotTask->completed(); LOGI("放片完成..."); // 完成此条搬送任务,但要把数据和消息上抛应用层 unlock(); lock(); SourceCode/Bond/Servo/CRobotTask.cpp
@@ -167,9 +167,30 @@ return m_timeFinish; } int CRobotTask::getArmNo() { return m_robotCmdParam[ACTION_PICK].armNo; } ROBOT_TASK_STATE CRobotTask::getState() { return m_state; } bool CRobotTask::isPicking() { return m_state == ROBOT_TASK_STATE::Picking; } bool CRobotTask::isPlacing() { return m_state == ROBOT_TASK_STATE::Placing; } bool CRobotTask::isRestoring() { return m_state == ROBOT_TASK_STATE::Restoring; } void CRobotTask::run() @@ -299,6 +320,9 @@ switch (m_state) { case ROBOT_TASK_STATE::Ready: return _T("Ready"); case ROBOT_TASK_STATE::Running: return _T("Running"); case ROBOT_TASK_STATE::Picking: return _T("Picking"); case ROBOT_TASK_STATE::Placing: return _T("Placing"); case ROBOT_TASK_STATE::Restoring: return _T("Restoring"); case ROBOT_TASK_STATE::Error: return _T("Error"); case ROBOT_TASK_STATE::Abort: return _T("Abort"); case ROBOT_TASK_STATE::Completed: return _T("Completed"); SourceCode/Bond/Servo/CRobotTask.h
@@ -29,7 +29,11 @@ time_t getFetchoutTime(); time_t getStoredTime(); time_t getFinishTime(); int getArmNo(); ROBOT_TASK_STATE getState(); bool isPicking(); bool isPlacing(); bool isRestoring(); void run(); void pick(); void place(); @@ -59,7 +63,7 @@ time_t m_timeFetchOut; /* 取片时间*/ time_t m_timeStored; /* 放片时间 */ time_t m_timeFinish; /* 结束时间 */ ROBOT_CMD_PARAM m_robotCmdParam[3]; /* 参数 */ ROBOT_CMD_PARAM m_robotCmdParam[4]; /* 参数 */ CContext* m_pContext; CEFEM* m_pEFEM; }; SourceCode/Bond/Servo/Model.cpp
@@ -188,7 +188,6 @@ break; case ROBOT_EVENT_FINISH: LOGI("<CModel>onRobotTaskEvent: 任务完成(%s, ClassID=%s).", strDesc.c_str(), strClassID.c_str()); pTask->completed(); break; case ROBOT_EVENT_ERROR: LOGE("<CModel>onRobotTaskEvent: 任务错误(%s, ClassID=%s).", strDesc.c_str(), strClassID.c_str());