Compare commits

...

4 Commits
main ... temp

@ -37,6 +37,10 @@
#define MAX_PATH 260 #define MAX_PATH 260
#endif #endif
#ifndef _MAX_DIR
#define _MAX_DIR 256
#endif
// use buffer size define // use buffer size define
#define DEF_BUFFER_32 32 #define DEF_BUFFER_32 32
#define DEF_BUFFER_64 64 #define DEF_BUFFER_64 64

@ -171,7 +171,7 @@ typedef struct {
time_t iLastTime; // 最近一次链接时间 time_t iLastTime; // 最近一次链接时间
time_t iLastActionTime;// 最近一次活动时间 time_t iLastActionTime;// 最近一次活动时间
time_t iLastAlaarmTime; // 最近一次链接告警时间 time_t iLastAlaarmTime; // 最近一次链接告警时间
IedModel *IedModel; // Ä£Ð;ä±ú IedModel *tIedModel; // Ä£Ð;ä±ú
}ST_IED_CONN_HANDLE; }ST_IED_CONN_HANDLE;
// iec61850 录播文件属性定义 // iec61850 录播文件属性定义

@ -39,7 +39,7 @@ extern "C" {
#ifdef LOG_DEBUG #ifdef LOG_DEBUG
#undef LOG_DEBUG #undef LOG_DEBUG
#endif #endif
#define __LOG_DEBUG 0 // 跟踪日志 #define __LOG_DEBUG 1 // 跟踪日志
#define LOG_DEBUG __LINE__, _FILE_, __LOG_DEBUG #define LOG_DEBUG __LINE__, _FILE_, __LOG_DEBUG
#ifdef LOG_WARNG #ifdef LOG_WARNG

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -15,7 +15,7 @@ static const char *_FILE_ = "HTBusiDatabase.cpp";
/******************************************************************************* /*******************************************************************************
** Function Name : vLoadCommunicationConf ** Function Name : vLoadCommunicationConf
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD>
** Parameter In : None ** Parameter In : None
** param name : ** param name :
** Parameter Out : None ** Parameter Out : None
@ -46,8 +46,8 @@ void vLoadCommunicationConf()
while (row = pdbHandle->GetRecord(res)) while (row = pdbHandle->GetRecord(res))
{ {
if (row[0] && strlen(row[0]) > 0) { if (row[0] && strlen(row[0]) > 0) {
if (atoi(row[0]) == 1) g_TConfig.setCommProtocol(1); // 通信模式 1:modbus if (atoi(row[0]) == 1) g_TConfig.setCommProtocol(1); // ͨ<EFBFBD><EFBFBD>ģʽ 1:modbus
if (atoi(row[0]) == 2) g_TConfig.setCommProtocol(2); // 通信模式 2:61850 if (atoi(row[0]) == 2) g_TConfig.setCommProtocol(2); // ͨ<EFBFBD><EFBFBD>ģʽ 2:61850
} }
if (row[1] && strlen(row[1]) > 0) { if (row[1] && strlen(row[1]) > 0) {
g_TConfig.setModbusRtuPort(row[1]); // COMx g_TConfig.setModbusRtuPort(row[1]); // COMx
@ -56,7 +56,7 @@ void vLoadCommunicationConf()
g_TConfig.setModbusBaud(atoi(row[2])); // baud g_TConfig.setModbusBaud(atoi(row[2])); // baud
} }
if (row[3] && strlen(row[3]) > 0) { if (row[3] && strlen(row[3]) > 0) {
g_TConfig.setModbusParity(row[3][0]); // parity bit N=无 O=奇 E=偶 g_TConfig.setModbusParity(row[3][0]); // parity bit N=<EFBFBD><EFBFBD> O=<3D><> E=ż
} }
if (row[4] && strlen(row[4]) > 0) { if (row[4] && strlen(row[4]) > 0) {
g_TConfig.setModbusDataBit(atoi(row[4])); // data bit 6,7,8 g_TConfig.setModbusDataBit(atoi(row[4])); // data bit 6,7,8
@ -84,7 +84,7 @@ void vLoadCommunicationConf()
return; return;
} }
// 加载传感器基本信息 // <EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
void vLoadBaseDeviceInfo() void vLoadBaseDeviceInfo()
{ {
char szSql[DEF_BUFFER_1K] = { 0 }; char szSql[DEF_BUFFER_1K] = { 0 };
@ -143,10 +143,10 @@ void vLoadBaseDeviceInfo()
m_pIter = g_map_device.find((char*)strKey.c_str()); m_pIter = g_map_device.find((char*)strKey.c_str());
if (m_pIter == g_map_device.end()) if (m_pIter == g_map_device.end())
{ {
// 新配置数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_map_device.insert(map<string, ST_DEVICE_INFO>::value_type(strKey, stThres)); g_map_device.insert(map<string, ST_DEVICE_INFO>::value_type(strKey, stThres));
} }
else { // 更新配置 else { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_pIter->second, &stThres, sizeof(ST_DEVICE_INFO)); memcpy(&m_pIter->second, &stThres, sizeof(ST_DEVICE_INFO));
} }
mutex_unlock(g_map_device_mutex); mutex_unlock(g_map_device_mutex);
@ -156,7 +156,7 @@ void vLoadBaseDeviceInfo()
} }
/******************************************************************************* /*******************************************************************************
** Function Name : vLoadAmpliDeviceThreshold ** Function Name : vLoadAmpliDeviceThreshold
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
** Parameter In : None ** Parameter In : None
** param name : ** param name :
** Parameter Out : None ** Parameter Out : None
@ -238,10 +238,10 @@ void vLoadAmpliDeviceThreshold()
m_pIter = g_thres_conf.find((char*)strKey.c_str()); m_pIter = g_thres_conf.find((char*)strKey.c_str());
if (m_pIter == g_thres_conf.end()) if (m_pIter == g_thres_conf.end())
{ {
// 新配置数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_thres_conf.insert(map<string, ST_THRES_CONF>::value_type(strKey, stThres)); g_thres_conf.insert(map<string, ST_THRES_CONF>::value_type(strKey, stThres));
} }
else { // 更新配置 else { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_pIter->second, &stThres, sizeof(ST_THRES_CONF)); memcpy(&m_pIter->second, &stThres, sizeof(ST_THRES_CONF));
} }
mutex_unlock(g_thres_conf_mutex); mutex_unlock(g_thres_conf_mutex);
@ -252,7 +252,7 @@ void vLoadAmpliDeviceThreshold()
/******************************************************************************* /*******************************************************************************
** Function Name : vLoadNoiseDeviceThreshold ** Function Name : vLoadNoiseDeviceThreshold
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
** Parameter In : None ** Parameter In : None
** param name : ** param name :
** Parameter Out : None ** Parameter Out : None
@ -318,10 +318,10 @@ void vLoadNoiseDeviceThreshold()
m_pIter = g_thres_conf.find((char*)stThres.szSensorID); m_pIter = g_thres_conf.find((char*)stThres.szSensorID);
if (m_pIter == g_thres_conf.end()) if (m_pIter == g_thres_conf.end())
{ {
// 新配置数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_thres_conf.insert(map<string, ST_THRES_CONF>::value_type(strKey, stThres)); g_thres_conf.insert(map<string, ST_THRES_CONF>::value_type(strKey, stThres));
} }
else { // 更新配置 else { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_pIter->second, &stThres, sizeof(ST_THRES_CONF)); memcpy(&m_pIter->second, &stThres, sizeof(ST_THRES_CONF));
} }
mutex_unlock(g_thres_conf_mutex); mutex_unlock(g_thres_conf_mutex);
@ -332,7 +332,7 @@ void vLoadNoiseDeviceThreshold()
/******************************************************************************* /*******************************************************************************
** Function Name : vLoadCenterDeviceThreshold ** Function Name : vLoadCenterDeviceThreshold
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
** Parameter In : None ** Parameter In : None
** param name : ** param name :
** Parameter Out : None ** Parameter Out : None
@ -397,10 +397,10 @@ void vLoadCenterDeviceThreshold()
m_pIter = g_thres_conf.find((char*)stThres.szSensorID); m_pIter = g_thres_conf.find((char*)stThres.szSensorID);
if (m_pIter == g_thres_conf.end()) if (m_pIter == g_thres_conf.end())
{ {
// 新配置数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_thres_conf.insert(map<string, ST_THRES_CONF>::value_type(strKey, stThres)); g_thres_conf.insert(map<string, ST_THRES_CONF>::value_type(strKey, stThres));
} }
else { // 更新配置 else { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_pIter->second, &stThres, sizeof(ST_THRES_CONF)); memcpy(&m_pIter->second, &stThres, sizeof(ST_THRES_CONF));
} }
mutex_unlock(g_thres_conf_mutex); mutex_unlock(g_thres_conf_mutex);
@ -409,7 +409,7 @@ void vLoadCenterDeviceThreshold()
return; return;
} }
// 加载控制参数 // <EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
void vLoadDeviceCtrlParam() void vLoadDeviceCtrlParam()
{ {
char szSql[DEF_BUFFER_1K] = { 0 }; char szSql[DEF_BUFFER_1K] = { 0 };
@ -467,10 +467,10 @@ void vLoadDeviceCtrlParam()
m_pIter = g_ctrl_conf.find((char*)stCtrl.szSensorID); m_pIter = g_ctrl_conf.find((char*)stCtrl.szSensorID);
if (m_pIter == g_ctrl_conf.end()) if (m_pIter == g_ctrl_conf.end())
{ {
// 新配置数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_ctrl_conf.insert(map<string, ST_CONTROL_CONF>::value_type(strKey, stCtrl)); g_ctrl_conf.insert(map<string, ST_CONTROL_CONF>::value_type(strKey, stCtrl));
} }
else { // 更新配置 else { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_pIter->second, &stCtrl, sizeof(ST_CONTROL_CONF)); memcpy(&m_pIter->second, &stCtrl, sizeof(ST_CONTROL_CONF));
} }
mutex_unlock(g_ctrl_conf_mutex); mutex_unlock(g_ctrl_conf_mutex);
@ -479,16 +479,16 @@ void vLoadDeviceCtrlParam()
return; return;
} }
// 加载ICD配置节点与传感器绑定关系 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ICD<EFBFBD><EFBFBD><EFBFBD>ýڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󶨹<EFBFBD>ϵ
void vLoadICDParameterBind() void vLoadICDParameterBind()
{ {
char szSql[DEF_BUFFER_1K] = { 0 }; char szSql[DEF_BUFFER_1K] = { 0 };
map<string, ST_PARAM_BIND>::iterator m_pIter; map<string, ST_PARAM_BIND>::iterator m_pIter;
CDBMySQL *pdbHandle = CDBMySQL::Instance(); CDBMySQL *pdbHandle = CDBMySQL::Instance();
if (!pdbHandle) return; if (!pdbHandle) return;
// 监测类型: 1=振动监测值 2=振动告警 3=噪声监测值 4=噪声告警 5=中心点监测 6=中心点告警 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 1=<3D>񶯼<EFBFBD><F1B6AFBC>ֵ 2=<3D>񶯸澯 3=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 4=<3D><><EFBFBD><EFBFBD><EFBFBD>澯 5=<3D><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD> 6=<3D><><EFBFBD>ĵ<EFBFBD>
sprintf(szSql, "select b.sensor_code, b.nodeid,b.frequency,b.nodename,b.monitype,p.nodetype from busi_iedparam p,busi_param_bind b " sprintf(szSql, "select b.sensor_code, b.node_id,b.frequency,b.node_name,b.monitype,p.node_type from busi_iedparam p,busi_param_bind b "
"where p.nodename=b.nodename"); "where p.node_name=b.node_name");
MYSQL_RES *res = pdbHandle->SelectRecord(szSql); MYSQL_RES *res = pdbHandle->SelectRecord(szSql);
if (!res) return; if (!res) return;
@ -513,19 +513,19 @@ void vLoadICDParameterBind()
strKey = stBind.nodename; strKey = stBind.nodename;
} }
if (row[4] && strlen(row[4]) > 0) { if (row[4] && strlen(row[4]) > 0) {
stBind.monitype = row[4][0]; // 监测类型: 1=振动监测值 2=振动告警 3=噪声监测值 4=噪声告警 5=中心点监测 6=中心点告警 stBind.monitype = row[4][0]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 1=<3D>񶯼<EFBFBD><F1B6AFBC>ֵ 2=<3D>񶯸澯 3=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 4=<3D><><EFBFBD><EFBFBD><EFBFBD>澯 5=<3D><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD> 6=<3D><><EFBFBD>ĵ<EFBFBD>
} }
if (row[5] && strlen(row[5]) > 0) { if (row[5] && strlen(row[5]) > 0) {
strcpy(stBind.nodetype, row[5]); // 节点类型 MX,ST,SE strcpy(stBind.nodetype, row[5]); // <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MX,ST,SE
} }
mutex_lock(g_map_parambind_mutex); mutex_lock(g_map_parambind_mutex);
m_pIter = g_map_parambind.find((char*)stBind.nodename); m_pIter = g_map_parambind.find((char*)stBind.nodename);
if (m_pIter == g_map_parambind.end()) if (m_pIter == g_map_parambind.end())
{ {
// 新配置数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_map_parambind.insert(map<string, ST_PARAM_BIND>::value_type(strKey, stBind)); g_map_parambind.insert(map<string, ST_PARAM_BIND>::value_type(strKey, stBind));
} }
else { // 更新配置 else { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_pIter->second, &stBind, sizeof(ST_PARAM_BIND)); memcpy(&m_pIter->second, &stBind, sizeof(ST_PARAM_BIND));
} }
mutex_unlock(g_map_parambind_mutex); mutex_unlock(g_map_parambind_mutex);
@ -535,7 +535,7 @@ void vLoadICDParameterBind()
} }
// 添加Ied不能连接的告警消息 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĸ澯<EFBFBD><EFBFBD>Ϣ
void vSetIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime) void vSetIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime)
{ {
char szTime[32] = { 0 }; char szTime[32] = { 0 };
@ -545,15 +545,15 @@ void vSetIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime)
return; return;
} }
vTranHostTimeFmt(altime, szTime); vTranHostTimeFmt(altime, szTime);
_snprintf(szSql, sizeof(szSql), "INSERT INTO busi_warning(id,sub_id,warn_time,warn_type,load_type,warn_desc,warn_level,state) " snprintf(szSql, sizeof(szSql), "INSERT INTO busi_warning(id,sub_id,warn_time,warn_type,load_type,warn_desc,warn_level,state) "
"VALUES(guuid(), '%s', '%s','1', '1','%s:%d,Ied链接异常断开,请检查!', '0','1')", "VALUES(guuid(), '%s', '%s','1', '1','%s:%d,Ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>,<2C><><EFBFBD><EFBFBD>!', '0','1')",
"", szTime, Ied_ip, port); "", szTime, Ied_ip, port);
vPrtLogMsg(LOG_DEBUG, RET_OK, "insert Warning: %s", szSql); vPrtLogMsg(LOG_DEBUG, RET_OK, "insert Warning: %s", szSql);
if (!pdbHandle->InsertRecord((const char *)szSql)) { if (!pdbHandle->InsertRecord((const char *)szSql)) {
vPrtLogMsg(LOG_ERROR, RET_FAIL, "INSERT INTO warning message failed,SQL:%s", szSql); vPrtLogMsg(LOG_ERROR, RET_FAIL, "INSERT INTO warning message failed,SQL:%s", szSql);
} }
} }
// 删除Ied服务不能连接的告警消息 // ɾ<EFBFBD><EFBFBD>Ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĸ澯<EFBFBD><EFBFBD>Ϣ
void vDelIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime) void vDelIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime)
{ {
int i = 0; int i = 0;
@ -563,9 +563,9 @@ void vDelIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime)
return; return;
} }
vTranHostTimeFmt(altime, szTime); vTranHostTimeFmt(altime, szTime);
_snprintf(szSql, sizeof(szSql), "update busi_warning set process='network check', process_time=sysdate()," snprintf(szSql, sizeof(szSql), "update busi_warning set process='network check', process_time=sysdate(),"
"process_user='system' where warn_type='1' and warn_level='0' and state = '1' and warn_time='%s' " "process_user='system' where warn_type='1' and warn_level='0' and state = '1' and warn_time='%s' "
"warn_desc = '%s:%d,Ied链接异常断开,请检查!' ", szTime, Ied_ip, port); "warn_desc = '%s:%d,Ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>,<2C><><EFBFBD><EFBFBD>!' ", szTime, Ied_ip, port);
vPrtLogMsg(LOG_DEBUG, RET_OK, "update Warning: %s", szSql); vPrtLogMsg(LOG_DEBUG, RET_OK, "update Warning: %s", szSql);
if (!pdbHandle->InsertRecord((const char *)szSql)) { if (!pdbHandle->InsertRecord((const char *)szSql)) {
vPrtLogMsg(LOG_ERROR, RET_FAIL, "update warning message failed,SQL:%s", szSql); vPrtLogMsg(LOG_ERROR, RET_FAIL, "update warning message failed,SQL:%s", szSql);
@ -573,7 +573,7 @@ void vDelIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime)
} }
// 插入数据 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void vSetRealDevicesMoniMesg(ST_DB_BODY *pData) void vSetRealDevicesMoniMesg(ST_DB_BODY *pData)
{ {
int i = 0; int i = 0;
@ -583,22 +583,25 @@ void vSetRealDevicesMoniMesg(ST_DB_BODY *pData)
return; return;
} }
vTranHostTimeFmt(pData->dtime, szTime); vTranHostTimeFmt(pData->dtime, szTime);
// 1:振动装置 2 : 噪声装置 3 : 中心点装置 // 1:<3A><>װ<EFBFBD><D7B0> 2 : <20><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0> 3 : <20><><EFBFBD>ĵ<EFBFBD>װ<EFBFBD><D7B0>
if (pData->szDevType == 1) {
_snprintf(szSql, sizeof(szSql), "insert into busi_ampli_real(id, file_id,main_id,sub_id,side,phase,in_out," vPrtLogMsg(LOG_DEBUG, RET_OK, "rensichao insert type: %d", pData->szDevType);
if (pData->szDevType == '1') {
snprintf(szSql, sizeof(szSql), "insert into busi_ampli_real(id, file_id,main_id,sub_id,side,phase,in_out,"
"frequency,max_amplitude,ins_time) " "frequency,max_amplitude,ins_time) "
"values(guuid(), '%s', '%s', '%s', '%c', '%c', '%c', '%s', '%.4f', '%s') ", "values(guuid(), '%s', '%s', '%s', '%c', '%c', '%c', '%s', '%.4f', '%s') ",
pData->file_id, pData->m_id, pData->s_id, pData->side, pData->phase, pData->in_out, pData->file_id, pData->m_id, pData->s_id, pData->side, pData->phase, pData->in_out,
pData->szFrequency, pData->value, szTime); pData->szFrequency, pData->value, szTime);
vPrtLogMsg(LOG_DEBUG, RET_OK, "insert busi_ampli_real: %s", szSql); vPrtLogMsg(LOG_DEBUG, RET_OK, "insert busi_ampli_real: %s", szSql);
} }
else if (pData->szDevType == 2) { else if (pData->szDevType == '2') {
_snprintf(szSql, sizeof(szSql), "insert into busi_noise_real(id, main_id,max_amplitude,ins_time) " snprintf(szSql, sizeof(szSql), "insert into busi_noise_real(id, main_id,max_amplitude,ins_time) "
"values(guuid(), '%s','%.4f', '%s') ", "values(guuid(), '%s','%.4f', '%s') ",
pData->m_id, pData->value, szTime); pData->m_id, pData->value, szTime);
} }
else if (pData->szDevType == 3) { else if (pData->szDevType == '3') {
_snprintf(szSql, sizeof(szSql), "insert into busi_center_real(id, main_id,max_amplitude,ins_time) " snprintf(szSql, sizeof(szSql), "insert into busi_center_real(id, main_id,max_amplitude,ins_time) "
"values(guuid(), '%s','%.4f', '%s') ", "values(guuid(), '%s','%.4f', '%s') ",
pData->m_id, pData->value, szTime); pData->m_id, pData->value, szTime);
} }
@ -607,7 +610,7 @@ void vSetRealDevicesMoniMesg(ST_DB_BODY *pData)
} }
} }
// 传感器上传的告警消息入库 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD>ĸ澯<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>
void vSetRealDevicesWarnMesg(ST_DB_WARN &stWarn) void vSetRealDevicesWarnMesg(ST_DB_WARN &stWarn)
{ {
char szTime[32] = { 0 }; char szTime[32] = { 0 };
@ -617,7 +620,7 @@ void vSetRealDevicesWarnMesg(ST_DB_WARN &stWarn)
return; return;
} }
vTranHostTimeFmt(stWarn.almtime, szTime); vTranHostTimeFmt(stWarn.almtime, szTime);
_snprintf(szSql, sizeof(szSql), "INSERT INTO busi_warning(id,sub_id,warn_time,warn_type,warn_desc,warn_level,state,sample_value,value_unit) " snprintf(szSql, sizeof(szSql), "INSERT INTO busi_warning(id,sub_id,warn_time,warn_type,warn_desc,warn_level,state,sample_value,value_unit) "
"VALUES(guuid(), '%s', '%s','%d', '%s', '%d','%d','%.4f','%s')", "VALUES(guuid(), '%s', '%s','%d', '%s', '%d','%d','%.4f','%s')",
"", stWarn.s_id, szTime, stWarn.warn_type, stWarn.szDesc,stWarn.level,stWarn.state,stWarn.value,stWarn.valunit); "", stWarn.s_id, szTime, stWarn.warn_type, stWarn.szDesc,stWarn.level,stWarn.state,stWarn.value,stWarn.valunit);
vPrtLogMsg(LOG_DEBUG, RET_OK, "insert Warning: %s", szSql); vPrtLogMsg(LOG_DEBUG, RET_OK, "insert Warning: %s", szSql);
@ -634,7 +637,7 @@ void vSetRealDevicesWarnMesg(ST_DB_WARN &stWarn)
// 显示阈值配置信息 // <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
void vPrtDeviceThresholdConf() void vPrtDeviceThresholdConf()
{ {
int i = 0; int i = 0;
@ -655,14 +658,14 @@ void vPrtDeviceThresholdConf()
(m_pIter->second).dThreshold, (m_pIter->second).dThreshold,
((m_pIter->second).szFrequency), ((m_pIter->second).szFrequency),
(m_pIter->second).bPhase == 0 ? '-' : (m_pIter->second).bPhase, (m_pIter->second).bPhase == 0 ? '-' : (m_pIter->second).bPhase,
((m_pIter->second).bSide == 'P' ? "原边" : ((m_pIter->second).bSide == 'S' ? "副边":"-")), ((m_pIter->second).bSide == 'P' ? "ԭ<EFBFBD><EFBFBD>" : ((m_pIter->second).bSide == 'S' ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>":"-")),
((m_pIter->second).bInOut == 'U' ? "上侧" : ((m_pIter->second).bInOut == 'D' ? "下侧" : "-"))); ((m_pIter->second).bInOut == 'U' ? "<EFBFBD>ϲ<EFBFBD>" : ((m_pIter->second).bInOut == 'D' ? "<EFBFBD>²<EFBFBD>" : "-")));
m_pIter++; i++; m_pIter++; i++;
} }
vPrtLogMsg(LOG_DEBUG, RET_OK, "--------------- Print device threshold_size:%d-----------", g_thres_conf.size()); vPrtLogMsg(LOG_DEBUG, RET_OK, "--------------- Print device threshold_size:%d-----------", g_thres_conf.size());
mutex_unlock(g_thres_conf_mutex); mutex_unlock(g_thres_conf_mutex);
} }
// 显示传感器控制参数 // <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
void vPrtDeviceCtrlParam() void vPrtDeviceCtrlParam()
{ {
int i = 0; int i = 0;
@ -684,14 +687,14 @@ void vPrtDeviceCtrlParam()
(m_pIter->second).SmpProd, (m_pIter->second).SmpProd,
(m_pIter->second).SmpInt, (m_pIter->second).SmpInt,
(m_pIter->second).StartTime, (m_pIter->second).StartTime,
((m_pIter->second).alone == true ? "TRUE" : "FLAS")); //0:分 1 : 合 ((m_pIter->second).alone == true ? "TRUE" : "FLAS")); //0:<EFBFBD><EFBFBD> 1 : <20><>
m_pIter++; i++; m_pIter++; i++;
} }
vPrtLogMsg(LOG_DEBUG, RET_OK, "--------------- Print device control parameter_size:%d-----------", g_ctrl_conf.size()); vPrtLogMsg(LOG_DEBUG, RET_OK, "--------------- Print device control parameter_size:%d-----------", g_ctrl_conf.size());
mutex_unlock(g_ctrl_conf_mutex); mutex_unlock(g_ctrl_conf_mutex);
} }
// 显示传感器控制参数 // <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
void vPrtICDParameterBind() void vPrtICDParameterBind()
{ {
int i = 0; int i = 0;
@ -713,7 +716,7 @@ void vPrtICDParameterBind()
(m_pIter->second).SmpProd, (m_pIter->second).SmpProd,
(m_pIter->second).SmpInt, (m_pIter->second).SmpInt,
(m_pIter->second).StartTime, (m_pIter->second).StartTime,
((m_pIter->second).alone == true ? "TRUE" : "FLAS")); //0:分 1 : 合 ((m_pIter->second).alone == true ? "TRUE" : "FLAS")); //0:<EFBFBD><EFBFBD> 1 : <20><>
m_pIter++; i++; m_pIter++; i++;
} }
vPrtLogMsg(LOG_DEBUG, RET_OK, "--------------- Print device control parameter_size:%d-----------", g_ctrl_conf.size()); vPrtLogMsg(LOG_DEBUG, RET_OK, "--------------- Print device control parameter_size:%d-----------", g_ctrl_conf.size());

@ -80,7 +80,7 @@ bool CDBMySQL::dbConnectPool()
char value = 1; char value = 1;
MYSQL *pMySql = mysql_init((MYSQL*)NULL); MYSQL *pMySql = mysql_init((MYSQL*)NULL);
//mysql_options(pMySql, MYSQL_SET_CHARSET_NAME, "gbk"); //mysql_options(pMySql, MYSQL_SET_CHARSET_NAME, "gbk");
mysql_options(pMySql, MYSQL_OPT_RECONNECT, (char *)&value); //设置自动连接 mysql_options(pMySql, MYSQL_OPT_RECONNECT, (char *)&value); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pMySql != NULL) if (pMySql != NULL)
{ {
if (!mysql_real_connect(pMySql,m_host,m_user,m_password,m_db,m_port,NULL,0)) if (!mysql_real_connect(pMySql,m_host,m_user,m_password,m_db,m_port,NULL,0))
@ -115,7 +115,7 @@ MYSQL* CDBMySQL::GetIdleMySql()
if (pMySql ) { if (pMySql ) {
m_lsIdleList.pop_front(); m_lsIdleList.pop_front();
m_lsBusyList.push_back(pMySql); m_lsBusyList.push_back(pMySql);
mysql_ping(pMySql); // 检查连接是否正常 mysql_ping(pMySql); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} }
} }
else else
@ -138,7 +138,7 @@ void CDBMySQL::SetIdleMysql(MYSQL* pMySql)
} }
//bStart = false : close auto commit //bStart = false : close auto commit
// = true : open auto commit // = true : open auto commit
bool CDBMySQL::dbAutoCommit(MYSQL *pMysql, bool bStart) // 开始事务处理 bool CDBMySQL::dbAutoCommit(MYSQL *pMysql, bool bStart) // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ {
return mysql_autocommit(pMysql, bStart) ? false : true; return mysql_autocommit(pMysql, bStart) ? false : true;
} }
@ -181,8 +181,8 @@ bool CDBMySQL::InsertRecordBitch(const char pszSql[][256], int count)
{ {
return false; return false;
} }
dbAutoCommit(pMySql, false); // 开始批量提交事务 dbAutoCommit(pMySql, false); // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//mysql_query(pMySql, "START TRANSACTION"); // 开启事务, 如果没有开启事务,那么效率会变得非常低下! //mysql_query(pMySql, "START TRANSACTION"); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>û<EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôЧ<C3B4>ʻ<EFBFBD><CABB>÷dz<C3B7><C7B3><EFBFBD><EFBFBD>£<EFBFBD>
// return 0: successed !0: failed // return 0: successed !0: failed
for (int n = 0; n < count; n++) for (int n = 0; n < count; n++)
{ {
@ -195,7 +195,7 @@ bool CDBMySQL::InsertRecordBitch(const char pszSql[][256], int count)
} }
} }
dbCommit(pMySql); dbCommit(pMySql);
dbAutoCommit(pMySql, true); // 结束批量提交事务 dbAutoCommit(pMySql, true); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetIdleMysql(pMySql); SetIdleMysql(pMySql);
return bRet; return bRet;

@ -74,7 +74,7 @@ IedModel *LoadModelConfigFile(char *icd_file)
// } // }
// pNodeSpl = pNodeSpl->sibling; // pNodeSpl = pNodeSpl->sibling;
//} //}
printf_s("Node:%s\n", szNodeStr.c_str()); printf("Node:%s\n", szNodeStr.c_str());
printf((const char*)"Node: %s\n", szNodeStr.c_str()); printf((const char*)"Node: %s\n", szNodeStr.c_str());
printf("Node: %s\n", szSipl.c_str()); printf("Node: %s\n", szSipl.c_str());
}//IedModel_getModelNodeByObjectReference(model, iedModel_MONT); }//IedModel_getModelNodeByObjectReference(model, iedModel_MONT);
@ -319,8 +319,8 @@ void setComtradeFile(IedConnection con, const char *filename)
char szFileName[MAX_PATH] = { 0 }; char szFileName[MAX_PATH] = { 0 };
char szRemotePath[260]; char szRemotePath[260];
char* dirc = _strdup(filename); char* dirc =strdup(filename);
char* basec = _strdup(filename); char* basec = strdup(filename);
char* localDirName = getDirName(dirc, szDirName); char* localDirName = getDirName(dirc, szDirName);
char* localFileName = getBaseName(basec, szFileName); char* localFileName = getBaseName(basec, szFileName);
@ -383,7 +383,7 @@ void getComtradeFile(IedConnection con)
vPrtLogMsg(LOG_DEBUG, 0, "getComtradeFiles file_count= %d", g_list_comtrad_files.size()); vPrtLogMsg(LOG_DEBUG, 0, "getComtradeFiles file_count= %d", g_list_comtrad_files.size());
memcpy(&stFiles, &(*ptr), sizeof(ST_FILES_ATTRIB)); memcpy(&stFiles, &(*ptr), sizeof(ST_FILES_ATTRIB));
char* bname = _strdup((const char*)stFiles.szFileName); char* bname = strdup((const char*)stFiles.szFileName);
char* localFilename = getBaseName(bname, szLocalFile); char* localFilename = getBaseName(bname, szLocalFile);
strcpy(szFilePath, g_TConfig.getComtradePath()); strcpy(szFilePath, g_TConfig.getComtradePath());
strcat(szFilePath, "/"); strcat(szFilePath, "/");
@ -461,7 +461,7 @@ void vDownLoadComtradeFiles(ST_IED_CONN_HANDLE &stIedCon)
showComtradeFile(stIedCon.hConnHandle, g_TConfig.getIEDComtradePath()); // 查看待下载的文件列表 showComtradeFile(stIedCon.hConnHandle, g_TConfig.getIEDComtradePath()); // 查看待下载的文件列表
getComtradeFile(stIedCon.hConnHandle); // 下载文件 getComtradeFile(stIedCon.hConnHandle); // 下载文件
setComtradeFile(stIedCon.hConnHandle, "etc/setting.ini"); setComtradeFile(stIedCon.hConnHandle, "../etc/setting.ini");
// 解析录播文件并入库 // 解析录播文件并入库
memset(&stFiles, 0x00, sizeof(ST_FILES_ATTRIB)); memset(&stFiles, 0x00, sizeof(ST_FILES_ATTRIB));
while (!g_list_comtrad_files.empty() || g_list_comtrad_files.size() > 0) while (!g_list_comtrad_files.empty() || g_list_comtrad_files.size() > 0)
@ -478,7 +478,7 @@ void vDownLoadComtradeFiles(ST_IED_CONN_HANDLE &stIedCon)
memcpy(&stFiles, &(g_list_comtrad_files.back()), sizeof(ST_FILES_ATTRIB)); // 由尾取出 memcpy(&stFiles, &(g_list_comtrad_files.back()), sizeof(ST_FILES_ATTRIB)); // 由尾取出
g_list_comtrad_files.pop_back(); // 由尾删除 g_list_comtrad_files.pop_back(); // 由尾删除
mutex_unlock(g_list_comtrad_files_mutex); mutex_unlock(g_list_comtrad_files_mutex);
//unPackComtradeFile(stFiles.szFileName); // 解析文件并入库 unPackComtradeFile(stFiles.szFileName); // 解析文件并入库 by rensichao
} }
printf("file download and parser complate....\n"); printf("file download and parser complate....\n");
@ -649,39 +649,46 @@ void vIedFreeIedEvent(ST_IED_CONN_HANDLE &stIedHandle)
IedConnection_destroy(stIedHandle.hConnHandle); IedConnection_destroy(stIedHandle.hConnHandle);
} }
stIedHandle.hConnHandle = NULL; stIedHandle.hConnHandle = NULL;
if (stIedHandle.IedModel) { if (stIedHandle.tIedModel) {
IedModel_destroy(stIedHandle.IedModel); IedModel_destroy(stIedHandle.tIedModel);
} }
stIedHandle.IedModel = NULL; stIedHandle.tIedModel = NULL;
} }
// 根据icd节点名称获取传感器绑定关系 // 根据icd节点名称获取传感器绑定关系
bool bGetDeviceBindRelationship(char *pNodeName, ST_DB_BODY &pDb, ST_DEVICE_INFO &stBaseInfo) bool bGetDeviceBindRelationship(char *pNodeName, ST_DB_BODY &pDb, ST_DEVICE_INFO &stBaseInfo)
{ {
vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 1.");
map<string, ST_PARAM_BIND>::iterator m_pIter; map<string, ST_PARAM_BIND>::iterator m_pIter;
mutex_lock(g_map_parambind_mutex); //mutex_lock(g_map_parambind_mutex);
m_pIter = g_map_parambind.find((char*)pNodeName); m_pIter = g_map_parambind.find((char*)pNodeName);
vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 2.");
if (m_pIter == g_map_parambind.end()) { if (m_pIter == g_map_parambind.end()) {
vPrtLogMsg(LOG_WARNG, RET_FAIL, "can not found:[%s] bind device information.", pNodeName); vPrtLogMsg(LOG_WARNG, RET_FAIL, "can not found:[%s] bind device information.", pNodeName);
return false; return false;
} }
strcpy(pDb.szSensorID, (*m_pIter).second.sensorid); strcpy(pDb.szSensorID, m_pIter->second.sensorid);
strcpy(pDb.szFrequency , (*m_pIter).second.szFrequency); strcpy(pDb.szFrequency , m_pIter->second.szFrequency);
mutex_unlock(g_map_parambind_mutex); //mutex_unlock(g_map_parambind_mutex);
vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 3 [%s] [%s].",m_pIter->second.sensorid,m_pIter->second.szFrequency);
string strKey = pDb.szSensorID; string strKey = pDb.szSensorID;
if (strlen(pDb.szFrequency) > 0) { // 无频率时为噪声和中心点传感器 //vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 3 [%c][%c][%s][%s].",strKey[0],pDb.szSensorID[0],strKey,pDb.szSensorID);
strKey.append("-").append(pDb.szFrequency); //if (strlen(pDb.szFrequency) > 0) { // 无频率时为噪声和中心点传感器
} // strKey.append("-").append(pDb.szFrequency);
//}
map<string, ST_DEVICE_INFO>::iterator m_pTIter; map<string, ST_DEVICE_INFO>::iterator m_pTIter;
mutex_lock(g_map_device_mutex); //mutex_lock(g_map_device_mutex);
vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 4 [%s].",(char*)strKey.c_str());
m_pTIter = g_map_device.find((char*)strKey.c_str()); m_pTIter = g_map_device.find((char*)strKey.c_str());
if (m_pTIter == g_map_device.end()) { if (m_pTIter == g_map_device.end()) {
vPrtLogMsg(LOG_WARNG, RET_FAIL, "can not found:[%s],objname:[%s] threshold setting.", pDb.szSensorID, pNodeName); vPrtLogMsg(LOG_WARNG, RET_FAIL, "can not found:[%s],objname:[%s] threshold setting.", pDb.szSensorID, pNodeName);
return false; return false;
} }
vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 5.");
memcpy(&stBaseInfo, &(*m_pTIter).second, sizeof(ST_DEVICE_INFO)); memcpy(&stBaseInfo, &(*m_pTIter).second, sizeof(ST_DEVICE_INFO));
mutex_unlock(g_map_device_mutex); //mutex_unlock(g_map_device_mutex);
vPrtLogMsg(LOG_WARNG, 0, "rensichao add list 6.");
return true ; return true ;
} }
// 获取振动,噪声,中心点监测值 // 获取振动,噪声,中心点监测值
@ -704,17 +711,21 @@ bool getIEDMoniValue(IedConnection conn, ST_PARAM_BIND &stBind, ST_IED_VALUES &s
IedClientError error; IedClientError error;
char szTime[32] = { 0 }; char szTime[32] = { 0 };
bool ret = false; bool ret = false;
vPrtLogMsg(LOG_WARNG, 0, "rensichao read [%s] \n", stBind.nodetype);
if (stringncasecmp((const char*)stBind.monitype, "MX", 2)) if (!stringncasecmp((const char*)stBind.nodetype, "MX", 2))
fc = IEC61850_FC_MX; {fc = IEC61850_FC_MX;
else if(stringncasecmp((const char*)stBind.monitype, "ST", 2)) vPrtLogMsg(LOG_WARNG, 0, "rensichao read fc [%d] \n", fc);}
else if(!stringncasecmp((const char*)stBind.nodetype, "ST", 2))
fc = IEC61850_FC_ST; fc = IEC61850_FC_ST;
else if(stringncasecmp((const char*)stBind.monitype, "SE", 2)) else if(!stringncasecmp((const char*)stBind.nodetype, "SE", 2))
fc = IEC61850_FC_SE; fc = IEC61850_FC_SE;
else { else {
vPrtLogMsg(LOG_WARNG, 0, "read [%s],nodetype[MX|ST|SE] unkown!", stBind.nodename); vPrtLogMsg(LOG_WARNG, 0, "read [%s],nodetype[MX|ST|SE] unkown!", stBind.nodename);
return false; return false;
} }
//vPrtLogMsg(LOG_WARNG, 0, "read [%s],[%d]\n", stBind.nodename,fc);
MmsValue* value = IedConnection_readObject(conn, &error, stBind.nodename, fc); MmsValue* value = IedConnection_readObject(conn, &error, stBind.nodename, fc);
if (value != NULL && error == 0) { if (value != NULL && error == 0) {
int n = MmsValue_getArraySize(value); int n = MmsValue_getArraySize(value);
@ -754,6 +765,7 @@ bool getIEDMoniValue(IedConnection conn, ST_PARAM_BIND &stBind, ST_IED_VALUES &s
break; break;
default: default:
vPrtLogMsg(LOG_WARNG, error, "read [%s], value type unkown!", stBind.nodename); vPrtLogMsg(LOG_WARNG, error, "read [%s], value type unkown!", stBind.nodename);
vPrtLogMsg(LOG_WARNG, error, "rensichao read [%s], read [%d]", stBind.nodename, MmsValue_getType(value));
} }
MmsValue_delete(value); MmsValue_delete(value);
} }
@ -789,15 +801,18 @@ bool getAlarmValue(IedConnection conn, char *pobjname,FunctionalConstraint fc)
void Add_SetList(ST_DB_BODY *pData, ST_DEVICE_INFO *pstBase) void Add_SetList(ST_DB_BODY *pData, ST_DEVICE_INFO *pstBase)
{ {
ST_DB_BODY stSetData; ST_DB_BODY stSetData;
vPrtLogMsg(LOG_DEBUG, 0, "rensichao confirm add_setlist");
memset(&stSetData, 0x00, sizeof(ST_DB_BODY)); memset(&stSetData, 0x00, sizeof(ST_DB_BODY));
memcpy(&stSetData, pData, sizeof(ST_DB_BODY)); memcpy(&stSetData, pData, sizeof(ST_DB_BODY));
strcpy(stSetData.m_id, pstBase->szMID); strcpy(stSetData.m_id, pstBase->szMID);
strcpy(stSetData.s_id, pstBase->szSID);
stSetData.in_out = pstBase->cInOut; stSetData.in_out = pstBase->cInOut;
stSetData.phase = pstBase->cPhase; stSetData.phase = pstBase->cPhase;
stSetData.side = pstBase->cSide; stSetData.side = pstBase->cSide;
stSetData.szDevType = pstBase->cDevType; stSetData.szDevType = pstBase->cDevType;
vPrtLogMsg(LOG_DEBUG, 0, "rensichao confirm database %s,%c,%c,%c,%d",stSetData.m_id,stSetData.in_out,stSetData.phase,stSetData.side,stSetData.szDevType);
mutex_lock(g_list_db_body_mutex); mutex_lock(g_list_db_body_mutex);
g_list_db_body.push_front(stSetData); g_list_db_body.push_front(stSetData);
@ -874,12 +889,22 @@ void vGetFCMXData_YC(IedConnection conn)
memset(&stBody, 0x00, sizeof(ST_DB_BODY)); memset(&stBody, 0x00, sizeof(ST_DB_BODY));
memset(&stBase, 0x00, sizeof(ST_DEVICE_INFO)); memset(&stBase, 0x00, sizeof(ST_DEVICE_INFO));
memcpy(&m_pIter->second, &stBind, sizeof(ST_PARAM_BIND));
if(false == getIEDMoniValue(conn, stBind, stIedVal)) continue; // 取振幅值 memcpy(&stBind, &m_pIter->second, sizeof(ST_PARAM_BIND));
vPrtLogMsg(LOG_WARNG, 0, "rensichao read pIter [%s] \n", stBind.nodetype);
if(false == getIEDMoniValue(conn, stBind, stIedVal))
{
continue; // 取振幅值
}
stBody.value = stIedVal.MX_f; stBody.value = stIedVal.MX_f;
bGetDeviceBindRelationship(stBind.nodename, stBody, stBase); stBody.dtime = time(NULL);
vPrtLogMsg(LOG_WARNG, 0, "rensichao read add list [%d] \n", stBody.value);
if(false==bGetDeviceBindRelationship(stBind.nodename, stBody, stBase)) continue;
vPrtLogMsg(LOG_WARNG, 0, "rensichao read add list midddle[%d] \n", stBody.value);
Add_SetList(&stBody,&stBase); Add_SetList(&stBody,&stBase);
vPrtLogMsg(LOG_WARNG, 0, "rensichao read add list end[%s] \n", stBind.nodetype);
// 预警判断 // 预警判断
ST_DB_WARN stWarn; ST_DB_WARN stWarn;
@ -1211,4 +1236,4 @@ void vGetDataSetList(IedConnection conn)
ClientReportControlBlock_destroy(rcb); ClientReportControlBlock_destroy(rcb);
#endif #endif
} }

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
** File name : HTIEC61850Thread.cpp ** File name : HTIEC61850Thread.cpp
** Description : IEC 61850 API ** Description : IEC 61850 <EFBFBD><EFBFBD>API
** ** <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** Create date : 2019.09.01 ** Create date : 2019.09.01
** Auther by : Liuyx ** Auther by : Liuyx
** Version info : V1.0.01 ** Version info : V1.0.01
@ -21,12 +21,13 @@ static const char *_FILE_ = "HTIEC61850Thread.cpp";
** parameter : none ** parameter : none
** return code : NULL ** return code : NULL
***************************************************************************/ ***************************************************************************/
void *thread_cache_proc(void *arg) // 同步内存数据线程 void *thread_cache_proc(void *arg) // ͬ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
{ {
vPrtLogMsg(LOG_DEBUG, 0, "thread_cache_proc = %d startup...", GETTID()); vPrtLogMsg(LOG_DEBUG, 0, "thread_cache_proc = %d startup...", GETTID());
while (g_Running) while (g_Running)
{ {
vLoadDeviceCtrlParam(); vLoadDeviceCtrlParam();
vLoadBaseDeviceInfo();// by rensihcao
vLoadAmpliDeviceThreshold(); vLoadAmpliDeviceThreshold();
vLoadNoiseDeviceThreshold(); vLoadNoiseDeviceThreshold();
vLoadCenterDeviceThreshold(); vLoadCenterDeviceThreshold();
@ -68,14 +69,14 @@ void *thread_iec61850_client_proc(void *arg)
while (g_Running && (IED_STATE_CONNECTED == IedConnection_getState(stIedConn.hConnHandle))) while (g_Running && (IED_STATE_CONNECTED == IedConnection_getState(stIedConn.hConnHandle)))
{ {
//vGetRemoteIEDModelConfig(stIedConn.hConnHandle); // 从IED获取icd模型 //vGetRemoteIEDModelConfig(stIedConn.hConnHandle); // <EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD>ȡicdģ<EFBFBD><EFBFBD>
//vSetFCSEData_CTRL(stIedConn.hConnHandle); // 下设控制参数 //vSetFCSEData_CTRL(stIedConn.hConnHandle); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
/* read an analog measurement value from server */ /* read an analog measurement value from server */
vGetFCMXData_YC(stIedConn.hConnHandle); // 读取遥测数据-监测值 vGetFCMXData_YC(stIedConn.hConnHandle); // <EFBFBD><EFBFBD>ȡң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD>ֵ
//vGetFCMXData_YX(stIedConn.hConnHandle); // 读取遥信数据-告警位 //vGetFCMXData_YX(stIedConn.hConnHandle); // <EFBFBD><EFBFBD>ȡң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>澯λ
//vDownLoadComtradeFiles(stIedConn); // 下载录播文件 vDownLoadComtradeFiles(stIedConn); // <20><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD>
_SLEEP(1000 * 60); _SLEEP(1000 * 60);
vPrtLogMsg(LOG_DEBUG, 0, "Get once monitor data complate..."); vPrtLogMsg(LOG_DEBUG, 0, "Get once monitor data complate...");
} }
@ -129,9 +130,9 @@ void *thread_iec61850_manager_proc(void *arg)
mutex_unlock(g_MapIedConn_mutex); mutex_unlock(g_MapIedConn_mutex);
} }
mutex_lock(g_MapIedConn_mutex); mutex_lock(g_MapIedConn_mutex);
if (!(*m_pIter).second.IedModel) { if (!(*m_pIter).second.tIedModel) {
(*m_pIter).second.IedModel = LoadModelConfigFile(g_TConfig.getIEDModelConfigFile()); (*m_pIter).second.tIedModel = LoadModelConfigFile(g_TConfig.getIEDModelConfigFile());
if ((*m_pIter).second.IedModel == NULL) { if ((*m_pIter).second.tIedModel == NULL) {
vPrtLogMsg(LOG_ERROR, 0, "Load model config failed,model_file=%s", g_TConfig.getIEDModelConfigFile()); vPrtLogMsg(LOG_ERROR, 0, "Load model config failed,model_file=%s", g_TConfig.getIEDModelConfigFile());
mutex_unlock(g_MapIedConn_mutex); mutex_unlock(g_MapIedConn_mutex);
return NULL; return NULL;
@ -143,7 +144,7 @@ void *thread_iec61850_manager_proc(void *arg)
(*m_pIter).second.hConnHandle = IedConnection_create(); (*m_pIter).second.hConnHandle = IedConnection_create();
} }
// 建立通信链路 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
IedConnection_connect((*m_pIter).second.hConnHandle, &error, (*m_pIter).second.ied_addr, (*m_pIter).second.ied_port); IedConnection_connect((*m_pIter).second.hConnHandle, &error, (*m_pIter).second.ied_addr, (*m_pIter).second.ied_port);
if (error != IED_ERROR_OK) { if (error != IED_ERROR_OK) {
vPrtLogMsg(LOG_ERROR, error, "Failed to connect to %s:%i, try again later...", vPrtLogMsg(LOG_ERROR, error, "Failed to connect to %s:%i, try again later...",
@ -169,14 +170,14 @@ void *thread_iec61850_manager_proc(void *arg)
// Уʱ // Уʱ
// 上传配置 // <EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
setComtradeFile((*m_pIter).second.hConnHandle, "etc/setting.ini"); setComtradeFile((*m_pIter).second.hConnHandle, "../etc/setting.ini");
pthread_t thread_handle_minor_recv = -1; pthread_t thread_handle_minor_recv = -1;
#ifndef _WIN32 #ifndef _WIN32
pthread_attr_t attr; pthread_attr_t attr;
pthread_attr_init(&attr); pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // 创建一个分离子线程,接收数据线程 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
#endif #endif
ht_pthread_create_background(&thread_handle_minor_recv, thread_iec61850_client_proc, (void*)&(*m_pIter).second); ht_pthread_create_background(&thread_handle_minor_recv, thread_iec61850_client_proc, (void*)&(*m_pIter).second);
#ifndef _WIN32 #ifndef _WIN32
@ -216,8 +217,8 @@ void* thread_database_proc(void * arg)
_SLEEP(MAX_SLEEP_EMPTY * 10); _SLEEP(MAX_SLEEP_EMPTY * 10);
continue; continue;
} }
memcpy(&stData, &(g_list_db_body.back()), sizeof(ST_DB_BODY)); // 由尾取出 memcpy(&stData, &(g_list_db_body.back()), sizeof(ST_DB_BODY)); // <EFBFBD><EFBFBD>βȡ<EFBFBD><EFBFBD>
g_list_db_body.pop_back(); // 由尾删除 g_list_db_body.pop_back(); // <EFBFBD><EFBFBD>βɾ<EFBFBD><EFBFBD>
mutex_unlock(g_list_db_body_mutex); mutex_unlock(g_list_db_body_mutex);
vSetRealDevicesMoniMesg(&stData); vSetRealDevicesMoniMesg(&stData);
@ -249,8 +250,8 @@ void* thread_dbalarm_proc(void * arg)
_SLEEP(MAX_SLEEP_EMPTY * 10); _SLEEP(MAX_SLEEP_EMPTY * 10);
continue; continue;
} }
memcpy(&stAlarm, &(g_list_db_warn.back()), sizeof(ST_DB_WARN)); // 由尾取出 memcpy(&stAlarm, &(g_list_db_warn.back()), sizeof(ST_DB_WARN)); // <EFBFBD><EFBFBD>βȡ<EFBFBD><EFBFBD>
g_list_db_warn.pop_back(); // 由尾删除 g_list_db_warn.pop_back(); // <EFBFBD><EFBFBD>βɾ<EFBFBD><EFBFBD>
mutex_unlock(g_list_db_warn_mutex); mutex_unlock(g_list_db_warn_mutex);
vSetRealDevicesWarnMesg(stAlarm); vSetRealDevicesWarnMesg(stAlarm);

@ -13,6 +13,7 @@
****************************************************************************/ ****************************************************************************/
#include "HTGlobal.h" #include "HTGlobal.h"
#include "HTMmsMapping.h" #include "HTMmsMapping.h"
#include "mms/mmslite/glbtypes.h"
static const char *_FILE_ = "HTMmslite.cpp"; static const char *_FILE_ = "HTMmslite.cpp";

@ -37,8 +37,8 @@ int iGetPid()
} }
/**************************************************************** /****************************************************************
** Description : / ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>/Ŀ¼<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** param in : pszName -- /,FileName / PathName ** param in : pszName -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>/Ŀ¼,FileName / PathName
** : ** :
** param out : None ** param out : None
** return code : 0 -- exist ** return code : 0 -- exist
@ -98,8 +98,8 @@ char* getDirName(char* path, char *dirname)
return dirname; return dirname;
} }
/**************************************************************** /****************************************************************
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
** param in : pNmae -- ** param in : pNmae -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** : ** :
** param out : None ** param out : None
** return code : <0 -- failed ** return code : <0 -- failed
@ -122,12 +122,12 @@ int iBuildDirent(const char *pName)
return iRet; return iRet;
} }
// 移动文件到指定目录(备份文件) // <EFBFBD>ƶ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
bool bMoveFile(char *filename, char *pBakPath) bool bMoveFile(char *filename, char *pBakPath)
{ {
char *p = NULL, *s = NULL, *t = NULL; char *p = NULL, *s = NULL, *t = NULL;
char szCmd[1024] = { 0 }; char szCmd[1024] = { 0 };
// 文件名格式sersorID_time.jpg 或 ../img/sersorid_time.jpg // <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>sersorID_time.jpg <20><> ../img/sersorid_time.jpg
if (filename && pBakPath) if (filename && pBakPath)
{ {
if (iDirOrFileExist(pBakPath)) if (iDirOrFileExist(pBakPath))
@ -145,8 +145,8 @@ bool bMoveFile(char *filename, char *pBakPath)
return false; return false;
} }
/**************************************************************** /****************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>С
** param in : pNmae -- ** param in : pNmae -- <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** : ** :
** param out : None ** param out : None
** return code : <0 -- failed ** return code : <0 -- failed
@ -163,8 +163,8 @@ int get_file_size(const char *path)
return filesize; return filesize;
} }
/**************************************************************** /****************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : pNmae -- ** param in : pNmae -- <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** : ** :
** param out : pCreateTime -- YYYY-MM-DD HH24:MI:SS ** param out : pCreateTime -- YYYY-MM-DD HH24:MI:SS
** return code : <=0 -- failed ** return code : <=0 -- failed
@ -188,22 +188,22 @@ int getFileCreateTime(const char *path, char *pCreateTime)
return (int)statbuff.st_size ; return (int)statbuff.st_size ;
} }
/**************************************************************** /****************************************************************
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ȫ·<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** param in : pFullPath -- ** param in : pFullPath -- ·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** : ** :
** param out : pFilename -- ** param out : pFilename -- <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
** pExt -- ** <EFBFBD><EFBFBD>pExt -- <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>
** return code : <0 -- failed ** return code : <0 -- failed
****************************************************************/ ****************************************************************/
bool bSplitFilenameByFullPath(char *pFullPath, char *pPrantPath, char *pFilename, char *pExt) bool bSplitFilenameByFullPath(char *pFullPath, char *pPrantPath, char *pFilename, char *pExt)
{ {
char *p, *s; char *p, *s;
// 文件名格式sersorID_time.jpg 或 ../img/sersorid_time.jpg // <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>sersorID_time.jpg <20><> ../img/sersorid_time.jpg
if (pFullPath && strlen(pFullPath) > 1) { if (pFullPath && strlen(pFullPath) > 1) {
p = pFullPath + strlen((const char*)pFullPath); p = pFullPath + strlen((const char*)pFullPath);
while (*p != '\\' && *p != '/' && p != pFullPath) p--; while (*p != '\\' && *p != '/' && p != pFullPath) p--;
strncpy(pPrantPath, pFullPath, p - pFullPath + 1); // 父目录名称 strncpy(pPrantPath, pFullPath, p - pFullPath + 1); // <EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s = p + 1; s = p + 1;
while (*s != '.') s++; while (*s != '.') s++;
if (*s != '.') strcpy(pFilename, p + 1); if (*s != '.') strcpy(pFilename, p + 1);
@ -217,22 +217,22 @@ bool bSplitFilenameByFullPath(char *pFullPath, char *pPrantPath, char *pFilename
} }
/**************************************************************** /****************************************************************
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ȫ·<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
** param in : pFullPath -- ** param in : pFullPath -- ·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** : ** :
** param out : pFilename -- ** param out : pFilename -- <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
** pExt -- ** <EFBFBD><EFBFBD>pExt -- <EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>
** return code : <0 -- failed ** return code : <0 -- failed
****************************************************************/ ****************************************************************/
bool bSplitFilenameByPath(char *pFullPath, char *pPrantPath, char *pFilename) bool bSplitFilenameByPath(char *pFullPath, char *pPrantPath, char *pFilename)
{ {
char *p, *s; char *p, *s;
// 文件名格式sersorID_time.jpg 或 ../img/sersorid_time.jpg // <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>sersorID_time.jpg <20><> ../img/sersorid_time.jpg
if (pFullPath && strlen(pFullPath) > 1) { if (pFullPath && strlen(pFullPath) > 1) {
p = pFullPath + strlen((const char*)pFullPath); p = pFullPath + strlen((const char*)pFullPath);
while (*p != '\\' && *p != '/' && p != pFullPath) p--; while (*p != '\\' && *p != '/' && p != pFullPath) p--;
strncpy(pPrantPath, pFullPath, p - pFullPath + 1); // 父目录名称 strncpy(pPrantPath, pFullPath, p - pFullPath + 1); // <EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pPrantPath[p - pFullPath + 1] = 0x00; pPrantPath[p - pFullPath + 1] = 0x00;
s = p + 1; s = p + 1;
@ -243,7 +243,7 @@ bool bSplitFilenameByPath(char *pFullPath, char *pPrantPath, char *pFilename)
return false; return false;
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : ǰ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
** param in : pstr -- source string end=0x00 ** param in : pstr -- source string end=0x00
** : node -- split char ** : node -- split char
** : no -- index filed ** : no -- index filed
@ -255,18 +255,18 @@ int iGetFileBeforString(char *pinstr, int pstrlen, char *poutstr)
{ //0312B12000042A383000022_001_01_20190906123640.dat { //0312B12000042A383000022_001_01_20190906123640.dat
char *p = NULL, *s = pinstr; char *p = NULL, *s = pinstr;
// 文件名称的时间之前最小长度0312B12000042A383000022_001_01_ // <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʱ<EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0312B12000042A383000022_001_01_
if (pinstr && pstrlen > 1) { if (pinstr && pstrlen > 1) {
p = pinstr + strlen((const char*)pinstr); p = pinstr + strlen((const char*)pinstr);
while (*p != '_' && p != pinstr) p--; while (*p != '_' && p != pinstr) p--;
strncpy(poutstr, pinstr, p - pinstr + 1); // 父目录名称 strncpy(poutstr, pinstr, p - pinstr + 1); // <EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
poutstr[p - pinstr + 1] = 0x00; poutstr[p - pinstr + 1] = 0x00;
} }
return (p - pinstr + 1); return (p - pinstr + 1);
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyymmddhhmmss) ** param out : pszTime -- string time(yyyymmddhhmmss)
** return code : None ** return code : None
@ -293,7 +293,7 @@ void vGetHostTimeOnMillsecond(char *pszTime)
return; return;
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss+xxxx) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss+xxxx)
** return code : None ** return code : None
@ -321,7 +321,7 @@ time_t vGetHostTimeFmtOnMillsecond(char *pszTime)
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyymmddhhmmss) ** param out : pszTime -- string time(yyyymmddhhmmss)
** return code : None ** return code : None
@ -339,8 +339,8 @@ void vGetHostTime (char *pszTime)
return ; return ;
} }
/*********************************************************************** /***********************************************************************
** Description : int ** Description : <EFBFBD><EFBFBD>intʱ<EFBFBD><EFBFBD>תΪ<EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
** param in : c -- (s) ** param in : c -- ʱ<EFBFBD><EFBFBD><EFBFBD>(s)
** param out : pszTime -- string time(DD(day) hh:mm:ss) ** param out : pszTime -- string time(DD(day) hh:mm:ss)
** return code : None ** return code : None
***********************************************************************/ ***********************************************************************/
@ -354,10 +354,10 @@ void diffTimes(unsigned int c, char *pszTime)
sprintf(pszTime, "%02d(day) %02d:%02d:%02d",day, hour, min, sec); sprintf(pszTime, "%02d(day) %02d:%02d:%02d",day, hour, min, sec);
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD>
** param in : bcd_t -- BCD(YYMMDDHHMISS) ** param in : bcd_t -- BCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(YYMMDDHHMISS)
** param out : none ** param out : none
** return code : ** return code : <EFBFBD><EFBFBD>ֵ
***********************************************************************/ ***********************************************************************/
int getCurrTimeDiff(unsigned char *bcd_t) int getCurrTimeDiff(unsigned char *bcd_t)
{ {
@ -368,7 +368,7 @@ int getCurrTimeDiff(unsigned char *bcd_t)
return int(time(NULL)- strTime2int((char*)szTime)); return int(time(NULL)- strTime2int((char*)szTime));
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -386,7 +386,7 @@ time_t vGetHostTimeFmt (char *pszTime)
return t; return t;
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -405,7 +405,7 @@ time_t vGetHostTimeFmtBeforBay(char *pszTime, int beforbay)
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -425,7 +425,7 @@ time_t vGeOneDayTimeFmt(char *pSTime, char *pETime)
} }
/*********************************************************************** /***********************************************************************
** Description : ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -438,7 +438,7 @@ unsigned int uiTime (void)
} }
/*********************************************************************** /***********************************************************************
** Description : time_t ** Description : ת<EFBFBD><EFBFBD>time_t<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : t ** param in : t
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -452,8 +452,8 @@ void vTranHostTimeFmt (time_t t, char *pszTime)
tms.tm_hour, tms.tm_min, tms.tm_sec); tms.tm_hour, tms.tm_min, tms.tm_sec);
} }
/***************************************************************** /*****************************************************************
** Description: ** Description: ʱ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** param in : pszTime -- (yyyy-mm-dd 24hh:mm:ss) ** param in : pszTime -- ʱ<EFBFBD>(yyyy-mm-dd 24hh:mm:ss)
** param out : None ** param out : None
** return code: uintTime ** return code: uintTime
*****************************************************************/ *****************************************************************/
@ -481,7 +481,7 @@ time_t strTimeFmt2int(char *pszTime)
return t1; return t1;
} }
/*********************************************************************** /***********************************************************************
** Description : 360 ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD>֮ǰ360Сʱ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>
** param in : t ** param in : t
** param out : pSTime -- string time(yyyymmddhh24mmss) ** param out : pSTime -- string time(yyyymmddhh24mmss)
** param out : pETime -- string time(yyyymmddhh24mmss) ** param out : pETime -- string time(yyyymmddhh24mmss)
@ -499,15 +499,15 @@ void getCurrentBefor360Hour(char *pstime, char *petime)
tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec); tm.tm_hour, tm.tm_min, tm.tm_sec);
curTime = curTime - (360 * 60 * 60); // 360小时之前的时间 curTime = curTime - (360 * 60 * 60); // 360Сʱ֮ǰ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
memcpy(&tm, localtime((const time_t *)&curTime), sizeof(struct tm)); memcpy(&tm, localtime((const time_t *)&curTime), sizeof(struct tm));
sprintf(pstime, "%04d%02d%02d%02d%02d%02d", sprintf(pstime, "%04d%02d%02d%02d%02d%02d",
tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec); tm.tm_hour, tm.tm_min, tm.tm_sec);
} }
/***************************************************************** /*****************************************************************
** Description: ** Description: ʱ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** param in : pszTime -- (yyyymmddhhmmss) ** param in : pszTime -- ʱ<EFBFBD>(yyyymmddhhmmss)
** param out : None ** param out : None
** return code: uintTime ** return code: uintTime
*****************************************************************/ *****************************************************************/
@ -535,20 +535,20 @@ time_t strTime2int(char *pszTime)
return t1 ; return t1 ;
} }
#if 0 #if 0
// 日月年(dmyy), 年的表示是先将年转换为2位十六进制数 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(dmyy), <20><>ı<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>ת<EFBFBD><D7AA>Ϊ2λʮ<CEBB><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void setPostionDate(unsigned char *pDate, unsigned char *pTime) void setPostionDate(unsigned char *pDate, unsigned char *pTime)
{ {
unsigned char szDate[5]={0}; unsigned char szDate[5]={0};
unsigned short usNo = 0; unsigned short usNo = 0;
// 20130109 // 20130109
memcpy(szDate, pDate+6, 2); // memcpy(szDate, pDate+6, 2); // <EFBFBD><EFBFBD>
memcpy(szDate+2, pDate+4, 2); // memcpy(szDate+2, pDate+4, 2); // <EFBFBD><EFBFBD>
asc_to_bcd(szDate, 4, pTime); asc_to_bcd(szDate, 4, pTime);
memcpy(szDate, pDate, 4); memcpy(szDate, pDate, 4);
usNo = htons(atoi((char*)szDate)); usNo = htons(atoi((char*)szDate));
memcpy(pTime+2, &usNo, sizeof(short)); // memcpy(pTime+2, &usNo, sizeof(short)); // <EFBFBD><EFBFBD>
} }
// pDate = HH24MMSS // pDate = HH24MMSS
void setPostionTime(unsigned char *pDate, unsigned char *pTime) void setPostionTime(unsigned char *pDate, unsigned char *pTime)
@ -558,22 +558,22 @@ void setPostionTime(unsigned char *pDate, unsigned char *pTime)
memcpy(pTime, szTmp, 3); memcpy(pTime, szTmp, 3);
} }
#else #else
// 日月年(dmyy), 年的表示是先将年转换为2位十六进制数 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(dmyy), <20><>ı<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>ת<EFBFBD><D7AA>Ϊ2λʮ<CEBB><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void setPostionDate(unsigned char *pDate, unsigned char *pTime) void setPostionDate(unsigned char *pDate, unsigned char *pTime)
{ {
char szDate[5]={0}; char szDate[5]={0};
unsigned short usNo = 0; unsigned short usNo = 0;
// 20130109 // 20130109
memcpy(szDate, pDate+6, 2); // memcpy(szDate, pDate+6, 2); // <EFBFBD><EFBFBD>
pTime[0] = (char)atoi(szDate); pTime[0] = (char)atoi(szDate);
memcpy(szDate, pDate+4, 2); // memcpy(szDate, pDate+4, 2); // <EFBFBD><EFBFBD>
pTime[1] = (char)atoi(szDate); pTime[1] = (char)atoi(szDate);
memcpy(szDate, pDate, 4); memcpy(szDate, pDate, 4);
usNo = htons(atoi((char*)szDate)); usNo = htons(atoi((char*)szDate));
memcpy(pTime+2, &usNo, sizeof(short)); // memcpy(pTime+2, &usNo, sizeof(short)); // <EFBFBD><EFBFBD>
} }
// pDate = HH24MMSS // pDate = HH24MMSS
@ -584,10 +584,10 @@ void setPostionTime(unsigned char *pDate, unsigned char *pTime)
memcpy(szTmp, pDate, 2); // ʱ memcpy(szTmp, pDate, 2); // ʱ
pTime[0] = (char)atoi(szTmp); pTime[0] = (char)atoi(szTmp);
memcpy(szTmp, pDate+2, 2); // memcpy(szTmp, pDate+2, 2); // <EFBFBD><EFBFBD>
pTime[1] = (char)atoi(szTmp); pTime[1] = (char)atoi(szTmp);
memcpy(szTmp, pDate+4, 2); // memcpy(szTmp, pDate+4, 2); // <EFBFBD><EFBFBD>
pTime[2] = (char)atoi(szTmp); pTime[2] = (char)atoi(szTmp);
} }
#endif #endif
@ -633,7 +633,7 @@ void getGnssTime(unsigned char *p_time)
} }
/*********************************************************************** /***********************************************************************
** Description : UTC ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTCʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -651,7 +651,7 @@ void getUTCFmtTime (char *pszTime)
return ; return ;
} }
/*********************************************************************** /***********************************************************************
** Description : UTC ** Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTCʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -667,7 +667,7 @@ time_t getUTCLongTime (void)
return t1 ; return t1 ;
} }
/*********************************************************************** /***********************************************************************
** Description : UTC ** Description : <EFBFBD><EFBFBD>UTCʱ<EFBFBD><EFBFBD>תΪ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -684,7 +684,7 @@ void UTC2FmtTime (time_t utc, char *pszTime)
return ; return ;
} }
/*********************************************************************** /***********************************************************************
** Description : UTC ** Description : UTCʱ<EFBFBD><EFBFBD>תΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
** param in : None ** param in : None
** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss) ** param out : pszTime -- string time(yyyy-mm-dd hh:mm:ss)
** return code : None ** return code : None
@ -699,7 +699,7 @@ void UTC2LocalTime (time_t utc, char *pszTime)
tm.tm_hour, tm.tm_min, tm.tm_sec); tm.tm_hour, tm.tm_min, tm.tm_sec);
return ; return ;
} }
// 本地时间转UTC时间, pTime: YYMMDDHH24MISS // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>תUTCʱ<EFBFBD><EFBFBD>, pTime: YYMMDDHH24MISS
time_t local2Utc(unsigned char *pTime, int iLen) time_t local2Utc(unsigned char *pTime, int iLen)
{ {
unsigned char szTime[20] = {0}; unsigned char szTime[20] = {0};
@ -715,7 +715,7 @@ time_t local2Utc(unsigned char *pTime, int iLen)
return t1 ; return t1 ;
} }
// 本地时间转UTC整型时间 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>תUTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
time_t local2UtcTime(time_t localTime) time_t local2UtcTime(time_t localTime)
{ {
struct tm tm = {0}; struct tm tm = {0};
@ -725,7 +725,7 @@ time_t local2UtcTime(time_t localTime)
return t; return t;
} }
// 根据BCD编码时间转报警ID // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
// param_in: pTime -- YYMMDDHHMISS, \x13\x10\12\x09\x14\x11 // param_in: pTime -- YYMMDDHHMISS, \x13\x10\12\x09\x14\x11
unsigned int getWarnID(unsigned char *pTime, int iLen, unsigned int id) unsigned int getWarnID(unsigned char *pTime, int iLen, unsigned int id)
{ {
@ -741,7 +741,7 @@ unsigned int getWarnID(unsigned char *pTime, int iLen, unsigned int id)
return (utc & 0xFFFFFFFF); return (utc & 0xFFFFFFFF);
} }
/*********************************************************************** /***********************************************************************
** Description : no,,eg: 1923.122.3.4 ** Description : <EFBFBD><EFBFBD>ȡԴ<EFBFBD><EFBFBD><EFBFBD>еĵ<EFBFBD>no<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>,eg: 1923.122.3.4
** param in : pstr -- source string end=0x00 ** param in : pstr -- source string end=0x00
** : node -- split char ** : node -- split char
** : no -- index filed ** : no -- index filed
@ -771,7 +771,7 @@ int iSplitNumberFiled(char *pstr, char node, int no)
} }
return 0; return 0;
} }
// 去除版本号首部字符,保留数字版本号 // ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ汾<D6B0><E6B1BE>
// eg: Ver1.2.34 ==> 1.2.34 // eg: Ver1.2.34 ==> 1.2.34
int iTrimVersionHeadChar(char *strver) int iTrimVersionHeadChar(char *strver)
{ {
@ -788,7 +788,7 @@ int iTrimVersionHeadChar(char *strver)
return strlen(strver); return strlen(strver);
} }
/*********************************************************************** /***********************************************************************
** Description : no, ** Description : <EFBFBD><EFBFBD>ȡԴ<EFBFBD><EFBFBD><EFBFBD>еĵ<EFBFBD>no<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
** param in : pstr -- source string end=0x00 ** param in : pstr -- source string end=0x00
** : node -- split char ** : node -- split char
** : no -- index filed ** : no -- index filed
@ -819,8 +819,8 @@ int iSplitStringFiled(char *pstr, char node, char no, char *pFiled)
} }
/*********************************************************************** /***********************************************************************
** Description : getDateFromTime Date ** Description : getDateFromTime <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡDate<EFBFBD><EFBFBD>Ϣ
** param in : p_time -- ** param in : p_time -- ʱ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
***********************************************************************/ ***********************************************************************/
void getDateFromTime(char* p_time,char* p_date) void getDateFromTime(char* p_time,char* p_date)
{ {
@ -893,7 +893,7 @@ void LRTrim(unsigned char *str)
RigthTrim(str) ; RigthTrim(str) ;
} }
/************************************************************** /**************************************************************
** Description: trim char string middle space, ** Description: trim char string middle space,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
** param in : ** param in :
** : *str -- sources string ** : *str -- sources string
** param out : ** param out :
@ -920,7 +920,7 @@ void MiddleTrim(unsigned char *str)
*last = '\0'; *last = '\0';
} }
/************************************************************** /**************************************************************
** Description: trim char string middle space, ** Description: trim char string middle space,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>
** param in : ** param in :
** : *str -- sources string ** : *str -- sources string
** param out : ** param out :
@ -948,7 +948,7 @@ void strMiddleTrim(unsigned char *str)
} }
/************************************************************** /**************************************************************
** Description: check string all char is digit(number '0'--'9') ** Description: check string all char is digit(number '0'--'9')
** param in : ** param in : <EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
** : *str -- sources string ** : *str -- sources string
** param out : ** param out :
** : *str -- trim string ** : *str -- trim string
@ -1130,7 +1130,7 @@ Param in :
Param out : Param out :
pusTo : object strings. pusTo : object strings.
Return Code : none Return Code : none
Note : Note : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************/ *************************************************************************/
unsigned int int64To32(utint64 u64) unsigned int int64To32(utint64 u64)
{ {
@ -1158,7 +1158,7 @@ void LocalTime2Bcd(char *pLocalTime, char *pBcd)
} }
/************************************************************************* /*************************************************************************
Function : Function : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
psz : source string psz : source string
length : input string length, max 128(Byte) length : input string length, max 128(Byte)
@ -1202,7 +1202,7 @@ int getHexString(unsigned char *str, int length, unsigned char *pstr)
return (length * 2); return (length * 2);
} }
/************************************************************************* /*************************************************************************
Function : 32 Function : 32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
num : source uint num : source uint
Param out : Param out :
@ -1217,12 +1217,12 @@ void uint32_binstr(unsigned int num, char* pBin)
{ {
pBin[(sizeof(int)*8-1)-i] = (char)(((num >> i) & 1) + '0'); pBin[(sizeof(int)*8-1)-i] = (char)(((num >> i) & 1) + '0');
} }
pBin[(sizeof(int)*8)] = 0x00; // 结束符 pBin[(sizeof(int)*8)] = 0x00; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return; return;
} }
/************************************************************************* /*************************************************************************
Function : 64 Function : 64λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
num : source uint num : source uint
Param out : Param out :
@ -1237,11 +1237,11 @@ void uint64_binstr(utint64 num, char* pBin)
{ {
pBin[(sizeof(utint64)*8-1)-i] = (char)(((num >> i) & 1) + '0'); pBin[(sizeof(utint64)*8-1)-i] = (char)(((num >> i) & 1) + '0');
} }
pBin[(sizeof(utint64)*8)] = 0x00; // 结束符 pBin[(sizeof(utint64)*8)] = 0x00; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return; return;
} }
/************************************************************************* /*************************************************************************
Function : 32 Function : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ת32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
pBin : source bin string(eg. 1010101001111), need '\0' end. pBin : source bin string(eg. 1010101001111), need '\0' end.
Param out : Param out :
@ -1263,32 +1263,32 @@ unsigned int binstr_uint32(char *pBin)
return n; return n;
} }
//从低位到高位,取n的第m位,m=1...32 //<EFBFBD>ӵ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ,ȡn<C8A1>ĵ<EFBFBD>,m=1...32
int getBit(int n, int m) int getBit(int n, int m)
{ {
if (m == 0) return (n >> (1 - 1)) & 1; if (m == 0) return (n >> (1 - 1)) & 1;
return (n >> (m - 1)) & 1; return (n >> (m - 1)) & 1;
} }
//从低位到高位.将n的第m位置1, m=1...32 //<EFBFBD>ӵ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ.<2E><>n<EFBFBD>ĵ<EFBFBD><6D><CEBB>1, m=1...32
int setBitToOne(int n, int m) int setBitToOne(int n, int m)
{ {
if (m == 0) return n | (1 << (1 - 1)); if (m == 0) return n | (1 << (1 - 1));
return n | (1 << (m - 1)); return n | (1 << (m - 1));
/*将1左移m-1位找到第m位得到000...1...000 /*<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m-1λ<31>ҵ<EFBFBD><D2B5><EFBFBD><6D><CEBB><EFBFBD>õ<EFBFBD>000...1...000
n*/ n<EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
} }
//从低位到高位, 将n的第m位置0,m=1...32 //<EFBFBD>ӵ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ, <20><>n<EFBFBD>ĵ<EFBFBD><6D><CEBB>0,m=1...32
int setBitToZero(int n, int m) int setBitToZero(int n, int m)
{ {
if (m == 0) return n & ~(1 << (1 - 1)); if (m == 0) return n & ~(1 << (1 - 1));
return n & ~(1 << (m - 1)); return n & ~(1 << (m - 1));
/* 将1左移m-1位找到第m位取反后变成111...0...1111 /* <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m-1λ<31>ҵ<EFBFBD><D2B5><EFBFBD><6D><CEBB>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>111...0...1111
n*/ n<EFBFBD>ٺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
} }
/************************************************************************* /*************************************************************************
Function : Function : <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
Param in : Param in :
str : source string(eg. 1010101001111), need '\0' end. str : source string(eg. 1010101001111), need '\0' end.
len : source length len : source length
@ -1305,7 +1305,7 @@ char* strSwap(char* str,int len)
return (strSwap( str+1, len-2)-1); return (strSwap( str+1, len-2)-1);
} }
/************************************************************************* /*************************************************************************
Function : 64 Function : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ת64λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
pBin : source bin string(eg. 1010101001111), need '\0' end. pBin : source bin string(eg. 1010101001111), need '\0' end.
Param out : Param out :
@ -1328,7 +1328,7 @@ utint64 binstr_uint64(char *pBin)
} }
/************************************************************************* /*************************************************************************
Function : LinuxWindows, Function : <EFBFBD><EFBFBD>Linux<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>תΪWindows<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
pszPath: source path pszPath: source path
Param out : Param out :
@ -1350,7 +1350,7 @@ void Unix2WindowPath(char *pszPath)
p[i] = 0x00; p[i] = 0x00;
} }
/************************************************************************* /*************************************************************************
Function : WindowsLinux, Function : <EFBFBD><EFBFBD>Windows<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>תΪLinux<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : pszPath -- source path Param in : pszPath -- source path
Param out : Param out :
: pszPath : pszPath
@ -1390,7 +1390,7 @@ int stringncasecmp(const char *ps1, const char *ps2, int length)
} }
/************************************************************************* /*************************************************************************
Function : uuid Function : <EFBFBD><EFBFBD>ȡuuid
Param in : Param in :
Param out : Param out :
: pszPath : pszPath
@ -1426,7 +1426,7 @@ int getuuid(char *str, int inlen )
/************************************************************************* /*************************************************************************
Function : 1-100 Function : <EFBFBD><EFBFBD>ȡ1-100<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
Param out : Param out :
Return Code : none Return Code : none
@ -1438,7 +1438,7 @@ double getRandByTime()
} }
/************************************************************************* /*************************************************************************
Function : Function : <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>תСд
Param in : Param in :
Param out : Param out :
: pszPath : pszPath
@ -1452,14 +1452,14 @@ char *str2lower(char *s)
for (int i = 0; i < len; i++) for (int i = 0; i < len; i++)
{ {
if (s[i] >= 'A' && s[i] <= 'Z'){ if (s[i] >= 'A' && s[i] <= 'Z'){
s[i] += 32;//+32转换为小写 s[i] += 32;//+32ת<EFBFBD><EFBFBD>ΪСд
//s[i]=s[i]-'A'+'a'; //s[i]=s[i]-'A'+'a';
} }
} }
return p; return p;
} }
/************************************************************************* /*************************************************************************
Function : 1-100 Function : <EFBFBD><EFBFBD>ȡ1-100<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Param in : Param in :
Param out : Param out :
: pszPath : pszPath
@ -1473,7 +1473,7 @@ char *str2upper(char *s)
for (int i = 0; i < len; i++) for (int i = 0; i < len; i++)
{ {
if (s[i] >= 'a' && s[i] <= 'z'){ if (s[i] >= 'a' && s[i] <= 'z'){
s[i] -= 32;//+32转换为小写 s[i] -= 32;//+32ת<EFBFBD><EFBFBD>ΪСд
//s[i]=s[i]-'a'+'A'; //s[i]=s[i]-'a'+'A';
} }
} }

@ -29,10 +29,10 @@ static void cancel_thread_work(void)
} }
vPrtLogMsg(LOG_DEBUG, RET_OK, "thread_handle_modbus_recv shutdown."); vPrtLogMsg(LOG_DEBUG, RET_OK, "thread_handle_modbus_recv shutdown.");
if (thread_handle_iec61850_recv) { if (thread_handle_iec61850_manager_proc) {
pthread_cancel(thread_handle_iec61850_recv); pthread_cancel(thread_handle_iec61850_manager_proc);
pthread_join(thread_handle_iec61850_recv, NULL); pthread_join(thread_handle_iec61850_manager_proc, NULL);
pthread_kill(thread_handle_iec61850_recv, SIGURG); pthread_kill(thread_handle_iec61850_manager_proc, SIGURG);
} }
vPrtLogMsg(LOG_DEBUG, RET_OK, "thread_handle_iec61850_recv shutdown."); vPrtLogMsg(LOG_DEBUG, RET_OK, "thread_handle_iec61850_recv shutdown.");
@ -167,7 +167,7 @@ static void task_kill()
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
printf("单位:[%s]\n", "mm/s²"); printf("单位:[%s]\n", "mm/s²");
printf_s("单位:[%s]\n", "mm/s²"); printf("单位:[%s]\n", "mm/s²");
cout << "单位:" << "mm / s²" << endl; cout << "单位:" << "mm / s²" << endl;
if (argc != 2) { if (argc != 2) {

@ -9,14 +9,14 @@
CC = g++ CC = g++
MYSQL_PATH = /usr/local/mysql-5.5.43 MYSQL_PATH = /usr/include/mysql
MYSQL_LIB_FILE = mysqlclient MYSQL_LIB_FILE = /usr/lib64/mysql
#CFLAGS = -c -Werror -g -D_REENTRANT -Wformat -Wsign-compare -O3 -ansi #CFLAGS = -c -Werror -g -D_REENTRANT -Wformat -Wsign-compare -O3 -ansi
CFLAGS = -c -Werror -g -Dlinux -D_DEBUG -D_REENTRANT -DDEBUG_SISCO -DMOSI -DLEAN_T -DTP0_ENABLED -DMMS_LITE -DMVL_UCA -Wformat -Wsign-compare -O3 -ansi CFLAGS = -c -g -Dlinux -D_DEBUG -D_REENTRANT -DDEBUG_SISCO -DMOSI -DLEAN_T -DTP0_ENABLED -DMMS_LITE -DMVL_UCA -Wformat -Wsign-compare -O3 -ansi #-fpermissive
LIBS = -L$(MYSQL_PATH)/lib -l$(MYSQL_LIB_FILE) `pkg-config --libs libmodbus` -lnsl -luuid -lpthread -lm -lc -l../libs/cosmos_ld -lstdc++ LIBS = -L$(MYSQL_PATH)/lib -L$(MYSQL_LIB_FILE) -L../libs `pkg-config --libs libmodbus`-lmysqlclient -lnsl -luuid -lpthread -lm -lc -lstdc++ -liec61850
INCPATH = -I../include -I../include/sntp -I../include/sisco -I$(MYSQL_PATH)/include `pkg-config --cflags libmodbus` INCPATH = -I../include -I../include/sntp -I../include/sisco -I$(MYSQL_PATH) `pkg-config --cflags libmodbus` -I../libiec61850-1.4.2.1/include -I../scl_tool
# global file # global file
OBJS_PATH = ../obj OBJS_PATH = ../obj
@ -26,9 +26,8 @@ OBJS = $(OBJS_PATH)/HTSLVService.o $(OBJS_PATH)/HTGlobal.o \
$(OBJS_PATH)/HTDatabase.o $(OBJS_PATH)/HTStrConvert.o \ $(OBJS_PATH)/HTDatabase.o $(OBJS_PATH)/HTStrConvert.o \
$(OBJS_PATH)/HTConfig.o $(OBJS_PATH)/HTUnit.o \ $(OBJS_PATH)/HTConfig.o $(OBJS_PATH)/HTUnit.o \
$(OBJS_PATH)/HTXmlMethod.o $(OBJS_PATH)/HTModbus.o \ $(OBJS_PATH)/HTXmlMethod.o $(OBJS_PATH)/HTModbus.o \
$(OBJS_PATH)/HTMmslite.o $(OBJS_PATH)/HTBusiDatabase.o \ $(OBJS_PATH)/HTBusiDatabase.o $(OBJS_PATH)/HTTcpSocket.o \
$(OBJS_PATH)/HTTcpSocket.o $(OBJS_PATH)/HTNtptime.o \ $(OBJS_PATH)/HTIEC61850.o $(OBJS_PATH)/HTIEC61850Thread.o
$(OBJS_PATH)/HTSntpc.o $(OBJS_PATH)/HTSntpd.o
TARGET = ../bin/slvser TARGET = ../bin/slvser

Loading…
Cancel
Save