1.增加人工处理(移除、抱走)物料功能,以便和机器中的实物丰符合。
2.Port1 ~ Port4,type, mode, cassette type, transfer mode, enable mode, type auto change mode数据获取。
3.增加通用的读取cc-link int数据的CEqReadIntStep
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include "stdafx.h" |
| | | #include "CEqPortChangeStep.h" |
| | | #include "Log.h" |
| | | |
| | | |
| | | namespace SERVO { |
| | | CEqPortChangeStep::CEqPortChangeStep() : CReadStep() |
| | | { |
| | | m_nPortDev = 0; |
| | | m_nPortType = 0; |
| | | m_nPortMode = 0; |
| | | m_nPortCassetteType = 0; |
| | | m_nPortTransferMode = 0; |
| | | m_nPortEanbleMode = 0; |
| | | m_nPortTypeAutoChangeMode = 0; |
| | | } |
| | | |
| | | CEqPortChangeStep::~CEqPortChangeStep() |
| | | { |
| | | |
| | | } |
| | | |
| | | void CEqPortChangeStep::getAttributeVector(CAttributeVector& attrubutes) |
| | | { |
| | | CReadStep::getAttributeVector(attrubutes); |
| | | |
| | | std::string strTemp; |
| | | attrubutes.addAttribute(new CAttribute("Port Dev", |
| | | ("W" + CToolUnits::toHexString(m_nPortDev, strTemp)).c_str(), "")); |
| | | attrubutes.addAttribute(new CAttribute("PortType", |
| | | std::to_string(m_nPortType).c_str(), getPortTypeDescription(strTemp).c_str())); |
| | | attrubutes.addAttribute(new CAttribute("PortMode", |
| | | std::to_string(m_nPortMode).c_str(), getPortModeDescription(strTemp).c_str())); |
| | | attrubutes.addAttribute(new CAttribute("PortCassetteType", |
| | | std::to_string(m_nPortCassetteType).c_str(), getPortCassetteTypeDescription(strTemp).c_str())); |
| | | attrubutes.addAttribute(new CAttribute("PortTransferMode", |
| | | std::to_string(m_nPortTransferMode).c_str(), getPortTransferModeDescription(strTemp).c_str())); |
| | | attrubutes.addAttribute(new CAttribute("PortEnableMode", |
| | | std::to_string(m_nPortEanbleMode).c_str(), getPortEnableModeDescription(strTemp).c_str())); |
| | | attrubutes.addAttribute(new CAttribute("PortTypeAutoChangeMode", |
| | | std::to_string(m_nPortTypeAutoChangeMode).c_str(), getPortTypeAutoChangeModeDescription(strTemp).c_str())); |
| | | } |
| | | |
| | | int CEqPortChangeStep::onReadData() |
| | | { |
| | | CReadStep::onReadData(); |
| | | |
| | | |
| | | char szBuffer[32]; |
| | | int nRet = m_pCclink->ReadData2(m_station, DeviceType::W, m_nPortDev, 32, szBuffer); |
| | | if (0 != nRet) { |
| | | return -1; |
| | | } |
| | | |
| | | m_nPortType = (unsigned int)CToolUnits::toInt16(&szBuffer[0]); |
| | | m_nPortMode = (unsigned int)CToolUnits::toInt16(&szBuffer[2]); |
| | | m_nPortCassetteType = (unsigned int)CToolUnits::toInt32(&szBuffer[4]); |
| | | m_nPortTransferMode = (unsigned int)CToolUnits::toInt16(&szBuffer[8]); |
| | | m_nPortEanbleMode = (unsigned int)CToolUnits::toInt16(&szBuffer[10]); |
| | | m_nPortTypeAutoChangeMode = (unsigned int)CToolUnits::toInt16(&szBuffer[12]); |
| | | |
| | | /* |
| | | LOGI("<CEqAlarmStep> Equipment Alarm state Changed<State:%d, Unit:%d, Level:%d, Code:%d, ID:%d>\n", |
| | | m_nAlarmState, m_nUnitId, m_nAlarmLevel, m_nAlarmCode, m_nAlarmId, |
| | | m_strText.c_str(), m_strDescription.c_str()); |
| | | */ |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CEqPortChangeStep::onComplete() |
| | | { |
| | | CReadStep::onComplete(); |
| | | LOGI("<CEQPortChangeStep> onComplete."); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CEqPortChangeStep::onTimeout() |
| | | { |
| | | CReadStep::onTimeout(); |
| | | LOGI("<CEQPortChangeStep> onTimeout."); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | void CEqPortChangeStep::setPortDev(int nDev) |
| | | { |
| | | m_nPortDev = nDev; |
| | | } |
| | | |
| | | int CEqPortChangeStep::getPortType() |
| | | { |
| | | return m_nPortType; |
| | | } |
| | | |
| | | /* |
| | | 1: Loading Port |
| | | 2: Unloading Port |
| | | 3: Both Port |
| | | 4: Buffer Port-Buffer Type |
| | | 5: Buffer Port-Loader in Buffer Type |
| | | 6: Buffer Port-Un-loader in Buffer Type |
| | | 7: Unloading Partial Port |
| | | */ |
| | | std::string& CEqPortChangeStep::getPortTypeDescription(std::string& strDescription) |
| | | { |
| | | switch (m_nPortType) { |
| | | case 1: |
| | | strDescription = _T("Loading Port"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Unloading Port"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("Both Port"); |
| | | break; |
| | | case 4: |
| | | strDescription = _T("Buffer Port - Buffer Type"); |
| | | break; |
| | | case 5: |
| | | strDescription = _T("Buffer Port - Loader in Buffer Type"); |
| | | break; |
| | | case 6: |
| | | strDescription = _T("Buffer Port - Un-loader in Buffer Type"); |
| | | break; |
| | | case 7: |
| | | strDescription = _T("Unloading Partial Port"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 0: OutOfService |
| | | 1: TransferBlocked |
| | | 2: ReadyToLoad |
| | | 3: ReadyToUnload |
| | | 4: InService |
| | | 5: TransferReady |
| | | */ |
| | | std::string& CEqPortChangeStep::getPortModeDescription(std::string& strDescription) |
| | | { |
| | | switch (m_nPortMode) { |
| | | case 0: |
| | | strDescription = _T("OutOfService"); |
| | | break; |
| | | case 1: |
| | | strDescription = _T("TransferBlocked"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("ReadyToLoad"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("ReadyToUnload"); |
| | | break; |
| | | case 4: |
| | | strDescription = _T("InService"); |
| | | break; |
| | | case 5: |
| | | strDescription = _T("TransferReady"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: G1 |
| | | 2: G2 |
| | | 3: G1&G2 |
| | | */ |
| | | std::string& CEqPortChangeStep::getPortCassetteTypeDescription(std::string& strDescription) |
| | | { |
| | | switch (m_nPortCassetteType) { |
| | | case 1: |
| | | strDescription = _T("G1"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("G2"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("G1&G2"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: MGV Mode |
| | | 2: AGV Mode |
| | | 3: Stocker Inline Mode |
| | | */ |
| | | std::string& CEqPortChangeStep::getPortTransferModeDescription(std::string& strDescription) |
| | | { |
| | | switch (m_nPortTransferMode) { |
| | | case 1: |
| | | strDescription = _T("MGV Mode"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("AGV Mode"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("Stocker Inline Mode"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | |
| | | /* |
| | | 1 : Enable |
| | | 2 : Disable |
| | | */ |
| | | std::string& CEqPortChangeStep::getPortEnableModeDescription(std::string& strDescription) |
| | | { |
| | | switch (m_nPortEanbleMode) { |
| | | case 1: |
| | | strDescription = _T("Enable"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Disable"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: Auto Change Enable |
| | | 2: Auto Change Disable |
| | | */ |
| | | std::string& CEqPortChangeStep::getPortTypeAutoChangeModeDescription(std::string& strDescription) |
| | | { |
| | | switch (m_nPortTypeAutoChangeMode) { |
| | | case 1: |
| | | strDescription = _T("Auto Change Enable"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Auto Change Disable"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | #include "CReadStep.h" |
| | | |
| | | namespace SERVO { |
| | | class CEqPortChangeStep : public CReadStep |
| | | { |
| | | public: |
| | | CEqPortChangeStep(); |
| | | ~CEqPortChangeStep(); |
| | | |
| | | public: |
| | | virtual void getAttributeVector(CAttributeVector& attrubutes); |
| | | virtual int onReadData(); |
| | | virtual int onComplete(); |
| | | virtual int onTimeout(); |
| | | void setPortDev(int nDev); |
| | | int getPortType(); |
| | | std::string& getPortTypeDescription(std::string& strDescription); |
| | | std::string& getPortModeDescription(std::string& strDescription); |
| | | std::string& getPortCassetteTypeDescription(std::string& strDescription); |
| | | std::string& getPortTransferModeDescription(std::string& strDescription); |
| | | std::string& getPortEnableModeDescription(std::string& strDescription); |
| | | std::string& getPortTypeAutoChangeModeDescription(std::string& strDescription); |
| | | |
| | | private: |
| | | int m_nPortDev; |
| | | int m_nPortType; |
| | | int m_nPortMode; |
| | | int m_nPortCassetteType; |
| | | int m_nPortTransferMode; |
| | | int m_nPortEanbleMode; |
| | | int m_nPortTypeAutoChangeMode; |
| | | }; |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include "stdafx.h" |
| | | #include "CEqReadIntStep.h" |
| | | #include "Log.h" |
| | | |
| | | |
| | | namespace SERVO { |
| | | CEqReadIntStep::CEqReadIntStep() : CReadStep() |
| | | { |
| | | m_nDataType = __INT16; |
| | | m_nValueDev = 0; |
| | | m_nValue = 0; |
| | | } |
| | | |
| | | CEqReadIntStep::CEqReadIntStep(int dataType, int dev) |
| | | { |
| | | m_nDataType = dataType; |
| | | m_nValueDev = dev; |
| | | m_nValue = 0; |
| | | } |
| | | |
| | | CEqReadIntStep::~CEqReadIntStep() |
| | | { |
| | | |
| | | } |
| | | |
| | | void CEqReadIntStep::getAttributeVector(CAttributeVector& attrubutes) |
| | | { |
| | | CReadStep::getAttributeVector(attrubutes); |
| | | |
| | | std::string strTemp; |
| | | attrubutes.addAttribute(new CAttribute("Dev", |
| | | ("W" + CToolUnits::toHexString(m_nValueDev, strTemp)).c_str(), "")); |
| | | attrubutes.addAttribute(new CAttribute("Value", |
| | | std::to_string(m_nValue).c_str(), "")); |
| | | } |
| | | |
| | | int CEqReadIntStep::onReadData() |
| | | { |
| | | CReadStep::onReadData(); |
| | | |
| | | |
| | | char szBuffer[32]; |
| | | int nRet = m_pCclink->ReadData2(m_station, DeviceType::W, m_nValueDev, |
| | | m_nDataType == __INT16 ? 2 : 4, szBuffer); |
| | | if (0 != nRet) { |
| | | return -1; |
| | | } |
| | | |
| | | if (m_nDataType == __INT16) { |
| | | m_nValue = (unsigned int)CToolUnits::toInt16(&szBuffer[0]); |
| | | } |
| | | else { |
| | | m_nValue = (unsigned int)CToolUnits::toInt32(&szBuffer[0]); |
| | | } |
| | | |
| | | LOGI("<CEqReadIntStep>Value(%s) Changed<Dev:%d, Value:%d>\n", |
| | | m_strName.c_str(), m_nValueDev, m_nValue); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CEqReadIntStep::onComplete() |
| | | { |
| | | CReadStep::onComplete(); |
| | | LOGI("<CEQPortChangeStep> onComplete."); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CEqReadIntStep::onTimeout() |
| | | { |
| | | CReadStep::onTimeout(); |
| | | LOGI("<CEQPortChangeStep> onTimeout."); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CEqReadIntStep::getValue() |
| | | { |
| | | return m_nValue; |
| | | } |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | #include "CReadStep.h" |
| | | |
| | | namespace SERVO { |
| | | constexpr auto __INT16 = 1; |
| | | constexpr auto __INT32 = 2; |
| | | |
| | | class CEqReadIntStep : public CReadStep |
| | | { |
| | | public: |
| | | CEqReadIntStep(); |
| | | CEqReadIntStep(int dataType, int dev); |
| | | ~CEqReadIntStep(); |
| | | |
| | | public: |
| | | virtual void getAttributeVector(CAttributeVector& attrubutes); |
| | | virtual int onReadData(); |
| | | virtual int onComplete(); |
| | | virtual int onTimeout(); |
| | | int getValue(); |
| | | |
| | | private: |
| | | int m_nDataType; |
| | | int m_nValueDev; |
| | | int m_nValue; |
| | | }; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | index = 0x350; |
| | | bFlag = isBitOn(pszData, size, index); |
| | | pStep = getStep(index); |
| | | if (pStep != nullptr) { |
| | | ((CWriteStep*)pStep)->onRecvSignal(bFlag); |
| | | } |
| | | // CIM Mode |
| | | checkStepSignalStepSignal(0x350, pszData, size); |
| | | |
| | | // Port1 ~ Port4 |
| | | checkStepSignalStepSignal(0x3e0, pszData, size); |
| | | checkStepSignalStepSignal(0x3e1, pszData, size); |
| | | checkStepSignalStepSignal(0x3e2, pszData, size); |
| | | checkStepSignalStepSignal(0x3e3, pszData, size); |
| | | checkStepSignalStepSignal(0x3e8, pszData, size); |
| | | checkStepSignalStepSignal(0x3e9, pszData, size); |
| | | checkStepSignalStepSignal(0x3ea, pszData, size); |
| | | checkStepSignalStepSignal(0x3eb, pszData, size); |
| | | checkStepSignalStepSignal(0x3f0, pszData, size); |
| | | checkStepSignalStepSignal(0x3f1, pszData, size); |
| | | checkStepSignalStepSignal(0x3f2, pszData, size); |
| | | checkStepSignalStepSignal(0x3f3, pszData, size); |
| | | checkStepSignalStepSignal(0x3f8, pszData, size); |
| | | checkStepSignalStepSignal(0x3f9, pszData, size); |
| | | checkStepSignalStepSignal(0x3fa, pszData, size); |
| | | checkStepSignalStepSignal(0x3fb, pszData, size); |
| | | checkStepSignalStepSignal(0x400, pszData, size); |
| | | checkStepSignalStepSignal(0x401, pszData, size); |
| | | checkStepSignalStepSignal(0x402, pszData, size); |
| | | checkStepSignalStepSignal(0x403, pszData, size); |
| | | checkStepSignalStepSignal(0x408, pszData, size); |
| | | checkStepSignalStepSignal(0x409, pszData, size); |
| | | checkStepSignalStepSignal(0x40a, pszData, size); |
| | | checkStepSignalStepSignal(0x40b, pszData, size); |
| | | |
| | | } |
| | | |
| | | BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index) |
| | |
| | | } |
| | | } |
| | | |
| | | BOOL CEquipment::removeClass(CGlass* pGlass) |
| | | { |
| | | Lock(); |
| | | bool bExist = std::find(m_glassList.begin(), m_glassList.end(), pGlass) != m_glassList.end(); |
| | | if (bExist) { |
| | | pGlass->addPath(EQ_ID_OPERATOR_REMOVE); |
| | | pGlass->release(); |
| | | m_glassList.remove(pGlass); |
| | | } |
| | | Unlock(); |
| | | |
| | | if (bExist && m_listener.onDataChanged != nullptr) { |
| | | m_listener.onDataChanged(this, 0); |
| | | } |
| | | |
| | | return bExist; |
| | | } |
| | | |
| | | void CEquipment::getGlassList(std::list<CGlass*>& list) |
| | | { |
| | | Lock(); |
| | | for (auto item : m_glassList) { |
| | | item->addRef(); |
| | | list.push_back(item); |
| | | } |
| | | Unlock(); |
| | | } |
| | | |
| | | CGlass* CEquipment::getFrontGlass() |
| | | { |
| | | CGlass* pGlass = nullptr; |
| | |
| | | |
| | | return pGlass; |
| | | } |
| | | |
| | | void CEquipment::checkStepSignalStepSignal(unsigned int addr, const char* pszData, size_t size) |
| | | { |
| | | BOOL bFlag = isBitOn(pszData, size, addr); |
| | | SERVO::CStep* pStep = getStep(addr); |
| | | if (pStep != nullptr) { |
| | | ((CWriteStep*)pStep)->onRecvSignal(bFlag); |
| | | } |
| | | } |
| | | } |
| | |
| | | #include "CEqCimMessageClearStep.h" |
| | | #include "CEqDateTimeSetCmdStep.h" |
| | | #include "CEqVCREnableStep.h" |
| | | #include "CEqPortChangeStep.h" |
| | | #include "CEqReadIntStep.h" |
| | | #include <vector> |
| | | #include <map> |
| | | #include <list> |
| | |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual int outputGlass(int port); |
| | | virtual int glassArrived(CGlass* pGlass); |
| | | void getGlassList(std::list<CGlass*>& list); |
| | | CGlass* getFrontGlass(); |
| | | BOOL removeClass(CGlass* pGlass); |
| | | |
| | | // 以ä¸ä¸ºä»CC-Link读åå°çBitæ å¿ä½æ£æµå½æ° |
| | | public: |
| | |
| | | private: |
| | | BOOL isBitOn(const char* pszData, size_t size, int index); |
| | | inline BOOL equalBool(BOOL b1, BOOL b2); |
| | | void checkStepSignalStepSignal(unsigned int addr, const char* pszData, size_t size); |
| | | |
| | | protected: |
| | | inline void Lock() { EnterCriticalSection(&m_criticalSection); } |
| | |
| | | |
| | | |
| | | BEGIN_MESSAGE_MAP(CEquipmentPage1, CHMPropertyPage) |
| | | ON_WM_CTLCOLOR() |
| | | ON_WM_DESTROY() |
| | | ON_WM_SIZE() |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | void CEquipmentPage1::OnApply() |
| | | { |
| | | __super::OnApply(); |
| | | AfxMessageBox("CEquipmentPage1::OnApply()"); |
| | | } |
| | | |
| | | void CEquipmentPage1::setEquipment(SERVO::CEquipment* pEquipment) |
| | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |
| | | } |
| | | |
| | | HBRUSH CEquipmentPage1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) |
| | | { |
| | | HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor); |
| | | |
| | | // TODO: 卿¤æ´æ¹ DC çä»»ä½ç¹æ§ |
| | | |
| | | // TODO: 妿é»è®¤ç䏿¯æéç»ç¬ï¼åè¿åå¦ä¸ä¸ªç»ç¬ |
| | | return hbr; |
| | | } |
| | | |
| | | void CEquipmentPage1::OnDestroy() |
| | | { |
| | | CHMPropertyPage::OnDestroy(); |
| | | |
| | | // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç |
| | | } |
| | | |
| | | void CEquipmentPage1::OnSize(UINT nType, int cx, int cy) |
| | | { |
| | | CHMPropertyPage::OnSize(nType, cx, cy); |
| | | |
| | | // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç |
| | | } |
| | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | | virtual BOOL OnInitDialog(); |
| | | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); |
| | | afx_msg void OnDestroy(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | }; |
| | |
| | | void CEquipmentPage2::DoDataExchange(CDataExchange* pDX) |
| | | { |
| | | CHMPropertyPage::DoDataExchange(pDX); |
| | | DDX_Control(pDX, IDC_LIST1, m_listCtrl); |
| | | } |
| | | |
| | | |
| | | BEGIN_MESSAGE_MAP(CEquipmentPage2, CHMPropertyPage) |
| | | ON_WM_CTLCOLOR() |
| | | ON_WM_DESTROY() |
| | | ON_WM_SIZE() |
| | | ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CEquipmentPage2::OnLvnItemchangedList1) |
| | | ON_BN_CLICKED(IDC_BUTTON_REMOVE, &CEquipmentPage2::OnBnClickedButtonRemove) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | void CEquipmentPage2::OnApply() |
| | | { |
| | | __super::OnApply(); |
| | | AfxMessageBox("CEquipmentPage2::OnApply()"); |
| | | } |
| | | |
| | | void CEquipmentPage2::setEquipment(SERVO::CEquipment* pEquipment) |
| | |
| | | { |
| | | CHMPropertyPage::OnInitDialog(); |
| | | |
| | | AfxMessageBox(m_pEquipment->getClassName()); |
| | | |
| | | // 读åºå宽 |
| | | CString strIniFile, strItem; |
| | | strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir); |
| | | int width[8] = { 0, 218, 180, 180, 180, 180, 180, 180 }; |
| | | for (int i = 0; i < 8; i++) { |
| | | strItem.Format(_T("Col_%d_Width"), i); |
| | | width[i] = GetPrivateProfileInt("EquipmentPage2ListCtrl", strItem, width[i], strIniFile); |
| | | } |
| | | |
| | | |
| | | // æ¥è¡¨æ§ä»¶ |
| | | DWORD dwStyle = m_listCtrl.GetExtendedStyle(); |
| | | dwStyle |= LVS_EX_FULLROWSELECT; |
| | | dwStyle |= LVS_EX_GRIDLINES; |
| | | m_listCtrl.SetExtendedStyle(dwStyle); |
| | | |
| | | HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1); |
| | | ListView_SetImageList(m_listCtrl.GetSafeHwnd(), imageList, LVSIL_SMALL); |
| | | m_listCtrl.InsertColumn(0, _T(""), LVCFMT_RIGHT, width[0]); |
| | | m_listCtrl.InsertColumn(1, _T("ID"), LVCFMT_LEFT, width[1]); |
| | | m_listCtrl.InsertColumn(2, _T("æ¶é´"), LVCFMT_LEFT, width[2]); |
| | | m_listCtrl.SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER); |
| | | |
| | | |
| | | ASSERT(m_pEquipment); |
| | | std::list<SERVO::CGlass*> list; |
| | | m_pEquipment->getGlassList(list); |
| | | for (auto item : list) { |
| | | item->addRef(); |
| | | item->release(); // éæ¾listä¸çå¼ç¨ |
| | | int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), _T("")); |
| | | m_listCtrl.SetItemData(index, (DWORD_PTR)item); |
| | | m_listCtrl.SetItemText(index, 1, item->getID().c_str()); |
| | | |
| | | } |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |
| | | } |
| | | |
| | | HBRUSH CEquipmentPage2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) |
| | | { |
| | | HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor); |
| | | |
| | | // TODO: 卿¤æ´æ¹ DC çä»»ä½ç¹æ§ |
| | | |
| | | // TODO: 妿é»è®¤ç䏿¯æéç»ç¬ï¼åè¿åå¦ä¸ä¸ªç»ç¬ |
| | | return hbr; |
| | | } |
| | | |
| | | void CEquipmentPage2::OnDestroy() |
| | | { |
| | | CHMPropertyPage::OnDestroy(); |
| | | |
| | | // ä¿åå宽 |
| | | CString strIniFile, strItem, strTemp; |
| | | strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir); |
| | | CHeaderCtrl* pHeader = m_listCtrl.GetHeaderCtrl(); |
| | | for (int i = 0; i < pHeader->GetItemCount(); i++) { |
| | | RECT rect; |
| | | pHeader->GetItemRect(i, &rect); |
| | | strItem.Format(_T("Col_%d_Width"), i); |
| | | strTemp.Format(_T("%d"), rect.right - rect.left); |
| | | WritePrivateProfileString("EquipmentPage2ListCtrl", strItem, strTemp, strIniFile); |
| | | } |
| | | |
| | | for (int i = 0; i < m_listCtrl.GetItemCount(); i++) { |
| | | SERVO::CGlass* pGlass = (SERVO::CGlass*)m_listCtrl.GetItemData(i); |
| | | pGlass->release(); |
| | | } |
| | | } |
| | | |
| | | void CEquipmentPage2::OnSize(UINT nType, int cx, int cy) |
| | | { |
| | | CHMPropertyPage::OnSize(nType, cx, cy); |
| | | if (GetDlgItem(IDC_LIST1) == nullptr) return; |
| | | |
| | | CWnd* pItem; |
| | | CRect rcClient, rcItem; |
| | | GetClientRect(&rcClient); |
| | | |
| | | int x = 12; |
| | | int y2 = rcClient.bottom - 12; |
| | | pItem = GetDlgItem(IDC_BUTTON_REMOVE); |
| | | pItem->GetWindowRect(&rcItem); |
| | | pItem->MoveWindow(x, y2 - rcItem.Height(), rcItem.Width(), rcItem.Height()); |
| | | y2 -= rcItem.Height(); |
| | | y2 -= 8; |
| | | |
| | | m_listCtrl.MoveWindow(x, 58, rcClient.Width() - 24, y2 - 58); |
| | | } |
| | | |
| | | void CEquipmentPage2::OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) |
| | | { |
| | | LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); |
| | | |
| | | if (LVIF_STATE == pNMLV->uChanged) { |
| | | int nItem = pNMLV->iItem; |
| | | GetDlgItem(IDC_BUTTON_REMOVE)->EnableWindow(GetSelectedItemIndex() >= 0); |
| | | } |
| | | |
| | | |
| | | *pResult = 0; |
| | | } |
| | | |
| | | int CEquipmentPage2::GetSelectedItemIndex() |
| | | { |
| | | POSITION pos = m_listCtrl.GetFirstSelectedItemPosition(); |
| | | return m_listCtrl.GetNextSelectedItem(pos); |
| | | } |
| | | |
| | | void CEquipmentPage2::OnBnClickedButtonRemove() |
| | | { |
| | | int index = GetSelectedItemIndex(); |
| | | if (index >= 0) { |
| | | SERVO::CGlass* pGlass = (SERVO::CGlass*)m_listCtrl.GetItemData(index); |
| | | ASSERT(m_pEquipment); |
| | | BOOL bRet = m_pEquipment->removeClass(pGlass); |
| | | if (bRet) { |
| | | pGlass->release(); |
| | | m_listCtrl.DeleteItem(index); |
| | | } |
| | | } |
| | | } |
| | |
| | | #pragma once |
| | | #include "CHMPropertyPage.h" |
| | | #include "CEquipment.h" |
| | | #include "ListCtrlEx.h" |
| | | |
| | | |
| | | // CEpuipmentPage2 å¯¹è¯æ¡ |
| | |
| | | void setEquipment(SERVO::CEquipment* pEquipment); |
| | | |
| | | private: |
| | | int GetSelectedItemIndex(); |
| | | |
| | | private: |
| | | SERVO::CEquipment* m_pEquipment; |
| | | CListCtrlEx m_listCtrl; |
| | | |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | | virtual BOOL OnInitDialog(); |
| | | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); |
| | | afx_msg void OnDestroy(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult); |
| | | afx_msg void OnBnClickedButtonRemove(); |
| | | }; |
| | |
| | | } |
| | | } |
| | | |
| | | // Port1 |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d1f); |
| | | pStep->setName(STEP_EQ_PORT1_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x80); |
| | | if (pEquipment->addStep(0x3e0, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d20); |
| | | pStep->setName(STEP_EQ_PORT1_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x88); |
| | | if (pEquipment->addStep(0x3e8, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d21); |
| | | pStep->setName(STEP_EQ_PORT1_CASSETTE_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x90); |
| | | if (pEquipment->addStep(0x3f0, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d23); |
| | | pStep->setName(STEP_EQ_PORT1_TRANSFER_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x98); |
| | | if (pEquipment->addStep(0x3f8, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d24); |
| | | pStep->setName(STEP_EQ_PORT1_ENABLE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xa0); |
| | | if (pEquipment->addStep(0x400, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d25); |
| | | pStep->setName(STEP_EQ_PORT1_TYPE_ATUO); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xa8); |
| | | if (pEquipment->addStep(0x408, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | // Port2 |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d2f); |
| | | pStep->setName(STEP_EQ_PORT2_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x81); |
| | | if (pEquipment->addStep(0x3e1, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d30); |
| | | pStep->setName(STEP_EQ_PORT2_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x89); |
| | | if (pEquipment->addStep(0x3e9, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d31); |
| | | pStep->setName(STEP_EQ_PORT2_CASSETTE_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x91); |
| | | if (pEquipment->addStep(0x3f1, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d33); |
| | | pStep->setName(STEP_EQ_PORT2_TRANSFER_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x99); |
| | | if (pEquipment->addStep(0x3f9, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d34); |
| | | pStep->setName(STEP_EQ_PORT2_ENABLE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xa1); |
| | | if (pEquipment->addStep(0x401, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d35); |
| | | pStep->setName(STEP_EQ_PORT2_TYPE_ATUO); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xa9); |
| | | if (pEquipment->addStep(0x409, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | // Port3 |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d3f); |
| | | pStep->setName(STEP_EQ_PORT3_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x82); |
| | | if (pEquipment->addStep(0x3e2, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d40); |
| | | pStep->setName(STEP_EQ_PORT3_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x8a); |
| | | if (pEquipment->addStep(0x3ea, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d41); |
| | | pStep->setName(STEP_EQ_PORT3_CASSETTE_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x92); |
| | | if (pEquipment->addStep(0x3f2, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d43); |
| | | pStep->setName(STEP_EQ_PORT3_TRANSFER_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x9a); |
| | | if (pEquipment->addStep(0x3fa, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d44); |
| | | pStep->setName(STEP_EQ_PORT3_ENABLE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xa2); |
| | | if (pEquipment->addStep(0x402, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d45); |
| | | pStep->setName(STEP_EQ_PORT3_TYPE_ATUO); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xaa); |
| | | if (pEquipment->addStep(0x40a, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | // Port4 |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d4f); |
| | | pStep->setName(STEP_EQ_PORT4_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x83); |
| | | if (pEquipment->addStep(0x3e3, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d50); |
| | | pStep->setName(STEP_EQ_PORT4_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x8b); |
| | | if (pEquipment->addStep(0x3eb, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d51); |
| | | pStep->setName(STEP_EQ_PORT4_CASSETTE_TYPE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x93); |
| | | if (pEquipment->addStep(0x3f3, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d53); |
| | | pStep->setName(STEP_EQ_PORT4_TRANSFER_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x9b); |
| | | if (pEquipment->addStep(0x3fb, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d54); |
| | | pStep->setName(STEP_EQ_PORT4_ENABLE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xa3); |
| | | if (pEquipment->addStep(0x403, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d55); |
| | | pStep->setName(STEP_EQ_PORT4_TYPE_ATUO); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0xab); |
| | | if (pEquipment->addStep(0x40b, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | pEquipment->init(); |
| | | LOGE("已添å âEFEM(ROBOT)â."); |
| | | return 0; |
| | |
| | | #define BTN_ALARM_BKGND_PRESS RGB(133, 203, 225) |
| | | |
| | | /* Equipment ID */ |
| | | #define EQ_ID_EFEM 1 |
| | | #define EQ_ID_Bonder1 2 |
| | | #define EQ_ID_Bonder2 3 |
| | | #define EQ_ID_LOADPORT1 4 |
| | | #define EQ_ID_LOADPORT2 5 |
| | | #define EQ_ID_LOADPORT3 6 |
| | | #define EQ_ID_LOADPORT4 7 |
| | | #define EQ_ID_FLIPER 8 |
| | | #define EQ_ID_VACUUMBAKE 9 |
| | | #define EQ_ID_ALIGNER 10 |
| | | #define EQ_ID_BAKE_COOLING 11 |
| | | #define EQ_ID_EFEM 1 |
| | | #define EQ_ID_Bonder1 2 |
| | | #define EQ_ID_Bonder2 3 |
| | | #define EQ_ID_LOADPORT1 4 |
| | | #define EQ_ID_LOADPORT2 5 |
| | | #define EQ_ID_LOADPORT3 6 |
| | | #define EQ_ID_LOADPORT4 7 |
| | | #define EQ_ID_FLIPER 8 |
| | | #define EQ_ID_VACUUMBAKE 9 |
| | | #define EQ_ID_ALIGNER 10 |
| | | #define EQ_ID_BAKE_COOLING 11 |
| | | #define EQ_ID_OPERATOR_REMOVE 999 |
| | | |
| | | |
| | | /* step name */ |
| | | #define STEP_MODE _T("EQMode") |
| | | #define STEP_STATUS _T("EQStatus") |
| | | #define STEP_ALARM_START _T("EQAlarm") |
| | | #define STEP_ALARM_BLOCK1 _T("EQAlarm1") |
| | | #define STEP_ALARM_BLOCK2 _T("EQAlarm2") |
| | | #define STEP_ALARM_BLOCK3 _T("EQAlarm3") |
| | | #define STEP_ALARM_BLOCK4 _T("EQAlarm4") |
| | | #define STEP_ALARM_BLOCK5 _T("EQAlarm5") |
| | | #define STEP_PROCESS _T("EQProcess") |
| | | #define STEP_CIM_MODE_CHANGE _T("EQCimModeChange") |
| | | #define STEP_EQ_MODE_CHANGE _T("EQModeChange") |
| | | #define STEP_CIM_MESSAGE_CMD _T("EQCimMessageCmd") |
| | | #define STEP_CIM_MESSAGE_CLEAR _T("EQCimMessageClear") |
| | | #define STEP_DATETIME_SET_CMD _T("EQDateTimeSetCmd") |
| | | #define STEP_EQ_VCR_ENABLE _T("EQVCREnable") |
| | | #define STEP_MODE _T("EQMode") |
| | | #define STEP_STATUS _T("EQStatus") |
| | | #define STEP_ALARM_START _T("EQAlarm") |
| | | #define STEP_ALARM_BLOCK1 _T("EQAlarm1") |
| | | #define STEP_ALARM_BLOCK2 _T("EQAlarm2") |
| | | #define STEP_ALARM_BLOCK3 _T("EQAlarm3") |
| | | #define STEP_ALARM_BLOCK4 _T("EQAlarm4") |
| | | #define STEP_ALARM_BLOCK5 _T("EQAlarm5") |
| | | #define STEP_PROCESS _T("EQProcess") |
| | | #define STEP_CIM_MODE_CHANGE _T("EQCimModeChange") |
| | | #define STEP_EQ_MODE_CHANGE _T("EQModeChange") |
| | | #define STEP_CIM_MESSAGE_CMD _T("EQCimMessageCmd") |
| | | #define STEP_CIM_MESSAGE_CLEAR _T("EQCimMessageClear") |
| | | #define STEP_DATETIME_SET_CMD _T("EQDateTimeSetCmd") |
| | | #define STEP_EQ_VCR_ENABLE _T("EQVCREnable") |
| | | #define STEP_EQ_PORT1_TYPE _T("EQPort1Type") |
| | | #define STEP_EQ_PORT1_MODE _T("EQPort1Mode") |
| | | #define STEP_EQ_PORT1_CASSETTE_TYPE _T("EQPort1CassetteType") |
| | | #define STEP_EQ_PORT1_TRANSFER_MODE _T("EQPort1TransferMode") |
| | | #define STEP_EQ_PORT1_ENABLE _T("EQPort1Enable") |
| | | #define STEP_EQ_PORT1_TYPE_ATUO _T("EQPort1TypeAuto") |
| | | #define STEP_EQ_PORT2_TYPE _T("EQPort2Type") |
| | | #define STEP_EQ_PORT2_MODE _T("EQPort2Mode") |
| | | #define STEP_EQ_PORT2_CASSETTE_TYPE _T("EQPort2CassetteType") |
| | | #define STEP_EQ_PORT2_TRANSFER_MODE _T("EQPort2TransferMode") |
| | | #define STEP_EQ_PORT2_ENABLE _T("EQPort2Enable") |
| | | #define STEP_EQ_PORT2_TYPE_ATUO _T("EQPort2TypeAuto") |
| | | #define STEP_EQ_PORT3_TYPE _T("EQPort3Type") |
| | | #define STEP_EQ_PORT3_MODE _T("EQPort3Mode") |
| | | #define STEP_EQ_PORT3_CASSETTE_TYPE _T("EQPort3CassetteType") |
| | | #define STEP_EQ_PORT3_TRANSFER_MODE _T("EQPort3TransferMode") |
| | | #define STEP_EQ_PORT3_ENABLE _T("EQPort3Enable") |
| | | #define STEP_EQ_PORT3_TYPE_ATUO _T("EQPort3TypeAuto") |
| | | #define STEP_EQ_PORT4_TYPE _T("EQPort4Type") |
| | | #define STEP_EQ_PORT4_MODE _T("EQPort4Mode") |
| | | #define STEP_EQ_PORT4_CASSETTE_TYPE _T("EQPort4CassetteType") |
| | | #define STEP_EQ_PORT4_TRANSFER_MODE _T("EQPort4TransferMode") |
| | | #define STEP_EQ_PORT4_ENABLE _T("EQPort4Enable") |
| | | #define STEP_EQ_PORT4_TYPE_ATUO _T("EQPort4TypeAuto") |
| | | |
| | | |
| | | /* base alarm */ |
| | |
| | | <ClInclude Include="CEqDateTimeSetCmdStep.h" /> |
| | | <ClInclude Include="CEqModeChangeStep.h" /> |
| | | <ClInclude Include="CEqModeStep.h" /> |
| | | <ClInclude Include="CEqPortChangeStep.h" /> |
| | | <ClInclude Include="CEqProcessStep.h" /> |
| | | <ClInclude Include="CEqReadIntStep.h" /> |
| | | <ClInclude Include="CEqStatusStep.h" /> |
| | | <ClInclude Include="CEquipmentPage1.h" /> |
| | | <ClInclude Include="CEquipmentPage2.h" /> |
| | |
| | | <ClCompile Include="CEqDateTimeSetCmdStep.cpp" /> |
| | | <ClCompile Include="CEqModeChangeStep.cpp" /> |
| | | <ClCompile Include="CEqModeStep.cpp" /> |
| | | <ClCompile Include="CEqPortChangeStep.cpp" /> |
| | | <ClCompile Include="CEqProcessStep.cpp" /> |
| | | <ClCompile Include="CEqReadIntStep.cpp" /> |
| | | <ClCompile Include="CEqStatusStep.cpp" /> |
| | | <ClCompile Include="CEquipmentPage1.cpp" /> |
| | | <ClCompile Include="CEquipmentPage2.cpp" /> |
| | |
| | | <ClCompile Include="CEquipmentPage2.cpp" /> |
| | | <ClCompile Include="CHMPropertyPage.cpp" /> |
| | | <ClCompile Include="CHMPropertyDlg.cpp" /> |
| | | <ClCompile Include="CEqPortChangeStep.cpp" /> |
| | | <ClCompile Include="CEqReadIntStep.cpp" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ClInclude Include="AlarmManager.h" /> |
| | |
| | | <ClInclude Include="CEquipmentPage2.h" /> |
| | | <ClInclude Include="CHMPropertyPage.h" /> |
| | | <ClInclude Include="CHMPropertyDlg.h" /> |
| | | <ClInclude Include="CEqPortChangeStep.h" /> |
| | | <ClInclude Include="CEqReadIntStep.h" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ResourceCompile Include="Servo.rc" /> |