Эх сурвалжийг харах

1.0.9.10
1、按照需求文件7.8中的第二点需求修改,添加了下层通讯功能
2、自动修改数据库rm_deviceinfo,按照数据库结构3.0版本修改

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

chenyu 1 жил өмнө
parent
commit
d5fbb54997
3 өөрчлөгдсөн 84 нэмэгдсэн , 11 устгасан
  1. 38 1
      4.Data/Device.cpp
  2. 12 6
      4.Data/Device.h
  3. 34 4
      4.Data/LNHandle.cpp

+ 38 - 1
4.Data/Device.cpp

@@ -15,7 +15,44 @@ CDevice::CDevice()
 CDevice::~CDevice()
 {
 }
-
+// 写入传感器的状态信息
+bool CDevice::InsertStatus(const SENSOR_STATUS st[9][2], const int dt[9][2])
+{
+	CString sql;
+	sql.Format("UPDATE RM_DEVICEINFO "
+		"set st0 = %d,"
+		"st1 = %d,"
+		"st2 = %d,"
+		"st3 = %d,"
+		"st4 = %d,"
+		"st5 = %d,"
+		"st6 = %d,"
+		"st7 = %d,"
+		"st8 = %d,"
+		"dt0 = %d,"
+		"dt1 = %d,"
+		"dt2 = %d,"
+		"dt3 = %d,"
+		"dt4 = %d,"
+		"dt5 = %d,"
+		"dt6 = %d,"
+		"dt7 = %d,"
+		"dt8 = %d"
+		" where imei = '%s';",
+		st[0][0], st[1][0], st[2][0], st[3][0],
+		st[4][0], st[5][0], st[6][0], st[7][0],
+		st[8][0],
+		dt[0][0], dt[1][0], dt[2][0], dt[3][0],
+		dt[4][0], dt[5][0], dt[6][0], dt[7][0],
+		dt[8][0],
+		this->imei.c_str());
+	if (false == CDBConnectPool::Instance()->DBExecuteSQL(sql))
+	{
+		CSimpleLog::Error("执行语句失败" + sql);
+		return false;
+	}
+	return true;
+}
 
 void CDevice::Insert(int index, time_t time, int data0, int data1, int data2)
 {

+ 12 - 6
4.Data/Device.h

@@ -18,7 +18,9 @@ enum class SENSOR_STATUS : int8_t
 {
 	UNKONW = -1,
 	ABNORMAL = 0,
-	NORMAL = 1
+	NORMAL = 1,
+	HFDISTURB = 2,//高频干扰
+	FIXEDVALUE = 3 //固定值异常
 };
 
 class CDevice
@@ -28,6 +30,10 @@ public:
 	virtual ~CDevice();
 
 	void Insert(int index, time_t time, int data0, int data1, int data2);
+
+	// 插入设备的状态信息,数据来自push_online指令
+	bool InsertStatus(const SENSOR_STATUS st[9][2], const int dt[9][2]);
+
 	//调用Insert数据插入完 来判断是否需要插入数据  返回false 不需要  返回true 需要
 	inline bool CalcBInsertData(int index, time_t* time, int* data0, int* data1, int* data2)
 	{
@@ -249,9 +255,9 @@ public:
 				m_mapSecondStatInfo21[tmStartTimeSecond] = stSS2;
 				m_mapSecondStatInfo22[tmStartTimeSecond] = stSS3;
 				break;
-			default:
-				ASSERT(0);
-				bSave = false;
+			default:
+				ASSERT(0);
+				bSave = false;
 				break;
 			}
 		}
@@ -461,8 +467,8 @@ public:
 			return m_tmUpdateTime1;
 		case 2:
 			return m_tmUpdateTime2;
-		default:
-			ASSERT(0);
+		default:
+			ASSERT(0);
 			return 0;
 		}
 	}

+ 34 - 4
4.Data/LNHandle.cpp

@@ -1124,11 +1124,35 @@ BOOL CLNHandle::HandlePushOnline(const rapidjson::Document& doc, const char* ime
 			if (st[j].IsInt() == false) continue;
 			if (st[j].GetInt() == 0)
 				sensor_status[i][j] = SENSOR_STATUS::ABNORMAL;
-			else
+			else if (st[j].GetInt() == 1)
+				sensor_status[i][j] = SENSOR_STATUS::NORMAL;
+			else if (st[j].GetInt() == 2)
 				sensor_status[i][j] = SENSOR_STATUS::NORMAL;
+			else if (st[j].GetInt() == 3)
+				sensor_status[i][j] = SENSOR_STATUS::HFDISTURB;
+			else if(st[j].GetInt() == 3)
+				sensor_status[i][j] = SENSOR_STATUS::FIXEDVALUE;
+			else
+				sensor_status[i][j] = SENSOR_STATUS::ABNORMAL; //不认识的状态
 		}
 	}
+	// 获取dt数据
+	int sensor_time_chip_status[9][2] = { 0 };
+	for (int i = 0; i < 9; i++)
+	{
+		sprintf_s(key, 10, "dt%d", i);
+		if (doc.HasMember(key) == false || doc[key].IsArray() == false)
+			continue;
 
+		auto dt = doc[key].GetArray();
+		for (int j = 0; j < dt.Size() && j < 2; j++)
+		{
+			if (dt[j].IsInt() == false) continue;
+			sensor_time_chip_status[i][j] = dt[j].GetInt();
+		}
+	}
+	// 写入设备传感器的状态信息
+	pDevice->InsertStatus(sensor_status, sensor_time_chip_status);
 
 	for (int i = 0; i < 9; i++)
 	{
@@ -1137,11 +1161,11 @@ BOOL CLNHandle::HandlePushOnline(const rapidjson::Document& doc, const char* ime
 			const auto& tt = sensor_status[i][j];
 			auto& src_tt = pDevice->m_sensor_status[i][j];
 			bool bNew = false, bConver = false;
-			if (src_tt != SENSOR_STATUS::UNKONW && tt == src_tt) 
+			if (src_tt != SENSOR_STATUS::UNKONW && tt == src_tt) //状态没有变化,不做处理
 				continue;
-			if (tt == SENSOR_STATUS::NORMAL && src_tt == SENSOR_STATUS::ABNORMAL) //恢复
+			if (tt == SENSOR_STATUS::NORMAL && src_tt != SENSOR_STATUS::NORMAL) //恢复
 				bConver = true;
-			else if (tt == SENSOR_STATUS::ABNORMAL && src_tt == SENSOR_STATUS::NORMAL) //产生
+			else if (tt != SENSOR_STATUS::NORMAL && src_tt == SENSOR_STATUS::NORMAL) //产生
 				bNew = true;
 			else if (src_tt == SENSOR_STATUS::UNKONW && tt == SENSOR_STATUS::ABNORMAL)
 				bNew = true;
@@ -1184,6 +1208,11 @@ BOOL CLNHandle::HandlePushOnline(const rapidjson::Document& doc, const char* ime
 			
 			SYSTEMTIME stNow;
 			GetLocalTime(&stNow);
+			
+
+
+			// 不做报警处理,记录数据库中
+			/*
 			//报警发送
 			if (bNew)
 			{
@@ -1200,6 +1229,7 @@ BOOL CLNHandle::HandlePushOnline(const rapidjson::Document& doc, const char* ime
 				//g_p315ClientManager->GetTcpClient()->SendAlarmData(CMonitorObjectMng::Instance()->GetZZJNO(mo + '.' + mp), 2, CTime(stNow).GetTime(), CTime(stNow).GetTime(),
 				//	eZL_ALARMTYPE::SENSOR_ABNORMAL, eDaoChaPosi::DCP_UNKNOWN, 0, 0, TIEDA_ACQ_VALUE(INT_MIN), TIEDA_ACQ_VALUE(INT_MIN), 0);
 			}
+			*/
 		}
 	}