1.Port cmd功能和界面操作实现;
2.操作提示框界面实现;
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <SEComSimulatorConfiguration> |
| | | <LASTSELECT> |
| | | <LASTSEComID>A</LASTSEComID> |
| | | </LASTSELECT> |
| | | <SEComID> |
| | | <A> |
| | | <DRVINFO> |
| | | <DEVICEID>1</DEVICEID> |
| | | <IDENTITY>Host</IDENTITY> |
| | | </DRVINFO> |
| | | <LOGINFO> |
| | | <DIR>D:\Chenluhua\dazi\a</DIR> |
| | | <SECSIMODE>D</SECSIMODE> |
| | | <SECSIIMODE>D</SECSIIMODE> |
| | | <XMLMODE /> |
| | | <DRIVERMODE>N</DRIVERMODE> |
| | | <DRIVERLEVEL>5</DRIVERLEVEL> |
| | | <BACKUP>2</BACKUP> |
| | | </LOGINFO> |
| | | <SECSMODE MODE="HSMS"> |
| | | <HSMS> |
| | | <HSMSMODE>Active</HSMSMODE> |
| | | <REMOTEIP>127.0.0.1</REMOTEIP> |
| | | <REMOTEPORT>7000</REMOTEPORT> |
| | | <LOCALPORT> |
| | | </LOCALPORT> |
| | | </HSMS> |
| | | <SECS1> |
| | | <MASTER>True</MASTER> |
| | | <COMPORT>COM1</COMPORT> |
| | | <AUTOBAUD>False</AUTOBAUD> |
| | | <BAUDRATE>9600</BAUDRATE> |
| | | <INTERLEAVE>False</INTERLEAVE> |
| | | <RETRYCOUNT>3</RETRYCOUNT> |
| | | </SECS1> |
| | | </SECSMODE> |
| | | <TIMEOUT> |
| | | <T1>0.5</T1> |
| | | <T2>10</T2> |
| | | <T3>45</T3> |
| | | <T4>45</T4> |
| | | <T5>10</T5> |
| | | <T6>5</T6> |
| | | <T7>10</T7> |
| | | <T8>10</T8> |
| | | </TIMEOUT> |
| | | <EXT> |
| | | <LINKTEST>120</LINKTEST> |
| | | </EXT> |
| | | </A> |
| | | </SEComID> |
| | | </SEComSimulatorConfiguration> |
| | |
| | | #include "CJobDataB.h" |
| | | #include "CJobDataC.h" |
| | | #include "CJobDataS.h" |
| | | #include "ServoCommo.h" |
| | | |
| | | |
| | | namespace SERVO { |
| | | enum MaterialsType { |
| | | G1 = 0, |
| | | G2 = 1, |
| | | G1G2 = 2 |
| | | }; |
| | | |
| | | class CGlass : public CContext |
| | | { |
| | | public: |
| | |
| | | return nRet; |
| | | } |
| | | |
| | | int CLoadPort::setPortType(PortType type, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_TYPE_CHANGE, STEP_PORT2_TYPE_CHANGE, STEP_PORT3_TYPE_CHANGE, STEP_PORT4_TYPE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>åå¤è®¾ç½®Port type<%d>", m_nIndex, (int)type); |
| | | short value = (short)type; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Port typeæå.", m_nIndex); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Port type失败ï¼code:%d", m_nIndex, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::eablePort(BOOL bEnable, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_ENABLE_MODE_CHANGE, STEP_PORT2_ENABLE_MODE_CHANGE, STEP_PORT3_ENABLE_MODE_CHANGE, STEP_PORT4_ENABLE_MODE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>åå¤%s Port", m_nIndex, bEnable ? _T("å¯ç¨") : _T("ç¦ç¨")); |
| | | short value = bEnable ? 1 : 2; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>%s Portæå.", m_nIndex, bEnable ? _T("å¯ç¨") : _T("ç¦ç¨")); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>%s Port失败ï¼code:%d", m_nIndex, bEnable ? _T("å¯ç¨") : _T("ç¦ç¨"), code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::setPortMode(PortMode mode, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_MODE_CHANGE, STEP_PORT2_MODE_CHANGE, STEP_PORT3_MODE_CHANGE, STEP_PORT4_MODE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>åå¤è®¾ç½®Port mode<%d>", m_nIndex, (int)mode); |
| | | short value = (short)mode; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Port modeæå.", m_nIndex); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Port mode失败ï¼code:%d", m_nIndex, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::setCassetteType(CassetteType type, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_CASSETTE_TYPE_CHANGE, STEP_PORT2_CASSETTE_TYPE_CHANGE, STEP_PORT3_CASSETTE_TYPE_CHANGE, STEP_PORT4_CASSETTE_TYPE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>åå¤è®¾ç½®Cassette Type<%d>", m_nIndex, (int)type); |
| | | short value = (short)type; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Cassette Typeæå.", m_nIndex); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Cassette Type失败ï¼code:%d", m_nIndex, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::setTransferMode(TransferMode mode, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_TRANSFER_MODE_CHANGE, STEP_PORT2_TRANSFER_MODE_CHANGE, STEP_PORT3_TRANSFER_MODE_CHANGE, STEP_PORT4_TRANSFER_MODE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>åå¤è®¾ç½®Transfer mode<%d>", m_nIndex, (int)mode); |
| | | short value = (short)mode; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Transfer modeæå.", m_nIndex + 1); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Transfer mode失败ï¼code:%d", m_nIndex + 1, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::eableAutoChange(BOOL bEnable, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_TYPE_AUTO_CHANGE, STEP_PORT2_TYPE_AUTO_CHANGE, STEP_PORT3_TYPE_AUTO_CHANGE, STEP_PORT4_TYPE_AUTO_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>åå¤%s Auto Change", m_nIndex, bEnable ? _T("å¯ç¨") : _T("ç¦ç¨")); |
| | | short value = bEnable ? 1 : 2; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>%s Auto Changeæå.", m_nIndex, bEnable ? _T("å¯ç¨") : _T("ç¦ç¨")); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>%s Auto Change失败ï¼code:%d", m_nIndex, bEnable ? _T("å¯ç¨") : _T("ç¦ç¨"), code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | /* |
| | | * çææµè¯ç¨çç»çå表 |
| | | */ |
| | |
| | | #pragma once |
| | | #include "CEquipment.h" |
| | | #include "ServoCommo.h" |
| | | |
| | | |
| | | namespace SERVO { |
| | |
| | | virtual void onReceiveLBData(const char* pszData, size_t size); |
| | | |
| | | public: |
| | | int setPortType(PortType type, ONWRITED onWritedBlock = nullptr); |
| | | int eablePort(BOOL bEnable, ONWRITED onWritedBlock = nullptr); |
| | | int setPortMode(PortMode mode, ONWRITED onWritedBlock = nullptr); |
| | | int setCassetteType(CassetteType type, ONWRITED onWritedBlock = nullptr); |
| | | int setTransferMode(TransferMode mode, ONWRITED onWritedBlock = nullptr); |
| | | int eableAutoChange(BOOL bEnable, ONWRITED onWritedBlock = nullptr); |
| | | |
| | | public: |
| | | void setIndex(unsigned int index); |
| | | unsigned int getIndex(); |
| | | BOOL isEnable(); |
| | |
| | | #include "Servo.h" |
| | | #include "CPagePortProperty.h" |
| | | #include "afxdialogex.h" |
| | | #include "Log.h" |
| | | #include "MsgDlg.h" |
| | | |
| | | |
| | | // 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() |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_MODE); |
| | | for (int i = 1; i <= 3; i++) { |
| | | for (int i = 0; i <= 5; i++) { |
| | | pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortModeDescription(i, strTemp).c_str()); |
| | | } |
| | | int portMode = m_pPort->getPortMode(); |
| | | if (1 <= portMode && portMode <= 3) { |
| | | pComboBox->SetCurSel(portMode - 1); |
| | | if (0 <= portMode && portMode <= 5) { |
| | | pComboBox->SetCurSel(portMode); |
| | | } |
| | | |
| | | pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE); |
| | |
| | | { |
| | | BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_ENABLE))->GetCheck() == BST_CHECKED; |
| | | EnableCtrls(bCheck); |
| | | |
| | | |
| | | // enable port |
| | | CMsgDlg msgDlg("请çå¾
", "æ£å¨æä½ï¼è¯·çå¾
..."); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | m_pPort->eablePort(bCheck, [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("%s Port æå.", bCheck ? _T("enable") : _T("disable")); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("%s Port æå."), bCheck ? _T("enable") : _T("disable")); |
| | | msgDlg.DelayClose(3000); |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("%s Port 失败ï¼code:%d"), bCheck ? _T("enable") : _T("disable"), code); |
| | | msgDlg.DelayClose(3000); |
| | | 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(); |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortType() |
| | | { |
| | | CMsgDlg msgDlg("请çå¾
", "æ£å¨æä½ï¼è¯·çå¾
..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_TYPE))->GetCurSel(); |
| | | m_pPort->setPortType(SERVO::PortType(index + 1), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Port Type(%d)æå.", index + 1); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Port Type(%d)æå"), index + 1); |
| | | msgDlg.DelayClose(3000); |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Port Type(%d)失败ï¼code:%d"), index + 1, code); |
| | | msgDlg.DelayClose(3000); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("æä½å¤±è´¥")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortMode() |
| | | { |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Port Mode(%d)æå"), index); |
| | | msgDlg.DelayClose(3000); |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Port Mode(%d)失败ï¼code:%d"), index, code); |
| | | msgDlg.DelayClose(3000); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("æä½å¤±è´¥")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortCassertType() |
| | | { |
| | | CMsgDlg msgDlg("请çå¾
", "æ£å¨æä½ï¼è¯·çå¾
..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE))->GetCurSel(); |
| | | m_pPort->setPortMode(SERVO::PortMode(index + 1), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Cassette type(%d)æå.", index + 1); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Cassette type(%d)æå"), index + 1); |
| | | msgDlg.DelayClose(3000); |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Cassette type(%d)失败ï¼code:%d"), index + 1, code); |
| | | msgDlg.DelayClose(3000); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("æä½å¤±è´¥")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | } |
| | | |
| | | void CPagePortProperty::OnCbnSelchangeComboPortTransferMode() |
| | | { |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | CMsgDlg msgDlg("请çå¾
", "æ£å¨æä½ï¼è¯·çå¾
..."); |
| | | msgDlg.SetData((DWORD_PTR)this); |
| | | |
| | | ASSERT(m_pPort != nullptr); |
| | | int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE))->GetCurSel(); |
| | | m_pPort->setPortMode(SERVO::PortMode(index + 1), [&](int code) -> int { |
| | | Sleep(100); |
| | | CString strMsg; |
| | | |
| | | if (code == WOK) { |
| | | LOGI("设置Transfer mode(%d)æå.", index + 1); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Transfer mode(%d)æå"), index + 1); |
| | | msgDlg.DelayClose(3000); |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("设置Transfer mode(%d)失败ï¼code:%d"), index + 1, code); |
| | | msgDlg.DelayClose(3000); |
| | | msgDlg.SetIcon(MSG_BOX_ERROR); |
| | | msgDlg.SetTitle(_T("æä½å¤±è´¥")); |
| | | msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg); |
| | | msgDlg.SetMarquee(FALSE, 0); |
| | | msgDlg.SetCompleteCode(-1); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | |
| | | msgDlg.DoModal(); |
| | | } |
| | | |
| | | void CPagePortProperty::OnBnClickedCheckAutoChange() |
| | | { |
| | | BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_CHANGE))->GetCheck() == BST_CHECKED; |
| | | EnableCtrls(bCheck); |
| | | |
| | | |
| | | // enable port |
| | | 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")); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("%s Auto Change æå."), bCheck ? _T("enable") : _T("disable")); |
| | | msgDlg.DelayClose(3000); |
| | | 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); |
| | | |
| | | msgDlg.DelayClose(3000); |
| | | strMsg.Format(_T("%s Auto Change 失败ï¼code:%d"), bCheck ? _T("enable") : _T("disable"), code); |
| | | msgDlg.DelayClose(3000); |
| | | 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(); |
| | | } |
| | | |
| | | void CPagePortProperty::EnableCtrls(BOOL bEnable) |
| | |
| | | GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE)->EnableWindow(bEnable); |
| | | GetDlgItem(IDC_CHECK_AUTO_CHANGE)->EnableWindow(bEnable); |
| | | } |
| | | |
| | |
| | | afx_msg void OnDestroy(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnBnClickedCheckEnable(); |
| | | afx_msg void OnCbnSelchangeComboPortType(); |
| | | afx_msg void OnCbnSelchangeComboPortMode(); |
| | | afx_msg void OnCbnSelchangeComboPortCassertType(); |
| | | afx_msg void OnCbnSelchangeComboPortTransferMode(); |
| | | afx_msg void OnBnClickedCheckAutoChange(); |
| | | }; |
| | |
| | | #define EQ_BOX_ONLINE RGB(0, 176, 80) |
| | | #define EQ_BOX_FRAME1 RGB(22, 22, 22) |
| | | #define EQ_BOX_FRAME2 RGB(255, 127, 39) |
| | | #define CR_MSGBOX_BKGND RGB(7, 71, 166) |
| | | #define CR_MSGBOX_TITLE RGB(200, 216, 246) |
| | | #define CR_MSGBOX_MESSAGE RGB(200, 216, 246) |
| | | |
| | | |
| | | /* LOG BTN */ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // MsgDlg.cpp: å®ç°æä»¶ |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | | #include "Servo.h" |
| | | #include "MsgDlg.h" |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CMsgDlg å¯¹è¯æ¡ |
| | | |
| | | IMPLEMENT_DYNAMIC(CMsgDlg, CDialogEx) |
| | | |
| | | CMsgDlg::CMsgDlg(CWnd* pParent /*=nullptr*/) |
| | | : CDialogEx(IDD_DIALOG_MSG, pParent) |
| | | { |
| | | m_nCompleteCode = 0; |
| | | m_dwData = 0; |
| | | m_dwDataEx = 0; |
| | | m_crBkgnd = CR_MSGBOX_BKGND; |
| | | m_brBkgnd.CreateSolidBrush(m_crBkgnd); |
| | | m_crTitle = CR_MSGBOX_TITLE; |
| | | m_crMessage = CR_MSGBOX_MESSAGE; |
| | | m_nIcon = MSG_BOX_TIP; |
| | | } |
| | | |
| | | CMsgDlg::CMsgDlg(CString strTitle, CString strMessage) |
| | | : CDialogEx(IDD_DIALOG_MSG, NULL) |
| | | { |
| | | m_strTitle = strTitle; |
| | | m_strMessage = strMessage; |
| | | m_crBkgnd = CR_MSGBOX_BKGND; |
| | | m_brBkgnd.CreateSolidBrush(m_crBkgnd); |
| | | m_crTitle = CR_MSGBOX_TITLE; |
| | | m_crMessage = CR_MSGBOX_MESSAGE; |
| | | m_nIcon = MSG_BOX_TIP; |
| | | } |
| | | |
| | | CMsgDlg::CMsgDlg(int nIcon, CString strTitle, CString strMessage) |
| | | : CDialogEx(IDD_DIALOG_MSG, NULL) |
| | | { |
| | | m_strTitle = strTitle; |
| | | m_strMessage = strMessage; |
| | | m_crBkgnd = CR_MSGBOX_BKGND; |
| | | m_brBkgnd.CreateSolidBrush(m_crBkgnd); |
| | | m_crTitle = CR_MSGBOX_TITLE; |
| | | m_crMessage = CR_MSGBOX_MESSAGE; |
| | | m_nIcon = nIcon; |
| | | } |
| | | |
| | | CMsgDlg::~CMsgDlg() |
| | | { |
| | | } |
| | | |
| | | void CMsgDlg::DoDataExchange(CDataExchange* pDX) |
| | | { |
| | | CDialogEx::DoDataExchange(pDX); |
| | | } |
| | | |
| | | |
| | | BEGIN_MESSAGE_MAP(CMsgDlg, CDialogEx) |
| | | ON_WM_TIMER() |
| | | ON_WM_CTLCOLOR() |
| | | ON_WM_SIZE() |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CMsgDlg æ¶æ¯å¤çç¨åº |
| | | |
| | | void CMsgDlg::SetCompleteCode(int code) |
| | | { |
| | | m_nCompleteCode = code; |
| | | CWnd* pProgressCtrl = GetDlgItem(IDC_PROGRESS1); |
| | | if(pProgressCtrl != nullptr) pProgressCtrl->ShowWindow(SW_HIDE); |
| | | } |
| | | |
| | | int CMsgDlg::GetCompleteCode() |
| | | { |
| | | return m_nCompleteCode; |
| | | } |
| | | |
| | | void CMsgDlg::SetData(DWORD_PTR dwData) |
| | | { |
| | | m_dwData = dwData; |
| | | } |
| | | |
| | | DWORD_PTR CMsgDlg::GetData() |
| | | { |
| | | return m_dwData; |
| | | } |
| | | |
| | | void CMsgDlg::SetDataEx(DWORD_PTR dwData) |
| | | { |
| | | m_dwDataEx = dwData; |
| | | } |
| | | |
| | | DWORD_PTR CMsgDlg::GetDataEx() |
| | | { |
| | | return m_dwDataEx; |
| | | } |
| | | |
| | | void CMsgDlg::SetIcon(int nIcon) |
| | | { |
| | | m_nIcon = nIcon; |
| | | if (::IsWindow(m_hWnd)) { |
| | | UpdateIcon(); |
| | | } |
| | | } |
| | | |
| | | void CMsgDlg::UpdateIcon() |
| | | { |
| | | static char* pszFile[] = { "msgbox_tip.ico", "msgbox_question.ico", "msgbox_warning.ico", "msgbox_error.ico", |
| | | "msgbox_succeed.ico"}; |
| | | if (MSG_BOX_TIP <= m_nIcon && m_nIcon <= MSG_BOX_SUCCEED) { |
| | | CStatic* pStatic = (CStatic*)GetDlgItem(IDC_ICON_MAIN); |
| | | if (pStatic != NULL) { |
| | | CString strFile; |
| | | strFile.Format(_T("%s\\res\\%s"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir, pszFile[m_nIcon]); |
| | | HICON hIcon = (HICON)LoadImage(AfxGetInstanceHandle(), strFile, IMAGE_ICON, |
| | | 48, 48, LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE); |
| | | pStatic->SetIcon(hIcon); |
| | | SetMarquee(TRUE, 1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CMsgDlg::SetTitle(CString strTitle) |
| | | { |
| | | m_strTitle = strTitle; |
| | | if (::IsWindow(m_hWnd) && GetDlgItem(IDC_LABEL_TITLE) != NULL) { |
| | | SetWindowText(m_strTitle); |
| | | SetDlgItemText(IDC_LABEL_TITLE, m_strTitle); |
| | | } |
| | | } |
| | | |
| | | void CMsgDlg::SetMessage(CString strMessage) |
| | | { |
| | | m_strMessage = strMessage; |
| | | if (::IsWindow(m_hWnd) && GetDlgItem(IDC_LABEL_MSG) != NULL) { |
| | | SetDlgItemText(IDC_LABEL_MSG, m_strMessage); |
| | | } |
| | | } |
| | | |
| | | void CMsgDlg::SetMarquee(_In_ BOOL fMarqueeMode, _In_ int nInterval) |
| | | { |
| | | if (!::IsWindow(m_hWnd)) { |
| | | return; |
| | | } |
| | | |
| | | CProgressCtrl* pProgressCtrl = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); |
| | | if (pProgressCtrl != NULL) { |
| | | pProgressCtrl->SendMessage(PBM_SETMARQUEE, (WPARAM)fMarqueeMode, (LPARAM)nInterval); |
| | | if (!fMarqueeMode) { |
| | | pProgressCtrl->ModifyStyle(PBS_MARQUEE, 0); |
| | | pProgressCtrl->SetRange32(0, 100); |
| | | pProgressCtrl->SetPos(0); |
| | | } |
| | | else { |
| | | pProgressCtrl->ModifyStyle(0, PBS_MARQUEE); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CMsgDlg::BeginThread(AFX_THREADPROC pfnThreadProc) |
| | | { |
| | | CWinThread* pThread = AfxBeginThread(pfnThreadProc, (LPVOID)this, |
| | | THREAD_PRIORITY_NORMAL, 0, DEBUG_PROCESS); |
| | | } |
| | | |
| | | void CMsgDlg::DelayClose(int nDelay) |
| | | { |
| | | SetTimer(1, nDelay, NULL); |
| | | } |
| | | |
| | | void CMsgDlg::ShowCloseButton(BOOL bVisible) |
| | | { |
| | | if (::IsWindow(m_hWnd) && GetDlgItem(IDCANCEL) != NULL) { |
| | | GetDlgItem(IDCANCEL)->ShowWindow(bVisible ? SW_SHOW : SW_HIDE); |
| | | } |
| | | } |
| | | |
| | | BOOL CMsgDlg::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | |
| | | SetWindowText(m_strTitle); |
| | | SetDlgItemText(IDC_LABEL_TITLE, m_strTitle); |
| | | SetDlgItemText(IDC_LABEL_MSG, m_strMessage); |
| | | |
| | | |
| | | // åä½ |
| | | HFONT hFontDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT); |
| | | CFont* pFont = CFont::FromHandle(hFontDefault); |
| | | LOGFONT lf; |
| | | pFont->GetLogFont(&lf); |
| | | lf.lfHeight -= 12; |
| | | lf.lfWeight = FW_SEMIBOLD; |
| | | m_fontTitle.CreateFontIndirect(&lf); |
| | | GetDlgItem(IDC_LABEL_TITLE)->SetFont(&m_fontTitle); |
| | | |
| | | pFont->GetLogFont(&lf); |
| | | lf.lfHeight -= 2; |
| | | m_fontMsg.CreateFontIndirect(&lf); |
| | | GetDlgItem(IDC_LABEL_MSG)->SetFont(&m_fontMsg); |
| | | |
| | | |
| | | // 徿 |
| | | UpdateIcon(); |
| | | SetMarquee(TRUE, 1); |
| | | MoveWindow(0, 0, 320, 268); |
| | | CenterWindow(); |
| | | Resize(); |
| | | |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |
| | | } |
| | | |
| | | |
| | | void CMsgDlg::OnTimer(UINT_PTR nIDEvent) |
| | | { |
| | | // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ |
| | | if (nIDEvent == 1) { |
| | | KillTimer(1); |
| | | PostMessage(WM_CLOSE); |
| | | } |
| | | |
| | | CDialogEx::OnTimer(nIDEvent); |
| | | } |
| | | |
| | | |
| | | BOOL CMsgDlg::PreTranslateMessage(MSG* pMsg) |
| | | { |
| | | // TODO: 卿¤æ·»å ä¸ç¨ä»£ç å/æè°ç¨åºç±» |
| | | if (pMsg->message == WM_KEYDOWN) { |
| | | if ((pMsg->wParam == VK_RETURN) || (pMsg->wParam == VK_ESCAPE) || (pMsg->wParam == VK_SPACE)) { |
| | | return TRUE; |
| | | } |
| | | } |
| | | return CDialogEx::PreTranslateMessage(pMsg); |
| | | } |
| | | |
| | | HBRUSH CMsgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) |
| | | { |
| | | HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); |
| | | |
| | | if (nCtlColor == CTLCOLOR_STATIC) { |
| | | pDC->SetBkColor(m_crBkgnd); |
| | | int nID = pWnd->GetDlgCtrlID(); |
| | | if (nID == IDC_LABEL_TITLE) { |
| | | pDC->SetTextColor(CR_MSGBOX_TITLE); |
| | | } |
| | | else if (nID == IDC_LABEL_MSG) { |
| | | pDC->SetTextColor(CR_MSGBOX_MESSAGE); |
| | | } |
| | | } |
| | | |
| | | return m_brBkgnd; |
| | | } |
| | | |
| | | void CMsgDlg::OnSize(UINT nType, int cx, int cy) |
| | | { |
| | | CDialogEx::OnSize(nType, cx, cy); |
| | | if (GetDlgItem(IDC_LABEL_TITLE) == nullptr) return; |
| | | Resize(); |
| | | } |
| | | |
| | | void CMsgDlg::Resize() |
| | | { |
| | | int x = 28; |
| | | int y = 28; |
| | | CWnd* pItem; |
| | | CRect rcClient, rcIcon, rcItem; |
| | | GetClientRect(&rcClient); |
| | | |
| | | pItem = GetDlgItem(IDC_ICON_MAIN); |
| | | pItem->GetWindowRect(&rcIcon); |
| | | pItem->MoveWindow(x, y, rcIcon.Width(), rcIcon.Height()); |
| | | x += rcIcon.Width(); |
| | | x += 12; |
| | | |
| | | // title |
| | | pItem->GetWindowRect(&rcIcon); |
| | | ScreenToClient(&rcIcon); |
| | | pItem = GetDlgItem(IDC_LABEL_TITLE); |
| | | pItem->GetWindowRect(&rcItem); |
| | | pItem->MoveWindow(x, rcIcon.top + rcIcon.Height() / 2 - rcItem.Height() / 2, |
| | | rcClient.Width() - 24 - x, rcItem.Height()); |
| | | x = rcIcon.left; |
| | | y += rcIcon.Height(); |
| | | y += 18; |
| | | |
| | | // msg |
| | | pItem = GetDlgItem(IDC_LABEL_MSG); |
| | | pItem->GetClientRect(&rcItem); |
| | | pItem->MoveWindow(x, y, rcClient.Width() - 24 - x, rcItem.Height()); |
| | | |
| | | |
| | | y = rcClient.bottom - 12; |
| | | pItem = GetDlgItem(IDC_PROGRESS1); |
| | | pItem->GetClientRect(&rcItem); |
| | | pItem->MoveWindow(12, y - rcItem.Height(), rcClient.Width() - 24, rcItem.Height()); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | |
| | | |
| | | // CMsgDlg å¯¹è¯æ¡ |
| | | |
| | | #define MSG_BOX_TIP 0x00 |
| | | #define MSG_BOX_QUESTION 0x01 |
| | | #define MSG_BOX_WARNING 0x02 |
| | | #define MSG_BOX_ERROR 0x03 |
| | | #define MSG_BOX_SUCCEED 0x04 |
| | | |
| | | class CMsgDlg : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CMsgDlg) |
| | | |
| | | public: |
| | | CMsgDlg(CWnd* pParent = nullptr); // æ åæé 彿° |
| | | CMsgDlg(CString strTitle, CString strMessage); |
| | | CMsgDlg(int nIcon, CString strTitle, CString strMessage); |
| | | virtual ~CMsgDlg(); |
| | | |
| | | |
| | | public: |
| | | void BeginThread(AFX_THREADPROC pfnThreadProc); |
| | | void SetIcon(int nIcon); |
| | | void SetTitle(CString strTitle); |
| | | void SetMessage(CString strMessage); |
| | | void DelayClose(int nDelay); |
| | | void SetMarquee(_In_ BOOL fMarqueeMode, _In_ int nInterval); |
| | | void ShowCloseButton(BOOL bVisible); |
| | | void SetCompleteCode(int code); |
| | | int GetCompleteCode(); |
| | | void SetData(DWORD_PTR dwData); |
| | | DWORD_PTR GetData(); |
| | | void SetDataEx(DWORD_PTR dwData); |
| | | DWORD_PTR GetDataEx(); |
| | | |
| | | private: |
| | | void Resize(); |
| | | void UpdateIcon(); |
| | | |
| | | private: |
| | | COLORREF m_crBkgnd; |
| | | CBrush m_brBkgnd; |
| | | int m_nIcon; |
| | | CString m_strTitle; |
| | | CString m_strMessage; |
| | | COLORREF m_crTitle; |
| | | COLORREF m_crMessage; |
| | | CFont m_fontTitle; |
| | | CFont m_fontMsg; |
| | | int m_nCompleteCode; |
| | | DWORD_PTR m_dwData; |
| | | DWORD_PTR m_dwDataEx; |
| | | |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | | #ifdef AFX_DESIGN_TIME |
| | | enum { IDD = IDD_DIALOG_MSG }; |
| | | #endif |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | | virtual BOOL OnInitDialog(); |
| | | afx_msg void OnTimer(UINT_PTR nIDEvent); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | }; |
| | |
| | | <ClInclude Include="CEquipmentPage3.h" /> |
| | | <ClInclude Include="CGlassPool.h" /> |
| | | <ClInclude Include="CPortStatusReport.h" /> |
| | | <ClInclude Include="MsgDlg.h" /> |
| | | <ClInclude Include="PageRecipe.h" /> |
| | | <ClInclude Include="CDoubleGlass.h" /> |
| | | <ClInclude Include="CProcessData.h" /> |
| | |
| | | <ClCompile Include="CEquipmentPage3.cpp" /> |
| | | <ClCompile Include="CGlassPool.cpp" /> |
| | | <ClCompile Include="CPortStatusReport.cpp" /> |
| | | <ClCompile Include="MsgDlg.cpp" /> |
| | | <ClCompile Include="PageRecipe.cpp" /> |
| | | <ClCompile Include="CDoubleGlass.cpp" /> |
| | | <ClCompile Include="CProcessData.cpp" /> |
| | |
| | | <ClCompile Include="CGlassPool.cpp" /> |
| | | <ClCompile Include="CEquipmentPage3.cpp" /> |
| | | <ClCompile Include="CPortStatusReport.cpp" /> |
| | | <ClCompile Include="MsgDlg.cpp" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ClInclude Include="AlarmManager.h" /> |
| | |
| | | <ClInclude Include="CGlassPool.h" /> |
| | | <ClInclude Include="CEquipmentPage3.h" /> |
| | | <ClInclude Include="CPortStatusReport.h" /> |
| | | <ClInclude Include="MsgDlg.h" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ResourceCompile Include="Servo.rc" /> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | |
| | | |
| | | namespace SERVO { |
| | | enum PortType { |
| | | Loading = 1, |
| | | Unloading, |
| | | Both, |
| | | Buffer, |
| | | LoaderInBuffer, |
| | | UnloaderInBuffer, |
| | | UnloadingPartial |
| | | }; |
| | | |
| | | enum PortMode { |
| | | OutOfService = 0, |
| | | TransferBlocked, |
| | | ReadyToLoad, |
| | | ReadyToUnload, |
| | | InService, |
| | | TransferReady |
| | | }; |
| | | |
| | | enum MaterialsType { |
| | | G1 = 0, |
| | | G2 = 1, |
| | | G1G2 = 2 |
| | | }; |
| | | typedef MaterialsType CassetteType; |
| | | |
| | | enum TransferMode { |
| | | MGVMode = 1, |
| | | AGVMode, |
| | | StockerInlineMode |
| | | }; |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | [LoadPort 1] |
| | | Left=23 |
| | | Top=88 |
| | | [LoadPort 2] |
| | | Left=23 |
| | | Top=437 |
| | | [LoadPort 3] |
| | | Left=1253 |
| | | Top=297 |
| | | [LoadPort 4] |
| | | Left=1253 |
| | | Top=457 |
| | | [EFEM(ROBOT)] |
| | | Left=294 |
| | | Top=63 |
| | | [Bonder 1] |
| | | Left=659 |
| | | Top=297 |
| | | [Bonder 2] |
| | | Left=659 |
| | | Top=437 |
| | | [Fliper] |
| | | Left=279 |
| | | Top=297 |
| | | [Aligner] |
| | | Left=446 |
| | | Top=363 |
| | | [VacuumBake] |
| | | Left=279 |
| | | Top=437 |
| | | [BakeCooling] |
| | | Left=853 |
| | | Top=363 |
| | | [ARM] |
| | | Left=628 |
| | | Top=63 |
| | | [Arm Tray1] |
| | | Left=467 |
| | | Top=63 |
| | | [Arm Tray2] |
| | | Left=467 |
| | | Top=166 |
| | | [Fliper(G2)] |
| | | Left=238 |
| | | Top=251 |
| | | [VacuumBake(G1)] |
| | | Left=238 |
| | | Top=386 |
| | | [Measurement] |
| | | Left=1041 |
| | | Top=363 |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | [App] |
| | | MasterPanelWidth=245 |
| | | AttributesPanelWidth=306 |
| | | EquipmentPanelWidth=277 |