From 2b87741f1a372c6da84d6ae3839ff2cf6297b71f Mon Sep 17 00:00:00 2001 From: chenluhua1980 <Chenluhua@qq.com> Date: 星期二, 10 二月 2026 14:27:31 +0800 Subject: [PATCH] 1.状态图格子坐标从配置文件中读取; --- SourceCode/Bond/BondEq/View/IOMonitoringDlg.h | 30 ++++++++++++++++++++++++------ 1 files changed, 24 insertions(+), 6 deletions(-) diff --git a/SourceCode/Bond/BondEq/View/IOMonitoringDlg.h b/SourceCode/Bond/BondEq/View/IOMonitoringDlg.h index 7b34501..5c04590 100644 --- a/SourceCode/Bond/BondEq/View/IOMonitoringDlg.h +++ b/SourceCode/Bond/BondEq/View/IOMonitoringDlg.h @@ -1,6 +1,8 @@ 锘�#pragma once #include "afxdialogex.h" #include "IOManager.h" +#include "BLLabel.h" +#include "CPLC.h" // CIOMonitoringDlg 瀵硅瘽妗� @@ -13,6 +15,7 @@ CIOMonitoringDlg(CWnd* pParent = nullptr); // 鏍囧噯鏋勯�犲嚱鏁� virtual ~CIOMonitoringDlg(); void SetIOManager(const std::string& machineName); // 璁剧疆 IOManager 鍜屾満鍣ㄥ悕 + void SetPLC(CPLC* pPLC); // 璁剧疆 PLC // 瀵硅瘽妗嗘暟鎹� #ifdef AFX_DESIGN_TIME @@ -25,13 +28,21 @@ 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, bool alignLeft = false); // 鍒涘缓闈欐�佹帶浠� - void DisplayCurrentPage(); // 鏄剧ず褰撳墠椤垫暟鎹� - void ClearDynamicControls(); // 娓呴櫎鍔ㄦ�佸垱寤虹殑鎺т欢 + void UpdatePageInfo(); // 鏇存柊鍒嗛〉淇℃伅 + void CreateDynamicControls(); // 鍔ㄦ�佸垱寤烘帶浠� + CWnd* CreateStaticControl(UINT id, int x, int y, int width, int height, const CString& text, bool hasBorder = false, TextAlign alignment = AlignLeft, std::function<void()> clickCallback = nullptr); // 鍒涘缓闈欐�佹帶浠� + CWnd* GetStaticControl(UINT id); // 鑾峰彇闈欐�佹帶浠� + CString& GetStaticControlAddrText(UINT id, CString& strAddr); // 鑾峰彇闈欐�佹帶浠跺湴鍧�鏂囨湰 + void DisplayCurrentPage(); // 鏄剧ず褰撳墠椤垫暟鎹� + void ClearDynamicControls(); // 娓呴櫎鍔ㄦ�佸垱寤虹殑鎺т欢 + bool ParsePLCAddress(const CString& address, MC::SOFT_COMPONENT& component, int& addr); // 瑙f瀽 PLC 鍦板潃 + bool GeneratePLCAddress(MC::SOFT_COMPONENT component, int addr, CString& address, bool bHexFormat = false); // 鐢熸垚 PLC 鍦板潃 + void ReadPLCData(MC::SOFT_COMPONENT softComponent, int startAddr, int endAddr, std::function<void(IMcChannel*, int, char*, unsigned int, int)> callback); // 璇诲彇 PLC 鏁版嵁 + void ReadPLCStates(); // 瀹氭椂鍣ㄨPLC + void UpdatePLCStatesToUI(); // 瀹氭椂鍣ㄦ洿鏂扮姸鎬佺殑鏂规硶 private: + CPLC* m_pPLC; int m_nInitialWidth; int m_nInitialHeight; int m_nCurrentPage; // 褰撳墠椤� @@ -42,10 +53,14 @@ std::map<int, CFont*> m_mapFonts; // 瀛椾綋鏄犲皠 std::map<int, CRect> m_mapCtrlLayouts; // 鎺т欢甯冨眬鏄犲皠 std::vector<IOData> m_displayData; // 褰撳墠鏄剧ず鐨勬暟鎹� + std::vector<BOOL> m_inputStates; // 杈撳叆鐘舵�� + std::vector<BOOL> m_outputStates; // 杈撳嚭鐘舵�� + std::vector<CString> m_inputPLCAddresses; // 瀛樺偍 1 鍒� PLC 鍦板潃 + std::vector<CString> m_outputPLCAddresses; // 瀛樺偍 4 鍒� PLC 鍦板潃 private: CStatic m_staticPageNum; - std::vector<CStatic*> m_staticControls; // 鍔ㄦ�佸垱寤虹殑闈欐�佹帶浠� + std::vector<CBLLabel*> m_staticControls; // 鍔ㄦ�佸垱寤虹殑闈欐�佹帶浠� protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 鏀寔 @@ -56,4 +71,7 @@ afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnBnClickedButtonPrevPage(); afx_msg void OnBnClickedButtonNextPage(); + afx_msg LRESULT OnIoClicked(WPARAM wParam, LPARAM lParam); + afx_msg void OnTimer(UINT_PTR nIDEvent); + afx_msg void OnClose(); }; -- Gitblit v1.9.3