From 50a42e5d72e2f8cf92ff9b2273e0442977dbcefd Mon Sep 17 00:00:00 2001
From: LAPTOP-T815PCOQ\25526 <mr.liuyang@126.com>
Date: 星期三, 18 十二月 2024 18:28:02 +0800
Subject: [PATCH] 1. 对话框基类添加动态控件管理 2. 对话框基类主题切换功能

---
 SourceCode/Bond/BondEq/CBonder.cpp |  177 ++++++++++++++++------------------------------------------
 1 files changed, 49 insertions(+), 128 deletions(-)

diff --git a/SourceCode/Bond/BondEq/CBonder.cpp b/SourceCode/Bond/BondEq/CBonder.cpp
index 6a8cc5b..c4196dd 100644
--- a/SourceCode/Bond/BondEq/CBonder.cpp
+++ b/SourceCode/Bond/BondEq/CBonder.cpp
@@ -69,6 +69,11 @@
 	return m_components;
 }
 
+CPLC* CBonder::getPLC(const char* pszName)
+{
+	return (CPLC*)GetComponent("PLC(1)");
+}
+
 int CBonder::save()
 {
 	CFile file;
@@ -121,20 +126,12 @@
 {
 	// 机器状态
 	CEQStateMonitor* pEQStateMonitor1 = new CEQStateMonitor();
-	pEQStateMonitor1->setName("机器状态(A单元)");
-	pEQStateMonitor1->setDescription("A单机器状态");
+	pEQStateMonitor1->setName("机器状态");
+	pEQStateMonitor1->setDescription("机器状态");
 	pEQStateMonitor1->setIndex(0);
 	pEQStateMonitor1->setBeginAddr(4463 - 4400);
 	AddComponent(pEQStateMonitor1);
 	pEQStateMonitor1->init();
-
-	CEQStateMonitor* pEQStateMonitor2 = new CEQStateMonitor();
-	pEQStateMonitor2->setName("机器状态(B单元)");
-	pEQStateMonitor2->setDescription("B单机器状态");
-	pEQStateMonitor2->setIndex(1);
-	pEQStateMonitor2->setBeginAddr(4563 - 4500);
-	AddComponent(pEQStateMonitor2);
-	pEQStateMonitor2->init();
 
 
 	// 初始化各种组件
@@ -178,11 +175,18 @@
 				c->onData(id, &m_pPlcData[400], 184);
 			}
 		}
+		else if (id == MONITOR_ID_ALARM) {
+			for (auto c : m_components) {
+				c->onData(id, &m_pPlcData[600], 260);
+			}
+		}
 	};
 	pPlc->setListener(listener);
 	pPlc->addMonitor(1, 4400, 4499, MC::SOFT_COMPONENT::D, m_pPlcData);
 	pPlc->addMonitor(2, 4500, 4599, MC::SOFT_COMPONENT::D, &m_pPlcData[200]);
 	pPlc->addMonitor(3, 4700, 4791, MC::SOFT_COMPONENT::D, &m_pPlcData[400]);
+	pPlc->addMonitor(MONITOR_ID_ALARM, 10001, 10064, MC::SOFT_COMPONENT::M, &m_pPlcData[600]);
+	
 	pPlc->setName("PLC(1)");
 	pPlc->setDescription("PLC");
 	pPlc->setIndex(0);
@@ -190,69 +194,34 @@
 
 
 	CDataMonitor1* pDataMonitor1 = new CDataMonitor1();
-	pDataMonitor1->setName("数据监控(A单元)");
-	pDataMonitor1->setDescription("A单元真空、压力和温度数据");
+	pDataMonitor1->setName("数据监控");
+	pDataMonitor1->setDescription("真空、压力和温度数据");
 	pDataMonitor1->setIndex(0);
 	pDataMonitor1->setResponseAddr(4425);
 	pDataMonitor1->enableAutoSendData(bAutoSendData);
 	AddComponent(pDataMonitor1);
 	pDataMonitor1->init();
 	
-	CDataMonitor1* pDataMonitor2 = new CDataMonitor1();
-	pDataMonitor2->setName("数据监控(B单元)");
-	pDataMonitor2->setDescription("B单元真空、压力和温度数据");
-	pDataMonitor2->setIndex(1);
-	pDataMonitor2->setResponseAddr(4525);
-	pDataMonitor2->enableAutoSendData(bAutoSendData);
-	AddComponent(pDataMonitor2);
-	pDataMonitor2->init();
-	
-
 
 	CString strAlarmFile;
 	strAlarmFile.Format(_T("%s\\AlarmList.txt"), m_strWorkDir.c_str());
 	CAlarmMonitor* pAlarmMonitor1 = new CAlarmMonitor();
-	pAlarmMonitor1->setName("警告信息(A单元)");
-	pAlarmMonitor1->setDescription("警告信息监控(A单元)");
-	pAlarmMonitor1->setBeginAddr(4461 - 4400);
+	pAlarmMonitor1->setName("警告信息");
+	pAlarmMonitor1->setDescription("警告信息监控");
 	pAlarmMonitor1->setIndex(0);
 	pAlarmMonitor1->readAlarmListFromFile((LPTSTR)(LPCTSTR)strAlarmFile);
 	AddComponent(pAlarmMonitor1);
 	pAlarmMonitor1->init();
 
-	CAlarmMonitor* pAlarmMonitor2 = new CAlarmMonitor();
-	pAlarmMonitor2->setName("警告信息(B单元)");
-	pAlarmMonitor2->setDescription("警告信息监控(B单元)");
-	pAlarmMonitor2->setBeginAddr(4561 - 4500);
-	pAlarmMonitor2->setIndex(1);
-	pAlarmMonitor2->readAlarmListFromFile((LPTSTR)(LPCTSTR)strAlarmFile);
-	AddComponent(pAlarmMonitor2);
-	pAlarmMonitor2->init();
 
 	// LoadMonitor
 	CLoadMonitor* pLoadMonitor1 = new CLoadMonitor();
-	pLoadMonitor1->setName("上下料(A单元)");
-	pLoadMonitor1->setDescription("上下料信号监控(A单元)");
+	pLoadMonitor1->setName("上下料");
+	pLoadMonitor1->setDescription("上下料信号监控");
 	pLoadMonitor1->setBeginAddr(4700);
 	pLoadMonitor1->setIndex(0);
 	AddComponent(pLoadMonitor1);
 	pLoadMonitor1->init();
-
-	CLoadMonitor* pLoadMonitor2 = new CLoadMonitor();
-	pLoadMonitor2->setName("上下料(B单元)");
-	pLoadMonitor2->setDescription("上下料信号监控(B单元)");
-	pLoadMonitor2->setBeginAddr(4700);
-	pLoadMonitor2->setIndex(1);
-	AddComponent(pLoadMonitor2);
-	pLoadMonitor2->init();
-
-	CLoadMonitor* pLoadMonitor3 = new CLoadMonitor();
-	pLoadMonitor3->setName("上下料(冷却箱)");
-	pLoadMonitor3->setDescription("上下料信号监控(冷却箱)");
-	pLoadMonitor3->setBeginAddr(4700);
-	pLoadMonitor3->setIndex(2);
-	AddComponent(pLoadMonitor3);
-	pLoadMonitor3->init();
 
 
 	// BEQ与EFEM通讯
@@ -287,10 +256,7 @@
 	};
 	m_pEquipment->setEquipmentListener(equListener);
 	m_pEquipment->setVersion(m_strSoftRev.c_str());
-	m_pEquipment->addUnit(UNITA, 5);
-	m_pEquipment->addUnit(UNITB, 5);
-	BEQ::IUnit* pUnitC = m_pEquipment->addUnit(UNITC, 1);
-	pUnitC->setLayerCount(4);
+	m_pEquipment->addUnit(UNIT1, 5);
 	m_pEquipment->runOnServerMode(8192);
 
 
@@ -336,7 +302,7 @@
 	}
 
 	if (BC_CODE_RUN_RECIPE_RESULT == code) {
-		int errorCode = (int)pIntent->getContext();
+		int errorCode = (int)(__int64)pIntent->getContext();
 		m_pEquipment->repLoadReadyComplete(errorCode);
 	}
 }
@@ -463,6 +429,27 @@
 	if (iii % 5 == 0) {
 		save();
 	}
+
+
+	// 测试
+	BOOL bTest = FALSE;
+	if (bTest) {
+		static int xx = 0;
+		xx++;
+		memset(&m_pPlcData[600], 0, 260);
+		if (xx == 12) {
+			m_pPlcData[600] = 0x01;
+			for (auto c : m_components) {
+				c->onData(MONITOR_ID_ALARM, &m_pPlcData[600], 260);
+			}
+		}
+		else if (xx == 20) {
+			m_pPlcData[600] = 0x00;
+			for (auto c : m_components) {
+				c->onData(MONITOR_ID_ALARM, &m_pPlcData[600], 260);
+			}
+		}
+	}
 }
 
 void CBonder::AddComponent(CComponent* pComponent)
@@ -572,11 +559,7 @@
 BEQ::IUnit* CBonder::getUnit(int index)
 {
 	if (index == 0)
-		return m_pEquipment->getUnit(UNITA);
-	if (index == 1)
-		return m_pEquipment->getUnit(UNITB);
-	if (index == 2)
-		return m_pEquipment->getUnit(UNITC);
+		return m_pEquipment->getUnit(UNIT1);
 
 	return nullptr;
 }
@@ -793,24 +776,14 @@
 	}
 
 
-	// 单元C为水冷塔,不需要写
-	if (strcmp(szUnitName, UNITC) == 0) {
-		return 0;
-	}
-
-
 	// 如果是单元A或单元B, 写物料ID和配方ID到PLC
 	CLoadMonitor* pLoadMonitor = nullptr;
-	if (strcmp(szUnitName, UNITA) == 0) {
+	if (strcmp(szUnitName, UNIT1) == 0) {
 
-		pLoadMonitor = (CLoadMonitor*)GetComponent("上下料(A单元)");
+		pLoadMonitor = (CLoadMonitor*)GetComponent("上下料");
 		return pLoadMonitor->loadReady(pszMaterielId, pszRecipeId);
 	}
-	else if (strcmp(szUnitName, UNITB) == 0) {
 
-		pLoadMonitor = (CLoadMonitor*)GetComponent("上下料(B单元)");
-		return pLoadMonitor->loadReady(pszMaterielId, pszRecipeId);
-	}
 
 	return -2;
 }
@@ -826,7 +799,7 @@
 	if (!pPLC->isConnected()) {
 		return -1;
 	}
-	if (layer <= 0 || layer > 4) {
+	if (layer <= 0 || layer > 1) {
 		return -2;
 	}
 
@@ -869,36 +842,10 @@
 
 	// 写
 	int index, nFlagAddr;
-	if (strcmp(szUnitName, UNITA) == 0) {
+	if (strcmp(szUnitName, UNIT1) == 0) {
 		index = 0;
 		nFlagAddr = 4710;
 		szBuffer[index * 2] |= 0x02;
-	}
-	else if (strcmp(szUnitName, UNITB) == 0) {
-		index = 1;
-		nFlagAddr = 4711;
-		szBuffer[index * 2] |= 0x02;
-	}
-	else if (strcmp(szUnitName, UNITC) == 0) {
-		index = 2;
-		nFlagAddr = 4712;
-		switch (layer)
-		{
-		case 1:
-			szBuffer[index * 2] |= 0x01;
-			break;
-		case 2:
-			szBuffer[index * 2] |= 0x02;
-			break;
-		case 3:
-			szBuffer[index * 2] |= 0x04;
-			break;
-		case 4:
-			szBuffer[index * 2] |= 0x08;
-			break;
-		default:
-			break;
-		}
 	}
 
 
@@ -979,36 +926,10 @@
 
 	// 写
 	int index, nFlagAddr;
-	if (strcmp(szUnitName, UNITA) == 0) {
+	if (strcmp(szUnitName, UNIT1) == 0) {
 		index = 0;
 		nFlagAddr = 4710;
 		szBuffer[index * 2 + 1] |= 0x02;
-	}
-	else if (strcmp(szUnitName, UNITB) == 0) {
-		index = 1;
-		nFlagAddr = 4711;
-		szBuffer[index * 2 + 1] |= 0x02;
-	}
-	else if (strcmp(szUnitName, UNITC) == 0) {
-		index = 2;
-		nFlagAddr = 4712;
-		switch (layer)
-		{
-		case 1:
-			szBuffer[index * 2] |= 0x20;
-			break;
-		case 2:
-			szBuffer[index * 2] |= 0x40;
-			break;
-		case 3:
-			szBuffer[index * 2] |= 0x80;
-			break;
-		case 4:
-			szBuffer[index * 2 + 1] |= 0x01;
-			break;
-		default:
-			break;
-		}
 	}
 
 

--
Gitblit v1.9.3