From faa1938e8298b4cace7034885ff33b02e1fe9442 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Fri, 24 Jan 2025 15:30:06 +0800 Subject: [PATCH] add eigenvalue codes --- jsonparse/cmt_parse.cpp | 65 +++++++++++++++++++++++++++------ jsonparse/communication_cmd.hpp | 11 +++--- localserver/cmt_cmd.cpp | 14 ++----- localserver/cmt_server.cpp | 2 +- localserver/cmt_server.hpp | 23 +++++++++++- uart/uart.cpp | 2 +- 6 files changed, 86 insertions(+), 31 deletions(-) diff --git a/jsonparse/cmt_parse.cpp b/jsonparse/cmt_parse.cpp index 8111c94..9850aec 100644 --- a/jsonparse/cmt_parse.cpp +++ b/jsonparse/cmt_parse.cpp @@ -190,7 +190,7 @@ void JsonData::CmtCmd_82(char* MeasurementID,char* send_data,int& channel,int& s { FILE* pFile = NULL; char* buffer = NULL; - int thisSize = 0; + int thisSize = 32; WaveRes wave; char whereCon[64]={0}; sprintf(whereCon,"MeasurementID = '%s'",MeasurementID); @@ -217,14 +217,15 @@ void JsonData::CmtCmd_82(char* MeasurementID,char* send_data,int& channel,int& s buffer = (char*)malloc(thisSize - 32); fread(buffer, sizeof(char), thisSize - 32, pFile); fclose(pFile); + wave.sampling_rate = atoi(vecRes[0].c_str()); + wave.sampling_time = atoi(vecRes[1].c_str()); + wave.version = 1; + send_length = sizeof(WaveRes) + thisSize - 32; + memcpy(send_data,(char*)&wave,sizeof(WaveRes)); + memcpy(send_data + sizeof(WaveRes) ,buffer,thisSize - 32); + free(buffer); } - wave.sampling_rate = atoi(vecRes[0].c_str()); - wave.sampling_time = atoi(vecRes[1].c_str()); - wave.version = 1; - send_length = sizeof(WaveRes) + thisSize - 32; - memcpy(send_data,(char*)&wave,sizeof(WaveRes)); - memcpy(send_data + sizeof(WaveRes) ,buffer,thisSize - 32); - free(buffer); + } void JsonData::CmtCmd_83(char* recv_body,int& count,char* send_data,int& send_length) @@ -238,7 +239,6 @@ void JsonData::CmtCmd_83(char* recv_body,int& count,char* send_data,int& send_le for (size_t i = 0; i < count; i++){ char temp[21]={0}; memcpy(temp,recv_body + i * 20,20); - printf("short_addr = %s\n",temp); strcat(MeasurementID_,"'"); strcat(MeasurementID_,temp); strcat(MeasurementID_,"'"); @@ -402,7 +402,7 @@ void JsonData::CmtCmd_84(char* filename,char* file_md5,char* send_data,int& sen void JsonData::CmtCmd_85(char* filename,char* file_md5,char* send_data,int& send_length) { - zlog_info(zct,"file_path = %s,file_md5 = %d",filename,file_md5); + zlog_info(zct,"file_path = %s,file_md5 = %s",filename,file_md5); sleep(3); int iRet = system("/opt/opt.sh"); zlog_info(zct, "iRet = %d", iRet); @@ -413,7 +413,7 @@ void JsonData::CmtCmd_85(char* filename,char* file_md5,char* send_data,int& sen void JsonData::CmtCmd_86(char* recv_body,int& count,char* filename,char* file_md5,char* send_data,int& send_length) { - zlog_info(zct,"file_path = %s,file_md5 = %d",filename,file_md5); + zlog_info(zct,"file_path = %s,file_md5 = %s",filename,file_md5); UpgradeSensorRes upgrade_sensor_res; upgrade_sensor_res.code = 0; sprintf(upgrade_sensor_res.message ,"%s",""); @@ -508,8 +508,49 @@ void JsonData::CmtCmd_86(char* recv_body,int& count,char* filename,char* file_m } free(buffer); } +void JsonData::CmtCmd_87(char* MeasurementID,char* send_data,int& send_length) +{ + array_t arrRes; + GetEigenvalueRes get_eigenvalue_res; + char whereCon[128] = {}; + sprintf(whereCon, "channelID like '%%%s%%' ORDER BY timeStamp DESC LIMIT 0,3", MeasurementID); + arrRes = sqlite_db_ctrl::instance().GetDataMultiLineTransaction(T_DATA_INFO(TNAME), "*", whereCon); + int iResult = arrRes.size(); + if (iResult > 0) { + int j = 0; + GetEigenvalueRes get_eigenvalue_res[iResult]; + for (; j < iResult; j++) { + get_eigenvalue_res[j].version = 1; + if(arrRes[j][1] == (std::string(MeasurementID) +"-X")){ + get_eigenvalue_res[j].channel = 1; + }else if (arrRes[j][1] == (std::string(MeasurementID) +"-Y")){ + get_eigenvalue_res[j].channel = 2; + }else if (arrRes[j][1] == (std::string(MeasurementID) +"-Z")){ + get_eigenvalue_res[j].channel = 3; + } + printf("channle = %d\n",get_eigenvalue_res[j].channel); + get_eigenvalue_res[j].DiagnosisPk = atof(arrRes[j][2].c_str()); + get_eigenvalue_res[j].IntegratPk = atof(arrRes[j][3].c_str()); + get_eigenvalue_res[j].IntegratRMS = atof(arrRes[j][4].c_str()); + get_eigenvalue_res[j].RmsValues = atof(arrRes[j][5].c_str()); + get_eigenvalue_res[j].EnvelopEnergy = atof(arrRes[j][6].c_str()); + get_eigenvalue_res[j].Amp1 = atof(arrRes[j][7].c_str()); + get_eigenvalue_res[j].Amp2 = atof(arrRes[j][8].c_str()); + get_eigenvalue_res[j].Amp3 = atof(arrRes[j][9].c_str()); + get_eigenvalue_res[j].Amp4 = atof(arrRes[j][10].c_str()); + get_eigenvalue_res[j].Amp5 = atof(arrRes[j][11].c_str()); + get_eigenvalue_res[j].Phase1 = atof(arrRes[j][12].c_str()); + get_eigenvalue_res[j].Phase2 = atof(arrRes[j][13].c_str()); + get_eigenvalue_res[j].Phase3 = atof(arrRes[j][14].c_str()); + get_eigenvalue_res[j].Phase4 = atof(arrRes[j][15].c_str()); + get_eigenvalue_res[j].Time = atoi(arrRes[j][17].c_str()); + } + memcpy(send_data,(char*)&get_eigenvalue_res,sizeof(GetEigenvalueRes) * j); + send_length = sizeof(GetEigenvalueRes) * j; + } +} -void JsonData::CmtCmd_88(char* recv_body,int& count) +void JsonData::CmtCmd_88(int& short_addr,char* send_data,int& send_length) { } diff --git a/jsonparse/communication_cmd.hpp b/jsonparse/communication_cmd.hpp index 581f1bd..4231530 100644 --- a/jsonparse/communication_cmd.hpp +++ b/jsonparse/communication_cmd.hpp @@ -76,14 +76,15 @@ public: std::string JsonCmd_Cgi_default(); //CMT tcp - void CmtCmd_80(char* send_data,int& return_length); - void CmtCmd_81(char* recv_body,int& count,char* send_data,int& return_length); - void CmtCmd_82(char* MeasurementID,char* send_data,int& channel,int& return_length); - void CmtCmd_83(char* recv_body,int& count,char* send_data,int& return_length); + void CmtCmd_80(char* send_data,int& send_length); + void CmtCmd_81(char* recv_body,int& count,char* send_data,int& send_length); + void CmtCmd_82(char* MeasurementID,char* send_data,int& channel,int& send_length); + void CmtCmd_83(char* recv_body,int& count,char* send_data,int& send_length); void CmtCmd_84(char* filename,char* file_md5,char* send_data,int& send_length); void CmtCmd_85(char* filename,char* file_md5,char* send_data,int& send_length); void CmtCmd_86(char* recv_body,int& count,char* filename,char* file_md5,char* send_data,int& send_length); - void CmtCmd_88(char* recv_body,int& count); + void CmtCmd_87(char* MeasurementID,char* send_data,int& send_length); + void CmtCmd_88(int& short_addr,char* send_data,int& send_length); private: Json::FastWriter show_value_; diff --git a/localserver/cmt_cmd.cpp b/localserver/cmt_cmd.cpp index e8b0929..545c875 100644 --- a/localserver/cmt_cmd.cpp +++ b/localserver/cmt_cmd.cpp @@ -87,20 +87,12 @@ void LocalServer::HandleTcp_cmd(const char* recv_data,char* send_data,uint8_t& r jd.CmtCmd_86(recv_body,count,upgrade_sensor.filename,upgrade_sensor.md5,send_data,send_length); }break; case KEigenvalue:{ - + GetEigenvalueReq get_eigenvalue; + memcpy(&get_eigenvalue,recv_data + sizeof(PackageHead),sizeof(GetEigenvalueReq)); + jd.CmtCmd_87(get_eigenvalue.measurement_id,send_data,send_length); } break; case KUpgradeSensorStop:{ - char *recv_body = NULL; - int count = 0; - if (recvbody_length > 0){ - recv_body = (char*)malloc(recvbody_length - 4); - memcpy((char*)&count,(char*)recv_data + sizeof(PackageHead) ,4); - memcpy(recv_body,recv_data + sizeof(PackageHead) + 4 ,recvbody_length - 4); - } - UpgradeSensorReq upgrade_sensor; - memcpy(&upgrade_sensor,recv_data + sizeof(PackageHead),sizeof(UpgradeSensorReq)); - jd.CmtCmd_88(recv_body,count); } break; default: diff --git a/localserver/cmt_server.cpp b/localserver/cmt_server.cpp index 82124e2..cdcc9d5 100644 --- a/localserver/cmt_server.cpp +++ b/localserver/cmt_server.cpp @@ -75,7 +75,7 @@ void CMTSession::do_read() { pkg_head.head[2] = 0xAA; pkg_head.cmd = cmd; pkg_head.len = send_data_len; - memset(data_,0,sizeof(data_)); + memset(data_,0,CMT_TCP_LEN); memcpy(data_, &pkg_head, head_len_); memcpy(data_ + head_len_, &send_data, send_data_len); do_write(head_len_ + send_data_len); diff --git a/localserver/cmt_server.hpp b/localserver/cmt_server.hpp index 0157076..44d5a68 100644 --- a/localserver/cmt_server.hpp +++ b/localserver/cmt_server.hpp @@ -171,7 +171,28 @@ struct UpgradeSensorRes{ char message[64]; }; //获取特征值 cmd 87 - +struct GetEigenvalueReq{ + char measurement_id[20]; +}; +struct GetEigenvalueRes{ + int version; + int channel;//参考 ChannelType + float DiagnosisPk; + float IntegratPk; + float IntegratRMS; + float RmsValues; + float EnvelopEnergy; + float Amp1; + float Amp2; + float Amp3; + float Amp4; + float Amp5; + float Phase1; + float Phase2; + float Phase3; + float Phase4; + int Time; +}; //停止更新传感器 cmd 88 struct UpgradeStopReq{ diff --git a/uart/uart.cpp b/uart/uart.cpp index 2eb0eb0..3de36f9 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -599,7 +599,7 @@ void Uart::DealDataNodeName(const char *pData) { sprintf(szShortAdd, "%02x%02x", pData[3] & 0xFF, pData[4] & 0xFF); memcpy(NodeName, &pData[7], 64); memcpy(shortAdd, &pData[3], 2); - char whereCon[64] = {0}; + char whereCon[128] = {0}; char uplCon[200] = {0x00}; char nodeWaveSend[10] = {0x00};