diff --git a/cfg_parse/cfg_parser.cpp b/cfg_parse/cfg_parser.cpp index 7deb64c..82e47ab 100644 --- a/cfg_parse/cfg_parser.cpp +++ b/cfg_parse/cfg_parser.cpp @@ -203,6 +203,7 @@ const int MAX_CPUNO = 10; //lnk20250121终端台账数量配置 int IED_COUNT = 300; //默认300 + extern int INITFLAG; //WW 2-23-08-20 add start @@ -217,9 +218,6 @@ std::string g_strOTLConnect = "postgres/bmdev@123@pgsql"; //OTL //lnk2024-8-14添加角型接线标志,0不存在角形接线,1存在角形接线 int isdelta_flag = 0; -//测试终端连接 -bool g_stopTelnetTest = false; - //////CZY 2023-09-06 config //多前置flag:1为开启,0为关闭 int MULTIPLE_NODE_FLAG = 1; @@ -1180,17 +1178,22 @@ void pingPrint(QTcpSocket* clientSocket, const std::string &msg) { clientSocket->flush(); } } -int init_ping_telnet(QTcpSocket* clientSocket, int& ip_count, int& telnet_count) { +int Worker::init_ping_telnet(QTcpSocket* clientSocket, int& ip_count, int& telnet_count) { pingPrint(clientSocket, "start test ping telnet"); ied_t* ied = NULL; int iedno; // 遍历所有设备 - for (iedno = 0; iedno < g_node->n_clients; iedno++) { - // 检查是否被中止 - if (g_stopTelnetTest) { - pingPrint(clientSocket, "Telnet test stopped by user."); - break; + for (iedno = 0; iedno < g_node->n_clients && !g_stopTelnetTest; iedno++) { + // **1. 监听输入,用户输入 ``` 退出** + if (clientSocket->waitForReadyRead(100)) { // ? 监听输入 + QByteArray input = clientSocket->readAll().trimmed(); + if (input == "`") { // ? 用户输入 ```,退出日志模式 + std::cout << "Received '`' from shell socket! Exiting viewlog...\n"; + g_stopTelnetTest = true; + break; + } } + ied = g_node->clients[iedno]; if (ied) { if (g_onlyIP[0] != 0 && (strcmp(g_onlyIP, ied->channel[0].addr_str) != 0)) { @@ -4981,7 +4984,7 @@ void process_recall_config(recall_xml_t* recall_xml) //lnk20241030补充补招稳态暂态标志,每个文件都有很多条时间记录 LD_info->autorecall[j]->need_steady = recall[j].need_steady; - LD_info->autorecall[j]->need_steady = recall[j].need_voltage; + LD_info->autorecall[j]->need_voltage = recall[j].need_voltage; } LD_info->autorecallflag = 0; @@ -11740,6 +11743,16 @@ void printLedgerinshell(const ied_usr_t& ied_usr, QIODevice* outputDevice) { outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptcount: " + QByteArray::number(ied_usr.LD_info[i].rptcount) + "\n"); outputDevice->write("\r\x1B[K");outputDevice->write(" |-- logcount: " + QByteArray::number(ied_usr.LD_info[i].logcount) + "\n"); + //recall + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- autorecallflag: " + QByteArray::number(ied_usr.LD_info[i].autorecallflag) + "\n"); + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- autorecallcount: " + QByteArray::number(ied_usr.LD_info[i].autorecallcount) + "\n"); + for (int j = 0; j < ied_usr.LD_info[i].autorecallcount && ied_usr.LD_info->autorecall[j] != NULL; j++){ + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- autorecall_t[" + QByteArray::number(j) + "]:\n"); + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- start_time: " + QByteArray::number(ied_usr.LD_info->autorecall[j]->start) + "\n"); + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- end_time: " + QByteArray::number(ied_usr.LD_info->autorecall[j]->end) + "\n"); + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- need_steady: " + QByteArray::number(ied_usr.LD_info->autorecall[j]->need_steady) + "\n"); + outputDevice->write("\r\x1B[K");outputDevice->write(" |-- need_voltage: " + QByteArray::number(ied_usr.LD_info->autorecall[j]->need_voltage) + "\n"); + } // rpt outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptRecvFlag: " + QByteArray::number(ied_usr.LD_info[i].rptRecvFlag) + "\n"); outputDevice->write("\r\x1B[K");outputDevice->write(" |-- rptRecvCheckFlag: " + QByteArray::number(ied_usr.LD_info[i].rptRecvCheckFlag) + "\n"); @@ -15645,13 +15658,12 @@ void echo_msg_debugexy(const char *file_name, int line_no, const char *fmt, ...) } } /////////////////////////////////////////////////////////////////////////////// -void telnetetst(QTcpSocket* clientSocket) { +void Worker::telnetetst(QTcpSocket* clientSocket) { int ip_count = 0; int telnet_count = 0; - g_stopTelnetTest = false; //在测试连接时给台账加锁lnk20250114 pthread_mutex_lock(&mtx); std::cout << "testping hold lock !!!!!!!!!!!" << std::endl; - init_ping_telnet(clientSocket,ip_count, telnet_count); + Worker::init_ping_telnet(clientSocket,ip_count, telnet_count); Cout_account_information(); pthread_mutex_unlock(&mtx); std::cout << "testping free lock !!!!!!!!!!!" << std::endl; } diff --git a/json/save2json.h b/json/save2json.h index b57ac1c..1fa88d0 100644 --- a/json/save2json.h +++ b/json/save2json.h @@ -52,7 +52,6 @@ extern int G_TEST_NUM; extern void ledger(const char* terminal_id = NULL,QIODevice* outputDevice = NULL); extern void value_print(const char *variableName, QTcpSocket *clientSocket); extern int TEST_PORT; -extern void telnetetst(QTcpSocket* clientSocket); extern void redirectErrorOutput(bool enable); extern void redirectWarnOutput(bool enable); @@ -154,8 +153,8 @@ public: TEST_NUM(G_TEST_NUM), timer(NULL), historyIndex(-1), - stopViewLog(false), - g_stopTelnetTest(false), + stopViewLog(true), + g_stopTelnetTest(true), activeClient(NULL) { } @@ -166,6 +165,8 @@ public: } void handleViewLogCommand(const QString& command, QTcpSocket* clientSocket); + int init_ping_telnet(QTcpSocket* clientSocket, int& ip_count, int& telnet_count); + void telnetetst(QTcpSocket* clientSocket); public slots: @@ -479,6 +480,7 @@ private: } } else if (cmd.startsWith("telnettest")) { + g_stopTelnetTest = false; telnetetst(clientSocket); clientSocket->write("\r\x1B[K"); clientSocket->write("Executed telnettest warning!!! it woont stop until finish!!!\r\n"); diff --git a/mms/db_interface.h b/mms/db_interface.h index a5eb27e..97874f8 100644 --- a/mms/db_interface.h +++ b/mms/db_interface.h @@ -111,7 +111,6 @@ int parse_device_cfg_json(); int parse_device_cfg_pg(); int parse_line_cfg_pg(); void init_config(); -int init_ping_telnet(); int GetServerIndexFromDB(); int parse_device_cfg(); diff --git a/mms/mmscli_log.c b/mms/mmscli_log.c index ff21a43..975a29e 100644 --- a/mms/mmscli_log.c +++ b/mms/mmscli_log.c @@ -213,30 +213,71 @@ static ST_RET process_jou_entry(loginfo_t *loginfo,apr_time_t t, length_FCDA = strlen(mms_ref); if (('$' == mms_ref[length_FCDA - 2]) && ('t' == mms_ref[length_FCDA - 1])) { + //调试用lnk20250307 + printf("readtime = 1"); readtime = 1; t = convert_btime6_to_apr_time(&(mms_dec_data.data_item[ii].u.data_bTime6)); + + //调试用 + // 定义一个结构体保存转换后的时间信息 + apr_time_exp_t xt; + + // 使用本地时区转换(也可以用 apr_time_exp_gmt(&xt, t) 得到 GMT 时间) + if (apr_time_exp_lt(&xt, t) == APR_SUCCESS) { + // tm_year 表示自 1900 年起的年数,需要加上 1900;tm_mon 范围为 0~11,需要加 1 + printf("Converted time: %04d-%02d-%02d %02d:%02d:%02d.%06d\n", + xt.tm_year + 1900, + xt.tm_mon + 1, + xt.tm_mday, + xt.tm_hour, + xt.tm_min, + xt.tm_sec, + xt.tm_usec); + } else { + printf("Failed to convert apr_time_t\n"); + } + //调试用 } if (('$' == mms_ref[length_FCDA - 2]) && ('q' == mms_ref[length_FCDA - 1])) { if (log_data_type == STEADY_DATA) { readquailty = 1; char* q = mms_dec_data.data_item[ii].u.data_str; - if (q[0] == '0' && q[1] == '0') + + //调试用lnk20250307 + printf("q[0] = %c ,q[1] = %c !!!!!",q[0],q[1]); + + if (q[0] == '0' && q[1] == '0'){ quality = 0; - else + + //调试用lnk20250307 + printf("quality = 0"); + + }else{ + //调试用lnk20250307 + printf("quality = 1"); quality = 1; + } + } } if (readtime == 1 && readquailty == 1) { + //调试用lnk20250307 + printf("readtime == 1 && readquailty = 1"); break; } } if (readtime == 1 && readquailty == 1) { - if (quality == 1) { + if (quality == 0) {//调试,要改回1 timeflag = TRUE; + //调试用lnk20250307 + printf("readtime == 1 && readquailty = 1 && quality == 1 continue"); continue; } else { + //调试用lnk20250307 + printf("readtime == 1 && readquailty = 1 && quality == 0 log"); + timeflag = FALSE; if (process_jou_entry_t == 0) { process_jou_entry_t = t; @@ -322,14 +363,26 @@ static ST_RET process_jou_entry(loginfo_t *loginfo,apr_time_t t, //set_db_value(LOG_IDX,mms_ref,v,FALSE); length_FCDA = strlen( mms_ref ); if ( ('$'==mms_ref[length_FCDA-2]) && ('q'==mms_ref[length_FCDA-1]) ) { + + //调试用lnk20250307 + printf("going q"); + if(not_set_log_q_this && ( log_data_type == STEADY_DATA )) { int quality = 0; char* q = mms_dec_data.data_item[ii].u.data_str; - if (q[0]=='0'&& q[1]=='0') + + //调试用lnk20250307 + printf("q[0] = %c ,q[1] = %c !!!!!",q[0],q[1]); + + if (q[0]=='0'&& q[1]=='0'){ + printf("quality = 0"); quality = 0; - else + }else{ + printf("quality = 1"); quality = 1; - if (quality == 1) { + } + if (quality == 0) {//调试用,要改回1 + printf("quality = 1 continue"); continue; } //set_log_QualityFlag(quality); @@ -346,6 +399,10 @@ static ST_RET process_jou_entry(loginfo_t *loginfo,apr_time_t t, } } else if ( ('$'==mms_ref[length_FCDA-2]) && ('t'==mms_ref[length_FCDA-1]) ) { + + //调试用lnk20250307 + printf("going t"); + if (not_set_log_t_this) { apr_time_t t = convert_btime6_to_apr_time(&(mms_dec_data.data_item[ii].u.data_bTime6)); if ( log_data_type == QVVR_DATA ) { @@ -373,6 +430,9 @@ static ST_RET process_jou_entry(loginfo_t *loginfo,apr_time_t t, } } else { + //调试用lnk20250307 + printf("going v"); + if ( log_data_type == QVVR_DATA ){ processQVVR_data(loginfo->LD_info,mms_ref,v); }