From a14c8cb51345fa3342addde7fa584465c4bc7083 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 09 十二月 2024 17:58:17 +0800
Subject: [PATCH] 1.加入GDI+ 2.警告信息获取;
---
SourceCode/Bond/BondEq/BondEq.cpp | 11
SourceCode/Bond/BondEq/CBonder.cpp | 8
SourceCode/Bond/BondEq/InputDialog.cpp | 1
SourceCode/Bond/BondEq/AlarmMonitor.cpp | 207 +++++++++++-----
SourceCode/Bond/BondEq/CProjectPageComponents.cpp | 13
SourceCode/Bond/BondEq/BondEq.h | 2
SourceCode/Bond/BondEq/BondEq.rc | 0
SourceCode/Bond/BondEq/AlarmMonitor.h | 20
SourceCode/Bond/BondEq/CProjectPageRemoteEqs.cpp | 7
SourceCode/Bond/BondEq/BondEqDlg.cpp | 4
SourceCode/Bond/x64/Debug/AlarmList.txt | 336 ++++++++++++++--------------
Document/ET6060AVA-LR-101规划表.xlsx | 0
SourceCode/Bond/BondEq/Alarm.cpp | 51 +++
SourceCode/Bond/BondEq/Model.cpp | 10
SourceCode/Bond/BondEq/Alarm.h | 14
SourceCode/Bond/BondEq/Common.h | 22 +
16 files changed, 422 insertions(+), 284 deletions(-)
diff --git "a/Document/ET6060AVA-LR-101\350\247\204\345\210\222\350\241\250.xlsx" "b/Document/ET6060AVA-LR-101\350\247\204\345\210\222\350\241\250.xlsx"
new file mode 100644
index 0000000..3ab6765
--- /dev/null
+++ "b/Document/ET6060AVA-LR-101\350\247\204\345\210\222\350\241\250.xlsx"
Binary files differ
diff --git a/SourceCode/Bond/BondEq/Alarm.cpp b/SourceCode/Bond/BondEq/Alarm.cpp
index eaa30ad..266e4ca 100644
--- a/SourceCode/Bond/BondEq/Alarm.cpp
+++ b/SourceCode/Bond/BondEq/Alarm.cpp
@@ -5,16 +5,25 @@
CAlarm::CAlarm()
{
+ m_nStatus = 0;
+ m_nId = 0;
+ m_nLevel = 0;
}
-CAlarm::CAlarm(int unitId, int status, int id, int level, const char* pszText)
+CAlarm::CAlarm(int id, int level, const char* pszText)
{
- m_nUnitId = unitId;
- m_nStatus = status;
- m_time = CToolUnits::getTimestamp();
+ m_nStatus = 0;
m_nId = id;
m_nLevel = level;
m_strText = pszText;
+}
+
+CAlarm::CAlarm(CAlarm* pScr)
+{
+ m_nStatus = 0;
+ m_nId = pScr->m_nId;
+ m_nLevel = pScr->m_nLevel;
+ m_strText = pScr->m_strText;;
}
CAlarm::~CAlarm()
@@ -31,7 +40,8 @@
{
std::string strText;
strText += "CAlarm[";
- strText += ("time:" + CToolUnits::timeToString2(m_time) + ";");
+ strText += ("m_timeOn:" + CToolUnits::timeToString2(m_timeOn) + ";");
+ strText += ("m_timeOff:" + CToolUnits::timeToString2(m_timeOff) + ";");
strText += ("m_nStatus:" + std::to_string(m_nStatus) + ";");
strText += ("m_nId:" + std::to_string(m_nId) + ";");
strText += ("m_nLevel:" + std::to_string(m_nLevel) + ";");
@@ -46,9 +56,30 @@
return m_nUnitId;
}
-ULONGLONG CAlarm::getTime()
+void CAlarm::alarmOn()
{
- return m_time;
+ if (m_nStatus == 0) {
+ m_nStatus++;
+ m_timeOn = CToolUnits::getTimestamp();
+ }
+}
+
+void CAlarm::alarmOff()
+{
+ if (m_nStatus == 1) {
+ m_nStatus++;
+ m_timeOff = CToolUnits::getTimestamp();
+ }
+}
+
+ULONGLONG CAlarm::getOnTime()
+{
+ return m_timeOn;
+}
+
+ULONGLONG CAlarm::getOffTime()
+{
+ return m_timeOff;
}
int CAlarm::getId()
@@ -76,7 +107,8 @@
if (ar.IsStoring())
{
Lock();
- ar << m_time;
+ ar << m_timeOn;
+ ar << m_timeOff;
ar << m_nStatus;
ar << m_nId;
ar << m_nLevel;
@@ -86,7 +118,8 @@
else
{
Lock();
- ar >> m_time;
+ ar >> m_timeOn;
+ ar >> m_timeOff;
ar >> m_nStatus;
ar >> m_nId;
ar >> m_nLevel;
diff --git a/SourceCode/Bond/BondEq/Alarm.h b/SourceCode/Bond/BondEq/Alarm.h
index 9b3a354..12b4a26 100644
--- a/SourceCode/Bond/BondEq/Alarm.h
+++ b/SourceCode/Bond/BondEq/Alarm.h
@@ -6,14 +6,19 @@
{
public:
CAlarm();
- CAlarm(int unitId, int status, int id, int level, const char* pszText);
+ CAlarm(int id, int level, const char* pszText);
+ CAlarm(int status, int id, int level, const char* pszText);
+ CAlarm(CAlarm* pScr);
~CAlarm();
public:
virtual std::string& getClassName();
virtual std::string toString();
int getUnitId();
- ULONGLONG getTime();
+ void alarmOn();
+ void alarmOff();
+ ULONGLONG getOnTime();
+ ULONGLONG getOffTime();
int getId();
int getLevel();
int getStatus();
@@ -22,8 +27,9 @@
private:
int m_nUnitId;
- ULONG64 m_time;
- int m_nStatus;
+ ULONG64 m_timeOn;
+ ULONG64 m_timeOff;
+ int m_nStatus; // 0:未知;1:ON;2:OFF;
int m_nId;
int m_nLevel;
std::string m_strText;
diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.cpp b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
index edf375d..d53b6f7 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.cpp
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -3,20 +3,33 @@
#include "Common.h"
#include "CBonder.h"
#include "Log.h"
+#include "ToolUnits.h"
#define ALARM_MAX 200
CAlarmMonitor::CAlarmMonitor()
{
- m_nBeginAddr = 0;
- m_nLastId = 0;
- m_nLastLevel = 0;
+ m_pRawData = new char[200];
+ memset(m_pRawData, 0, 200);
}
CAlarmMonitor::~CAlarmMonitor()
{
+ if (m_pRawData != nullptr) {
+ delete[] m_pRawData;
+ m_pRawData = nullptr;
+ }
+ for (auto item : m_mapAlarmTemplate) {
+ delete item.second;
+ }
+ m_mapAlarmTemplate.clear();
+
+ for (auto item : m_mapAlarming) {
+ item.second->release();
+ }
+ m_mapAlarming.clear();
}
std::string& CAlarmMonitor::getClassName()
@@ -33,13 +46,59 @@
void CAlarmMonitor::onData(int id, const void* pData, int size)
{
const char* pszData = (const char*)pData;
- if (m_nIndex + 1 == id) {
- int addr = m_nBeginAddr * 2;
- int alarmId = (pszData[addr] & 0xff) | (pszData[addr + 1] & 0xff) << 8;
- int alarmLevel = (pszData[addr + 2] & 0xff) | (pszData[addr + 3] & 0xff) << 8;
- if (m_nLastId != alarmId) {
- LOGI("<CAlarmMonitor-%d>AlarmId:%d, AlarmLevel:%d", m_nIndex, alarmId, alarmLevel);
- Alarm(alarmId, alarmLevel);
+ if (MONITOR_ID_ALARM != id) {
+ return;
+ }
+
+ // 比较有没有变化
+ if (compareData(m_pRawData, (const char*)pData, size)) {
+ return;
+ }
+ memcpy(m_pRawData, (const char*)pData, size);
+
+
+ // 找到On的报警并缓存
+ std::vector<int> alarmIds;
+ for (auto item : m_mapAlarmTemplate) {
+ if (isAlarmOn(item.first)) {
+ alarmIds.push_back(item.first);
+ }
+ }
+
+
+ // 发生警告:
+ // 比较新加的ON的警告
+ // 即m_mapAlarming无,alarmIds有
+ for (auto item : alarmIds) {
+ if (m_mapAlarming.find(item) == m_mapAlarming.end()) {
+ auto iter = m_mapAlarmTemplate.find(item);
+ if (iter != m_mapAlarmTemplate.end()) {
+ CAlarm* pAlarm = new CAlarm(iter->second);
+ pAlarm->alarmOn();
+ pAlarm->addRef();
+ m_mapAlarming[item] = pAlarm;
+ LOGE("发生了警告:%s", pAlarm->toString().c_str());
+
+ // 警告信息发出,以使界面显示和历史记录保存
+ SendBroadcast(&CIntent(BC_CODE_ALARM_ON, "", pAlarm));
+ }
+ }
+ }
+
+ // 削除警告:
+ // 比较得到原来ON(m_mapAlarming有), 现在OFF的警告(alarmIds无)
+ for (auto iter = m_mapAlarming.begin(); iter != m_mapAlarming.end();/* iter++*/) {
+ if (!findAlarm(alarmIds, iter->first)) {
+ // 消除警告, 同时将信息发出,以使界面显示和历史记录保存
+ iter->second->alarmOff();
+ LOGE("消除了警告:%s", iter->second->toString().c_str());
+ SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second));
+
+ iter->second->release();
+ m_mapAlarming.erase(iter++);
+ }
+ else {
+ iter++;
}
}
}
@@ -51,20 +110,29 @@
return -1;
}
- CString strLine, strNumber, strDescription;
+ CString strLine, strNumber, strLevel, strDescription;
+ int number, level;
while (file.ReadString(strLine)) {
- int index = strLine.Find(",");
- if (index <= 0) continue;
+ if (!AfxExtractSubString(strNumber, (LPCTSTR)strLine, 0, ','))
+ continue;
+ if (!AfxExtractSubString(strLevel, (LPCTSTR)strLine, 1, ','))
+ continue;
+ if (!AfxExtractSubString(strDescription, (LPCTSTR)strLine, 2, ','))
+ continue;
- strNumber = strLine.Left(index).Trim();
- strDescription = strLine.Right(strLine.GetLength() - index - 1).Trim();
+ try {
+ number = std::stoi((LPTSTR)(LPCTSTR)strNumber);
+ level = std::stoi((LPTSTR)(LPCTSTR)strLevel);
+ }
+ catch (...) {
+ continue;
+ }
- int number = atoi(strNumber);
- m_mapAlarmText[number] = std::string((LPTSTR)(LPCTSTR)strDescription);
+ addAlarmTemplate(number, level, (LPTSTR)(LPCTSTR)strDescription);
}
file.Close();
- return (int)m_mapAlarmText.size();
+ return (int)m_mapAlarmTemplate.size();
}
void CAlarmMonitor::init()
@@ -74,14 +142,7 @@
void CAlarmMonitor::term()
{
- for (auto item : m_alarms) {
- item->release();
- }
-}
-void CAlarmMonitor::setBeginAddr(int nAddr)
-{
- m_nBeginAddr = nAddr;
}
void CAlarmMonitor::OnTimer(UINT nTimerid)
@@ -91,43 +152,14 @@
const char* CAlarmMonitor::getAlarmText(int nID)
{
- auto iter = m_mapAlarmText.find(nID);
- if (iter == m_mapAlarmText.end()) return "";
-
- return iter->second.c_str();
-}
-
-void CAlarmMonitor::Alarm(int id, int level)
-{
- BEQ::IUnit* pUnit = m_pBonder->getUnit(m_nIndex);
- ASSERT(pUnit);
-
- if (id != 0) {
- // 警告
- pUnit->setAlarm(id, level, getAlarmText(id));
- LOGI("<CAlarmMonitor-%d>设备告警(%d, %d).", m_nIndex, id, level);
-
- CAlarm* pAlarm = new CAlarm(m_nIndex, 1, id, level, getAlarmText(id));
- AddAlarm(pAlarm);
- SendBroadcast(&CIntent(BC_CODE_ALARM_EVENT, "", pAlarm));
- m_nLastId = id;
- m_nLastLevel = level;
- }
- else {
- // 解除警告
- pUnit->setAlarm(0, 0, "");
- LOGI("<CAlarmMonitor-%d>解除设备告警(%d, %d).", m_nIndex, m_nLastId, m_nLastLevel);
-
- CAlarm* pAlarm = new CAlarm(m_nIndex, 2, m_nLastId, m_nLastLevel, getAlarmText(m_nLastId));
- AddAlarm(pAlarm);
- SendBroadcast(&CIntent(BC_CODE_ALARM_EVENT, "", pAlarm));
- m_nLastId = 0;
- m_nLastLevel = 0;
- }
+ auto iter = m_mapAlarmTemplate.find(nID);
+ if (iter == m_mapAlarmTemplate.end()) return "";
+ return iter->second->getText().c_str();
}
void CAlarmMonitor::Serialize(CArchive& ar)
{
+ /*
if (ar.IsStoring())
{
Lock();
@@ -153,24 +185,59 @@
}
Unlock();
}
+ */
}
-void CAlarmMonitor::AddAlarm(CAlarm* pAlarm)
+void CAlarmMonitor::getAlarmingMap(std::map<int, CAlarm*>& alarms)
{
Lock();
- pAlarm->addRef();
- m_alarms.push_back(pAlarm);
- if (m_alarms.size() > ALARM_MAX) {
- CAlarm* pTemp = m_alarms.front();
- pTemp->release();
- m_alarms.pop_front();
+ alarms = m_mapAlarming;
+ Unlock();
+}
+
+BOOL CAlarmMonitor::isAlarming()
+{
+ Lock();
+ BOOL bAlarming = !m_mapAlarming.empty();
+ Unlock();
+ return bAlarming;
+}
+
+BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len)
+{
+ for (int i = 0; i < len; i++) {
+ if (pScrData[i] != pTarData[i]) {
+ return FALSE;
+ }
}
- Unlock();
+
+ return TRUE;
}
-void CAlarmMonitor::getAlarmList(std::list<CAlarm*>& list)
+int CAlarmMonitor::addAlarmTemplate(int id, int level, const char* pszDescription)
{
- Lock();
- list = m_alarms;
- Unlock();
+ auto iter = m_mapAlarmTemplate.find(id);
+ if (iter != m_mapAlarmTemplate.end()) return -1;
+
+ CAlarm* pAlarm = new CAlarm(id, level, pszDescription);
+ m_mapAlarmTemplate[id] = pAlarm;
+ return 0;
+}
+
+BOOL CAlarmMonitor::isAlarmOn(int id)
+{
+ int byteIndex, bitIndex;
+ byteIndex = (id - 1) / 8;
+ bitIndex = (id - 1) % 8;
+
+ return CToolUnits::getBit(m_pRawData[byteIndex], bitIndex);
+}
+
+BOOL CAlarmMonitor::findAlarm(std::vector<int>& ids, int id)
+{
+ for (auto item : ids) {
+ if (item == id) return TRUE;
+ }
+
+ return FALSE;
}
\ No newline at end of file
diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.h b/SourceCode/Bond/BondEq/AlarmMonitor.h
index ae84f65..fe1108c 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.h
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.h
@@ -17,24 +17,22 @@
virtual void onRecvBroadcast(void* pSender, CIntent* pIntent);
virtual void init();
virtual void term();
- void setBeginAddr(int nAddr);
int readAlarmListFromFile(const char* pszFilepath);
virtual void OnTimer(UINT nTimerid);
const char* getAlarmText(int nID);
- void Alarm(int id, int level);
virtual void Serialize(CArchive& ar);
- void getAlarmList(std::list<CAlarm*>& list);
+ void getAlarmingMap(std::map<int, CAlarm*>& alarms);
+ BOOL isAlarming();
private:
- void AddAlarm(CAlarm* pAlarm);
+ BOOL compareData(const char* pScrData, const char* pTarData, int len);
+ int addAlarmTemplate(int id, int level, const char* pszDescription);
+ BOOL isAlarmOn(int id);
+ BOOL findAlarm(std::vector<int>& ids, int id);
private:
- int m_nBeginAddr;
-
-private:
- std::map<int, std::string> m_mapAlarmText;
- int m_nLastId;
- int m_nLastLevel;
- std::list<CAlarm*> m_alarms;
+ std::map<int, CAlarm*> m_mapAlarmTemplate; // 这是警告的模板,从文件加载
+ std::map<int, CAlarm*> m_mapAlarming; // 正在发生的警告
+ char* m_pRawData;
};
diff --git a/SourceCode/Bond/BondEq/BondEq.cpp b/SourceCode/Bond/BondEq/BondEq.cpp
index 6818a3d..984e455 100644
--- a/SourceCode/Bond/BondEq/BondEq.cpp
+++ b/SourceCode/Bond/BondEq/BondEq.cpp
@@ -77,6 +77,11 @@
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
+ // gdi+
+ Gdiplus::GdiplusStartupInput gdiplusStartupInput;
+ Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
+
+
// 本程序文件目录
TCHAR sDrive[_MAX_DRIVE];
TCHAR sDir[_MAX_DIR];
@@ -156,6 +161,12 @@
BEQ_Term();
RX_Term();
MCL_Term();
+ CloseHandle(m_hAppMutex);
+
+
+ // gdi+
+ Gdiplus::GdiplusShutdown(m_gdiplusToken);
+
return CWinApp::ExitInstance();
}
diff --git a/SourceCode/Bond/BondEq/BondEq.h b/SourceCode/Bond/BondEq/BondEq.h
index 94f0db3..0112da3 100644
--- a/SourceCode/Bond/BondEq/BondEq.h
+++ b/SourceCode/Bond/BondEq/BondEq.h
@@ -33,7 +33,7 @@
CString m_strAppFile;
int m_nVersionNumber;
CString m_strVersionName;
-
+ ULONG_PTR m_gdiplusToken;
// 实现
diff --git a/SourceCode/Bond/BondEq/BondEq.rc b/SourceCode/Bond/BondEq/BondEq.rc
index 61728c2..22fdfef 100644
--- a/SourceCode/Bond/BondEq/BondEq.rc
+++ b/SourceCode/Bond/BondEq/BondEq.rc
Binary files differ
diff --git a/SourceCode/Bond/BondEq/BondEqDlg.cpp b/SourceCode/Bond/BondEq/BondEqDlg.cpp
index 498f7af..3f3103b 100644
--- a/SourceCode/Bond/BondEq/BondEqDlg.cpp
+++ b/SourceCode/Bond/BondEq/BondEqDlg.cpp
@@ -573,6 +573,7 @@
return 0;
}
+ /*
CString inputText = inputDialog.GetInputText();
std::string strPass = UserManager::getInstance().getCurrentPass();
if (inputText.Compare(strPass.c_str()) != 0) {
@@ -580,14 +581,17 @@
logManager.log(SystemLogManager::LogType::Info, _T("验证时,密码错误!"));
return 0;
}
+ */
}
if (id == IDC_BUTTON_RUN) {
+ theApp.m_model.getBonder().start();
m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE);
m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(TRUE);
logManager.log(SystemLogManager::LogType::Operation, _T("运行..."));
}
else if (id == IDC_BUTTON_STOP) {
+ theApp.m_model.getBonder().stop();
m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(TRUE);
m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE);
logManager.log(SystemLogManager::LogType::Operation, _T("停止..."));
diff --git a/SourceCode/Bond/BondEq/CBonder.cpp b/SourceCode/Bond/BondEq/CBonder.cpp
index 9f81e4e..4ebcf7a 100644
--- a/SourceCode/Bond/BondEq/CBonder.cpp
+++ b/SourceCode/Bond/BondEq/CBonder.cpp
@@ -175,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, 1001, 1064, MC::SOFT_COMPONENT::M, &m_pPlcData[600]);
+
pPlc->setName("PLC(1)");
pPlc->setDescription("PLC");
pPlc->setIndex(0);
@@ -201,7 +208,6 @@
CAlarmMonitor* pAlarmMonitor1 = new CAlarmMonitor();
pAlarmMonitor1->setName("警告信息");
pAlarmMonitor1->setDescription("警告信息监控");
- pAlarmMonitor1->setBeginAddr(4461 - 4400);
pAlarmMonitor1->setIndex(0);
pAlarmMonitor1->readAlarmListFromFile((LPTSTR)(LPCTSTR)strAlarmFile);
AddComponent(pAlarmMonitor1);
diff --git a/SourceCode/Bond/BondEq/CProjectPageComponents.cpp b/SourceCode/Bond/BondEq/CProjectPageComponents.cpp
index 3afe5e9..e6eb9f5 100644
--- a/SourceCode/Bond/BondEq/CProjectPageComponents.cpp
+++ b/SourceCode/Bond/BondEq/CProjectPageComponents.cpp
@@ -6,6 +6,7 @@
#include "CProjectPageComponents.h"
#include "afxdialogex.h"
#include "Alarm.h"
+#include "AlarmMonitor.h"
// CProjectPageComponents 瀵硅瘽妗�
@@ -72,18 +73,16 @@
}
}
}
- else if (RX_CODE_ALARM_EVENT == code) {
- CComponent* pComponent = nullptr;
- CAlarm* pAlarm = nullptr;
- pAny->getObject("obj", (IRxObject*&)pAlarm);
+ else if (RX_CODE_ALARM_ON == code
+ || RX_CODE_ALARM_OFF == code) {
+ CAlarmMonitor* pComponent = nullptr;
pAny->getPtrValue("ptr", (void*&)pComponent);
ASSERT(pComponent);
- ASSERT(pAlarm);
HTREEITEM hItem = getTreeItem(pComponent);
if (hItem != nullptr) {
- if(pAlarm->getStatus() == 1)
+ if (pComponent->isAlarming())
m_treeComponents.ShowItemBadgeDotMode(hItem);
- else if (pAlarm->getStatus() == 2)
+ else
m_treeComponents.HideItemBadge(hItem);
}
}
diff --git a/SourceCode/Bond/BondEq/CProjectPageRemoteEqs.cpp b/SourceCode/Bond/BondEq/CProjectPageRemoteEqs.cpp
index b10097f..e120046 100644
--- a/SourceCode/Bond/BondEq/CProjectPageRemoteEqs.cpp
+++ b/SourceCode/Bond/BondEq/CProjectPageRemoteEqs.cpp
@@ -128,9 +128,10 @@
::DeleteObject(m_hbrBkgnd);
}
- ASSERT(m_pObserver != NULL);
- m_pObserver->unsubscribe();
- m_pObserver = NULL;
+ if (m_pObserver != NULL) {
+ m_pObserver->unsubscribe();
+ m_pObserver = NULL;
+ }
}
diff --git a/SourceCode/Bond/BondEq/Common.h b/SourceCode/Bond/BondEq/Common.h
index 8c949bd..d52651b 100644
--- a/SourceCode/Bond/BondEq/Common.h
+++ b/SourceCode/Bond/BondEq/Common.h
@@ -7,6 +7,10 @@
#define UNIT1 _T("UNIT1")
+/* 监控数据id */
+#define MONITOR_ID_ALARM 1001
+
+
/* Context Ret code */
#define CRC_ACK_REJECT -3
#define CRC_TIMEOUT -2
@@ -27,11 +31,12 @@
#define RX_CODE_DATA1_END_SAMPLING 1009
#define RX_CODE_DATA1_MATERIAL_REMOVEED 1010
#define RX_CODE_PANEL_COMPLATE 1011
-#define RX_CODE_ALARM_EVENT 1012
-#define RX_CODE_EQSTATE_EVENT 1013
-#define RX_CODE_EFEM_STATUS_CHANGED 1014
-#define RX_CODE_EQ_STATE_CHANGED 1015
-#define RX_CODE_SELECT_COMPONENT 1016
+#define RX_CODE_ALARM_ON 1012
+#define RX_CODE_ALARM_OFF 1013
+#define RX_CODE_EQSTATE_EVENT 1014
+#define RX_CODE_EFEM_STATUS_CHANGED 1015
+#define RX_CODE_EQ_STATE_CHANGED 1016
+#define RX_CODE_SELECT_COMPONENT 1017
/* 广播代码 */
#define BC_CODE_DATA1_MATERIAL_RECEIVED 5000
@@ -39,9 +44,10 @@
#define BC_CODE_DATA1_UPDATE 5002
#define BC_CODE_DATA1_END_SAMPLING 5003
#define BC_CODE_DATA1_MATERIAL_REMOVED 5004
-#define BC_CODE_ALARM_EVENT 5005
-#define BC_CODE_EQSTATE_EVENT 5006
-#define BC_CODE_RUN_RECIPE_RESULT 5007
+#define BC_CODE_ALARM_ON 5005
+#define BC_CODE_ALARM_OFF 5006
+#define BC_CODE_EQSTATE_EVENT 5007
+#define BC_CODE_RUN_RECIPE_RESULT 5008
/* Channel Name */
#define MC_CHANNEL1_NAME "McChannel1"
diff --git a/SourceCode/Bond/BondEq/InputDialog.cpp b/SourceCode/Bond/BondEq/InputDialog.cpp
index ab890fe..86252f9 100644
--- a/SourceCode/Bond/BondEq/InputDialog.cpp
+++ b/SourceCode/Bond/BondEq/InputDialog.cpp
@@ -49,6 +49,7 @@
// TODO: 鍦ㄦ娣诲姞棰濆鐨勫垵濮嬪寲
SetWindowText(m_strTitle);
m_staticPrompt.SetWindowText(m_strPrompt);
+ m_editInput.SetFocus();
return TRUE; // return TRUE unless you set the focus to a control
// 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
diff --git a/SourceCode/Bond/BondEq/Model.cpp b/SourceCode/Bond/BondEq/Model.cpp
index 8c088d2..ff9e24e 100644
--- a/SourceCode/Bond/BondEq/Model.cpp
+++ b/SourceCode/Bond/BondEq/Model.cpp
@@ -155,10 +155,16 @@
notifyObj(RX_CODE_PANEL_COMPLATE, pPanel);
pPanel->release();
}
- else if (code == BC_CODE_ALARM_EVENT) {
+ else if (code == BC_CODE_ALARM_ON) {
CAlarm* pAlarm = (CAlarm*)pIntent->getContext();
pAlarm->addRef();
- notifyObjAndPtr(RX_CODE_ALARM_EVENT, pAlarm, pSender);
+ notifyObjAndPtr(RX_CODE_ALARM_ON, pAlarm, pSender);
+ pAlarm->release();
+ }
+ else if (code == BC_CODE_ALARM_OFF) {
+ CAlarm* pAlarm = (CAlarm*)pIntent->getContext();
+ pAlarm->addRef();
+ notifyObjAndPtr(RX_CODE_ALARM_OFF, pAlarm, pSender);
pAlarm->release();
}
else if (code == BC_CODE_EQSTATE_EVENT) {
diff --git a/SourceCode/Bond/x64/Debug/AlarmList.txt b/SourceCode/Bond/x64/Debug/AlarmList.txt
index 34ad3a9..69473c8 100644
--- a/SourceCode/Bond/x64/Debug/AlarmList.txt
+++ b/SourceCode/Bond/x64/Debug/AlarmList.txt
@@ -1,208 +1,208 @@
-1,A单元_急停_01
-2,A单元_急停_02
-3,A单元_急停_03
-4,A单元_MEO
+1,1,A单元_急停_01
+2,1,A单元_急停_02
+3,1,A单元_急停_03
+4,1,A单元_MEO
-10,B单元_急停_01
-11,B单元_急停_02
-12,B单元_急停_03
-13,B单元_MEO
+10,1,B单元_急停_01
+11,1,B单元_急停_02
+12,1,B单元_急停_03
+13,1,B单元_MEO
-201,A单元-上腔体压合Z轴1异常
-202,A单元-上腔体压合Z轴2异常
-203,A单元-上腔体压合Z轴3异常
-204,A单元-上腔体压合Z轴4异常
-205,A单元-上腔体压合Z轴5异常
-206,A单元-上腔体Z轴1异常
-207,A单元-上腔体Z轴2异常
-208,A单元-分离胶辊Z轴1异常
-209,A单元-分离胶辊Z轴2异常
-210,A单元-左侧分离胶辊X轴1异常
-211,A单元-左侧分离胶辊X轴2异常
-212,A单元-分离胶辊调节Z轴异常
-213,A单元-下腔体Z轴异常
-214,A单元-收膜旋转轴异常
-215,A单元-放膜旋转轴异常
+201,2,A单元-上腔体压合Z轴1异常
+202,2,A单元-上腔体压合Z轴2异常
+203,2,A单元-上腔体压合Z轴3异常
+204,2,A单元-上腔体压合Z轴4异常
+205,2,A单元-上腔体压合Z轴5异常
+206,2,A单元-上腔体Z轴1异常
+207,2,A单元-上腔体Z轴2异常
+208,2,A单元-分离胶辊Z轴1异常
+209,2,A单元-分离胶辊Z轴2异常
+210,2,A单元-左侧分离胶辊X轴1异常
+211,2,A单元-左侧分离胶辊X轴2异常
+212,2,A单元-分离胶辊调节Z轴异常
+213,2,A单元-下腔体Z轴异常
+214,2,A单元-收膜旋转轴异常
+215,2,A单元-放膜旋转轴异常
-217,B单元-上腔体压合Z轴1异常
-218,B单元-上腔体压合Z轴2异常
-219,B单元-上腔体压合Z轴3异常
-220,B单元-上腔体压合Z轴4异常
-221,B单元-上腔体压合Z轴5异常
-222,B单元-上腔体Z轴1异常
-223,B单元-上腔体Z轴2异常
-224,B单元-分离胶辊Z轴1异常
-225,B单元-分离胶辊Z轴2异常
-226,B单元-左侧分离胶辊X轴1异常
-227,B单元-左侧分离胶辊X轴2异常
-228,B单元-分离胶辊调节Z轴异常
-229,B单元-下腔体Z轴异常
-230,B单元-收膜旋转轴异常
-231,B单元-放膜旋转轴异常
+217,2,B单元-上腔体压合Z轴1异常
+218,2,B单元-上腔体压合Z轴2异常
+219,2,B单元-上腔体压合Z轴3异常
+220,2,B单元-上腔体压合Z轴4异常
+221,2,B单元-上腔体压合Z轴5异常
+222,2,B单元-上腔体Z轴1异常
+223,2,B单元-上腔体Z轴2异常
+224,2,B单元-分离胶辊Z轴1异常
+225,2,B单元-分离胶辊Z轴2异常
+226,2,B单元-左侧分离胶辊X轴1异常
+227,2,B单元-左侧分离胶辊X轴2异常
+228,2,B单元-分离胶辊调节Z轴异常
+229,2,B单元-下腔体Z轴异常
+230,2,B单元-收膜旋转轴异常
+231,2,B单元-放膜旋转轴异常
-260,QD77MS16(U60)异常
-261,QD77MS16(U62)异常
+260,2,QD77MS16(U60)异常
+261,2,QD77MS16(U62)异常
-501,A单元-分离膜收膜压紧气缸异常
-502,A单元-分离膜放膜压紧气缸异常
-503,A单元-粘膜上升气缸异常
-504,A单元-粘膜下降气缸异常
-505,A单元-高粘上压紧气缸异常
-506,A单元-高粘下压紧气缸异常
-507,A单元-干泵气阀异常
-508,A单元-腔体干泵与分子泵组合气阀异常
-509,A单元-腔体分子泵气阀异常
-510,A单元-腔体总破真空气阀异常
+501,3,A单元-分离膜收膜压紧气缸异常
+502,3,A单元-分离膜放膜压紧气缸异常
+503,3,A单元-粘膜上升气缸异常
+504,3,A单元-粘膜下降气缸异常
+505,3,A单元-高粘上压紧气缸异常
+506,3,A单元-高粘下压紧气缸异常
+507,3,A单元-干泵气阀异常
+508,3,A单元-腔体干泵与分子泵组合气阀异常
+509,3,A单元-腔体分子泵气阀异常
+510,3,A单元-腔体总破真空气阀异常
-520,B单元-分离膜收膜压紧气缸异常
-521,B单元-分离膜放膜压紧气缸异常
-522,B单元-粘膜上升气缸异常
-523,B单元-粘膜下降气缸异常
-524,B单元-高粘上压紧气缸异常
-525,B单元-高粘下压紧气缸异常
-526,B单元-干泵气阀异常
-527,B单元-腔体干泵与分子泵组合气阀异常
-528,B单元-腔体分子泵气阀异常
-529,B单元-腔体总破真空气阀异常
+520,3,B单元-分离膜收膜压紧气缸异常
+521,3,B单元-分离膜放膜压紧气缸异常
+522,3,B单元-粘膜上升气缸异常
+523,3,B单元-粘膜下降气缸异常
+524,3,B单元-高粘上压紧气缸异常
+525,3,B单元-高粘下压紧气缸异常
+526,3,B单元-干泵气阀异常
+527,3,B单元-腔体干泵与分子泵组合气阀异常
+528,3,B单元-腔体分子泵气阀异常
+529,3,B单元-腔体总破真空气阀异常
-541,A单元-上腔体破真空异常
-542,A单元-下腔体破真空异常
-543,A单元-腔体干泵破真空异常
-544,A单元-腔体分离泵破真空异常
+541,3,A单元-上腔体破真空异常
+542,3,A单元-下腔体破真空异常
+543,3,A单元-腔体干泵破真空异常
+544,3,A单元-腔体分离泵破真空异常
-556,B单元-上腔体破真空异常
-557,B单元-下腔体破真空异常
-558,B单元-腔体干泵破真空异常
-559,B单元-腔体分离泵破真空异常
+556,3,B单元-上腔体破真空异常
+557,3,B单元-下腔体破真空异常
+558,3,B单元-腔体干泵破真空异常
+559,3,B单元-腔体分离泵破真空异常
-571,A单元-上腔体吸真空异常
-572,A单元-下腔体吸真空异常
-573,A单元-腔体干泵吸真空异常
-574,A单元-腔体分离泵吸真空异常
+571,3,A单元-上腔体吸真空异常
+572,3,A单元-下腔体吸真空异常
+573,3,A单元-腔体干泵吸真空异常
+574,3,A单元-腔体分离泵吸真空异常
-586,B单元-上腔体吸真空异常
-587,B单元-下腔体吸真空异常
-588,B单元-腔体干泵吸真空异常
-589,B单元-腔体分离泵吸真空异常
+586,3,B单元-上腔体吸真空异常
+587,3,B单元-下腔体吸真空异常
+588,3,B单元-腔体干泵吸真空异常
+589,3,B单元-腔体分离泵吸真空异常
-601,A单元-下腔体在籍异常
+601,3,A单元-下腔体在籍异常
-610,B单元-下腔体在籍异常
+610,3,B单元-下腔体在籍异常
-621,A单元-离心膜断料
-622,A单元-离心膜转动异常
+621,3,A单元-离心膜断料
+622,3,A单元-离心膜转动异常
-626,B单元-离心膜断料
-627,B单元-离心膜转动异常
+626,3,B单元-离心膜断料
+627,3,B单元-离心膜转动异常
-631,A单元-上腔体压合Z轴1绝对位置丢失
-632,A单元-上腔体压合Z轴2绝对位置丢失
-633,A单元-上腔体压合Z轴3绝对位置丢失
-634,A单元-上腔体压合Z轴4绝对位置丢失
-635,A单元-上腔体压合Z轴5绝对位置丢失
-636,A单元-上腔体Z轴1绝对位置丢失
-637,A单元-上腔体Z轴2绝对位置丢失
+631,3,A单元-上腔体压合Z轴1绝对位置丢失
+632,3,A单元-上腔体压合Z轴2绝对位置丢失
+633,3,A单元-上腔体压合Z轴3绝对位置丢失
+634,3,A单元-上腔体压合Z轴4绝对位置丢失
+635,3,A单元-上腔体压合Z轴5绝对位置丢失
+636,3,A单元-上腔体Z轴1绝对位置丢失
+637,3,A单元-上腔体Z轴2绝对位置丢失
-641,B单元-上腔体压合Z轴1绝对位置丢失
-642,B单元-上腔体压合Z轴2绝对位置丢失
-643,B单元-上腔体压合Z轴3绝对位置丢失
-644,B单元-上腔体压合Z轴4绝对位置丢失
-645,B单元-上腔体压合Z轴5绝对位置丢失
-646,B单元-上腔体Z轴1绝对位置丢失
-647,B单元-上腔体Z轴2绝对位置丢失
+641,3,B单元-上腔体压合Z轴1绝对位置丢失
+642,3,B单元-上腔体压合Z轴2绝对位置丢失
+643,3,B单元-上腔体压合Z轴3绝对位置丢失
+644,3,B单元-上腔体压合Z轴4绝对位置丢失
+645,3,B单元-上腔体压合Z轴5绝对位置丢失
+646,3,B单元-上腔体Z轴1绝对位置丢失
+647,3,B单元-上腔体Z轴2绝对位置丢失
-651,A单元-安全门异常
+651,3,A单元-安全门异常
-653,B单元-安全门异常
+653,3,B单元-安全门异常
-656,A单元-设备正压异常
-657,A单元-离子风正压异常
+656,3,A单元-设备正压异常
+657,3,A单元-离子风正压异常
-661,B单元-设备正压异常
-662,B单元-离子风正压异常
+661,3,B单元-设备正压异常
+662,3,B单元-离子风正压异常
-666,A单元-上腔体压合Z轴同步异常
-667,A单元-上腔体Z轴同步异常
-668,A单元-分离胶辊Z轴同步异常
-669,A单元-分离胶辊X轴同步异常
+666,3,A单元-上腔体压合Z轴同步异常
+667,3,A单元-上腔体Z轴同步异常
+668,3,A单元-分离胶辊Z轴同步异常
+669,3,A单元-分离胶辊X轴同步异常
-671,B单元-上腔体压合Z轴同步异常
-672,B单元-上腔体Z轴同步异常
-673,B单元-分离胶辊Z轴同步异常
-674,B单元-分离胶辊X轴同步异常
+671,3,B单元-上腔体压合Z轴同步异常
+672,3,B单元-上腔体Z轴同步异常
+673,3,B单元-分离胶辊Z轴同步异常
+674,3,B单元-分离胶辊X轴同步异常
-676,A单元-干泵处于非远程模式
-677,A单元-干泵DVP未运行
-678,A单元-干泵MBP未运行
-679,A单元-干泵异常
-680,A单元-干泵面板急停触发
+676,3,A单元-干泵处于非远程模式
+677,3,A单元-干泵DVP未运行
+678,3,A单元-干泵MBP未运行
+679,3,A单元-干泵异常
+680,3,A单元-干泵面板急停触发
-683,B单元-干泵处于非远程模式
-684,B单元-干泵DVP未运行
-685,B单元-干泵MBP未运行
-686,B单元-干泵异常
-687,B单元-干泵面板急停触发
+683,3,B单元-干泵处于非远程模式
+684,3,B单元-干泵DVP未运行
+685,3,B单元-干泵MBP未运行
+686,3,B单元-干泵异常
+687,3,B单元-干泵面板急停触发
-690,A单元-上腔体压合Z轴1过载报警
-691,A单元-上腔体压合Z轴2过载报警
-692,A单元-上腔体压合Z轴3过载报警
-693,A单元-上腔体压合Z轴4过载报警
-694,A单元-上腔体压合Z轴5过载报警
-695,A单元-上腔体Z轴1过载报警
-696,A单元-上腔体Z轴2过载报警
-697,A单元-分离胶辊Z轴1过载报警
-698,A单元-分离胶辊Z轴2过载报警
-699,A单元-分离胶辊X轴1过载报警
-700,A单元-分离胶辊X轴2过载报警
+690,3,A单元-上腔体压合Z轴1过载报警
+691,3,A单元-上腔体压合Z轴2过载报警
+692,3,A单元-上腔体压合Z轴3过载报警
+693,3,A单元-上腔体压合Z轴4过载报警
+694,3,A单元-上腔体压合Z轴5过载报警
+695,3,A单元-上腔体Z轴1过载报警
+696,3,A单元-上腔体Z轴2过载报警
+697,3,A单元-分离胶辊Z轴1过载报警
+698,3,A单元-分离胶辊Z轴2过载报警
+699,3,A单元-分离胶辊X轴1过载报警
+700,3,A单元-分离胶辊X轴2过载报警
-701,B单元-上腔体压合Z轴1过载报警
-702,B单元-上腔体压合Z轴2过载报警
-703,B单元-上腔体压合Z轴3过载报警
-704,B单元-上腔体压合Z轴4过载报警
-705,B单元-上腔体压合Z轴5过载报警
-706,B单元-上腔体Z轴1过载报警
-707,B单元-上腔体Z轴2过载报警
-708,B单元-分离胶辊Z轴1过载报警
-709,B单元-分离胶辊Z轴2过载报警
-710,B单元-分离胶辊X轴1过载报警
-711,B单元-分离胶辊X轴2过载报警
+701,3,B单元-上腔体压合Z轴1过载报警
+702,3,B单元-上腔体压合Z轴2过载报警
+703,3,B单元-上腔体压合Z轴3过载报警
+704,3,B单元-上腔体压合Z轴4过载报警
+705,3,B单元-上腔体压合Z轴5过载报警
+706,3,B单元-上腔体Z轴1过载报警
+707,3,B单元-上腔体Z轴2过载报警
+708,3,B单元-分离胶辊Z轴1过载报警
+709,3,B单元-分离胶辊Z轴2过载报警
+710,3,B单元-分离胶辊X轴1过载报警
+711,3,B单元-分离胶辊X轴2过载报警
-712,A单元-上腔体压合Z轴5轴间误差过大
-713,A单元-上腔体Z轴2轴间误差过大
-714,A单元-上腔体Z轴与上腔压合Z轴误差过大
+712,3,A单元-上腔体压合Z轴5轴间误差过大
+713,3,A单元-上腔体Z轴2轴间误差过大
+714,3,A单元-上腔体Z轴与上腔压合Z轴误差过大
-717,B单元-上腔体压合Z轴5轴间误差过大
-718,B单元-上腔体Z轴2轴间误差过大
-719,B单元-上腔体Z轴与上腔压合Z轴误差过大
+717,3,B单元-上腔体压合Z轴5轴间误差过大
+718,3,B单元-上腔体Z轴2轴间误差过大
+719,3,B单元-上腔体Z轴与上腔压合Z轴误差过大
-722,A单元-分子泵处于非远程模式
-723,A单元-分子泵异常
-724,B单元-分子泵处于非远程模式
-725,B单元-分子泵异常
-726,A单元-干泵抽真空异常
-727,B单元-干泵抽真空异常
+722,3,A单元-分子泵处于非远程模式
+723,3,A单元-分子泵异常
+724,3,B单元-分子泵处于非远程模式
+725,3,B单元-分子泵异常
+726,3,A单元-干泵抽真空异常
+727,3,B单元-干泵抽真空异常
-729,A单元-上腔体加热主控仪表异常
-730,A单元-上腔体加热腔体温度异常
+729,3,A单元-上腔体加热主控仪表异常
+730,3,A单元-上腔体加热腔体温度异常
-732,A单元-下腔体加热主控仪表异常
-733,A单元-下腔体加热腔体温度异常
+732,3,A单元-下腔体加热主控仪表异常
+733,3,A单元-下腔体加热腔体温度异常
-739,B单元-上腔体加热主控仪表异常
-740,B单元-上腔体加热腔体温度异常
+739,3,B单元-上腔体加热主控仪表异常
+740,3,B单元-上腔体加热腔体温度异常
-742,B单元-下腔体加热主控仪表异常
-743,B单元-下腔体加热腔体温度异常
+742,3,B单元-下腔体加热主控仪表异常
+743,3,B单元-下腔体加热腔体温度异常
-801,上游连接中断
-802,下游连接中断
+801,3,上游连接中断
+802,3,下游连接中断
-806,上游交握超时
-807,下游交握超时
+806,3,上游交握超时
+807,3,下游交握超时
-811,A单元-离子风异常
+811,3,A单元-离子风异常
-814,B单元-离子风异常
+814,3,B单元-离子风异常
--
Gitblit v1.9.3