From fec3ff7b0bb0a4e53c2f9ff26cd06659a0c8aff9 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 07 一月 2025 11:08:34 +0800
Subject: [PATCH] 1.工具条; 2.左侧PLC列表;

---
 SourceCode/Bond/BondEq/CProjectPageMain.cpp |  187 +++++++++++++++++++++++++++++-----------------
 1 files changed, 119 insertions(+), 68 deletions(-)

diff --git a/SourceCode/Bond/BondEq/CProjectPageMain.cpp b/SourceCode/Bond/BondEq/CProjectPageMain.cpp
index 9a0693c..f5986f8 100644
--- a/SourceCode/Bond/BondEq/CProjectPageMain.cpp
+++ b/SourceCode/Bond/BondEq/CProjectPageMain.cpp
@@ -22,15 +22,16 @@
 	m_crBkgnd = PROPAGE_BACKGROUND_COLOR;
 	m_hbrBkgnd = nullptr;
 	m_pObserver = nullptr;
-
-	nVelocityRatio = 0.0;
-	dTactTime = 0.0;
-	nDayShiftCapacity = 0;
-	nNightShiftCapacity = 0;
+	for (int i = 0; i < BTN_MAX; i++) {
+		m_pBlBtns[i] = new CBlButton();
+	}
 }
 
 CProjectPageMain::~CProjectPageMain()
 {
+	for (int i = 0; i < BTN_MAX; i++) {
+		delete m_pBlBtns[i];
+	}
 }
 
 void CProjectPageMain::SetPLC(CPLC* pPLC)
@@ -107,47 +108,6 @@
 	});
 }
 
-void CProjectPageMain::ReadPLCDataToUI()
-{
-	ASSERT(m_pPLC->isConnected());
-
-	// 鎬讳换鍔℃暟
-	int nPendingTasks = 5; 
-
-	auto createReadTask = [this, &nPendingTasks](MC::SOFT_COMPONENT type, int nAddr, auto onProcessData) {
-		return [this, &nPendingTasks, onProcessData](IMcChannel* pChannel, int nAddr, char* pData, unsigned int nDataSize, int nFlag) {
-			if (nDataSize == 2 && nFlag == 0 && ::IsWindow(m_hWnd)) {
-				onProcessData(CToolUnits::toInt16(&pData[0]));
-			}
-
-			// 浠诲姟瀹屾垚锛屽噺灏戣鏁�
-			if (--nPendingTasks == 0) {
-				PostMessage(ID_MSG_UPDATA_DATA_TO_UI);
-			}
-		};
-	};
-
-	m_pPLC->readData(MC::M, 1003, 2, createReadTask(MC::M, 1003, [this](int nValue) {
-		theApp.m_model.getBonder().setMute(nValue != 0);
-	}));
-
-	m_pPLC->readData(MC::D, 530, 2, createReadTask(MC::D, 530, [this](int nValue) {
-		nVelocityRatio = static_cast<unsigned int>(nValue);
-	}));
-
-	m_pPLC->readData(MC::ZR, 1500, 2, createReadTask(MC::ZR, 1500, [this](int nValue) {
-		dTactTime = nValue;
-	}));
-
-	m_pPLC->readData(MC::ZR, 2012, 2, createReadTask(MC::ZR, 2012, [this](int nValue) {
-		nDayShiftCapacity = nValue;
-	}));
-
-	m_pPLC->readData(MC::ZR, 2027, 2, createReadTask(MC::ZR, 2027, [this](int nValue) {
-		nNightShiftCapacity = nValue;
-	}));
-}
-
 BEGIN_MESSAGE_MAP(CProjectPageMain, CDialogEx)
 	ON_WM_CTLCOLOR()
 	ON_WM_DESTROY()
@@ -178,9 +138,81 @@
 			// onNext
 			pAny->addRef();
 			int code = pAny->getCode();
-			//if (true) {
-
-			//}
+			if (RX_CODE_BONDER_BEEP == code) {
+				bool bMute = theApp.m_model.getBonder().isMute();
+				GetDlgItem(IDC_BUTTON_SOUND_OFF)->SetWindowText(bMute ? _T("闈欓煶") : _T("澹伴煶"));
+			}
+			else if (RX_CODE_BONDER_VELOCITY_RATIO == code) {
+				int nVelocityRatio;
+				if (pAny->getIntValue("exCode", nVelocityRatio)) {
+					CString strText;
+					strText.Format(_T("%d %s"), nVelocityRatio, _T("%"));
+					GetDlgItem(IDC_EDIT_VELOCITY_RATIO)->SetWindowText(strText);
+				}
+			}
+			else if (RX_CODE_BONDER_TACT_TIME == code) {
+				double dTactTime;
+				if (pAny->getDoubleValue("value", dTactTime)) {
+					CString strText;
+					strText.Format(_T("%.2f"), dTactTime);
+					GetDlgItem(IDC_EDIT_TACT_TIME)->SetWindowText(strText);
+				}
+			}
+			else if (RX_CODE_BONDER_DAY_SHIFT_CAPACTITY == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetDlgItemInt(IDC_EDIT_DAY_SHIFT_CAPACITY, capactity);
+				}
+			}
+			else if (RX_CODE_BONDER_NIGHT_SHIFT_CAPACTITY == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetDlgItemInt(IDC_EDIT_NIGHT_SHIFT_CAPACITY, capactity);
+				}
+			}
+			// 涓存椂娣诲姞
+			else if (RX_CODE_BONDER_STATES_BTN0 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_RUN], capactity == 0);
+				}
+			}
+			else if (RX_CODE_BONDER_STATES_BTN1 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_AUTO], capactity == 0);
+				}
+			}
+			else if (RX_CODE_BONDER_STATES_BTN2 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_PUASE], capactity == 0);
+				}
+			}
+			else if (RX_CODE_BONDER_STATES_BTN3 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_MANUAL], capactity == 0);
+				}
+			}
+			else if (RX_CODE_BONDER_STATES_BTN4 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_MUTE], capactity == 0);
+				}
+			}
+			else if (RX_CODE_BONDER_STATES_BTN5 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_OPR], capactity == 0);
+				}
+			}
+			else if (RX_CODE_BONDER_STATES_BTN6 == code) {
+				int capactity;
+				if (pAny->getIntValue("exCode", capactity)) {
+					SetButtonBackgroundColors(m_pBlBtns[BTN_STOP], capactity == 0);
+				}
+			}
 			pAny->release();
 		}, [&]() -> void {
 			// onComplete
@@ -194,12 +226,49 @@
 	}
 }
 
+void CProjectPageMain::SetButtonBackgroundColors(CBlButton* btn, bool bOff)
+{
+	if (bOff) {
+		btn->SetBkgndColor(BS_NORMAL, BTN_SOUND_OFF_BKGND_NORMAL);
+		btn->SetBkgndColor(BS_HOVER, BTN_SOUND_OFF_BKGND_HOVER);
+		btn->SetBkgndColor(BS_PRESS, BTN_SOUND_OFF_BKGND_PRESS);
+		btn->Invalidate();
+	}
+	else {
+		btn->SetBkgndColor(BS_NORMAL, BTN_SOUND_ON_BKGND_NORMAL);
+		btn->SetBkgndColor(BS_HOVER, BTN_SOUND_ON_BKGND_HOVER);
+		btn->SetBkgndColor(BS_PRESS, BTN_SOUND_ON_BKGND_PRESS);
+		btn->Invalidate();
+	}
+}
+
 BOOL CProjectPageMain::OnInitDialog()
 {
 	CDialogEx::OnInitDialog();
 
 	InitRxWindows();
-	SetTimer(TIMER_READ_PLC_DATA, 500, nullptr);
+
+	// 鎸夐挳鍒濆鍖�
+	m_pBlBtns[BTN_RUN]->SubclassDlgItem(IDC_BUTTON_ACTIVATE, this);
+	m_pBlBtns[BTN_AUTO]->SubclassDlgItem(IDC_BUTTON_AUTO, this);
+	m_pBlBtns[BTN_PUASE]->SubclassDlgItem(IDC_BUTTON_PUASE, this);
+	m_pBlBtns[BTN_MANUAL]->SubclassDlgItem(IDC_BUTTON_MANUAL_OPERATION, this);
+	m_pBlBtns[BTN_MUTE]->SubclassDlgItem(IDC_BUTTON_SOUND_OFF, this);
+	m_pBlBtns[BTN_OPR]->SubclassDlgItem(IDC_BUTTON_RESETTING, this);
+	m_pBlBtns[BTN_STOP]->SubclassDlgItem(IDC_BUTTON_STOP, this);
+
+	for (int i = 0; i < BTN_MAX; i++) {
+		m_pBlBtns[i]->SetFrameColor(BS_NORMAL, BTN_SOUND_OFF_FRAME_NORMAL);
+		m_pBlBtns[i]->SetFrameColor(BS_HOVER, BTN_SOUND_OFF_FRAME_HOVER);
+		m_pBlBtns[i]->SetFrameColor(BS_PRESS, BTN_SOUND_OFF_FRAME_PRESS);
+	}
+
+	// 鍒濆鍊�
+	SetDlgItemText(IDC_EDIT_VELOCITY_RATIO, _T("0 %"));
+	SetDlgItemText(IDC_EDIT_TACT_TIME, _T("0.00"));
+	SetDlgItemText(IDC_EDIT_DAY_SHIFT_CAPACITY, _T("0"));
+	SetDlgItemText(IDC_EDIT_NIGHT_SHIFT_CAPACITY, _T("0"));
+
 	return TRUE;  // return TRUE unless you set the focus to a control
 	// 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
 }
@@ -242,14 +311,6 @@
 
 void CProjectPageMain::OnTimer(UINT_PTR nIDEvent)
 {
-	if (TIMER_READ_PLC_DATA == nIDEvent) {
-		ASSERT(m_pPLC);
-
-		if (m_pPLC != nullptr && m_pPLC->isConnected()) {
-			ReadPLCDataToUI();
-		}
-	}
-
 	CDialogEx::OnTimer(nIDEvent);
 }
 
@@ -306,15 +367,5 @@
 
 LRESULT CProjectPageMain::OnUpdateDataToUI(WPARAM wParam, LPARAM lParam)
 {
-	CString strText;
-	strText.Format(_T("%d %s"), nVelocityRatio, _T("%"));
-	GetDlgItem(IDC_EDIT_VELOCITY_RATIO)->SetWindowText(strText);
-
-	strText.Format(_T("%.2f"), dTactTime);
-	GetDlgItem(IDC_EDIT_TACT_TIME)->SetWindowText(strText);
-
-	SetDlgItemInt(IDC_EDIT_DAY_SHIFT_CAPACITY, nDayShiftCapacity);
-	SetDlgItemInt(IDC_EDIT_NIGHT_SHIFT_CAPACITY, nNightShiftCapacity);
-
 	return 0;
 }

--
Gitblit v1.9.3