LAPTOP-SNT8I5JK\Boounion
2025-07-16 789af4f4a7baee07bd6c2c03588afcb19555343b
1.CollectionEvent列表从文件加载,界面上显示;
已添加7个文件
已修改11个文件
449 ■■■■■ 文件已修改
Document/MASTER学习资料/LingSignal - 副本.bmp 补丁 | 查看 | 原始文档 | blame | 历史
Document/MASTER学习资料/LingSignal.bmp 补丁 | 查看 | 原始文档 | blame | 历史
Document/MASTER学习资料/LingSignal2.txt 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Document/MASTER学习资料/SECS通讯整理.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CCollectionEvent.cpp 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CCollectionEvent.h 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageCollectionEvent.cpp 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageCollectionEvent.h 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CReport.cpp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/HsmsPassive.cpp 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/HsmsPassive.h 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Model.cpp 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.filters 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.cpp 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/resource.h 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/CollectionEventList.txt 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Document/MASTERѧϰ×ÊÁÏ/LingSignal - ¸±±¾.bmp
Document/MASTERѧϰ×ÊÁÏ/LingSignal.bmp
Document/MASTERѧϰ×ÊÁÏ/LingSignal2.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
| ä¿¡å·åç§°                            | EAS角色(读/写) | è¯´æ˜Ž                |
| ------------------------------- | ---------- | ----------------- |
| Downstream Inline               | è¯»          | ä¸‹æ¸¸Inline状态,设备告知主机 |
| Downstream Trouble              | è¯»          | ä¸‹æ¸¸å¼‚常通知,设备发给主机     |
| Interlock                       | è¯»          | äº’锁状态,设备反馈         |
| Send Able                       | è¯»          | è®¾å¤‡æ˜¯å¦å‡†å¤‡å¥½å‘送Glass信号  |
| Send Start                      | å†™          | ä¸»æœºæŒ‡ä»¤è®¾å¤‡å¼€å§‹å‘送Glass   |
| Job Transfer                    | å†™          | ä¸»æœºæŒ‡ä»¤è®¾å¤‡è¿›è¡ŒJob转移     |
| Send Complete                   | è¯»          | è®¾å¤‡åé¦ˆå‘送完成信号        |
| Shutter State                   | è¯»          | è®¾å¤‡æŒ¡æ¿çŠ¶æ€ï¼Œè®¾å¤‡åé¦ˆ       |
| Pin State                       | è¯»          | è®¾å¤‡é’ˆè„šçŠ¶æ€            |
| Slot Pair Flag                  | è¯»          | è®¾å¤‡åé¦ˆSlot配对状态      |
| Arm Slot Pair Flag              | è¯»          | æœºæ¢°è‡‚Slot配对状态       |
| Exchange Possible               | è¯»          | è®¾å¤‡åé¦ˆæ˜¯å¦å…è®¸äº¤æ¢        |
| Exchange Execute                | å†™          | ä¸»æœºä¸‹å‘执行交换指令        |
| Cancel Request                  | å†™          | ä¸»æœºå–消当前操作请求        |
| Cancel Ack                      | è¯»          | è®¾å¤‡ç¡®è®¤å–消操作          |
| Cancel Nck                      | è¯»          | è®¾å¤‡æ‹’绝取消操作          |
| Abort Request                   | å†™          | ä¸»æœºè¯·æ±‚中止操作          |
| Abort Ack                       | è¯»          | è®¾å¤‡ç¡®è®¤ä¸­æ­¢æ“ä½œ          |
| Abort Nck                       | è¯»          | è®¾å¤‡æ‹’绝中止操作          |
| Resume Request                  | å†™          | ä¸»æœºè¯·æ±‚恢复操作          |
| Resume Ack                      | è¯»          | è®¾å¤‡ç¡®è®¤æ¢å¤æ“ä½œ          |
| Resume Nak                      | è¯»          | è®¾å¤‡æ‹’绝恢复操作          |
| Abnormal                        | è¯»          | è®¾å¤‡å¼‚常信号            |
| Empty                           | è¯»          | è®¾å¤‡ç©ºçŠ¶æ€             |
| Idle                            | è¯»          | è®¾å¤‡ç©ºé—²çŠ¶æ€            |
| Run                             | è¯»          | è®¾å¤‡è¿è¡ŒçŠ¶æ€            |
| Complete                        | è¯»          | è®¾å¤‡å®ŒæˆçŠ¶æ€            |
| Lift Up or Pin Up               | è¯»          | è®¾å¤‡æŠ¬å‡çŠ¶æ€            |
| Lift Down or Pin Down           | è¯»          | è®¾å¤‡ä¸‹é™çŠ¶æ€            |
| Stopper Up or Shutter Open      | è¯»          | è®¾å¤‡æŒ¡æ¿å¼€çŠ¶æ€           |
| Stopper Down or Shutter Close   | è¯»          | è®¾å¤‡æŒ¡æ¿å…³çŠ¶æ€           |
| Manual Operation                | è¯»          | è®¾å¤‡æ‰‹åŠ¨æ“ä½œçŠ¶æ€          |
| Body Moving                     | è¯»          | è®¾å¤‡åŠ¨ä½œä¸­çŠ¶æ€           |
| Glass Exist #1(Check Sensor on) | è¯»          | çŽ»ç’ƒå­˜åœ¨ä¼ æ„Ÿå™¨ä¿¡å·         |
| Glass Exist #2(Check Sensor on) | è¯»          | çŽ»ç’ƒå­˜åœ¨ä¼ æ„Ÿå™¨ä¿¡å·         |
| Glass Exist #1 Exist            | è¯»          | çŽ»ç’ƒå®žé™…å­˜åœ¨çŠ¶æ€          |
| Glass Exist #2 Exist            | è¯»          | çŽ»ç’ƒå®žé™…å­˜åœ¨çŠ¶æ€          |
| Arm Stretch complete            | è¯»          | æœºæ¢°è‡‚伸展完成           |
| Arm Vacuum                      | è¯»          | æœºæ¢°è‡‚吸附状态           |
| Conveyor State                  | è¯»          | ä¼ é€å¸¦çŠ¶æ€             |
| Arm Fold complete               | è¯»          | æœºæ¢°è‡‚折叠完成           |
| Make Define #1\~#9              | è¯»          | è®¾å¤‡è‡ªå®šä¹‰ä¿¡å·ï¼Œä¸€èˆ¬è®¾å¤‡åé¦ˆ    |
总结
| ä½ éœ€è¦è¿™ä¸¤ä¸ªä¿¡å·å—? | ç­”案是:必须同时用。
| â€” | â€” |
| Robot CMD | â€œå†™æ¬è¿åŠ¨ä½œå‚æ•°â€ |
| Indexer Operation Mode Command | â€œå‘启动命令” |
Load port Status上报jobData
边检NG, Job Data Change report, è¦åŽŸè·¯é€€å›ž
sh600975 sz002818 sh600727 sh600829
Document/MASTERѧϰ×ÊÁÏ/SECSͨѶÕûÀí.xlsx
Binary files differ
SourceCode/Bond/Servo/CCollectionEvent.cpp
@@ -8,6 +8,16 @@
        m_nCEID = 0;
    }
    CCollectionEvent::CCollectionEvent(unsigned int id, const char* pszName, const char* pszDescription, std::vector<unsigned int>& prtids)
    {
        m_nCEID = id;
        m_strName = pszName;
        m_strDescription = pszDescription;
        for (auto item : prtids) {
            m_rptids.push_back(item);
        }
    }
    CCollectionEvent::~CCollectionEvent()
    {
@@ -16,6 +26,16 @@
    unsigned int CCollectionEvent::getEventId()
    {
        return m_nCEID;
    }
    std::string& CCollectionEvent::getName()
    {
        return m_strName;
    }
    std::string& CCollectionEvent::getDescription()
    {
        return m_strDescription;
    }
    BOOL CCollectionEvent::addReport(CReport* pReport)
@@ -53,4 +73,25 @@
        return nullptr;
    }
    std::vector<CReport*>& CCollectionEvent::getReports()
    {
        return m_reports;
    }
    std::string CCollectionEvent::getReportIdsText()
    {
        std::string strResult, strName;
        for (int i = 0; i < m_rptids.size(); i++) {
            strResult += std::to_string(m_rptids[i]);// (getReport(m_rptids[i]) ?
            if (nullptr == getReport(m_rptids[i])) {
                strResult += "?";
            }
            if (i != m_rptids.size() - 1) {
                strResult += ",";
            }
        }
        return strResult;
    }
}
SourceCode/Bond/Servo/CCollectionEvent.h
@@ -8,16 +8,24 @@
    {
    public:
        CCollectionEvent();
        CCollectionEvent(unsigned int id, const char* pszName, const char* pszDescription, std::vector<unsigned int>& prtids);
        virtual ~CCollectionEvent();
    public:
        unsigned int getEventId();
        std::string& getName();
        std::string& getDescription();
        std::vector<CReport*>& getReports();
        std::string getReportIdsText();
        BOOL addReport(CReport* pReport);
        BOOL deleteReport(unsigned int nReportId);
        CReport* getReport(unsigned int nReportId);
    private:
        unsigned int m_nCEID;
        std::string m_strName;
        std::string m_strDescription;
        std::vector<unsigned int> m_rptids;
        std::vector<CReport*> m_reports;
    };
}
SourceCode/Bond/Servo/CPageCollectionEvent.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
// CPageCollectionEvent.cpp: å®žçŽ°æ–‡ä»¶
//
#include "stdafx.h"
#include "Servo.h"
#include "CPageCollectionEvent.h"
#include "afxdialogex.h"
// CPageCollectionEvent å¯¹è¯æ¡†
IMPLEMENT_DYNAMIC(CPageCollectionEvent, CHMPropertyPage)
CPageCollectionEvent::CPageCollectionEvent(CWnd* pParent /*=nullptr*/)
    : CHMPropertyPage(IDD_PAGE_COLLECTION_EVENT, pParent)
{
}
CPageCollectionEvent::~CPageCollectionEvent()
{
}
void CPageCollectionEvent::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_LIST1, m_listCtrl);
}
BEGIN_MESSAGE_MAP(CPageCollectionEvent, CHMPropertyPage)
    ON_WM_CTLCOLOR()
    ON_WM_DESTROY()
    ON_WM_SIZE()
END_MESSAGE_MAP()
// CPageCollectionEvent æ¶ˆæ¯å¤„理程序
BOOL CPageCollectionEvent::OnInitDialog()
{
    CHMPropertyPage::OnInitDialog();
    // è¯»å‡ºåˆ—宽
    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("PageCollectionListCtrl", 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("CEID"), LVCFMT_LEFT, width[1]);
    m_listCtrl.InsertColumn(2, _T("CE Name"), LVCFMT_LEFT, width[2]);
    m_listCtrl.InsertColumn(3, _T("Descriptions"), LVCFMT_LEFT, width[3]);
    m_listCtrl.InsertColumn(4, _T("Attached RPTID"), LVCFMT_LEFT, width[4]);
    loadCollectionEvents();
    return TRUE;  // return TRUE unless you set the focus to a control
                  // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
}
HBRUSH CPageCollectionEvent::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO:  åœ¨æ­¤æ›´æ”¹ DC çš„任何特性
    // TODO:  å¦‚果默认的不是所需画笔,则返回另一个画笔
    return hbr;
}
void CPageCollectionEvent::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("PageCollectionListCtrl", strItem, strTemp, strIniFile);
    }
}
void CPageCollectionEvent::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);
    m_listCtrl.MoveWindow(12, 12, rcClient.Width() - 24, rcClient.Height() - 24);
}
void CPageCollectionEvent::loadCollectionEvents()
{
    auto& collectionEvent = theApp.m_model.m_hsmsPassive.getCollectionEvents();
    for (auto item : collectionEvent) {
        int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), _T(""));
        m_listCtrl.SetItemData(index, (DWORD_PTR)item);
        m_listCtrl.SetItemText(index, 1, std::to_string(item->getEventId()).c_str());
        m_listCtrl.SetItemText(index, 2, item->getName().c_str());
        m_listCtrl.SetItemText(index, 3, item->getDescription().c_str());
        m_listCtrl.SetItemText(index, 4, item->getReportIdsText().c_str());
    }
}
SourceCode/Bond/Servo/CPageCollectionEvent.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
#pragma once
#include "CHMPropertyPage.h"
#include "ListCtrlEx.h"
// CPageCollectionEvent å¯¹è¯æ¡†
class CPageCollectionEvent : public CHMPropertyPage
{
    DECLARE_DYNAMIC(CPageCollectionEvent)
public:
    CPageCollectionEvent(CWnd* pParent = nullptr);   // æ ‡å‡†æž„造函数
    virtual ~CPageCollectionEvent();
    void loadCollectionEvents();
private:
    CListCtrlEx m_listCtrl;
// å¯¹è¯æ¡†æ•°æ®
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_PAGE_COLLECTION_EVENT };
#endif
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV æ”¯æŒ
    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);
};
SourceCode/Bond/Servo/CReport.cpp
@@ -81,17 +81,6 @@
            }
        }
        /*
        for (int i = 0; i < m_variabels.size(); i++) {
            strResult += std::to_string(m_variabels[i]->getVarialbleId());
            strResult += "(";
            strResult += m_variabels[i]->getName();
            strResult += ")";
            if (i != m_variabels.size() - 1) {
                strResult += ",";
            }
        }
        */
        return strResult;
    }
SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -282,7 +282,7 @@
    std::vector<SERVO::CReport*> reports;
    int index;
    CString strLine, strVariable;
    CString strId, strName, strFormat, strRemark;
    CString strId;
    while (file.ReadString(strLine)) {
        if (!std::regex_match((LPTSTR)(LPCTSTR)strLine, pattern)) {
            continue;
@@ -324,12 +324,95 @@
    return m_reports;
}
SERVO::CReport* CHsmsPassive::getReport(int rptid)
{
    for (auto item : m_reports) {
        if (item->getReportId() == rptid) {
            return item;
        }
    }
    return nullptr;
}
void CHsmsPassive::clearAllReport()
{
    for (auto item : m_reports) {
        delete item;
    }
    m_reports.clear();
}
int CHsmsPassive::loadCollectionEvents(const char* pszFilepath)
{
    CStdioFile file;
    if (!file.Open(pszFilepath, CFile::modeRead)) {
        return -1;
    }
    std::regex pattern("^\\d+,[^,]*,[^,]*,\\(\\d+(,\\d+)*\\).*");  // åŒ¹é…ä»¥æ•°å­—+逗号开头的字符串
    std::vector<SERVO::CCollectionEvent*> events;
    int index, last;
    CString strLine, strRPTIDs;
    CString strId, strName, strDescription;
    while (file.ReadString(strLine)) {
        if (!std::regex_match((LPTSTR)(LPCTSTR)strLine, pattern)) {
            continue;
        }
        last = 0;
        index = strLine.Find(",", last);
        if (index < 0) continue;
        strId = strLine.Left(index);
        last = index + 1;
        index = strLine.Find(",", last);
        if (index < 0) continue;
        strName = strLine.Mid(last, index - last);
        last = index + 1;
        index = strLine.Find(",", last);
        if (index < 0) continue;
        strDescription = strLine.Mid(last, index - last);
        strRPTIDs = strLine.Right(strLine.GetLength() - index - 1);
        strRPTIDs.Delete(0);
        strRPTIDs.Delete(strRPTIDs.GetLength() - 1);
        auto prtids = parseVidList(strRPTIDs);
        SERVO::CCollectionEvent* pEvent = new SERVO::CCollectionEvent(
            atoi(strId), (LPTSTR)(LPCTSTR)strName, (LPTSTR)(LPCTSTR)strDescription, prtids);
        for (auto rptid : prtids) {
            SERVO::CReport* pReport = getReport(rptid);
            if (pReport != nullptr) {
                pEvent->addReport(pReport);
            }
        }
        events.push_back(pEvent);
    }
    if (!events.empty()) {
        clearAllCollectionEvent();
        for (auto item : events) {
            m_collectionEvent.push_back(item);
        }
    }
    file.Close();
    return 0;
}
std::vector<SERVO::CCollectionEvent*>& CHsmsPassive::getCollectionEvents()
{
    return m_collectionEvent;
}
void CHsmsPassive::clearAllCollectionEvent()
{
    for (auto item : m_collectionEvent) {
        delete item;
    }
    m_collectionEvent.clear();
}
std::vector<unsigned int> CHsmsPassive::parseVidList(CString& strNums)
@@ -487,6 +570,7 @@
    clearAllVariabel();
    clearAllReport();
    clearAllCollectionEvent();
    return 0;
}
SourceCode/Bond/Servo/HsmsPassive.h
@@ -108,9 +108,6 @@
    // å–消 define report
    void deleteReport(unsigned int RPTID);
    // å–消/删除所有 define report
    void deleteAllReport();
    // ä»Žæ–‡ä»¶ä¸­åŠ è½½CVariable列表
    int loadVarialbles(const char* pszFilepath);
@@ -120,10 +117,25 @@
    // å–得指定Variable
    SERVO::CVariable* getVariable(int variableId);
    // ä»Žæ–‡ä»¶ä¸­åŠ è½½CReport表表
    // ä»Žæ–‡ä»¶ä¸­åŠ è½½CReport列表
    int loadReports(const char* pszFilepath);
    // å–消/删除所有 define report
    void deleteAllReport();
    // å–å¾—Report列表
    std::vector<SERVO::CReport*>& getReports();
    // ä»Žæ–‡ä»¶ä¸­åŠ è½½CCollectionEvent列表
    int loadCollectionEvents(const char* pszFilepath);
    // å–å¾—CCollectionEvent列表
    std::vector<SERVO::CCollectionEvent*>& getCollectionEvents();
    // å–消/删除所有CollectionEvent
    void clearAllCollectionEvent();
    SERVO::CReport* getReport(int rptid);
    void setListener(SECSListener listener);
    unsigned OnCimWork();
@@ -203,5 +215,8 @@
    // CReport vector
    std::vector<SERVO::CReport*> m_reports;
    // CollectionEvent vector
    std::vector<SERVO::CCollectionEvent*> m_collectionEvent;
};
SourceCode/Bond/Servo/Model.cpp
@@ -134,6 +134,8 @@
    m_hsmsPassive.init(this, "APP", 7000);
    strVarialbleFile.Format(_T("%s\\ReportList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
    m_hsmsPassive.loadReports((LPTSTR)(LPCTSTR)strVarialbleFile);
    strVarialbleFile.Format(_T("%s\\CollectionEventList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
    m_hsmsPassive.loadCollectionEvents((LPTSTR)(LPCTSTR)strVarialbleFile);
    m_hsmsPassive.init(this, "APP", 7000);
    SERVO::MasterListener masterListener;
SourceCode/Bond/Servo/Servo.rc
Binary files differ
SourceCode/Bond/Servo/Servo.vcxproj
@@ -205,6 +205,7 @@
    <ClInclude Include="CGlassPool.h" />
    <ClInclude Include="ChangePasswordDlg.h" />
    <ClInclude Include="CMyStatusbar.h" />
    <ClInclude Include="CPageCollectionEvent.h" />
    <ClInclude Include="CPageLinkSignal.h" />
    <ClInclude Include="CPageReport.h" />
    <ClInclude Include="CPageVarialbles.h" />
@@ -352,6 +353,7 @@
    <ClCompile Include="CGlassPool.cpp" />
    <ClCompile Include="ChangePasswordDlg.cpp" />
    <ClCompile Include="CMyStatusbar.cpp" />
    <ClCompile Include="CPageCollectionEvent.cpp" />
    <ClCompile Include="CPageLinkSignal.cpp" />
    <ClCompile Include="CPageReport.cpp" />
    <ClCompile Include="CPageVarialbles.cpp" />
SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -174,6 +174,7 @@
    <ClCompile Include="CVariable.cpp" />
    <ClCompile Include="CPageVarialbles.cpp" />
    <ClCompile Include="CPageReport.cpp" />
    <ClCompile Include="CPageCollectionEvent.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="AlarmManager.h" />
@@ -353,6 +354,7 @@
    <ClInclude Include="CVariable.h" />
    <ClInclude Include="CPageVarialbles.h" />
    <ClInclude Include="CPageReport.h" />
    <ClInclude Include="CPageCollectionEvent.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="Servo.rc" />
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -25,6 +25,7 @@
#include "CHMPropertyDlg.h"
#include "CPageVarialbles.h"
#include "CPageReport.h"
#include "CPageCollectionEvent.h"
#ifdef _DEBUG
@@ -561,13 +562,17 @@
{
    CHMPropertyDlg dlg(_T("Variable|Rreport|Collection Event"), 658, 788);
    CPageReport* pPage1 = new CPageReport();
    pPage1->Create(IDD_PAGE_REPORT);
    dlg.addPage(pPage1, "Report");
    CPageCollectionEvent* pPage1 = new CPageCollectionEvent();
    pPage1->Create(IDD_PAGE_COLLECTION_EVENT);
    dlg.addPage(pPage1, "Event");
    CPageVarialbles* pPage2 = new CPageVarialbles();
    pPage2->Create(IDD_PAGE_VARIABLE);
    dlg.addPage(pPage2, "Variable");
    CPageReport* pPage2 = new CPageReport();
    pPage2->Create(IDD_PAGE_REPORT);
    dlg.addPage(pPage2, "Report");
    CPageVarialbles* pPage3 = new CPageVarialbles();
    pPage3->Create(IDD_PAGE_VARIABLE);
    dlg.addPage(pPage3, "Variable");
    dlg.DoModal();
}
SourceCode/Bond/Servo/resource.h
Binary files differ
SourceCode/Bond/x64/Debug/CollectionEventList.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
300,AccessMode_To_Manual,,(300)
301,AccessMode_To_Auto,,(301)
600,ControlStateChanged,,(600)
700,ProcessStateChanged,,(700)
10000,RecipeChanged,,(10000)
10030,CarrierArrived,,(10300)
10031,CarrierRemoved,,(10300)
10040,ReadyToLoad,,(10300)
10041,ReadyToUnLoad,,(10300)
10051,CarrierIDWaitingForHost,,(10051)
10052,CarrierIDVerificationOK,,(10052)
10053,CarrierIDVerificationNG,,(10052)
10061,SlotMapWaitingForHost,,(10061)
10062,SlotMapVerificationOK,,(10062)
10063,SlotMapVerificationNG,,(10062)
10071,GlassIDReadWaitingForHost,,(10071)
10072,GlassIDReadVerificationOK,,(10072)
10073,GlassIDReadVerificationNG,,(10072)
10080,CarrierStart,,(10080)
10081,CarrierCompleted,,(10080)
10082,CarrierStopped,,(10080)
20000,GlassSlotStart,,(20000)
20001,GlassSlotCompleted,,(20000)
30000,PrJobPooled,,(30000)
30001,PrJobAbort,,(30000)
30010,PrJobProcessing,,(30000)
30011,PrJobCompleted,,(30000)
30013,PrJobPaused,,(30000)
30014,PrJobResume,,(30000)
30020,PrJobDeleted,,(30000)
31000,CJobQueued,,(31000)
31001,CJobAbort,,(31000)
31010,CJobExecuting,,(31000)
31020,CJobCompleted,,(31000)
31021,CJobDeleted,,(31000)
31031,CJobPaused,,(31000)
31032,CJobResume,,(31000)
40000,E90_SPSM_NoState_To_NeedsProcessing,,(40000)
40001,E90_SPSM_InProcess_To_ProcessCompleted,,(40000)