darker
2025-02-11 9b2d1e962bf802f75c44c1f5372fc4cf029e3f4e
1. 添加SECS运行设置管理类
已添加3个文件
已修改4个文件
321 ■■■■■ 文件已修改
Document/VID 表格.zip 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/SECSConfigManager.cpp 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/SECSConfigManager.h 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.cpp 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.filters 191 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.cpp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Document/VID ±í¸ñ.zip
Binary files differ
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();
    }
}
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
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();
}
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" />
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>
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>