From d06ab39efafbcb2a7b1ec4cb83e18fa3485789a9 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期六, 29 三月 2025 08:55:56 +0800
Subject: [PATCH] 1.修改两个函数名称;
---
SourceCode/Bond/Servo/CMaster.cpp | 311 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 311 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 8c4f87d..ba4be00 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -14,6 +14,7 @@
CMaster::CMaster()
{
m_listener = {nullptr, nullptr, nullptr};
+ m_bDataModify = FALSE;
}
CMaster::~CMaster()
@@ -85,6 +86,10 @@
addBakeCooling(listener);
connectEquipments();
+
+ // 读缓存数据
+ readCache();
+
// 定时器
g_pMaster = this;
@@ -101,6 +106,8 @@
for (auto item : m_listEquipment) {
item->term();
}
+ saveCache();
+
return 0;
}
@@ -120,6 +127,10 @@
m_listener.onEqCimStateChanged(this, p, bOn);
}
};
+ listener.onDataChanged = [&](void* pEquipment, int code) -> void {
+ m_bDataModify = TRUE;
+ };
+
pEquipment->setListener(listener);
pEquipment->setCcLink(&m_cclink);
m_listEquipment.push_back(pEquipment);
@@ -367,6 +378,230 @@
}
}
+ // Port1
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d1f);
+ pStep->setName(STEP_EQ_PORT1_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x80);
+ if (pEquipment->addStep(0x3e0, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d20);
+ pStep->setName(STEP_EQ_PORT1_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x88);
+ if (pEquipment->addStep(0x3e8, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d21);
+ pStep->setName(STEP_EQ_PORT1_CASSETTE_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x90);
+ if (pEquipment->addStep(0x3f0, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d23);
+ pStep->setName(STEP_EQ_PORT1_TRANSFER_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x98);
+ if (pEquipment->addStep(0x3f8, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d24);
+ pStep->setName(STEP_EQ_PORT1_ENABLE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xa0);
+ if (pEquipment->addStep(0x400, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d25);
+ pStep->setName(STEP_EQ_PORT1_TYPE_ATUO);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xa8);
+ if (pEquipment->addStep(0x408, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ // Port2
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d2f);
+ pStep->setName(STEP_EQ_PORT2_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x81);
+ if (pEquipment->addStep(0x3e1, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d30);
+ pStep->setName(STEP_EQ_PORT2_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x89);
+ if (pEquipment->addStep(0x3e9, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d31);
+ pStep->setName(STEP_EQ_PORT2_CASSETTE_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x91);
+ if (pEquipment->addStep(0x3f1, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d33);
+ pStep->setName(STEP_EQ_PORT2_TRANSFER_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x99);
+ if (pEquipment->addStep(0x3f9, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d34);
+ pStep->setName(STEP_EQ_PORT2_ENABLE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xa1);
+ if (pEquipment->addStep(0x401, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d35);
+ pStep->setName(STEP_EQ_PORT2_TYPE_ATUO);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xa9);
+ if (pEquipment->addStep(0x409, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ // Port3
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d3f);
+ pStep->setName(STEP_EQ_PORT3_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x82);
+ if (pEquipment->addStep(0x3e2, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d40);
+ pStep->setName(STEP_EQ_PORT3_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x8a);
+ if (pEquipment->addStep(0x3ea, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d41);
+ pStep->setName(STEP_EQ_PORT3_CASSETTE_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x92);
+ if (pEquipment->addStep(0x3f2, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d43);
+ pStep->setName(STEP_EQ_PORT3_TRANSFER_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x9a);
+ if (pEquipment->addStep(0x3fa, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d44);
+ pStep->setName(STEP_EQ_PORT3_ENABLE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xa2);
+ if (pEquipment->addStep(0x402, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d45);
+ pStep->setName(STEP_EQ_PORT3_TYPE_ATUO);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xaa);
+ if (pEquipment->addStep(0x40a, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ // Port4
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d4f);
+ pStep->setName(STEP_EQ_PORT4_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x83);
+ if (pEquipment->addStep(0x3e3, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d50);
+ pStep->setName(STEP_EQ_PORT4_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x8b);
+ if (pEquipment->addStep(0x3eb, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x4d51);
+ pStep->setName(STEP_EQ_PORT4_CASSETTE_TYPE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x93);
+ if (pEquipment->addStep(0x3f3, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d53);
+ pStep->setName(STEP_EQ_PORT4_TRANSFER_MODE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0x9b);
+ if (pEquipment->addStep(0x3fb, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d54);
+ pStep->setName(STEP_EQ_PORT4_ENABLE);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xa3);
+ if (pEquipment->addStep(0x403, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, 0x4d55);
+ pStep->setName(STEP_EQ_PORT4_TYPE_ATUO);
+ pStep->setListener(listener);
+ pStep->setWriteSignalDev(0xab);
+ if (pEquipment->addStep(0x40b, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
pEquipment->init();
LOGE("已添加“EFEM(ROBOT)”.");
return 0;
@@ -569,6 +804,16 @@
}
}
}
+
+
+ // 自动保存缓存
+ if (i % (4 * 2) == 0) {
+ if (m_bDataModify) {
+ saveCacheAndBackups();
+ m_bDataModify = FALSE;
+ }
+ }
+
}
void CMaster::connectEquipments()
@@ -643,4 +888,70 @@
LOGE("连接BakeCooling-LoadPort4失败");
}
}
+
+ int CMaster::saveCache()
+ {
+ CFile file;
+ if (!file.Open(m_strFilepath.c_str(), CFile::modeCreate | CFile::modeWrite)) {
+ return -1;
+ }
+
+ CArchive ar(&file, CArchive::store);
+ serialize(ar);
+ ar.Close();
+ file.Close();
+
+ return 0;
+ }
+
+ int CMaster::saveCacheAndBackups()
+ {
+ saveCache();
+
+
+ // 创建备份目录
+ CString strNewFile;
+ CString strFileDir = m_strFilepath.c_str();
+ int index = strFileDir.ReverseFind('\\');
+ ASSERT(index > 0);
+ strFileDir = strFileDir.Left(index);
+ strFileDir = strFileDir + _T("Backups");
+ ::CreateDirectory(strFileDir, nullptr);
+
+ CTime time = CTime::GetCurrentTime();
+ strNewFile.Format(_T("%s//Master_%d_%02d_%02d_%02d_%02d_%02d.dat"),
+ (LPTSTR)(LPCTSTR)strFileDir,
+ time.GetYear(), time.GetMonth(), time.GetDay(),
+ time.GetHour(), time.GetMinute(), time.GetSecond());
+ ::CopyFile(m_strFilepath.c_str(), strNewFile, FALSE);
+
+ return 0;
+ }
+
+ void CMaster::setCacheFilepath(const char* pszFilepath)
+ {
+ m_strFilepath = pszFilepath;
+ }
+
+ int CMaster::readCache()
+ {
+ CFile file;
+ if (!file.Open(m_strFilepath.c_str(), CFile::modeRead)) {
+ return -1;
+ }
+
+ CArchive ar(&file, CArchive::load);
+ serialize(ar);
+ ar.Close();
+ file.Close();
+
+ return 0;
+ }
+
+ void CMaster::serialize(CArchive& ar)
+ {
+ for (auto item : m_listEquipment) {
+ item->serialize(ar);
+ }
+ }
}
--
Gitblit v1.9.3