| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | #include "afxdialogex.h" |
| | | #include "IOManager.h" |
| | | #include "BLLabel.h" |
| | | #include "CPLC.h" |
| | | |
| | | |
| | | // CIOMonitoringDlg å¯¹è¯æ¡ |
| | | |
| | | class CIOMonitoringDlg : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CIOMonitoringDlg) |
| | | |
| | | public: |
| | | CIOMonitoringDlg(CWnd* pParent = nullptr); // æ åæé 彿° |
| | | virtual ~CIOMonitoringDlg(); |
| | | void SetIOManager(const std::string& machineName); // 设置 IOManager åæºå¨å |
| | | void SetPLC(CPLC* pPLC); // 设置 PLC |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | | #ifdef AFX_DESIGN_TIME |
| | | enum { IDD = IDD_DIALOG_IO_MONITORING }; |
| | | #endif |
| | | |
| | | private: |
| | | CFont* GetOrCreateFont(int nFontSize); // è·åæå建åä½ |
| | | void SetDefaultFont(); // 设置é»è®¤åä½ |
| | | void AdjustControls(float dScaleX, float dScaleY); // è°æ´æ§ä»¶å¤§å° |
| | | void AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight); // è°æ´æ§ä»¶åä½å¤§å° |
| | | |
| | | void UpdatePageInfo(); // æ´æ°åé¡µä¿¡æ¯ |
| | | void CreateDynamicControls(); // 卿å建æ§ä»¶ |
| | | void CreateStaticControl(int x, int y, int width, int height, const CString& text, bool hasBorder = false, TextAlign alignment = AlignLeft, std::function<void()> clickCallback = nullptr); // åå»ºéææ§ä»¶ |
| | | void DisplayCurrentPage(); // æ¾ç¤ºå½åé¡µæ°æ® |
| | | void ClearDynamicControls(); // æ¸
é¤å¨æåå»ºçæ§ä»¶ |
| | | bool ParsePLCAddress(const CString& address, MC::SOFT_COMPONENT& component, int& addr); // è§£æ PLC å°å |
| | | void UpdatePLCStates(); // 宿¶å¨æ´æ°ç¶æçæ¹æ³ |
| | | |
| | | private: |
| | | CPLC* m_pPLC; |
| | | int m_nInitialWidth; |
| | | int m_nInitialHeight; |
| | | int m_nCurrentPage; // å½å页 |
| | | int m_nTotalPages; // æ»é¡µæ° |
| | | int m_nRowsPerPage; // æ¯é¡µæ¾ç¤ºçè¡æ° |
| | | int m_nCols; // æ¯è¡çæ§ä»¶ç»æ° |
| | | std::string m_machineName; // å½åæºå¨å |
| | | std::map<int, CFont*> m_mapFonts; // å使 å° |
| | | std::map<int, CRect> m_mapCtrlLayouts; // æ§ä»¶å¸å±æ å° |
| | | std::vector<IOData> m_displayData; // å½åæ¾ç¤ºçæ°æ® |
| | | std::vector<CString> m_inputPLCAddresses; // åå¨ 1 å PLC å°å |
| | | std::vector<CString> m_outputPLCAddresses; // åå¨ 4 å PLC å°å |
| | | |
| | | private: |
| | | CStatic m_staticPageNum; |
| | | std::vector<CBLLabel*> m_staticControls; // 卿å建çéææ§ä»¶ |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | | virtual BOOL OnInitDialog(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnBnClickedButtonPrevPage(); |
| | | afx_msg void OnBnClickedButtonNextPage(); |
| | | afx_msg void OnTimer(UINT_PTR nIDEvent); |
| | | afx_msg void OnClose(); |
| | | }; |