LAPTOP-SNT8I5JK\Boounion
2025-04-26 410ea79955e2d115643a38f40e006f1aeaba897b
SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -5,6 +5,10 @@
#include "Servo.h"
#include "CPageGraph2.h"
#include "afxdialogex.h"
#include "CHMPropertyDlg.h"
#include "CEquipmentPage1.h"
#include "CEquipmentPage2.h"
#include "CPageCassetteCtrlCmd.h"
// CPageGraph2 对话框
@@ -54,11 +58,6 @@
      ASSERT(pPin1->pData);
      ASSERT(pPin2->pData);
      //int nRet = ((IPin*)pPin1->pData)->checkConnectPin((IPin*)pPin2->pData);
      //if (nRet >= 0) {
      //   return true;
      //}
      return false;
   };
   listener.onConnectPin = [](PIN* pPin1, PIN* pPin2) -> bool {
@@ -67,39 +66,180 @@
      ASSERT(pPin1->pData);
      ASSERT(pPin2->pData);
      //int nRet = ((IPin*)pPin1->pData)->connectPin((IPin*)pPin2->pData);
      //if (nRet >= 0) {
      //   return true;
      //}
      return false;
   };
   listener.onDisconnectPin = [](PIN* pPin) -> bool {
      ASSERT(pPin);
      ASSERT(pPin->pData);
      //int nRet = ((IPin*)pPin->pData)->disconnect();
      //if (nRet >= 0) {
      //   return true;
      //}
      return false;
   };
   listener.onDeleteEqItem = [&](EQITEM* pItem) -> bool {
      ASSERT(pItem);
      ASSERT(pItem->pData);
      return true;
      // return _filterManager.unload((CFilter*)pFilter->pData) >= 0;
      return false;
   };
   listener.onEqItemPosChanged = [&](EQITEM* pItem, int x, int y) -> void {
      ASSERT(pItem);
   };
   listener.onDblckEqItem = [&](EQITEM* pItem) -> bool {
      ASSERT(pItem);
      SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
      CHMPropertyDlg dlg(pEquipment->getName().c_str(), 600, 680);
      CEquipmentPage1* pPage1 = new CEquipmentPage1();
      pPage1->setEquipment(pEquipment);
      pPage1->Create(IDD_PAGE_EQUIPMENT1);
      dlg.addPage(pPage1, "test1");
      CEquipmentPage2* pPage2 = new CEquipmentPage2();
      pPage2->setEquipment(pEquipment);
      pPage2->Create(IDD_PAGE_EQUIPMENT2);
      dlg.addPage(pPage2, "Glass");
      if (pEquipment->getID() == EQ_ID_LOADPORT1
         || pEquipment->getID() == EQ_ID_LOADPORT2) {
         CPageCassetteCtrlCmd* pPage = new CPageCassetteCtrlCmd();
         pPage->setEquipment(pEquipment);
         pPage->Create(IDD_PAGE_CASSETTE_CTRL_CMD);
         dlg.addPage(pPage, "Cassette control command");
      }
      dlg.DoModal();
      return true;
   };
   listener.onRclickEqItem = [&](EQITEM* pItem) -> bool {
      ASSERT(pItem);
      CMenu menu, menuCommand;
      CMenu* pPopupMenu;
      menu.LoadMenu(IDR_MENU_EQSGRAPH_ITEM);
      pPopupMenu = menu.GetSubMenu(0);
      // 显示模式
      pPopupMenu->EnableMenuItem(ID_EQSGRAPHITEM_SMALL, MF_DISABLED | MF_GRAYED);
      pPopupMenu->EnableMenuItem(ID_EQSGRAPHITEM_NORMAL, MF_DISABLED | MF_GRAYED);
      pPopupMenu->EnableMenuItem(ID_EQSGRAPHITEM_LARGE, MF_DISABLED | MF_GRAYED);
      if (pItem->nShowType == ITEM_SMALL) {
         pPopupMenu->CheckMenuRadioItem(ID_EQSGRAPHITEM_SMALL, ID_EQSGRAPHITEM_LARGE, ID_EQSGRAPHITEM_SMALL, MF_CHECKED);
      }
      else if (pItem->nShowType == ITEM_LARGE) {
         pPopupMenu->CheckMenuRadioItem(ID_EQSGRAPHITEM_SMALL, ID_EQSGRAPHITEM_LARGE, ID_EQSGRAPHITEM_LARGE, MF_CHECKED);
      }
      else {
         pPopupMenu->CheckMenuRadioItem(ID_EQSGRAPHITEM_SMALL, ID_EQSGRAPHITEM_LARGE, ID_EQSGRAPHITEM_NORMAL, MF_CHECKED);
      }
      POINT pt;
      GetCursorPos(&pt);
      int nCmd = pPopupMenu->TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_TOPALIGN, pt.x, pt.y, this, NULL);
      if (nCmd == ID_EQSGRAPHITEM_SMALL) {
         m_pEqsGraphWnd->SetItemType(pItem, ITEM_SMALL);
      }
      else if (nCmd == ID_EQSGRAPHITEM_NORMAL) {
         m_pEqsGraphWnd->SetItemType(pItem, ITEM_NORMAL);
      }
      else if (nCmd == ID_EQSGRAPHITEM_LARGE) {
         m_pEqsGraphWnd->SetItemType(pItem, ITEM_LARGE);
      }
      // 测试
      else if (nCmd == ID_EQSGRAPHITEM_TEST1) {
         SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
         pEquipment->outputGlass(0);
      }
      else if (nCmd == ID_EQSGRAPHITEM_TEST2) {
         SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
         pEquipment->outputGlass(1);
      }
      else if (nCmd == ID_EQSGRAPHITEM_TEST3) {
         SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
         // 测试下发Cim Message
         /*
         if (pEquipment->getID() == EQ_ID_Bonder1
            || pEquipment->getID() == EQ_ID_Bonder2) {
            static int msgId = 0; msgId++;
            if (msgId % 2 == 0) {
               pEquipment->setCimMessage("Hello!", msgId, 1);
            }
            else {
               pEquipment->setCimMessage("ABC0123456789", msgId, 2);
            }
         }
         */
         // 测试清除Cim Message
         if (pEquipment->getID() == EQ_ID_Bonder1
            || pEquipment->getID() == EQ_ID_Bonder2) {
            static int msgId = 0; msgId++;
            if (msgId % 2 == 0) {
               pEquipment->clearCimMessage(msgId, 1);
            }
            else {
               pEquipment->clearCimMessage(msgId, 2);
            }
         }
         // 测试设置时间
         /*
         if (pEquipment->getID() == EQ_ID_Bonder1
            || pEquipment->getID() == EQ_ID_Bonder2) {
            CTime time = CTime::GetCurrentTime();
            pEquipment->setDateTime((short)time.GetYear(),
               (short)time.GetMonth(),
               (short)time.GetDay(),
               (short)time.GetHour(),
               (short)time.GetMinute(),
               (short)time.GetSecond());
         }
         */
         // 测试设置cim mode
         /*
         if (pEquipment->getID() == EQ_ID_Bonder1
            || pEquipment->getID() == EQ_ID_Bonder2) {
            static int ii = 0; ii++;
            pEquipment->setCimMode(ii % 2 == 0);
         }
         */
         /*
         if (pEquipment->getID() == EQ_ID_Bonder1
            || pEquipment->getID() == EQ_ID_Bonder2) {
            static int ii = 0; ii++;
            pEquipment->setEqMode((ii % 5) + 1);
         }
         */
         /*
         SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
         SERVO::CGlass* pGlass = pEquipment->getFrontGlass();
         if (pGlass != nullptr) {
            std::string strDescription;
            SERVO::CPath* pPath = pGlass->getPath();
            while (pPath != nullptr) {
               pPath->getDescription(strDescription);
               AfxMessageBox(strDescription.c_str());
               pPath = pPath->getNext();
            }
         }
         */
      }
      return true;
   };
   listener.onSelectEqItem = [&](EQITEM* pItem) -> bool {
      ASSERT(pItem);
      SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
      theApp.m_model.notifyPtr(RX_CODE_SELECT_EQUIPMENT, pEquipment);
      return true;
   };