From 0d41f9169a84eb0082585d55af5785d020628bca Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 27 三月 2025 18:04:24 +0800
Subject: [PATCH] 1.增加人工处理(移除、抱走)物料功能,以便和机器中的实物丰符合。 2.Port1 ~ Port4,type, mode, cassette type, transfer mode, enable mode, type auto change mode数据获取。 3.增加通用的读取cc-link int数据的CEqReadIntStep
---
SourceCode/Bond/Servo/Servo.vcxproj | 4
SourceCode/Bond/Servo/CEqPortChangeStep.cpp | 268 +++++++++++++++
SourceCode/Bond/Servo/CEqReadIntStep.h | 28 +
SourceCode/Bond/Servo/resource.h | 0
SourceCode/Bond/Servo/CEquipmentPage1.cpp | 28 +
SourceCode/Bond/Servo/CEqPortChangeStep.h | 35 ++
SourceCode/Bond/Servo/Servo.vcxproj.filters | 4
SourceCode/Bond/Servo/CEquipmentPage2.cpp | 129 +++++++
SourceCode/Bond/Servo/CEquipment.cpp | 72 +++
SourceCode/Bond/Servo/Servo.rc | 0
SourceCode/Bond/Servo/CMaster.cpp | 224 +++++++++++++
Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.1.xlsx | 0
SourceCode/Bond/Servo/CEqReadIntStep.cpp | 83 ++++
SourceCode/Bond/Servo/CEquipment.h | 5
SourceCode/Bond/Servo/CEquipmentPage2.h | 10
SourceCode/Bond/Servo/CEquipmentPage1.h | 3
SourceCode/Bond/Servo/Common.h | 77 +++-
17 files changed, 935 insertions(+), 35 deletions(-)
diff --git a/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.1.xlsx b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.1.xlsx
index 544f8a8..be48abf 100644
--- a/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.1.xlsx
+++ b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.1.xlsx
Binary files differ
diff --git a/SourceCode/Bond/Servo/CEqPortChangeStep.cpp b/SourceCode/Bond/Servo/CEqPortChangeStep.cpp
new file mode 100644
index 0000000..0927225
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqPortChangeStep.cpp
@@ -0,0 +1,268 @@
+#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;
+ }
+}
+
diff --git a/SourceCode/Bond/Servo/CEqPortChangeStep.h b/SourceCode/Bond/Servo/CEqPortChangeStep.h
new file mode 100644
index 0000000..27f7a99
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqPortChangeStep.h
@@ -0,0 +1,35 @@
+#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;
+ };
+}
+
diff --git a/SourceCode/Bond/Servo/CEqReadIntStep.cpp b/SourceCode/Bond/Servo/CEqReadIntStep.cpp
new file mode 100644
index 0000000..17174ae
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqReadIntStep.cpp
@@ -0,0 +1,83 @@
+#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;
+ }
+}
+
diff --git a/SourceCode/Bond/Servo/CEqReadIntStep.h b/SourceCode/Bond/Servo/CEqReadIntStep.h
new file mode 100644
index 0000000..30f1337
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqReadIntStep.h
@@ -0,0 +1,28 @@
+#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;
+ };
+}
+
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index a52da00..fa4bb1a 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -366,12 +366,35 @@
}
}
- 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)
@@ -614,6 +637,34 @@
}
}
+ 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;
@@ -626,4 +677,13 @@
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);
+ }
+ }
}
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index af939bf..e03061d 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -13,6 +13,8 @@
#include "CEqCimMessageClearStep.h"
#include "CEqDateTimeSetCmdStep.h"
#include "CEqVCREnableStep.h"
+#include "CEqPortChangeStep.h"
+#include "CEqReadIntStep.h"
#include <vector>
#include <map>
#include <list>
@@ -94,7 +96,9 @@
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:
@@ -110,6 +114,7 @@
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); }
diff --git a/SourceCode/Bond/Servo/CEquipmentPage1.cpp b/SourceCode/Bond/Servo/CEquipmentPage1.cpp
index a6a80f4..30aa397 100644
--- a/SourceCode/Bond/Servo/CEquipmentPage1.cpp
+++ b/SourceCode/Bond/Servo/CEquipmentPage1.cpp
@@ -28,6 +28,9 @@
BEGIN_MESSAGE_MAP(CEquipmentPage1, CHMPropertyPage)
+ ON_WM_CTLCOLOR()
+ ON_WM_DESTROY()
+ ON_WM_SIZE()
END_MESSAGE_MAP()
@@ -35,7 +38,6 @@
void CEquipmentPage1::OnApply()
{
__super::OnApply();
- AfxMessageBox("CEquipmentPage1::OnApply()");
}
void CEquipmentPage1::setEquipment(SERVO::CEquipment* pEquipment)
@@ -52,3 +54,27 @@
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: 鍦ㄦ澶勬坊鍔犳秷鎭鐞嗙▼搴忎唬鐮�
+}
diff --git a/SourceCode/Bond/Servo/CEquipmentPage1.h b/SourceCode/Bond/Servo/CEquipmentPage1.h
index 994b0a0..91e4f90 100644
--- a/SourceCode/Bond/Servo/CEquipmentPage1.h
+++ b/SourceCode/Bond/Servo/CEquipmentPage1.h
@@ -30,4 +30,7 @@
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);
};
diff --git a/SourceCode/Bond/Servo/CEquipmentPage2.cpp b/SourceCode/Bond/Servo/CEquipmentPage2.cpp
index c79ab1a..ca4b445 100644
--- a/SourceCode/Bond/Servo/CEquipmentPage2.cpp
+++ b/SourceCode/Bond/Servo/CEquipmentPage2.cpp
@@ -24,10 +24,16 @@
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()
@@ -35,7 +41,6 @@
void CEquipmentPage2::OnApply()
{
__super::OnApply();
- AfxMessageBox("CEquipmentPage2::OnApply()");
}
void CEquipmentPage2::setEquipment(SERVO::CEquipment* pEquipment)
@@ -48,8 +53,128 @@
{
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);
+ }
+ }
+}
diff --git a/SourceCode/Bond/Servo/CEquipmentPage2.h b/SourceCode/Bond/Servo/CEquipmentPage2.h
index 36a82ca..99a7596 100644
--- a/SourceCode/Bond/Servo/CEquipmentPage2.h
+++ b/SourceCode/Bond/Servo/CEquipmentPage2.h
@@ -1,6 +1,7 @@
锘�#pragma once
#include "CHMPropertyPage.h"
#include "CEquipment.h"
+#include "ListCtrlEx.h"
// CEpuipmentPage2 瀵硅瘽妗�
@@ -16,7 +17,11 @@
void setEquipment(SERVO::CEquipment* pEquipment);
private:
+ int GetSelectedItemIndex();
+
+private:
SERVO::CEquipment* m_pEquipment;
+ CListCtrlEx m_listCtrl;
// 瀵硅瘽妗嗘暟鎹�
@@ -30,4 +35,9 @@
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();
};
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 145531f..ba4be00 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -378,6 +378,230 @@
}
}
+ // 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;
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 3860990..4741d5e 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -50,35 +50,60 @@
#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 */
diff --git a/SourceCode/Bond/Servo/Servo.rc b/SourceCode/Bond/Servo/Servo.rc
index f8d9760..b533912 100644
--- a/SourceCode/Bond/Servo/Servo.rc
+++ b/SourceCode/Bond/Servo/Servo.rc
Binary files differ
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index f76866d..2260705 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -213,7 +213,9 @@
<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" />
@@ -286,7 +288,9 @@
<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" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 833b489..74279a7 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -79,6 +79,8 @@
<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" />
@@ -156,6 +158,8 @@
<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" />
diff --git a/SourceCode/Bond/Servo/resource.h b/SourceCode/Bond/Servo/resource.h
index 7fbb48e..a676416 100644
--- a/SourceCode/Bond/Servo/resource.h
+++ b/SourceCode/Bond/Servo/resource.h
Binary files differ
--
Gitblit v1.9.3