| | |
| | | #include "Servo.h" |
| | | #include "CPagePortProperty.h" |
| | | #include "afxdialogex.h" |
| | | #include "Log.h" |
| | | #include "MsgDlg.h" |
| | | |
| | | |
| | | #define DELAY_CLOSE 2000 |
| | | |
| | | |
| | | // CPagePortProperty 对话框 |
| | |
| | | ON_WM_DESTROY() |
| | | ON_WM_SIZE() |
| | | ON_BN_CLICKED(IDC_CHECK_ENABLE, &CPagePortProperty::OnBnClickedCheckEnable) |
| | | ON_CBN_SELCHANGE(IDC_COMBO_PORT_TYPE, &CPagePortProperty::OnCbnSelchangeComboPortType) |
| | | ON_CBN_SELCHANGE(IDC_COMBO_PORT_MODE, &CPagePortProperty::OnCbnSelchangeComboPortMode) |
| | | ON_CBN_SELCHANGE(IDC_COMBO_PORT_CASSERT_TYPE, &CPagePortProperty::OnCbnSelchangeComboPortCassertType) |
| | | ON_CBN_SELCHANGE(IDC_COMBO_PORT_TRANSFER_MODE, &CPagePortProperty::OnCbnSelchangeComboPortTransferMode) |
| | | ON_BN_CLICKED(IDC_CHECK_AUTO_CHANGE, &CPagePortProperty::OnBnClickedCheckAutoChange) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | CComboBox* pComboBox; |
| | | std::string strTemp; |
| | | |
| | | |
| | | ((CButton*)GetDlgItem(IDC_CHECK_ENABLE))->SetCheck(m_pPort->isEnable() ? BST_CHECKED : BST_UNCHECKED); |
| | | pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_TYPE); |
| | | for (int i = 1; i <= 7; i++) { |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortTypeDescription(i, strTemp).c_str()); |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortTypeDescription((SERVO::PortType)i, strTemp).c_str()); |
| | | } |
| | | int portType = m_pPort->getPortType(); |
| | | int portType = (int)m_pPort->getPortType(); |
| | | if (1 <= portType && portType <= 7) { |
| | | pComboBox->SetCurSel(portType - 1); |
| | | } |
| | | |
| | | pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_MODE); |
| | | for (int i = 1; i <= 3; i++) { |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortModeDescription(i, strTemp).c_str()); |
| | | for (int i = 0; i <= 5; i++) { |
| | | pComboBox->InsertString(i, SERVO::CLoadPort::getPortModeDescription((SERVO::PortMode)i, strTemp).c_str()); |
| | | } |
| | | int portMode = m_pPort->getPortMode(); |
| | | if (1 <= portMode && portMode <= 3) { |
| | | pComboBox->SetCurSel(portMode - 1); |
| | | int portMode = (int)m_pPort->getPortMode(); |
| | | if (0 <= portMode && portMode <= 5) { |
| | | pComboBox->SetCurSel(portMode); |
| | | } |
| | | |
| | | pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE); |
| | | for (int i = 1; i <= 3; i++) { |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortCassetteTypeDescription(i, strTemp).c_str()); |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortCassetteTypeDescription((SERVO::CassetteType)i, strTemp).c_str()); |
| | | } |
| | | int cessetteType = m_pPort->getCessetteType(); |
| | | int cessetteType = (int)m_pPort->getCessetteType(); |
| | | if (1 <= cessetteType && cessetteType <= 3) { |
| | | pComboBox->SetCurSel(cessetteType - 1); |
| | | } |
| | | |
| | | pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE); |
| | | for (int i = 1; i <= 3; i++) { |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortTransferModeDescription(i, strTemp).c_str()); |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortTransferModeDescription((SERVO::TransferMode)i, strTemp).c_str()); |
| | | } |
| | | int transferMode = m_pPort->getTransferMode(); |
| | | int transferMode = (int)m_pPort->getTransferMode(); |
| | | if (1 <= transferMode && transferMode <= 3) { |
| | | pComboBox->SetCurSel(transferMode - 1); |
| | | } |
| | |
| | | // TODO: 在此处添加消息处理程序代码 |
| | | } |
| | | |
| | | int g_nMsgDlgShow = 0; |
| | | void CPagePortProperty::OnBnClickedCheckEnable() |
| | | { |
| | | BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_ENABLE))->GetCheck() == BST_CHECKED; |
| | | EnableCtrls(bCheck); |
| | | |
| | | #ifdef _LOCAL |
| | | ASSERT(m_pPort != nullptr); |
| | | theApp.m_model.setPortEnable(m_pPort->getIndex(), bCheck); |
| | | #else |
| | | |
| | | // enable port |
| | | g_nMsgDlgShow = 0; |
| | | CMsgDlg msgDlg("请等待", "正在操作,请等待..."); |
| | | |
| | | m_pPort->eablePort(bCheck, [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("%s Port 成功.", bCheck ? _T("enable") : _T("disable")); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("%s Port 成功."), bCheck ? _T("enable") : _T("disable")); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_SUCCEED); |
| | | msgDlg.SetTitle(_T("操作成功")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(0); |
| | | } |
| | | } |
| | | else { |
| | | LOGI("%s Port 失败,code:%d", bCheck ? _T("enable") : _T("disable"), code); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("%s Port 失败,code:%d"), bCheck ? _T("enable") : _T("disable"), code); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("操作失败")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | // 还原控件状态 |
| | | EnableCtrls(!bCheck); |
| | | ((CButton*)GetDlgItem(IDC_CHECK_ENABLE))->SetCheck(!bCheck ? BST_CHECKED : BST_UNCHECKED); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | g_nMsgDlgShow = 1; |
| | | #endif |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortType() |
| | | { |
| | | g_nMsgDlgShow = 0; |
| | | CMsgDlg msgDlg("请等待", "正在操作,请等待..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | // 修改为只保存在本地配置 |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_TYPE))->GetCurSel(); |
| | | theApp.m_model.setPortType(m_pPort->getIndex(), SERVO::PortType(index + 1)); |
| | | |
| | | /* |
| | | m_pPort->setPortType(SERVO::PortType(index + 1), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Port Type(%d)成功.", index + 1); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Port Type(%d)成功"), index + 1); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_SUCCEED); |
| | | msgDlg.SetTitle(_T("操作成功")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(0); |
| | | } |
| | | } |
| | | else { |
| | | LOGI("设置Port Type(%d)失败,code:%d", index + 1, code); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Port Type(%d)失败,code:%d"), index + 1, code); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("操作失败")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | g_nMsgDlgShow = 1; |
| | | */ |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortMode() |
| | | { |
| | | g_nMsgDlgShow = 0; |
| | | CMsgDlg msgDlg("请等待", "正在操作,请等待..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_MODE))->GetCurSel(); |
| | | m_pPort->setPortMode(SERVO::PortMode(index), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Port Mode(%d)成功.", index); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Port Mode(%d)成功"), index); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_SUCCEED); |
| | | msgDlg.SetTitle(_T("操作成功")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(0); |
| | | } |
| | | } |
| | | else { |
| | | LOGI("设置Port Mode(%d)失败,code:%d", index, code); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Port Mode(%d)失败,code:%d"), index, code); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("操作失败")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | g_nMsgDlgShow = 1; |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortCassertType() |
| | | { |
| | | // 由原来的更新到EFEM, 修改为保存到本地ini文件 |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE))->GetCurSel(); |
| | | theApp.m_model.setPortCassetteType(m_pPort->getIndex(), SERVO::CassetteType(index + 1)); |
| | | |
| | | |
| | | g_nMsgDlgShow = 0; |
| | | CMsgDlg msgDlg("请等待", "正在操作,请等待..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | m_pPort->setCassetteType(SERVO::CassetteType(index + 1), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Cassette type(%d)成功.", index + 1); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Cassette type(%d)成功"), index + 1); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_SUCCEED); |
| | | msgDlg.SetTitle(_T("操作成功")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(0); |
| | | } |
| | | } |
| | | else { |
| | | LOGI("设置Cassette type(%d)失败,code:%d", index + 1, code); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Cassette type(%d)失败,code:%d"), index + 1, code); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("操作失败")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | g_nMsgDlgShow = 1; |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortTransferMode() |
| | | { |
| | | // TODO: 在此添加控件通知处理程序代码 |
| | | g_nMsgDlgShow = 0; |
| | | CMsgDlg msgDlg("请等待", "正在操作,请等待..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE))->GetCurSel(); |
| | | m_pPort->setTransferMode(SERVO::TransferMode(index + 1), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Transfer mode(%d)成功.", index + 1); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Transfer mode(%d)成功"), index + 1); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_SUCCEED); |
| | | msgDlg.SetTitle(_T("操作成功")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(0); |
| | | } |
| | | } |
| | | else { |
| | | LOGI("设置Transfer mode(%d)失败,code:%d", index + 1, code); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("设置Transfer mode(%d)失败,code:%d"), index + 1, code); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("操作失败")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | g_nMsgDlgShow = 1; |
| | | } |
| | | |
| | | void CPagePortProperty::OnBnClickedCheckAutoChange() |
| | | { |
| | | BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_CHANGE))->GetCheck() == BST_CHECKED; |
| | | |
| | | |
| | | // enable port |
| | | g_nMsgDlgShow = 0; |
| | | CMsgDlg msgDlg("请等待", "正在操作,请等待..."); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | m_pPort->eableAutoChange(bCheck, [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("%s Auto Change 成功.", bCheck ? _T("enable") : _T("disable")); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("%s Auto Change 成功."), bCheck ? _T("enable") : _T("disable")); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_SUCCEED); |
| | | msgDlg.SetTitle(_T("操作成功")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(0); |
| | | } |
| | | } |
| | | else { |
| | | LOGI("%s Auto Change 失败,code:%d", bCheck ? _T("enable") : _T("disable"), code); |
| | | |
| | | if (g_nMsgDlgShow == 0 && ::IsWindow(msgDlg.GetSafeHwnd())) { |
| | | strMsg.Format(_T("%s Auto Change 失败,code:%d"), bCheck ? _T("enable") : _T("disable"), code); |
| | | msgDlg.DelayClose(DELAY_CLOSE); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("操作失败")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | |
| | | // 还原控件状态 |
| | | ((CButton*)GetDlgItem(IDC_CHECK_AUTO_CHANGE))->SetCheck(!bCheck ? BST_CHECKED : BST_UNCHECKED); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | g_nMsgDlgShow = 1; |
| | | } |
| | | |
| | | void CPagePortProperty::EnableCtrls(BOOL bEnable) |
| | | { |
| | | GetDlgItem(IDC_COMBO_PORT_TYPE)->EnableWindow(bEnable); |
| | | GetDlgItem(IDC_COMBO_PORT_MODE)->EnableWindow(bEnable); |
| | | GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE)->EnableWindow(bEnable); |
| | | GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE)->EnableWindow(bEnable); |
| | | GetDlgItem(IDC_CHECK_AUTO_CHANGE)->EnableWindow(bEnable); |
| | | } |
| | | |