From 192c1215495361932b0901aeff612f248c366c31 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Sun, 10 Nov 2024 19:22:16 +0800 Subject: [PATCH] fix bugs --- dbaccess/sql_db.cpp | 33 +++++++++++++++++++++++---------- jsonparse/web_cmd_parse3.cpp | 5 ++++- scheduler/schedule.cpp | 20 ++++++++++---------- uart/uart.cpp | 21 ++++++++++++++++----- 4 files changed, 53 insertions(+), 26 deletions(-) diff --git a/dbaccess/sql_db.cpp b/dbaccess/sql_db.cpp index 4dc8c88..ffe637d 100644 --- a/dbaccess/sql_db.cpp +++ b/dbaccess/sql_db.cpp @@ -9,7 +9,7 @@ extern zlog_category_t *zct; extern zlog_category_t *zbt; - +char resend_mqttData[512000] = {0}; // clang-format off const char *T_SENSOR_INFO1[] = {"t_sensor_info", "dataNodeNo", "dataNodeName", "initFlag", "accFlag", "zigbeeFlag", "temTopFlag", "temBotFlag", "equipSta", "hardVersion", "softVersion", "bpNo", "serialNo", "firstPowerTime", "configFlag", "startBrands", "stopBrands", "featureInterVal", "waveInterVal", "samplingRate", "scope", "range", "envelopeBandPass", "faultFrequency", @@ -1269,7 +1269,11 @@ int SqliteDB::QueryofflineData() { } } } + + float frTemp = 0.0f; + std::string sample; char whereCon[1024] = {0x00}; + char buf[30]={0}; sprintf(whereCon, " SendMsg = 0 "); array_t arrRetData = GetDataMultiLine("t_data_waveSend", "*", whereCon); zlog_info(zct, "mqttresend check wave count %d", arrRetData.size()); @@ -1285,28 +1289,37 @@ int SqliteDB::QueryofflineData() { while (inFile.read((char *)&fTemp, sizeof(fTemp))) { vecWave.push_back(fTemp); } + memset(whereCon,0,sizeof(whereCon)); + std::string MeasurementID = arrRetData[i][0].erase(arrRetData[i][0].length() - 2); + sprintf(whereCon," MeasurementID = '%s'",MeasurementID.c_str()); + sample = GetData(T_SENSOR_INFO(TNAME), " samplingRate ", whereCon); + + int id = 0; + memset(resend_mqttData,0,sizeof(resend_mqttData)); for (size_t i = 0; i < vecWave.size(); i++) { - char buf[33] = {0x00}; memset(buf, 0x00, sizeof(buf)); - sprintf(buf, "%.2f", vecWave[i]); - std::string waveTemp(buf); - if (i == 0) { - strWaveData = waveTemp; + sprintf(buf, "%.2f", frTemp); + if (i != vecWave.size() -1){ + strncpy(resend_mqttData + id ,buf,strlen(buf)); + id = id + strlen(buf); + strncpy(resend_mqttData + id,",",1); + id = id + 1; + }else{ + strncpy(resend_mqttData + id ,buf,strlen(buf)); } - strWaveData = strWaveData + "," + waveTemp; } + inFile.close(); } Json::Value valWaveData; - int length = strWaveData.length(); - valWaveData["number"] = length; + valWaveData["number"] = atoi(sample.c_str()); valWaveData["channelId"] = arrRetData[i][0]; valWaveData["dataNodeNo"] = arrRetData[i][0].substr(0, arrRetData[i][0].length() - 2); valWaveData["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G; valWaveData["SensorEngineeringUnit"] = ""; valWaveData["timeStamp"] = arrRetData[i][2]; - valWaveData["waveData"] = strWaveData; + valWaveData["waveData"] = resend_mqttData; Json::FastWriter WaveValue; std::string WaveData = WaveValue.write(valWaveData); int iRet = data_publish(WaveData.c_str(), GlobalConfig::Topic_G.mPubWaveData.c_str()); diff --git a/jsonparse/web_cmd_parse3.cpp b/jsonparse/web_cmd_parse3.cpp index 1b1e3df..5385a71 100644 --- a/jsonparse/web_cmd_parse3.cpp +++ b/jsonparse/web_cmd_parse3.cpp @@ -670,11 +670,11 @@ std::string JsonData::JsonCmd_Cgi_60(Param_60 ¶m){ { jsonVal["success"] = false; jsonVal["message"] = "package CRC error"; + free(buffer); return show_value_.write(jsonVal); } printf("sum = %x\n",sum % 256); - return show_value_.write(jsonVal); char localtimestamp[32] = {0}; GetTimeNet(localtimestamp, 1); for (size_t i = 0; i < param.dataNodeNo.size(); i++) @@ -687,6 +687,7 @@ std::string JsonData::JsonCmd_Cgi_60(Param_60 ¶m){ { jsonVal["success"] = false; jsonVal["message"] = "hardVersion error"; + free(buffer); return show_value_.write(jsonVal); } @@ -694,6 +695,8 @@ std::string JsonData::JsonCmd_Cgi_60(Param_60 ¶m){ sqlite_db_ctrl::instance().InsertData(" firmware_upgrade ", insertSql); scheduler::instance().UpgradeSensor(atoi(vecResult[3].c_str()),std::string(sensor_type),atoi(vecResult[0].c_str()),vecResult[1],std::string(sf_version)); } + free(buffer); + return show_value_.write(jsonVal); } diff --git a/scheduler/schedule.cpp b/scheduler/schedule.cpp index be8d1a6..dd7c454 100644 --- a/scheduler/schedule.cpp +++ b/scheduler/schedule.cpp @@ -254,17 +254,17 @@ SensorScheduler::SensorScheduler() { seconds_per_wave_slice_ = rest_duration / wave_slice_num_per_eigen_interval_; } else { zlog_info(zbt, "use default configuration"); - // int eigen_value_send_interval = 300; - // int wave_form_send_interval = 7200; - // int eigen_value_send_duration = 6; - // int wave_form_send_duration = 50; - // int max_sensor_num = 32; - - int eigen_value_send_interval = 120; - int wave_form_send_interval = 240; + int eigen_value_send_interval = 300; + int wave_form_send_interval = 7200; int eigen_value_send_duration = 6; - int wave_form_send_duration = 40; - int max_sensor_num = 4; + int wave_form_send_duration = 50; + int max_sensor_num = 32; + + // int eigen_value_send_interval = 120; + // int wave_form_send_interval = 240; + // int eigen_value_send_duration = 6; + // int wave_form_send_duration = 40; + // int max_sensor_num = 4; std::string error_msg; Config(eigen_value_send_interval, wave_form_send_interval, diff --git a/uart/uart.cpp b/uart/uart.cpp index c749c2e..c2cb9aa 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -359,7 +359,6 @@ int Uart::DealAskTask(uint16_t ushortAdd){ int next_duration = 0; int taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration); ScheduleTask scheduleTask; - taskID = 2; zlog_info(zct, "taskID = %d ", taskID); if (taskID == kScheduleEigenValue) //1.特征值 { @@ -397,6 +396,12 @@ int Uart::DealAskTask(uint16_t ushortAdd){ scheduleTask.duration = next_duration; zlog_info(zct, "next_duration = %d ", next_duration); TaskResp(scheduleTask); + }else if (taskID == 13) //6.RSSI + { + scheduleTask.cmd = SIGNAL_STRENGTH; + scheduleTask.shortAddr = ushortAdd; + scheduleTask.duration = next_duration; + TaskResp(scheduleTask); } return 0; @@ -1146,17 +1151,23 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { zlog_info(zct, "zigbeeShortAddr = %s , ret = %02d", m_strDestShortAddr.c_str(), UartRecvBuf[i + 4] & 0xFF); } else if (command == 218) { // DA + char localtimestamp[32] = {0}; + GetTimeNet(localtimestamp, 1); char whereCon[1024] = {0}; char updateSql[1024] = {0}; char tableName[100] = {0x00}; + char insertSql[100] = {0x00}; bZigbeeSinal = false; - sprintf(whereCon, "zigbeeShortAddr='%s'", m_strDestShortAddr.c_str()); + sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UartRecvBuf[i + 3] & 0xFF, UartRecvBuf[i + 4] & 0xFF); vec_t vecDataNodeNo = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " dataNodeNo,LooseValue,RSSI ", whereCon); memset(whereCon, 0x00, sizeof(whereCon)); - sprintf(updateSql, "zigbeeSignal = '%02d' ", UartRecvBuf[i + 6] & 0xFF); // zigbeeRSSIType = 1 网关获取传感器信号强度 - sprintf(whereCon, "dataNodeNo='%s' and timeStamp = '%s'", (char *)vecDataNodeNo[0].c_str(), strTimetamp.c_str()); + + sprintf(insertSql, "'%s','%s-S','','','','', '','','%s','','','%02d','','' ", vecDataNodeNo[0].c_str(),vecDataNodeNo[0].c_str(),localtimestamp,UartRecvBuf[i + 6] & 0xFF); // zigbeeRSSIType = 0 传感器获取网关信号强度 + sprintf(tableName, "t_dataStatic_%s", (char *)vecDataNodeNo[0].c_str()); - sqlite_db_ctrl::instance().UpdateTableData(tableName, updateSql, whereCon); + sqlite_db_ctrl::instance().InsertData(tableName, insertSql); + // zigbeeRSSIType = 1 网关获取传感器信号强度 + Json::Value jsBody, jsonVal; Json::FastWriter showValue; char looseValue[10] = {0x00};