diff --git a/cfg_parse/cfg_parser.cpp b/cfg_parse/cfg_parser.cpp index 38a5fd9..1cab107 100644 --- a/cfg_parse/cfg_parser.cpp +++ b/cfg_parse/cfg_parser.cpp @@ -11762,10 +11762,16 @@ void value_print(const char *variableName, QTcpSocket *clientSocket) { pthread_mutex_lock(&mtx); // 打印变量值 + if (strcmp(variableName, "frontindex") == 0) { sprintf(buffer, "frontindex = %d", g_front_seg_index); // 将 int 转换为字符串 clientSocket->write(buffer); // 发送字符串到客户端 - } else if (strcmp(variableName, "iedcount") == 0) { + } + else if (strcmp(variableName, "remtable") == 0) { + sprintf(buffer, "remtable = %d",g_pt61850app->chnl_counts); + clientSocket->write(buffer); + } + else if (strcmp(variableName, "iedcount") == 0) { sprintf(buffer, "g_node->n_clients = %d, ied config count = %d",g_node->n_clients ,IED_COUNT); clientSocket->write(buffer); } else if (strcmp(variableName, "frontfun") == 0) { @@ -14586,7 +14592,7 @@ int parse_rpt_log_ini_one(ied_t* ied) } #endif //调试 - printf("logini ied_usr->LD_info[cpuno - 1].LD_name: %s\n", ied_usr->LD_info[cpuno - 1].LD_name); + printf("logini ied_usr->LD_info[cpuno - 1].LD_name: %s\n", ied_usr->LD_info[cpuno].LD_name); delete[] tmp;//Get_IED中分配了内存,使用后删除 diff --git a/json/create_json.cpp b/json/create_json.cpp index 6a86868..a52a857 100644 --- a/json/create_json.cpp +++ b/json/create_json.cpp @@ -2915,7 +2915,7 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char QDateTime time(QDate(year, month, day), QTime(hour, minute, second)); if (xmlinfo_list[type]->xmlbase.datetime == time) { //终端型号更新标志,如果新增的型号错误,导致实际用的映射文件不一样,或者覆盖了原来的映射文件这里可能出问题。数据库在录入型号和映射文件时要注意 - xmlinfo_list[type]->updataflag = false; + xmlinfo_list[type]->updataflag = false; //时间值一样说明是没有更新,当前业务中不包含时间值,所以每次都会更新 } else { xmlinfo_list[type]->updataflag = true; @@ -2933,7 +2933,6 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char xmlinfo_list[type]->xmlbase.FILE_PATH = filepath; xmlinfo_list[type]->xmlbase.FILE_NAME = name; - QDateTime time(QDate(year, month, day), QTime(hour, minute, second)); xmlinfo_list[type]->xmlbase.datetime = time; @@ -3582,16 +3581,47 @@ void comflag_test() } ///////////////////////////////////////////////////lnk2024-10-21//////////////////////////////////////////////////////// - //4-配置映射文件////////////////////////////// +void clearXmlConfigAndTopicList(Xmldata* data) { + // 清空 XmlConfig + data->xmlcfg = XmlConfig(); // 通过重新赋值重置 xmlcfg + + // 清空 topicList + list::iterator it; + for (it = data->topicList.begin(); it != data->topicList.end(); ++it) { + delete *it; // 释放内存 + } + data->topicList.clear(); // 清空链表 +} +//4-配置映射文件////////////////////////////// void Set_xml_nodeinfo_one(char* dev_type) { bool ret = false; - if(xmlinfo_list[QString::fromUtf8(dev_type)] != NULL){ - ret = ParseXMLConfig2(&(xmlinfo_list[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID); - if(!ret) - { - std::cout << "!!!! this ledger xml config fail!!!!" << std::endl; + +//如果是新增台账不是初始化,不需要再解析一次默认配置 +/* + //配置无对应xml文件时的默认解析配置 + if (!inited) //初始化 JiangSu_Config.xml + { + QString path; + path.append("not define"); + ParseXMLConfig2(&xmlcfg, &topicList, path); //调用 ParseXMLConfig() 解析JiangSu_Config.xml配置文件 + inited = true; + } +*/ + + if(xmlinfo_list[QString::fromUtf8(dev_type)] != NULL){ //原来已存在这个类型的节点 + if(xmlinfo_list[QString::fromUtf8(dev_type)]->updataflag == true){ //需要更新 + + //将这个点的xmlcfg和topicList删除 + clearXmlConfigAndTopicList(xmlinfo_list[QString::fromUtf8(dev_type)]); + + ret = ParseXMLConfig2(&(xmlinfo_list[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID); + if(!ret) + { + std::cout << "!!!! this ledger xml config fail!!!!" << std::endl; + } } + } else{ std::cout << "xmlinfo_list not contain this devtype" << std::endl; diff --git a/json/save2json.cpp b/json/save2json.cpp index 29ee50e..5390f7e 100644 --- a/json/save2json.cpp +++ b/json/save2json.cpp @@ -295,8 +295,8 @@ void my_rocketmq_send(Ckafka_data_t& data) static std::string cfg_Evt_tp; static std::string cfg_Alm_tp; static std::string cfg_Rt_tp; - static bool inited = false; - if (!inited) { + static bool init = false; + if (!init) { cfg_His_tp = TOPIC_STAT; cfg_PLT_tp = TOPIC_PLT; @@ -305,7 +305,7 @@ void my_rocketmq_send(Ckafka_data_t& data) cfg_Alm_tp = TOPIC_ALARM; cfg_Rt_tp = TOPIC_RTDATA; - inited = true; + init = true; } std::string key = data.mp_id.toStdString(); @@ -363,8 +363,8 @@ void my_kafka_send(Ckafka_data_t& data) static std::string cfg_Evt_tp; static std::string cfg_Alm_tp; static std::string cfg_Sng_tp; - static bool inited = false; - if (!inited) { + static bool init = false; + if (!init) { cfg_His_tp = TOPIC_STAT; cfg_PLT_tp = TOPIC_PLT; @@ -393,7 +393,7 @@ void my_kafka_send(Ckafka_data_t& data) else printf("kafka producer init Failed(%s)\n", brokerlist.c_str()); #endif - inited = true; + init = true; } char tmp_str[256]; @@ -472,8 +472,8 @@ void my_datahub_send(Ckafka_data_t& data) static std::string cfg_PST_tp; static std::string cfg_Evt_tp; static std::string cfg_Alm_tp; - static bool inited = false; - if (!inited) { + static bool init = false; + if (!init) { //QString MyKafkaIniFilename = QString("../etc/") + QString("mykafka.ini"); //+QString::fromAscii(subdir) //QSettings settings(MyKafkaIniFilename, QSettings::IniFormat); @@ -496,7 +496,7 @@ void my_datahub_send(Ckafka_data_t& data) cfg_Evt_tp = TOPIC_EVENT; cfg_Alm_tp = TOPIC_ALARM; - inited = true; + init = true; } std::string key = data.mp_id.toStdString(); diff --git a/json/save2json.h b/json/save2json.h index dcc31f5..5b8e6de 100644 --- a/json/save2json.h +++ b/json/save2json.h @@ -240,11 +240,11 @@ private slots: helpText += "ud - Execute rocketmq_test_ud\n"; helpText += "set - Execute rocketmq_test_set\n"; helpText += "ledger - Execute ledger with optional terminal_id\n"; - helpText += "value - Execute value print with valuename : iedcount frontfun frontindex\n"; + helpText += "value - Execute value print with valuename : iedcount frontfun frontindex remtable\n"; helpText += "exit - Exit the shell\n"; helpText += "help - Show this help message\n"; clientSocket->write(helpText.toUtf8()); - clientSocket->flush(); + } // 处理 TEST_NUM else if (command.startsWith("TEST_NUM=")) { diff --git a/mms/mms_process.c b/mms/mms_process.c index 69a8b28..9e2dad3 100644 --- a/mms/mms_process.c +++ b/mms/mms_process.c @@ -1023,6 +1023,10 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml) //写入前先清空已有数据 clearIedUsr(ied_usr);//不会清空dev_idx + //ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;//从FeProject/子功能目录/etc/pt61850netd_pqfe.xml中读取的总查询时间 + + ied_usr->dev_flag = ENABLE;//终端有效 + int ret = update_one_terminal_ledger(update,i,ied,ied_usr->dev_idx,1);//1:更新已有的ied if(ret){ printf("ledger can not be update!!!!!quit process!!!!!\n");