From 9b2d1e962bf802f75c44c1f5372fc4cf029e3f4e Mon Sep 17 00:00:00 2001
From: darker <mr.darker@163.com>
Date: 星期二, 11 二月 2025 11:11:13 +0800
Subject: [PATCH] 1. 添加SECS运行设置管理类
---
SourceCode/Bond/Servo/Servo.vcxproj | 4
SourceCode/Bond/Servo/Servo.vcxproj.filters | 191 +++++++++----------------------
SourceCode/Bond/Servo/Servo.cpp | 19 +++
SourceCode/Bond/Servo/ServoDlg.cpp | 1
Document/VID 表格.zip | 0
SourceCode/Bond/Servo/SECSConfigManager.cpp | 60 ++++++++++
SourceCode/Bond/Servo/SECSConfigManager.h | 46 +++++++
7 files changed, 183 insertions(+), 138 deletions(-)
diff --git "a/Document/VID \350\241\250\346\240\274.zip" "b/Document/VID \350\241\250\346\240\274.zip"
new file mode 100644
index 0000000..a5d8282
--- /dev/null
+++ "b/Document/VID \350\241\250\346\240\274.zip"
Binary files differ
diff --git a/SourceCode/Bond/Servo/SECSConfigManager.cpp b/SourceCode/Bond/Servo/SECSConfigManager.cpp
new file mode 100644
index 0000000..1e28577
--- /dev/null
+++ b/SourceCode/Bond/Servo/SECSConfigManager.cpp
@@ -0,0 +1,60 @@
+#include "stdafx.h"
+#include "SECSConfigManager.h"
+
+// 常量
+const std::string DATABASE_FILE = R"(SECSConfigManager.db)";
+
+// 静态成员初始化
+std::mutex SECSConfigManager::m_mutex;
+
+// 获取单例实例
+SECSConfigManager& SECSConfigManager::getInstance() {
+ static SECSConfigManager instance;
+ return instance;
+}
+
+// 构造函数
+SECSConfigManager::SECSConfigManager() {
+ m_pDB = new BL::SQLiteDatabase();
+}
+
+// 析构函数
+SECSConfigManager::~SECSConfigManager() {
+ termSECSSetting();
+
+ if (m_pDB != nullptr) {
+ delete m_pDB;
+ m_pDB = nullptr;
+ }
+}
+
+// 设置数据库连接
+void SECSConfigManager::setDatabase(BL::Database* db) {
+ std::lock_guard<std::mutex> lock(m_mutex);
+ m_pDB = db;
+}
+
+// 初始化SECS设置管理库
+bool SECSConfigManager::initSECSSetting() {
+ char path[MAX_PATH];
+ GetModuleFileName(NULL, path, MAX_PATH);
+ std::string exePath(path);
+ std::string dbFileDir = exePath.substr(0, exePath.find_last_of("\\/")) + "\\DB";
+ if (!CreateDirectory(dbFileDir.c_str(), NULL) && ERROR_ALREADY_EXISTS != GetLastError()) {
+ throw std::runtime_error("Failed to create database directory.");
+ }
+
+ std::string dbFilePath = dbFileDir + "\\" + DATABASE_FILE;
+ if (!m_pDB->connect(dbFilePath, true)) {
+ return false;
+ }
+
+ return true;
+}
+
+// 销毁SECS设置管理库
+void SECSConfigManager::termSECSSetting() {
+ if (m_pDB != nullptr) {
+ m_pDB->disconnect();
+ }
+}
\ No newline at end of file
diff --git a/SourceCode/Bond/Servo/SECSConfigManager.h b/SourceCode/Bond/Servo/SECSConfigManager.h
new file mode 100644
index 0000000..72c9d01
--- /dev/null
+++ b/SourceCode/Bond/Servo/SECSConfigManager.h
@@ -0,0 +1,46 @@
+#ifndef SECS_CONFIG_MANAGER_H
+#define SECS_CONFIG_MANAGER_H
+
+#include <string>
+#include <vector>
+#include <mutex>
+#include "Database.h"
+
+class SECSConfigManager {
+public:
+ /**
+ * 获取单例实例
+ * @return SECSConfigManager实例的引用
+ */
+ static SECSConfigManager& getInstance();
+
+ /**
+ * 设置数据库连接
+ * @param db 数据库连接的指针
+ */
+ void setDatabase(BL::Database* db);
+
+ /**
+ * 初始化SECS设置管理库
+ * @return 成功返回true,失败返回false
+ */
+ bool initSECSSetting();
+
+ /**
+ * 销毁SECS设置管理库
+ */
+ void termSECSSetting();
+
+private:
+ SECSConfigManager();
+ ~SECSConfigManager();
+
+ // 禁止拷贝和赋值
+ SECSConfigManager(const SECSConfigManager&) = delete;
+ SECSConfigManager& operator=(const SECSConfigManager&) = delete;
+
+ BL::Database* m_pDB;
+ static std::mutex m_mutex;
+};
+
+#endif // SECS_CONFIG_MANAGER_H
\ No newline at end of file
diff --git a/SourceCode/Bond/Servo/Servo.cpp b/SourceCode/Bond/Servo/Servo.cpp
index 495b5e7..d23cb02 100644
--- a/SourceCode/Bond/Servo/Servo.cpp
+++ b/SourceCode/Bond/Servo/Servo.cpp
@@ -7,6 +7,7 @@
#include "ServoDlg.h"
#include "ServoGraph.h"
#include "AlarmManager.h"
+#include "SECSConfigManager.h"
// 声明全局变量,用于管理 GDI+ 初始化
ULONG_PTR g_diplusToken;
@@ -117,6 +118,21 @@
}
+ // 初始化SECS设置管理库
+ try {
+ if (!SECSConfigManager::getInstance().initSECSSetting()) {
+ AfxMessageBox("初始化SECS设置管理库失败!");
+ return FALSE;
+ }
+ }
+ catch (const std::exception& ex) {
+ CString errorMsg;
+ errorMsg.Format(_T("初始化SECS设置管理库失败:%s"), CString(ex.what()));
+ AfxMessageBox(errorMsg, MB_ICONERROR);
+ return FALSE;
+ }
+
+
CServoDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
@@ -159,6 +175,9 @@
// 销毁报警表
AlarmManager::getInstance().termAlarmTable();
+ // 销毁SECS设置管理库
+ SECSConfigManager::getInstance().termSECSSetting();
+
return CWinApp::ExitInstance();
}
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 769631b..48469d7 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -21,7 +21,7 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{66ADACE5-3166-4D1F-B30B-DE5E01FB01A2}</ProjectGuid>
<RootNamespace>Servo</RootNamespace>
- <WindowsTargetPlatformVersion>10.0.22000.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@@ -204,6 +204,7 @@
<ClInclude Include="LogEdit.h" />
<ClInclude Include="Model.h" />
<ClInclude Include="Resource.h" />
+ <ClInclude Include="SECSConfigManager.h" />
<ClInclude Include="SecsTestDlg.h" />
<ClInclude Include="Servo.h" />
<ClInclude Include="ServoDlg.h" />
@@ -223,6 +224,7 @@
<ClCompile Include="LogDlg.cpp" />
<ClCompile Include="LogEdit.cpp" />
<ClCompile Include="Model.cpp" />
+ <ClCompile Include="SECSConfigManager.cpp" />
<ClCompile Include="SecsTestDlg.cpp" />
<ClCompile Include="Servo.cpp" />
<ClCompile Include="ServoDlg.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 55fdacc..435f788 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -1,144 +1,63 @@
锘�<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <Filter Include="婧愭枃浠�">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="澶存枃浠�">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="璧勬簮鏂囦欢">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <Text Include="ReadMe.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="Servo.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="ServoDlg.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="stdafx.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="targetver.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="Resource.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="ServoGraph.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="Model.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="BlButton.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="Common.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="LogDlg.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="LogEdit.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="Configuration.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="Log.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="HsmsPassive.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="HsmsAction.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="Context.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="SecsTestDlg.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- <ClInclude Include="TerminalDisplayDlg.h">
- <ClInclude Include="AlarmManager.h">
- <Filter>澶存枃浠�</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="Servo.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="ServoDlg.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="stdafx.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="ServoGraph.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="Model.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="BlButton.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="LogDlg.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="LogEdit.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="Configuration.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="Log.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="HsmsPassive.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="HsmsAction.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="Context.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="SecsTestDlg.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- <ClCompile Include="TerminalDisplayDlg.cpp">
- <ClCompile Include="AlarmManager.cpp">
- <Filter>婧愭枃浠�</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="Servo.rc">
- <Filter>璧勬簮鏂囦欢</Filter>
- </ResourceCompile>
- </ItemGroup>
- <ItemGroup>
- <None Include="res\Servo.rc2">
- <Filter>璧勬簮鏂囦欢</Filter>
- </None>
- <None Include="packages.config" />
- </ItemGroup>
- <ItemGroup>
- <Image Include="res\Servo.ico">
- <Filter>璧勬簮鏂囦欢</Filter>
- </Image>
+ <Natvis Include="$(MSBuildThisFileDirectory)..\..\natvis\wil.natvis" />
</ItemGroup>
<ItemGroup>
<Manifest Include="res\application.exe.manifest" />
</ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="AlarmManager.cpp" />
+ <ClCompile Include="BlButton.cpp" />
+ <ClCompile Include="Configuration.cpp" />
+ <ClCompile Include="Context.cpp" />
+ <ClCompile Include="HsmsAction.cpp" />
+ <ClCompile Include="HsmsPassive.cpp" />
+ <ClCompile Include="Log.cpp" />
+ <ClCompile Include="LogDlg.cpp" />
+ <ClCompile Include="LogEdit.cpp" />
+ <ClCompile Include="Model.cpp" />
+ <ClCompile Include="SecsTestDlg.cpp" />
+ <ClCompile Include="Servo.cpp" />
+ <ClCompile Include="ServoDlg.cpp" />
+ <ClCompile Include="ServoGraph.cpp" />
+ <ClCompile Include="stdafx.cpp" />
+ <ClCompile Include="TerminalDisplayDlg.cpp" />
+ <ClCompile Include="SECSConfigManager.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="AlarmManager.h" />
+ <ClInclude Include="BlButton.h" />
+ <ClInclude Include="Common.h" />
+ <ClInclude Include="Configuration.h" />
+ <ClInclude Include="Context.h" />
+ <ClInclude Include="HsmsAction.h" />
+ <ClInclude Include="HsmsPassive.h" />
+ <ClInclude Include="Log.h" />
+ <ClInclude Include="LogDlg.h" />
+ <ClInclude Include="LogEdit.h" />
+ <ClInclude Include="Model.h" />
+ <ClInclude Include="Resource.h" />
+ <ClInclude Include="SecsTestDlg.h" />
+ <ClInclude Include="Servo.h" />
+ <ClInclude Include="ServoDlg.h" />
+ <ClInclude Include="ServoGraph.h" />
+ <ClInclude Include="stdafx.h" />
+ <ClInclude Include="targetver.h" />
+ <ClInclude Include="TerminalDisplayDlg.h" />
+ <ClInclude Include="SECSConfigManager.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="Servo.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <Image Include="res\Servo.ico" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ <None Include="res\Servo.rc2" />
+ </ItemGroup>
+ <ItemGroup>
+ <Text Include="ReadMe.txt" />
+ </ItemGroup>
</Project>
\ No newline at end of file
diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index a88bb3d..0b50b45 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/SourceCode/Bond/Servo/ServoDlg.cpp
@@ -9,7 +9,6 @@
#include "Common.h"
#include "Log.h"
#include "SecsTestDlg.h"
-#include "AlarmManager.h"
#include <chrono>
#include <thread>
#include <cmath>
--
Gitblit v1.9.3