modify debug mode,fix bugs

This commit is contained in:
zhangsheng 2026-02-27 19:04:12 +08:00
parent 03b8e51d35
commit 0535c0765c
9 changed files with 312 additions and 194 deletions

View File

@ -58,7 +58,7 @@ public :
}; };
#define SAVE_COUNT 4800*4 #define SAVE_COUNT 6048*7
#define OneWeek 604800*7 #define OneWeek 604800*7

View File

@ -268,6 +268,7 @@ std::string JsonData::JsonCmd_Cgi_27(std::vector<Param_27> &param) {
char localtimestamp[32] = {0}; char localtimestamp[32] = {0};
for (size_t i = 0; i < param.size(); i++) for (size_t i = 0; i < param.size(); i++)
{ {
zlog_info(zct,"type = %s",param[i].mType.c_str());
if (param[i].mDataNodeNo.length() > 0 && param[i].mType == "DELETE") { if (param[i].mDataNodeNo.length() > 0 && param[i].mType == "DELETE") {
sprintf(whereCon, "%s= '%s'", T_SENSOR_INFO(DATANODENO), param[i].mDataNodeNo.c_str()); sprintf(whereCon, "%s= '%s'", T_SENSOR_INFO(DATANODENO), param[i].mDataNodeNo.c_str());
sqlite_db_ctrl::instance().DeleteTableData(T_SENSOR_INFO(TNAME), whereCon); sqlite_db_ctrl::instance().DeleteTableData(T_SENSOR_INFO(TNAME), whereCon);
@ -659,7 +660,10 @@ std::string JsonData::JsonCmd_Cgi_30(Param_30 &param) {
resolution = (double)SampleRate / 8192; resolution = (double)SampleRate / 8192;
} }
} }
}else{ }
if(param.mMode == 0 && productNo == "02"){
resolution = 1 / 1.6;
}else if(param.mMode == 1 && productNo == "02"){
resolution = 1 / 3.2; resolution = 1 / 3.2;
} }

View File

@ -449,9 +449,11 @@ std::string JsonData::JsonCmd_Cgi_56(Param_56 &param) {
vec_t res = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " * ", whereCon); vec_t res = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " * ", whereCon);
int SampleRate = 0; int SampleRate = 0;
double resolution = 0.0; double resolution = 0.0;
std::string softVersion = res[9];
std::string productNo = res[17];
SampleRate = atoi(res[23].c_str()); SampleRate = atoi(res[23].c_str());
zlog_info(zct,"sensor type %s", res[17].c_str()); zlog_info(zct,"sensor type %s", res[17].c_str());
if ((compareVersions(softVersion, "2.6") == -1 && productNo == "02") || productNo == "01") {
if (access(filename.c_str(), 0) >= 0) { if (access(filename.c_str(), 0) >= 0) {
std::ifstream inFile(filename.c_str(), std::ios::in | std::ios::binary); std::ifstream inFile(filename.c_str(), std::ios::in | std::ios::binary);
if (!inFile) { if (!inFile) {
@ -548,6 +550,61 @@ std::string JsonData::JsonCmd_Cgi_56(Param_56 &param) {
jsonVal["success"] = false; jsonVal["success"] = false;
jsonVal["message"] = "没有数据文件"; jsonVal["message"] = "没有数据文件";
} }
}else{
filename = "/opt/data/" + param.mChannelId + "-LF.dat";
if (access(filename.c_str(), 0) >= 0) {
std::ifstream inFile(filename.c_str(), std::ios::in | std::ios::binary);
if (!inFile) {
zlog_error(zct, "read channel data error, filename:%s", filename.c_str());
jsonVal["success"] = false;
jsonVal["message"] = "error";
} else {
float fTemp = 0;
std::vector<float> hanningWave;
inFile.read((char *)localtimestamp, sizeof(localtimestamp));
while (inFile.read((char *)&fTemp, sizeof(fTemp))) {
vecWave.push_back(fTemp);
}
resolution = 1 / 3.2 ;
//积分
Calculation::Integration(vecWave, IntegrationWave, resolution);
Calculation::FFTSpec(IntegrationWave, fftWave);
int flag = param.mPackageFlag;
flag = (flag + 1) * 1024;
int number = fftWave.size();
int start = param.mPackageFlag * 1024;
if (number < 1024) {
flag = number;
start = 0;
}
char buf[32];
for (int i = start; i < flag; i++) {
if (i == start) {
memset(buf, 0, 32);
sprintf(buf, "%.2f", fftWave[i]);
std::string waveTemp(buf);
strWaveData = waveTemp;
} else {
memset(buf, 0, 32);
sprintf(buf, "%.2f", fftWave[i]);
std::string waveTemp(buf);
strWaveData = strWaveData + "," + waveTemp;
}
}
int max = number / 1024;
if (max == 0 && number > 0) {
max = 1;
}
jsBody["packageMax"] = max;
}
} else {
jsonVal["success"] = false;
jsonVal["message"] = "没有数据文件";
}
}
jsBody["channelId"] = param.mChannelId; jsBody["channelId"] = param.mChannelId;
jsBody["package"] = param.mPackageFlag; jsBody["package"] = param.mPackageFlag;
@ -1201,6 +1258,7 @@ std::string JsonData::JsonCmd_Cgi_65(Param_65 &param){
char count_sql[1024] = {0}; char count_sql[1024] = {0};
int recive_feature = 0, send_feature = 0,resend_feature = 0; int recive_feature = 0, send_feature = 0,resend_feature = 0;
int recive_x = 0, recive_y = 0, recive_z = 0,resend_z = 0; int recive_x = 0, recive_y = 0, recive_z = 0,resend_z = 0;
float rssi = 0.0;
//int send_x = 0, send_y = 0, send_z = 0; //int send_x = 0, send_y = 0, send_z = 0;
for (size_t i = 0; i < nSize; i++) for (size_t i = 0; i < nSize; i++)
{ {
@ -1291,15 +1349,21 @@ std::string JsonData::JsonCmd_Cgi_65(Param_65 &param){
iTem.append(0); iTem.append(0);
iTem.append(0); iTem.append(0);
iTem.append(0); iTem.append(0);
std::vector<std::string> vRssi; std::vector<std::string> vParamRSSI;
boost::split(vRssi, vetRes[i][2], boost::is_any_of(","), boost::token_compress_on); boost::split(vParamRSSI, vetRes[i][2], boost::is_any_of(","), boost::token_compress_on);
if (vRssi.size() > 0 ){ if (vParamRSSI.size() > 1) {
iTem.append(atof(vRssi[0].c_str())/float(255)); iTem.append(atof(vParamRSSI[1].c_str()) / 255.0 );
iTem.append(atof(vRssi[1].c_str())/float(255)); iTem.append(0);
rssi = atof(vParamRSSI[1].c_str()) / 255.0 ;
} else {
iTem.append(atof(vetRes[i][2].c_str()));
iTem.append(0);
rssi = atof(vetRes[i][2].c_str());
} }
iTem.append(resend_feature); iTem.append(resend_feature);
iTem.append(resend_z); iTem.append(resend_z);
iTem.append(60); //信号 iTem.append(rssi); //信号
iTem.append(vetRes[i][3]); //电池 iTem.append(vetRes[i][3]); //电池
sprintf(whereCon,"timeStamp <> '' order by timeStamp desc limit 0,1 "); sprintf(whereCon,"timeStamp <> '' order by timeStamp desc limit 0,1 ");
memset(szTableName,0,sizeof(szTableName)); memset(szTableName,0,sizeof(szTableName));
@ -1411,6 +1475,7 @@ std::string JsonData::JsonCmd_Cgi_67(Param_67 &param){
} }
}else if(param.mMode == 1){//启动传感器调试 }else if(param.mMode == 1){//启动传感器调试
if(param.measurementID.size() > 0){ if(param.measurementID.size() > 0){
std::vector<uint16_t> short_addr_list;
for (size_t i = 0; i < param.measurementID.size(); i++) for (size_t i = 0; i < param.measurementID.size(); i++)
{ {
char whereCon[512] = {0}; char whereCon[512] = {0};
@ -1418,29 +1483,21 @@ std::string JsonData::JsonCmd_Cgi_67(Param_67 &param){
sprintf(whereCon, " MeasurementID = '%s' ", param.measurementID[i].c_str()); sprintf(whereCon, " MeasurementID = '%s' ", param.measurementID[i].c_str());
sprintf(updateSql, " status = '%d' ", 1);// 0 未调试1 调试中2 调试完成 sprintf(updateSql, " status = '%d' ", 1);// 0 未调试1 调试中2 调试完成
sqlite_db_ctrl::instance().UpdateTableData("t_debug_info", updateSql, whereCon); sqlite_db_ctrl::instance().UpdateTableData("t_debug_info", updateSql, whereCon);
//uint16_t short_addr; uint16_t short_addr;
//char *end_ptr = NULL; char *end_ptr = NULL;
//vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " zigbeeShortAddr ", whereCon); vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " zigbeeShortAddr ", whereCon);
//short_addr = strtol(vecResult[0].c_str(), &end_ptr, 16); short_addr = strtol(vecResult[0].c_str(), &end_ptr, 16);
//scheduler::instance().StartSensorDebug(short_addr); short_addr_list.push_back(short_addr);
} }
scheduler::instance().OpenDebugMode(short_addr_list);
} }
}else if(param.mMode == 2){ // 停止调试 }else if(param.mMode == 2){ // 停止调试
if(param.measurementID.size() > 0){
for (size_t i = 0; i < param.measurementID.size(); i++)
{
char whereCon[512] = {0}; char whereCon[512] = {0};
char updateSql[256] = {0}; char updateSql[256] = {0};
sprintf(whereCon, " MeasurementID = '%s' ", param.measurementID[i].c_str()); sprintf(whereCon, " status = '1' ");
sprintf(updateSql, " status = '%d' ", 1);// 0 未调试1 调试中2 调试完成 sprintf(updateSql, " status = '%d' ", 0);// 0 未调试1 调试中2 调试完成
sqlite_db_ctrl::instance().UpdateTableData("t_debug_info", updateSql, whereCon); sqlite_db_ctrl::instance().UpdateTableData("t_debug_info", updateSql, whereCon);
//uint16_t short_addr; scheduler::instance().CloseDebugMode();
//char *end_ptr = NULL;
//vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " zigbeeShortAddr ", whereCon);
//short_addr = strtol(vecResult[0].c_str(), &end_ptr, 16);
//scheduler::instance().StartSensorDebug(short_addr);
}
}
} }
return show_value_.write(jsonVal); return show_value_.write(jsonVal);
} }

View File

@ -174,13 +174,21 @@ std::string LocalServer::HandleCgi_cmd(std::string &pData) {
} break; } break;
case kWebDeleteTransducerInfo: { case kWebDeleteTransducerInfo: {
std::vector<Param_27> param; std::vector<Param_27> param;
for (size_t i = 0; i < recvBody.size(); i++) { std::string type = recvBody["type"].asString();
Param_27 p; Json::Value recvBodyTemp;
p.mDataNodeNo = recvBody[i]["dataNodeNo"].asString(); Json::Value recvDataNodeNo = recvBody["dataNodeNo"];
p.mShortAddr = recvBody[i]["shortAddr"].asString(); if (recvDataNodeNo.size() > 0)
p.mMeasurementID = recvBody[i]["MeasurementID"].asString(); {
p.mType = recvBody[i]["type"].asString(); for (size_t i = 0; i < recvDataNodeNo.size(); i++) {
param.push_back(p); Param_27 param_27;
Json::Value node = recvDataNodeNo[i];
param_27.mDataNodeNo = node[0u].asString();
param_27.mMeasurementID = node[1u].asString();
param_27.mShortAddr = node[2u].asString();
param_27.mType = type;
param.push_back(param_27);
}
} }
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_Cgi_27(param); std::string data = jd.JsonCmd_Cgi_27(param);
@ -630,14 +638,13 @@ std::string LocalServer::HandleCgi_cmd(std::string &pData) {
{ {
for (size_t i = 0; i < recvDataNodeNo.size(); i++) { for (size_t i = 0; i < recvDataNodeNo.size(); i++) {
Param_69_info vecParam; Param_69_info vecParam;
for (size_t j = 0; j < recvDataNodeNo[i].size(); j++) Json::Value node = recvDataNodeNo[i];
{ vecParam.measurementID = node[0u].asString();
vecParam.measurementID = recvDataNodeNo[i][j].asString(); vecParam.status = node[1u].asInt();
vecParam.status = recvDataNodeNo[i][j].asInt(); vecParam.trigerType = node[2u].asInt();
vecParam.trigerType = recvDataNodeNo[i][j].asInt(); vecParam.statisticType = node[3u].asInt();
vecParam.statisticType = recvDataNodeNo[i][j].asInt(); vecParam.threshold = node[4u].asDouble();
vecParam.threshold = recvDataNodeNo[i][j].asDouble();
}
param.vecParam69.push_back(vecParam); param.vecParam69.push_back(vecParam);
} }
} }

View File

@ -733,6 +733,7 @@ init_config:
return; return;
} }
} }
zlog_warn(zbt,"init end ");
} }
int SensorScheduler::WaveError(uint16_t short_addr, bool z) { int SensorScheduler::WaveError(uint16_t short_addr, bool z) {
@ -1250,11 +1251,12 @@ void SensorScheduler::UseDefaultConfig() {
int max_sensor_num = 32; int max_sensor_num = 32;
int wave_resend_num = 3; int wave_resend_num = 3;
// int eigen_value_send_interval = 120; // int eigen_value_send_interval = 300;
// int wave_form_send_interval = 240; // int wave_form_send_interval = 1200;
// int eigen_value_send_duration = 2; // 固定的 // int eigen_value_send_duration = 2; // 固定的
// int wave_form_send_duration = 60; // 固定的 // int wave_form_send_duration = 60; // 固定的
// int max_sensor_num = 4; // int max_sensor_num = 4;
// int wave_resend_num = 3;
std::string error_msg; std::string error_msg;
Config(eigen_value_send_interval, Config(eigen_value_send_interval,
wave_form_send_interval, wave_form_send_interval,

View File

@ -47,8 +47,7 @@ int Uart::UartRecv(int fd, char srcshow, char *buffer) {
ret = read_data(fd, buff, BUF_LENGTH, 10); ret = read_data(fd, buff, BUF_LENGTH, 10);
if (ret <= 0) { if (ret <= 0) {
timeoutflag++; timeoutflag++;
if (timeoutflag > 200) { if (timeoutflag > 150) {
DealReviveDuration(wave_shortAddr);
zlog_warn(zct, "===============0x9999 timeout= %d offSize = %d===============shortAddr = %02x%02x", timeoutflag, offSize,UINT16_HIGH(wave_shortAddr),UINT16_LOW(wave_shortAddr)); zlog_warn(zct, "===============0x9999 timeout= %d offSize = %d===============shortAddr = %02x%02x", timeoutflag, offSize,UINT16_HIGH(wave_shortAddr),UINT16_LOW(wave_shortAddr));
// zlog_warn(zct, "0x9999 timeout %d===============Size = %d", timeoutflag, offSize); // zlog_warn(zct, "0x9999 timeout %d===============Size = %d", timeoutflag, offSize);
// printf("=============offSize = %d\n",offSize); // printf("=============offSize = %d\n",offSize);
@ -381,7 +380,7 @@ int Uart::DealAskTask(uint16_t ushortAdd){
bool z = false; bool z = false;
taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration,z, next_task_id); taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration,z, next_task_id);
current_z = z; current_z = z;
zlog_info(zct, "taskID = %d next_duration = %d next_task_id = %d", taskID, next_duration, next_task_id); zlog_info(zct, "taskID = %d next_duration = %d next_task_id = %d,current_z = %d", taskID, next_duration, next_task_id,current_z);
if (taskID == kScheduleConfigSensor) if (taskID == kScheduleConfigSensor)
{ {
scheduleTask.cmd = CONFIG; scheduleTask.cmd = CONFIG;
@ -517,7 +516,13 @@ int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){
std::string productNo = res[17]; std::string productNo = res[17];
compressWaveChannel tempchannel; compressWaveChannel tempchannel;
if ((compareVersions(softVersion, "2.6") == -1 && productNo == "02") || productNo == "01"){ // DN101所有版本和DN102 2.6以前版本 if ((compareVersions(softVersion, "2.6") == -1 && productNo == "02") || productNo == "01"){ // DN101所有版本和DN102 2.6以前版本
WaveResp(ushortAdd); ScheduleStatus schedule_status = scheduler::instance().GetScheduleStatus();
if(schedule_status == kScheduleStatusDebug || schedule_status == kScheduleStatusUpgrade){
zlog_warn(zct, "ScheduleStatus not meet condition ,shortAddr = %s,schedule_status = %d",shortAdd,schedule_status);
scheduler::instance().WaveSuccess(ushortAdd,true);
return 1;
}
WaveResp(ushortAdd);// 响应超时和传感器配值的重试次数有关重试10次是1s
tempchannel.compressChannelX = pData[7]; tempchannel.compressChannelX = pData[7];
tempchannel.compressChannelY = pData[8]; tempchannel.compressChannelY = pData[8];
tempchannel.compressChannelZ = pData[9]; tempchannel.compressChannelZ = pData[9];
@ -527,12 +532,18 @@ int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){
tempchannel.CountZ = BUILD_UINT32(pData[21], pData[20],pData[19],pData[18]); tempchannel.CountZ = BUILD_UINT32(pData[21], pData[20],pData[19],pData[18]);
sprintf(sensor_rssi, "%02d", pData[22] & 0xFF); sprintf(sensor_rssi, "%02d", pData[22] & 0xFF);
}else{ }else{
int ret = WaveSendCondition(shortAdd); int ret = 0;//= WaveSendCondition(shortAdd);
if(ret == 1){ if(ret == 1){
zlog_warn(zct, "WaveSendCondition not meet condition ,shortAddr = %s",shortAdd); zlog_warn(zct, "WaveSendCondition not meet condition ,shortAddr = %s",shortAdd);
scheduler::instance().WaveSuccess(ushortAdd,true); scheduler::instance().WaveSuccess(ushortAdd,true);
return 1; return 1;
}else{ }else{
ScheduleStatus schedule_status = scheduler::instance().GetScheduleStatus();
if(schedule_status == kScheduleStatusUpgrade){
zlog_warn(zct, "ScheduleStatus not meet condition ,shortAddr = %s,schedule_status = %d",shortAdd,schedule_status);
scheduler::instance().WaveSuccess(ushortAdd,true);
return 1;
}
WaveResp(ushortAdd); WaveResp(ushortAdd);
} }
sprintf(sensor_rssi, "%02d", pData[7] & 0xFF); sprintf(sensor_rssi, "%02d", pData[7] & 0xFF);
@ -581,7 +592,7 @@ int Uart::DealWaveCompress(const char *pData,uint16_t ushortAdd){
sqlite_db_ctrl::instance().UpdateTableData(tableName, updateSql, whereCon); sqlite_db_ctrl::instance().UpdateTableData(tableName, updateSql, whereCon);
} }
zlog_info(zct, "count X = %d,Y = %d,Z = %d,vol X = %d,vol Y = %d,vol Z = %d ", tempchannel.CountX, tempchannel.CountY, tempchannel.CountZ,tempchannel.CountVolX,tempchannel.CountVolY,tempchannel.CountVolZ); zlog_warn(zct, "count X = %d,Y = %d,Z = %d,vol X = %d,vol Y = %d,vol Z = %d short_add = %s", tempchannel.CountX, tempchannel.CountY, tempchannel.CountZ,tempchannel.CountVolX,tempchannel.CountVolY,tempchannel.CountVolZ,strShortAddr.c_str());
zlog_info(zct, "compress X = %d,Y = %d,Z = %d ", tempchannel.compressChannelX, tempchannel.compressChannelY, tempchannel.compressChannelZ); zlog_info(zct, "compress X = %d,Y = %d,Z = %d ", tempchannel.compressChannelX, tempchannel.compressChannelY, tempchannel.compressChannelZ);
zlog_info(zct, "compress vol X = %d,vol Y = %d,vol Z = %d ", tempchannel.compressChannelVolX, tempchannel.compressChannelVolY, tempchannel.compressChannelVolZ); zlog_info(zct, "compress vol X = %d,vol Y = %d,vol Z = %d ", tempchannel.compressChannelVolX, tempchannel.compressChannelVolY, tempchannel.compressChannelVolZ);
zlog_info(zct, "samplerate X = %d,Y = %d,Z = %d ", tempchannel.samplerateX, tempchannel.samplerateY, tempchannel.samplerateZ); zlog_info(zct, "samplerate X = %d,Y = %d,Z = %d ", tempchannel.samplerateX, tempchannel.samplerateY, tempchannel.samplerateZ);
@ -691,16 +702,18 @@ int Uart::DealAskTaskOld(uint16_t ushortAdd){
ScheduleTask scheduleTask; ScheduleTask scheduleTask;
bool z = false; bool z = false;
taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration,z, next_task_id); taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration,z, next_task_id);
zlog_info(zct, "DealAskTaskOld taskID = %d next_duration = %d next_task_id = %d", taskID, next_duration, next_task_id); zlog_warn(zct, "DealAskTaskOld taskID = %d next_duration = %d next_task_id = %d", taskID, next_duration, next_task_id);
if(next_task_id == kScheduleUpgrade){ //if(next_task_id == kScheduleUpgrade)
scheduleTask.cmd = REVIVE_DURATION; {
scheduleTask.shortAddr = ushortAdd; // scheduleTask.cmd = REVIVE_DURATION;
scheduleTask.duration = next_duration; // scheduleTask.shortAddr = ushortAdd;
scheduleTask.next_taskID = UPGRADE; // scheduleTask.duration = next_duration;
TaskResp(scheduleTask); // scheduleTask.next_taskID = UPGRADE;
// TaskResp(scheduleTask);
UpdateWirelessNode(ushortAdd);
} }
if (taskID == kScheduleUpgrade){ if (taskID == kScheduleUpgrade){
UpdateWirelessNode(ushortAdd);
} }
return 0; return 0;
} }

View File

@ -26,7 +26,7 @@ enum InteractiveCommand {
CONFIG_INF2 = 10, // 配置 只从无线网关发出 测点名称,测点编号 CONFIG_INF2 = 10, // 配置 只从无线网关发出 测点名称,测点编号
DEVICE_INF2 = 11, // 测点名称,测点编号 DEVICE_INF2 = 11, // 测点名称,测点编号
UPGRADE = 12, // 升级, 升级给这条信息 UPGRADE = 12, // 升级, 升级给这条信息
SIGNAL_STRENGTH = 13, // 信号强度 --不再使用 SIGNAL_STRENGTH = 13, // 信号强度 --不再使用(2026-02-12)
DEVICE_EXCEPTION = 14, // 异常: 外设 DEVICE_EXCEPTION = 14, // 异常: 外设
WAVE_COMPRESS = 15, // 波形数据压缩 WAVE_COMPRESS = 15, // 波形数据压缩
UPGRADE_FIRMWARE = 16, //固件升级内容 UPGRADE_FIRMWARE = 16, //固件升级内容

View File

@ -1077,6 +1077,21 @@ void Uart::DealWave() {
coe = Calcoe(n, WAVE_X, strProduct, range); coe = Calcoe(n, WAVE_X, strProduct, range);
vecDataX = DealData(WAVE_X, coe, sampleRate, accSampleTimeXY, strProduct,version); vecDataX = DealData(WAVE_X, coe, sampleRate, accSampleTimeXY, strProduct,version);
if(vecDataX.size() > 0 && g_mapCompress[strShortAddr].CountX > 0){
scheduler::instance().WaveSuccess(wave_shortAddr,false);
zlog_info(zct, "WaveSuccess shortAddr = %02x%02x,channel = %d", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,WAVE_X);
}else{
int iRet = scheduler::instance().WaveError(wave_shortAddr,false);
if (iRet != 0) {
memset(whereCon, 0x00, sizeof(whereCon));
char updateSql[1024] = { 0 };
sprintf(updateSql, "resend = '%d'", iRet);
sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str());
sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon);
}
}
zlog_info(zct,"DealReviveDuration start shortAddr = %02x%02x,channel = %d", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,WAVE_X);
DealReviveDuration(wave_shortAddr);
WriteDatFile(sampleRate, strMeasurementID, WAVE_X, vecDataX,strProduct,accSampleTimeXY,version); WriteDatFile(sampleRate, strMeasurementID, WAVE_X, vecDataX,strProduct,accSampleTimeXY,version);
m_waveCountX = 0; m_waveCountX = 0;
g_VecWaveDataX.clear(); g_VecWaveDataX.clear();
@ -1096,6 +1111,20 @@ void Uart::DealWave() {
zlog_info(zct, "m_waveCountZ = %d,VecWaveDataZ = %zu", m_waveCountZ, VecWaveDataZ.size()); zlog_info(zct, "m_waveCountZ = %d,VecWaveDataZ = %zu", m_waveCountZ, VecWaveDataZ.size());
coe = Calcoe(n, WAVE_Z, strProduct, range); coe = Calcoe(n, WAVE_Z, strProduct, range);
vecDataZ = DealData(WAVE_Z, coe, sampleRate, accSampleTimeZ, strProduct,version); vecDataZ = DealData(WAVE_Z, coe, sampleRate, accSampleTimeZ, strProduct,version);
if(vecDataZ.size() > 0 && g_mapCompress[strShortAddr].CountZ > 0){
scheduler::instance().WaveSuccess(wave_shortAddr,true);
}else{
int iRet = scheduler::instance().WaveError(wave_shortAddr,true);
if (iRet != 0) {
memset(whereCon, 0x00, sizeof(whereCon));
char updateSql[1024] = { 0 };
sprintf(updateSql, "resend = '%d'", iRet);
sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str());
sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon);
}
}
zlog_info(zct,"DealReviveDuration start shortAddr = %02x%02x,channel = %d", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,WAVE_X);
DealReviveDuration(wave_shortAddr);
WriteDatFile(sampleRate, strMeasurementID, WAVE_Z, vecDataZ,strProduct,accSampleTimeZ,version); WriteDatFile(sampleRate, strMeasurementID, WAVE_Z, vecDataZ,strProduct,accSampleTimeZ,version);
m_waveCountZ = 0; m_waveCountZ = 0;
g_VecWaveDataZ.clear(); g_VecWaveDataZ.clear();
@ -1148,63 +1177,63 @@ void Uart::DealWave() {
sqlite_db_ctrl::instance().InsertData(" receive_wave_status ", insertSql); sqlite_db_ctrl::instance().InsertData(" receive_wave_status ", insertSql);
} }
zlog_warn(zct,"waveCountX = %zu, waveCountY = %zu, waveCountZ = %zu", vecDataX.size() , vecDataY.size(), vecDataZ.size()); zlog_warn(zct,"waveCountX = %zu, waveCountY = %zu, waveCountZ = %zu", vecDataX.size() , vecDataY.size(), vecDataZ.size());
zlog_warn(zct,"CountX = %d, CountY = %d, CountZ = %d", g_mapCompress[strShortAddr].CountX , g_mapCompress[strShortAddr].CountY, g_mapCompress[strShortAddr].CountZ); zlog_warn(zct,"CountX = %d, CountY = %d, CountZ = %d,strShortAddr = %s", g_mapCompress[strShortAddr].CountX , g_mapCompress[strShortAddr].CountY, g_mapCompress[strShortAddr].CountZ,strShortAddr.c_str());
if ((vecDataX.size() <= 0 && g_mapCompress[strShortAddr].CountX > 0) || // if ((vecDataX.size() <= 0 && g_mapCompress[strShortAddr].CountX > 0) ||
(vecDataY.size() <= 0 && g_mapCompress[strShortAddr].CountY > 0) || // (vecDataY.size() <= 0 && g_mapCompress[strShortAddr].CountY > 0) ||
(vecDataZ.size() <= 0 && g_mapCompress[strShortAddr].CountZ > 0)) // (vecDataZ.size() <= 0 && g_mapCompress[strShortAddr].CountZ > 0))
{ // {
int iRet = -1; // int iRet = -1;
if (vecDataZ.size() <= 0 && g_mapCompress[strShortAddr].CountZ > 0) // if (vecDataZ.size() <= 0 && g_mapCompress[strShortAddr].CountZ > 0)
{ // {
iRet = scheduler::instance().WaveError(wave_shortAddr,true); // iRet = scheduler::instance().WaveError(wave_shortAddr,true);
}else{ // }else{
iRet = scheduler::instance().WaveError(wave_shortAddr,false); // iRet = scheduler::instance().WaveError(wave_shortAddr,false);
} // }
if (iRet != 0) { // if (iRet != 0) {
memset(whereCon, 0x00, sizeof(whereCon)); // memset(whereCon, 0x00, sizeof(whereCon));
char updateSql[1024] = { 0 }; // char updateSql[1024] = { 0 };
sprintf(updateSql, "resend = '%d'", iRet); // sprintf(updateSql, "resend = '%d'", iRet);
sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str()); // sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str());
sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon); // sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon);
} // }
}else if ((vecDataX.size() > 0 && g_mapCompress[strShortAddr].CountX > 0) || // }else if ((vecDataX.size() > 0 && g_mapCompress[strShortAddr].CountX > 0) ||
(vecDataY.size() > 0 && g_mapCompress[strShortAddr].CountY > 0) || // (vecDataY.size() > 0 && g_mapCompress[strShortAddr].CountY > 0) ||
(vecDataZ.size() > 0 && g_mapCompress[strShortAddr].CountZ > 0)) // (vecDataZ.size() > 0 && g_mapCompress[strShortAddr].CountZ > 0))
{ // {
if(vecDataZ.size() > 0 && g_mapCompress[strShortAddr].CountZ > 0){ // if(vecDataZ.size() > 0 && g_mapCompress[strShortAddr].CountZ > 0){
scheduler::instance().WaveSuccess(wave_shortAddr,true); // scheduler::instance().WaveSuccess(wave_shortAddr,true);
}else{ // }else{
scheduler::instance().WaveSuccess(wave_shortAddr,false); // scheduler::instance().WaveSuccess(wave_shortAddr,false);
} // }
memset(whereCon, 0x00, sizeof(whereCon)); // memset(whereCon, 0x00, sizeof(whereCon));
char updateSql[1024] = { 0 }; // char updateSql[1024] = { 0 };
sprintf(updateSql, "resend = '%d'", 1); // sprintf(updateSql, "resend = '%d'", 1);
sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str()); // sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str());
sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon); // sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon);
} // }
if (g_mapCompress[strShortAddr].CountX <= 0 && g_mapCompress[strShortAddr].CountY <= 0 && !current_z) // if (g_mapCompress[strShortAddr].CountX <= 0 && g_mapCompress[strShortAddr].CountY <= 0 && !current_z)
{ // {
int iRet = scheduler::instance().WaveError(wave_shortAddr,false); // int iRet = scheduler::instance().WaveError(wave_shortAddr,false);
if (iRet != 0) { // if (iRet != 0) {
memset(whereCon, 0x00, sizeof(whereCon)); // memset(whereCon, 0x00, sizeof(whereCon));
char updateSql[1024] = { 0 }; // char updateSql[1024] = { 0 };
sprintf(updateSql, "resend = '%d'", iRet); // sprintf(updateSql, "resend = '%d'", iRet);
sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str()); // sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str());
sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon); // sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon);
} // }
} // }
if (current_z && g_mapCompress[strShortAddr].CountZ <= 0) // if (current_z && g_mapCompress[strShortAddr].CountZ <= 0)
{ // {
int iRet = scheduler::instance().WaveError(wave_shortAddr,true); // int iRet = scheduler::instance().WaveError(wave_shortAddr,true);
if (iRet != 0) { // if (iRet != 0) {
memset(whereCon, 0x00, sizeof(whereCon)); // memset(whereCon, 0x00, sizeof(whereCon));
char updateSql[1024] = { 0 }; // char updateSql[1024] = { 0 };
sprintf(updateSql, "resend = '%d'", iRet); // sprintf(updateSql, "resend = '%d'", iRet);
sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str()); // sprintf(whereCon, "short_addr='%02x%02x' and timestamp = '%s'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,(char*)timestamp_last.c_str());
sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon); // sqlite_db_ctrl::instance().UpdateTableData(" receive_wave_status ", updateSql, whereCon);
} // }
} // }
g_mapCompress[strShortAddr].CountX = 0; g_mapCompress[strShortAddr].CountX = 0;
g_mapCompress[strShortAddr].CountY = 0; g_mapCompress[strShortAddr].CountY = 0;
@ -1225,7 +1254,10 @@ void Uart::DealWave() {
std::vector<float>().swap(vecDataVolY); std::vector<float>().swap(vecDataVolY);
std::vector<float>().swap(vecDataVolZ); std::vector<float>().swap(vecDataVolZ);
wave_trans_ = false; wave_trans_ = false;
zlog_warn(zct,"DealWave end, wave_shortAddr = %02x%02x", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF);
//DealReviveDuration(wave_shortAddr);
} }
} }
float Uart::Calcoe(int ran, int iChannel, std::string &product, int range) { float Uart::Calcoe(int ran, int iChannel, std::string &product, int range) {

View File

@ -66,6 +66,9 @@ void Uart::UpdateWirelessNode(uint16_t shortAdd) {
memset(wherecon,0,sizeof(wherecon)); memset(wherecon,0,sizeof(wherecon));
sprintf(wherecon," zigbeeShortAddr = '%02x%02x' ",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); sprintf(wherecon," zigbeeShortAddr = '%02x%02x' ",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " hardVersion,softVersion,ProductNo,upgradeStatus ", wherecon); vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " hardVersion,softVersion,ProductNo,upgradeStatus ", wherecon);
if(vecResult.size() < 1){
return ;
}
if (vecResult[3] == "2"){ if (vecResult[3] == "2"){
zlog_warn(zbt, "UpdateWirelessNode already ,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); zlog_warn(zbt, "UpdateWirelessNode already ,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
return; return;