LAPTOP-SNT8I5JK\Boounion
2025-06-06 5c558a6cea6040c49dfde7a7ab8f61c84d4b11fc
1.当前搬送任务的人工终止操作。
已修改4个文件
38 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CMaster.cpp 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CRobotTaskDlg.cpp 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp
@@ -1200,4 +1200,28 @@
        return pTask;
    }
    int CMaster::abortCurrentTask()
    {
        lock();
        if (m_pActiveRobotTask != nullptr) {
            m_pActiveRobotTask->abort();
        }
        unlock();
        if (m_listener.onRobotTaskEvent != nullptr) {
            m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_ABORT);
        }
        lock();
        if (m_pActiveRobotTask != nullptr) {
            delete m_pActiveRobotTask;
            m_pActiveRobotTask = nullptr;
        }
        unlock();
        // 当前任务手动中止后,停止调度,需要操作员在解决问题后,重新启动
        stop();
        return 0;
    }
}
SourceCode/Bond/Servo/CMaster.h
@@ -63,6 +63,7 @@
        std::list<CEquipment*>& getEquipmentList();
        CEquipment* getEquipment(int id);
        void setCacheFilepath(const char* pszFilepath);
        int abortCurrentTask();
    private:
        inline void lock() { EnterCriticalSection(&m_criticalSection); }
SourceCode/Bond/Servo/CRobotTaskDlg.cpp
@@ -194,8 +194,10 @@
void CRobotTaskDlg::OnBnClickedAbortTask()
{
    if (m_pRobotTask) {
        m_pRobotTask->abort();
        AfxMessageBox(_T("任务已停止。"));
    int ret = AfxMessageBox(_T("确认要终止当前搬送任务吗?除非发生了异常,否则请不要手动终止任务!"), MB_OKCANCEL | MB_ICONEXCLAMATION);
    if (ret != IDOK) {
        return;
    }
    theApp.m_model.getMaster().abortCurrentTask();
}
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -175,6 +175,7 @@
                SERVO::MASTERSTATE state = theApp.m_model.getMaster().getState();
                if (state == SERVO::MASTERSTATE::READY) {
                    m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(TRUE);
                    m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE);
                    m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_NORMAL);
                    m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0));
                    KillTimer(TIMER_ID_UPDATE_RUMTIME);
@@ -183,6 +184,7 @@
                    m_pMyStatusbar->setRunTimeText((LPTSTR)(LPCTSTR)strText);
                }
                else if (state == SERVO::MASTERSTATE::RUNNING) {
                    m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE);
                    m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(TRUE);
                    m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_RUNNING);
                    m_pMyStatusbar->setForegroundColor(RGB(255, 255, 255));
@@ -211,6 +213,9 @@
                    else if (exCode == ROBOT_EVENT_FINISH) {
                        m_pMyStatusbar->setCurTaskBtnText("无");
                    }
                    else if (exCode == ROBOT_EVENT_ABORT) {
                        m_pMyStatusbar->setCurTaskBtnText("无");
                    }
                }
            }