| | |
| | | #include "HmTab.h" |
| | | #include "CRobotCmdContainerDlg.h" |
| | | #include "CRobotCmdTestDlg.h" |
| | | #include "LoginDlg.h" |
| | | #include "ChangePasswordDlg.h" |
| | | #include "UserManagerDlg.h" |
| | | #include "SystemLogManagerDlg.h" |
| | | #include "UserManager.h" |
| | | #include "SystemLogManager.h" |
| | | #include "PortConfigurationDlg.h" |
| | | #include "CHMPropertyDlg.h" |
| | | #include "CPageVarialbles.h" |
| | | #include "CPageReport.h" |
| | | #include "CPageCollectionEvent.h" |
| | | |
| | | |
| | | #ifdef _DEBUG |
| | |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_FILE_SETTINGS, &CServoDlg::OnUpdateMenuFileSettings) |
| | | ON_COMMAND(ID_MENU_FILE_SECSTEST, &CServoDlg::OnMenuFileSecsTest) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_FILE_SECSTEST, &CServoDlg::OnUpdateMenuFileSecsTest) |
| | | ON_COMMAND(ID_MENU_PROJECT_VARIABLE_LIST, &CServoDlg::OnMenuProjectVarialbleList) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_PROJECT_VARIABLE_LIST, &CServoDlg::OnUpdateMenuProjectVarialbleList) |
| | | ON_COMMAND(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnMenuTestMessageSet) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnUpdateMenuTestMessageSet) |
| | | ON_COMMAND(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnMenuTestMessageClear) |
| | |
| | | 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_RUN_CT)->EnableWindow(TRUE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE); |
| | | m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_NORMAL); |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | |
| | | GetRuntimeFormatText(strText, ""); |
| | | m_pMyStatusbar->setRunTimeText((LPTSTR)(LPCTSTR)strText); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::RUNNING) { |
| | | else if (state == SERVO::MASTERSTATE::STARTING) { |
| | | m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_STARTING); |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | | m_pMyStatusbar->setRunTimeText("正在启动..."); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::MSERROR) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(TRUE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN_CT)->EnableWindow(TRUE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE); |
| | | m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_ALARM); |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | | m_pMyStatusbar->setRunTimeText("启动失败."); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::RUNNING || state == SERVO::MASTERSTATE::RUNNING_CONTINUOUS_TRANSFER) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN_CT)->EnableWindow(FALSE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(TRUE); |
| | | m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_RUNNING); |
| | | m_pMyStatusbar->setForegroundColor(RGB(255, 255, 255)); |
| | |
| | | else if (exCode == ROBOT_EVENT_ABORT) { |
| | | m_pMyStatusbar->setCurTaskBtnText("无"); |
| | | } |
| | | else if (exCode == ROBOT_EVENT_RESTORE) { |
| | | m_pMyStatusbar->setCurTaskBtnText("无"); |
| | | } |
| | | } |
| | | } |
| | | else if (RX_CODE_LOADPORT_STATUS_CHANGED == code) { |
| | | SERVO::CLoadPort* pLoadPort = nullptr; |
| | | if (pAny->getPtrValue("ptr", (void*&)pLoadPort)) { |
| | | //CPortConfigurationDlg dlg; |
| | | //dlg.setCurSelPort(pLoadPort->getIndex()); |
| | | //dlg.DoModal(); |
| | | } |
| | | } |
| | | |
| | | if (RX_CODE_PASSIVE_STATUS_CHANGED == code) { |
| | | int state = 0; |
| | | pAny->getIntValue("exCode", state); |
| | | |
| | | if (STATE::NOT_CONNECTED == state) { |
| | | m_pMyStatusbar->setCimBtnText("Disconnected"); |
| | | //m_labelPassiveState.setBackground(DISCONNECTED_BACKGROUND); |
| | | //m_labelPassiveState.setForeground(DISCONNECTED_FOREGROUND, TRUE); |
| | | } |
| | | else if (STATE::NOT_SELECTED == state) { |
| | | m_pMyStatusbar->setCimBtnText("Not Selected"); |
| | | //m_labelPassiveState.setBackground(NOT_SELECTED_BACKGROUND); |
| | | //m_labelPassiveState.setForeground(NOT_SELECTED_FOREGROUND, TRUE); |
| | | } |
| | | else if (STATE::SELECTED == state) { |
| | | m_pMyStatusbar->setCimBtnText("Selected"); |
| | | //m_labelPassiveState.setBackground(SELECTED_BACKGROUND); |
| | | //m_labelPassiveState.setForeground(SELECTED_FOREGROUND, TRUE); |
| | | } |
| | | } |
| | | pAny->release(); |
| | | }, [&]() -> void { |
| | | // onComplete |
| | |
| | | // 执行此操作 |
| | | SetIcon(m_hIcon, TRUE); // 设置大图标 |
| | | SetIcon(m_hIcon, FALSE); // 设置小图标 |
| | | |
| | | |
| | | // model init |
| | | theApp.m_model.init(); |
| | | |
| | | |
| | | // 菜单 |
| | |
| | | MoveWindow((width - rcWnd.Width()) / 2, 0, rcWnd.Width(), rcWnd.Height(), TRUE); |
| | | |
| | | |
| | | // model init |
| | | theApp.m_model.init(); |
| | | |
| | | |
| | | SetTimer(TIMER_ID_CREATE_TERMINAL, 3000, nullptr); |
| | | InitRxWindows(); |
| | |
| | | |
| | | // 相当于延时调用master的初始化 |
| | | theApp.m_model.m_master.init(); |
| | | theApp.m_model.loadPortParams(); |
| | | |
| | | |
| | | // 初始化master以后需要控件绑定数据 |
| | | m_pPageGraph1->BindEquipmentToGraph(); |
| | | |
| | | |
| | | // 更新登录状态 |
| | | UpdateLoginStatus(); |
| | | //SystemLogManager::getInstance.log(SystemLogManager::LogType::Info, _T("BondEq启动...")); |
| | | //SystemLogManager::getInstance. |
| | | |
| | | |
| | | return TRUE; // 除非将焦点设置到控件,否则返回 TRUE |
| | |
| | | } |
| | | |
| | | void CServoDlg::OnUpdateMenuFileExit(CCmdUI* pCmdUI) |
| | | { |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | | |
| | | void CServoDlg::OnMenuProjectVarialbleList() |
| | | { |
| | | CHMPropertyDlg dlg(_T("Variable | Rreport | Collection Event"), 658, 788); |
| | | |
| | | CPageCollectionEvent* pPage1 = new CPageCollectionEvent(); |
| | | pPage1->Create(IDD_PAGE_COLLECTION_EVENT); |
| | | dlg.addPage(pPage1, "Event"); |
| | | |
| | | CPageReport* pPage2 = new CPageReport(); |
| | | pPage2->Create(IDD_PAGE_REPORT); |
| | | dlg.addPage(pPage2, "Report"); |
| | | |
| | | CPageVarialbles* pPage3 = new CPageVarialbles(); |
| | | pPage3->Create(IDD_PAGE_VARIABLE); |
| | | dlg.addPage(pPage3, "Variable"); |
| | | |
| | | dlg.DoModal(); |
| | | } |
| | | |
| | | void CServoDlg::OnUpdateMenuProjectVarialbleList(CCmdUI* pCmdUI) |
| | | { |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | void CServoDlg::UpdateLoginStatus() |
| | | { |
| | | HMENU hMenu = m_pTopToolbar->GetOperatorMenu(); |
| | | UserManager& userManager = UserManager::getInstance(); |
| | | if (userManager.isLoggedIn()) |
| | | { |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_LOGIN, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_CHANGE_PASSWORD, MF_BYCOMMAND | MF_ENABLED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_SYSTEM_LOG, MF_BYCOMMAND | MF_ENABLED); |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_ENABLED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_LOGOUT, MF_BYCOMMAND | MF_ENABLED); |
| | | |
| | | if (userManager.getCurrentUserRole() == UserRole::SuperAdmin) { |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_USER_MANAGER, MF_BYCOMMAND | MF_ENABLED); |
| | | } |
| | | else { |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_USER_MANAGER, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | } |
| | | |
| | | m_pTopToolbar->SetOperatorBtnText(userManager.getCurrentUser().c_str()); |
| | | } |
| | | else { |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_LOGIN, MF_BYCOMMAND | MF_ENABLED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_CHANGE_PASSWORD, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_USER_MANAGER, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_SYSTEM_LOG, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_LOGOUT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | |
| | | m_pTopToolbar->SetOperatorBtnText(_T("未登录")); |
| | | } |
| | | } |
| | | |
| | | LRESULT CServoDlg::OnToolbarBtnClicked(WPARAM wParam, LPARAM lParam) |
| | | { |
| | | int id = (int)lParam; |
| | | if (id == IDC_BUTTON_RUN) { |
| | | theApp.m_model.getMaster().start(); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE); |
| | | if (theApp.m_model.getMaster().getState() == SERVO::MASTERSTATE::MSERROR) { |
| | | AfxMessageBox("当前有机台发生错误,不能启动,请确认解决问题后再尝试重新启动!"); |
| | | } |
| | | else { |
| | | if (theApp.m_model.getMaster().start() == 0) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN_CT)->EnableWindow(FALSE); |
| | | } |
| | | } |
| | | } |
| | | else if (id == IDC_BUTTON_RUN_CT) { |
| | | if (theApp.m_model.getMaster().getState() == SERVO::MASTERSTATE::MSERROR) { |
| | | AfxMessageBox("当前有机台发生错误,不能启动,请确认解决问题后再尝试重新启动!"); |
| | | } |
| | | else { |
| | | if (theApp.m_model.getMaster().startContinuousTransfer() == 0) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN_CT)->EnableWindow(FALSE); |
| | | } |
| | | } |
| | | } |
| | | else if (id == IDC_BUTTON_STOP) { |
| | | theApp.m_model.getMaster().stop(); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE); |
| | | if (theApp.m_model.getMaster().stop() == 0) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE); |
| | | } |
| | | } |
| | | else if (id == IDC_BUTTON_PORT_CONFIG) { |
| | | CPortConfigurationDlg dlg; |
| | | dlg.DoModal(); |
| | | } |
| | | else if (id == IDC_BUTTON_ROBOT) { |
| | | theApp.m_model.getMaster().clearError(); |
| | | SERVO::CEFEM* pEFEM = (SERVO::CEFEM*)theApp.m_model.getMaster().getEquipment(EQ_ID_EFEM); |
| | | CRobotCmdTestDlg dlg; |
| | | dlg.SetEFEM(pEFEM); |
| | | dlg.DoModal(); |
| | | } |
| | | else if (id == IDC_BUTTON_SETTINGS) { |
| | | SERVO::CEquipment* pEq = theApp.m_model.m_master.getEquipment(EQ_ID_EFEM); |
| | | ((SERVO::CEFEM*)pEq)->printDebugRobotState(); |
| | | pEq->printDebugString001(); |
| | | pEq = theApp.m_model.m_master.getEquipment(EQ_ID_Bonder1); |
| | | pEq->printDebugString001(); |
| | | pEq = theApp.m_model.m_master.getEquipment(EQ_ID_Bonder2); |
| | | pEq->printDebugString001(); |
| | | |
| | | } |
| | | else if (id == IDC_BUTTON_OPERATOR) { |
| | | int menuId = (int)wParam; |
| | | SystemLogManager& logManager = SystemLogManager::getInstance(); |
| | | UserManager& userManager = UserManager::getInstance(); |
| | | if (menuId == 0) { |
| | | CLoginDlg loginDlg; |
| | | loginDlg.DoModal(); |
| | | } |
| | | else if (1 == menuId) { |
| | | CChangePasswordDlg changePasswordDlg; |
| | | changePasswordDlg.DoModal(); |
| | | } |
| | | else if (2 == menuId) { |
| | | CUserManagerDlg dlg; |
| | | if (dlg.DoModal() != IDOK) { |
| | | logManager.log(SystemLogManager::LogType::Operation, _T("用户管理的预操作被取消!")); |
| | | } |
| | | } |
| | | else if (3 == menuId) { |
| | | CSystemLogManagerDlg dlg; |
| | | dlg.DoModal(); |
| | | } |
| | | else if (4 == menuId) { |
| | | int ret = AfxMessageBox(_T("是否切换用户?切换用户会退出当前账号!"), MB_OKCANCEL | MB_ICONEXCLAMATION); |
| | | if (ret != IDOK) { |
| | | return 0; |
| | | } |
| | | |
| | | logManager.log(SystemLogManager::LogType::Operation, _T("确认切换角色!")); |
| | | if (userManager.isLoggedIn()) { |
| | | logManager.log(SystemLogManager::LogType::Info, _T("退出登录!")); |
| | | userManager.logout(); |
| | | } |
| | | |
| | | CLoginDlg loginDlg; |
| | | loginDlg.DoModal(); |
| | | } |
| | | else { |
| | | CString cstrMessage; |
| | | cstrMessage.Format(_T("是否退出用户 [%s]?"), userManager.getCurrentUser().c_str()); |
| | | int ret = AfxMessageBox(_T(cstrMessage), MB_OKCANCEL | MB_ICONEXCLAMATION); |
| | | if (ret != IDOK) { |
| | | return 0; |
| | | } |
| | | |
| | | logManager.log(SystemLogManager::LogType::Info, _T("退出登录!")); |
| | | userManager.logout(); |
| | | } |
| | | |
| | | UpdateLoginStatus(); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | |
| | | m_pRobotTaskDlg->MoveWindow(x, rcBar.top - h, w, h); |
| | | m_pRobotTaskDlg->ShowWindow(SW_SHOW); |
| | | } |
| | | else if (id == IDC_BUTTON_CIM) { |
| | | AfxMessageBox("IDC_BUTTON_CIM"); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | |
| | | if (state == SERVO::MASTERSTATE::RUNNING) { |
| | | strText.Format(_T("正在运行:%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::RUNNING_CONTINUOUS_TRANSFER) { |
| | | strText.Format(_T("千传模式:%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |
| | | else { |
| | | strText.Format(_T("已运行:%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |