From 072cd7fd7cb62350c6e8c15da86943f2caa195f5 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Wed, 19 Mar 2025 17:27:36 +0800 Subject: [PATCH] fix bugs --- uart/uart.cpp | 121 +++++++++++++++++++----------------- uart/uart_feature_parse.cpp | 1 + 2 files changed, 64 insertions(+), 58 deletions(-) diff --git a/uart/uart.cpp b/uart/uart.cpp index e4e0cb6..3533ee0 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -516,69 +516,67 @@ void Uart::DealRecvData(const char *pData) { zlog_info(zct, "whereCon = %s", whereCon); array_t vecRes = sqlite_db_ctrl::instance().GetDataMultiLine(T_SENSOR_INFO(TNAME), " dataNodeNo, MeasurementID,hardVersion,softVersion", whereCon); zlog_info(zct, "vecRes = %d", vecRes.size()); + if(vecRes.size() == 0){ + zlog_warn(zct, "device info not found %02x%02x ", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); + return; + } std::string hardVersion = vecRes[0][2]; std::string softVersion = vecRes[0][3]; zlog_info(zct, "shortAdd = %02x%02x,command = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command); - if ((hardVersion == "3.0" && compareVersions(softVersion, "5.0") == -1) || (hardVersion == "4.0" && compareVersions(softVersion, "5.0") == -1)|| (hardVersion == "1.0" && compareVersions(softVersion,"1.2") == -1)) { - switch (command) { - case DEVICE_INF: - DealDataNodeFeature(pData,0); - break; - default: break; - } - }else{ - switch (command) { - case DEVICE_INF: - DealDataNodeInfo(pData); - break; - case DEVICE_INF2: - DealDataNodeName(pData); - break; - case ASK_TASK: - DealAskTask(ushortAdd); - break; - case DEVICE_EXCEPTION: - DealException(pData); - break; - case MEAS_EVAL: - DealDataNodeFeature(pData, 0); + zlog_info(zct, "hardVersion1 = %s,softVersion2 = %s ",hardVersion.c_str(),softVersion.c_str()); + + switch (command) { + case DEVICE_INF: + DealDataNodeInfo(pData); + break; + case DEVICE_INF2: + DealDataNodeName(pData); + break; + case ASK_TASK: + DealAskTask(ushortAdd); + break; + case DEVICE_EXCEPTION: + DealException(pData); + break; + case MEAS_EVAL: + DealDataNodeFeature(pData, 0); + DealReviveDuration(ushortAdd); + break; + case UPGRADE: + if (recvcode == 0){ + DealUpgrade(ushortAdd,2); + scheduler::instance().UpgradeResult(ushortAdd,0); + zlog_info(zbt, "[UPGRADE SUCCESS] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); + }else if (recvcode == 5) + { + DealUpgrade(ushortAdd,2); + scheduler::instance().UpgradeResult(ushortAdd,0); + zlog_warn(zbt, "[UPGRADE ALREADY] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); + }else + { + DealUpgrade(ushortAdd,3); + scheduler::instance().UpgradeResult(ushortAdd,recvcode); + zlog_warn(zbt, "[UPGRADE FAILED] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); + } + break; + case CONFIG: + if (recvcode == 0){ DealReviveDuration(ushortAdd); - break; - case UPGRADE: - if (recvcode == 0){ - DealUpgrade(ushortAdd,2); - scheduler::instance().UpgradeResult(ushortAdd,0); - zlog_info(zbt, "[UPGRADE SUCCESS] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); - }else if (recvcode == 5) - { - DealUpgrade(ushortAdd,2); - scheduler::instance().UpgradeResult(ushortAdd,0); - zlog_warn(zbt, "[UPGRADE ALREADY] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); - }else - { - DealUpgrade(ushortAdd,3); - scheduler::instance().UpgradeResult(ushortAdd,recvcode); - zlog_warn(zbt, "[UPGRADE FAILED] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); - } - break; - case CONFIG: - if (recvcode == 0){ - DealReviveDuration(ushortAdd); - DealConfig(ushortAdd); - }else{ - scheduler::instance().UpdateConfigResult(ushortAdd,recvcode); - zlog_warn(zbt, "[CONFIG] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); - } - break; - case WAVE_COMPRESS: - DealWaveCompress(pData,ushortAdd); - break; - case SIGNAL_STRENGTH: - DealSensorRSSI(pData,ushortAdd); - break; - default: break; - } + DealConfig(ushortAdd); + }else{ + scheduler::instance().UpdateConfigResult(ushortAdd,recvcode); + zlog_warn(zbt, "[CONFIG] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); + } + break; + case WAVE_COMPRESS: + DealWaveCompress(pData,ushortAdd); + break; + case SIGNAL_STRENGTH: + DealSensorRSSI(pData,ushortAdd); + break; + default: break; } + } void Uart::DealDataNodeName(const char *pData) { @@ -697,6 +695,13 @@ void Uart::DealDataNodeInfo(const char *pData) { memset(buf, 0, 32); sprintf(buf, "%.1f", 0.1 * chTemp); dataNodeInfo.HardVersion = std::string(buf); + zlog_info(zct, "dataNodeInfo.HardVersion = %s", dataNodeInfo.HardVersion.c_str()); + if (dataNodeInfo.HardVersion != "3.0" && dataNodeInfo.HardVersion != "4.0" && dataNodeInfo.HardVersion != "1.0") { + DealDataNodeFeatureTransition(pData,0); + zlog_info(zct, "DealDataNodeFeatureTransition"); + return; + } + chTemp = pRecvData->Data[10]; //软件版本 1 byte memset(buf, 0, 32); diff --git a/uart/uart_feature_parse.cpp b/uart/uart_feature_parse.cpp index 033d540..d363d57 100644 --- a/uart/uart_feature_parse.cpp +++ b/uart/uart_feature_parse.cpp @@ -1530,6 +1530,7 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) { fTemp = (((~iTemp) & 0xffff) + 1) * (-1); } dataStatic.TemBot = fTemp * 0.0625; //设备温度 + fTemp = 0; memset(buf, 0, sizeof(buf));