chenluhua1980
2026-01-23 08fc60deca0fa2a0658a676d9dd76e0e69436312
SourceCode/Bond/Servo/ServoDlg.h
@@ -1,67 +1,96 @@
// ServoDlg.h : 头文件

// ServoDlg.h : 头文件
//
#pragma once
#include "ServoGraph.h"
#include <vector>
#include <unordered_set>
#include "BlButton.h"
#include "LogDlg.h"
#include "PageLog.h"
#include "PageAlarm.h"
#include "PageTransferLog.h"
#include "PageRecipe.h"
#include "TerminalDisplayDlg.h"
#include "CPanelMaster.h"
#include "CPanelEquipment.h"
#include "CPanelAttributes.h"
#include "CPanelProduction.h"
#include "CPageGraph1.h"
#include "CPageGraph2.h"
#include "HmTab.h"
#include "TopToolbar.h"
#include "CMyStatusbar.h"
#include "CRobotTaskDlg.h"
#include "CPageGlassList.h"
#include "CPageVarialbles.h"
#include "CPageDataVarialbles.h"
#include "AlarmPopupDlg.h"
#include "AlarmManager.h"
enum DeviceStatus {
   Online,       // 在线
   Offline,      // 离线
};
// CServoDlg 对话框
// CServoDlg 对话框
class CServoDlg : public CDialogEx
{
// 构造
// 构造
public:
   CServoDlg(CWnd* pParent = NULL);   // 标准构造函数
   CServoDlg(CWnd* pParent = NULL);   // 标准构造函数
public:
   void ShowTerminalText(const char* pszText, unsigned int duration = -1);
   void AckAlarm(int alarmId);
private:
   void InitRxWindows();
   void RefreshAlarmBadge();
   void MarkAlarmsRead();
   void RaiseTestAlarm();
   void ClearTestAlarm();
   void Resize();
   void UpdateLogBtn();
   void UpdateRobotPosition(float percentage);
   void RotateRobot(float angleInDegrees);
   void UpdateDeviceStatus(int id, DeviceStatus status);
   void SetLeftPanelType(int type, bool resize = true);
   void ShowChildPage(int index);
   void UpdateLoginStatus();
   CString& GetRuntimeFormatText(CString& strText, const char* pszSuffix);
private:
   IObserver* m_pObserver;
   BOOL m_bShowLogWnd;
   CLogDlg* m_pLogDlg;
   CTerminalDisplayDlg* m_pTerminalDisplayDlg;
   CRobotTaskDlg* m_pRobotTaskDlg;
   CPageGraph1* m_pPageGraph1;
   CPageGraph2* m_pPageGraph2;
   CPageGlassList* m_pPageGlassList;
   CPageRecipe* m_pPageRecipe;
   CPageAlarm*    m_pPageAlarm;
   CPageLog*    m_pPageLog;
   CPageTransferLog* m_pPageTransferLog;
   CAlarmPopupDlg* m_pAlarmPopupDlg;
   CHmTab* m_pTab;
   std::vector<AlarmData> m_unreadAlarms;
   std::unordered_set<int> m_ackAlarms;
// 对话框数据
// 对话框数据
#ifdef AFX_DESIGN_TIME
   enum { IDD = IDD_SERVO_DIALOG };
#endif
   protected:
   virtual void DoDataExchange(CDataExchange* pDX);   // DDX/DDV 支持
   virtual void DoDataExchange(CDataExchange* pDX);   // DDX/DDV 支持
private:
   BOOL m_bIsRobotMoving;
// 实现
// 实现
protected:
   HICON m_hIcon;
   CServoGraph* m_pGraph;
   COLORREF m_crBkgnd;
   HBRUSH m_hbrBkgnd;
   CBlButton m_btnLog;
   int m_nLeftPanelType; // 1: CPanelMaster, 2: CPanelProduction
   CTopToolbar* m_pTopToolbar;
   CPanelMaster* m_pPanelMaster;
   CPanelProduction* m_pPanelProduction;
   CPanelEquipment* m_pPanelEquipment;
   CPanelAttributes* m_pPanelAttributes;
   CMyStatusbar* m_pMyStatusbar;
   // 生成的消息映射函数
   // 生成的消息映射函数
   virtual BOOL OnInitDialog();
   afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
   afx_msg void OnPaint();
@@ -72,10 +101,8 @@
   afx_msg void OnBnClickedCancel();
   afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
   afx_msg void OnDestroy();
   afx_msg void OnBnClickedButtonLog();
   afx_msg void OnSize(UINT nType, int cx, int cy);
   afx_msg void OnClose();
   afx_msg LRESULT OnLogDlgHide(WPARAM wParam, LPARAM lParam);
   afx_msg void OnMoving(UINT fwSide, LPRECT pRect);
   afx_msg void OnMove(int x, int y);
   afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
@@ -83,11 +110,33 @@
   afx_msg void OnUpdateMenuFileSettings(CCmdUI* pCmdUI);
   afx_msg void OnMenuFileSecsTest();
   afx_msg void OnUpdateMenuFileSecsTest(CCmdUI* pCmdUI);
   afx_msg void OnMenuWndLog();
   afx_msg void OnUpdateMenuWndLog(CCmdUI* pCmdUI);
   afx_msg void OnMenuFileExit();
   afx_msg void OnUpdateMenuFileExit(CCmdUI* pCmdUI);
   afx_msg void OnMenuProjectVarialbleList();
   afx_msg void OnUpdateMenuProjectVarialbleList(CCmdUI* pCmdUI);
   afx_msg void OnMenuTestAlarmOn();
   afx_msg void OnUpdateMenuTestAlarmOn(CCmdUI* pCmdUI);
   afx_msg void OnMenuTestAlarmOff();
   afx_msg void OnUpdateMenuTestAlarmOff(CCmdUI* pCmdUI);
   afx_msg void OnMenuTestMessageSet();
   afx_msg void OnUpdateMenuTestMessageSet(CCmdUI* pCmdUI);
   afx_msg void OnMenuTestMessageClear();
   afx_msg void OnUpdateMenuTestMessageClear(CCmdUI* pCmdUI);
   afx_msg void OnMenuToolsClientList();
   afx_msg void OnUpdateMenuToolsClientList(CCmdUI* pCmdUI);
   afx_msg void OnMenuToolsCurveEmptyMode();
   afx_msg void OnUpdateMenuToolsCurveEmptyMode(CCmdUI* pCmdUI);
   afx_msg void OnMenuToolsCurveProductionMode();
   afx_msg void OnUpdateMenuToolsCurveProductionMode(CCmdUI* pCmdUI);
   afx_msg void OnMenuWndTestPanel();
   afx_msg void OnUpdateMenuWndTestPanel(CCmdUI* pCmdUI);
   afx_msg void OnMenuWndProPanel();
   afx_msg void OnUpdateMenuWndProPanel(CCmdUI* pCmdUI);
   afx_msg void OnMenuHelpAbout();
   afx_msg void OnTimer(UINT_PTR nIDEvent);
   afx_msg BOOL OnEraseBkgnd(CDC* pDC);
   afx_msg LRESULT OnPanelResize(WPARAM wParam, LPARAM lParam);
   afx_msg void OnTabSelChanged(NMHDR* nmhdr, LRESULT* result);
   LRESULT OnToolbarBtnClicked(WPARAM wParam, LPARAM lParam);
   LRESULT OnStatusbarBtnClicked(WPARAM wParam, LPARAM lParam);
   virtual BOOL PreTranslateMessage(MSG* pMsg);
};