浏览代码

git-svn-id: https://202.107.226.68:8443/svn/Services/ResistanceMonitor@99 a05970a1-87b9-9d4f-9ee5-fa77e2ec115b

shenchunzhong 1 年之前
父节点
当前提交
ad6d7ee60f
共有 4 个文件被更改,包括 33 次插入3 次删除
  1. 3 0
      4.Data/AppService.cpp
  2. 1 0
      4.Data/AppService.h
  3. 27 3
      4.Data/ResistAlarm.cpp
  4. 2 0
      4.Data/ResistAlarm.h

+ 3 - 0
4.Data/AppService.cpp

@@ -32,6 +32,7 @@ uint32_t g_tReminderInterval = 21600;
 string g_strMoMp;  //监控日志
 CMyRWLock g_lockSync;  //同步读写锁
 bool  g_bDataCompression;   //历史数据是否压缩
+bool  g_bExternalData;  //是否启用外部数据
 
 C315ClientManager *g_p315ClientManager;
 
@@ -123,6 +124,7 @@ bool CAppService::Start()
 	::GetPrivateProfileString("SET", "momp", "", szTemp, sizeof(szTemp), m_strIniPath);
 	g_strMoMp = szTemp;
 	g_bDataCompression = ::GetPrivateProfileInt("SET", "DataCompression", g_bDataCompression, m_strIniPath);
+	g_bExternalData = ::GetPrivateProfileInt("SET", "ExternalData", g_bExternalData, m_strIniPath);
 
     ::WritePrivateProfileStringA("ODBC", "DRIVER", CStringA(m_strDriver), m_strIniPath);
     ::WritePrivateProfileStringA("ODBC", "SERVER", CStringA(m_strDataSource), m_strIniPath);
@@ -133,6 +135,7 @@ bool CAppService::Start()
 	::WritePrivateProfileString("SET", "reminder_interval", (to_string(g_tReminderInterval) + " #报警提醒间隔").c_str(), m_strIniPath);
 	::WritePrivateProfileString("SET", "momp", g_strMoMp.c_str(), m_strIniPath);
 	::WritePrivateProfileString("SET", "DataCompression", to_string(g_bDataCompression).c_str(), m_strIniPath);
+    ::WritePrivateProfileString("SET", "ExternalData", fmt::format(" #是否采用外部程序分析数据进行智能判断 默认为0 9.6以上").c_str(), m_strIniPath);
 
 	//ODBC
     if (CDBConnectPool::Instance()->Init(m_strDriver, m_strDataSource, m_strUserID, m_strPassWD, m_strCataLog, 5) == FALSE)

+ 1 - 0
4.Data/AppService.h

@@ -27,6 +27,7 @@ extern uint32_t g_tReminderInterval;
 extern string g_strMoMp;
 extern CMyRWLock g_lockSync;
 extern bool  g_bDataCompression;
+extern bool  g_bExternalData;  //ÊÇ·ñÆôÓÃÍⲿÊý¾Ý
 
 typedef struct tagFileData
 {

+ 27 - 3
4.Data/ResistAlarm.cpp

@@ -44,12 +44,20 @@ BOOL CResistAlarmMng::Start()
 	m_bWork = true;
 	m_pThreadAlarmSet = new thread(CResistAlarmMng::ThreadProcAlarmSet, (DWORD_PTR)this);
 	if (m_pThreadAlarmSet == nullptr) return FALSE;
-
+	//ŔëĎßą¨žŻ
 	m_pThreadDevice = new thread(CResistAlarmMng::ThreadProcDevice, (DWORD_PTR)this);
 	if (m_pThreadDevice == nullptr) return FALSE;
 
-	m_pThreadMove = new thread(CResistAlarmMng::ThreadProcMove, (DWORD_PTR)this);
-	if (m_pThreadMove == nullptr) return FALSE;
+	if (g_bExternalData)
+	{
+		m_pThreadMove = new thread(CResistAlarmMng::ThreadProcMoveFromDB, (DWORD_PTR)this);
+		if (m_pThreadMove == nullptr) return FALSE;
+	}
+	else
+	{
+		m_pThreadMove = new thread(CResistAlarmMng::ThreadProcMove, (DWORD_PTR)this);
+		if (m_pThreadMove == nullptr) return FALSE;
+	}
 
 	return TRUE;
 }
@@ -3337,6 +3345,22 @@ void CResistAlarmMng::ThreadProcMove(DWORD_PTR param)
 	}
 }
 
+void CResistAlarmMng::ThreadProcMoveFromDB(DWORD_PTR param)
+{
+	auto pService = (CResistAlarmMng*)param;
+	auto ctNow = CTime::GetCurrentTime();
+	Sleep(2000);
+	auto pDBConn = CDBConnectPool::Instance()->GetConnection();
+	do 
+	{
+		Sleep(100);   //Ăż100ms ťńČĄŇť´Î
+
+
+
+	} while (pService->m_bWork);
+	CDBConnectPool::Instance()->FreeConnection(pDBConn);
+}
+
 BOOL CResistAlarmMng::LoadAlarmSet()
 {
 	CString sql = "SELECT [mo],[mp],[no],[type],[conf],[time] FROM [rm_alarm_set]";

+ 2 - 0
4.Data/ResistAlarm.h

@@ -234,6 +234,8 @@ private:
 	static void ThreadProcDevice(DWORD_PTR);
 	//扳动线程检测线程
 	static void ThreadProcMove(DWORD_PTR);
+	//搬动线程外部数据线程
+	static void ThreadProcMoveFromDB(DWORD_PTR);
 
 	BOOL LoadAlarmSet();