From a100e11c33de93056de068609cf2860ddc2cadfd Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Tue, 5 Nov 2024 17:22:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E4=B8=B2=E5=8F=A3=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=9B=E8=A1=8CCRC=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/common_func.cpp | 1 - uart/uart.cpp | 45 ++++++++++++++++++++++++++++++---- uart/uart.hpp | 9 ++++--- uart/uart_parameter_config.cpp | 1 + 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/common/common_func.cpp b/common/common_func.cpp index e35ca1f..c159354 100644 --- a/common/common_func.cpp +++ b/common/common_func.cpp @@ -903,7 +903,6 @@ std::string GetGwIp_(const char *eth_name) { if (host) { strcpy(gwip_, inet_ntoa(host->sin_addr)); } - zlog_info(zbt, "eth_name :%s, local ip:%s", eth_name, gwip_); return std::string(gwip_); } diff --git a/uart/uart.cpp b/uart/uart.cpp index 0953cb3..fbf1bee 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -374,7 +374,9 @@ int Uart::DealAskTask(uint16_t ushortAdd){ int next_duration = 0; int taskID = scheduler::instance().StartSchedule(ushortAdd,next_duration); ScheduleTask scheduleTask; - if (taskID == kScheduleEigenValue) //1.特征值 + zlog_info(zct, "taskID = %d ", taskID); + // if (taskID == kScheduleEigenValue) //1.特征值 + if (taskID == 6) { char localtimestamp[32] = {0x00}; int millisecond = 0; @@ -383,6 +385,7 @@ int Uart::DealAskTask(uint16_t ushortAdd){ scheduleTask.shortAddr = ushortAdd; scheduleTask.timeStamp = atoi(localtimestamp); TaskResp(scheduleTask); + return 0; } else if (taskID == kScheduleWaveForm) //2.波形 { @@ -407,6 +410,7 @@ int Uart::DealAskTask(uint16_t ushortAdd){ scheduleTask.cmd = REVIVE_DURATION; scheduleTask.shortAddr = ushortAdd; scheduleTask.duration = next_duration; + zlog_info(zct, "next_duration = %d ", next_duration); TaskResp(scheduleTask); }else if (taskID == kScheduleConfigSensor) //6.更新配置 { @@ -430,6 +434,7 @@ int Uart::DealReviveDuration(uint16_t ushortAdd){ scheduleTask.cmd = REVIVE_DURATION; scheduleTask.shortAddr = ushortAdd; scheduleTask.duration = next_duration; + zlog_info(zct, "next_duration = %d ", next_duration); TaskResp(scheduleTask); return 0; } @@ -1028,11 +1033,41 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { DealDataNodeWave(RecvBuf, command); } else if (now_task != WAVE_CMD && (command == ASK_TASK || command == DEVICE_INF || command == MEAS_EVAL || command == CONFIG || command == UPGRADE || command == DEVICE_INF2 || command == SIGNAL_STRENGTH || command == DEVICE_EXCEPTION || command == WAVE_COMPRESS)) { char RecvBuf[100] = {0x00}; - memcpy(RecvBuf, &UartRecvBuf[i], 100); - if (!CheckCrc(RecvBuf, 99)) { - zlog_info(zct, "CheckCrc error ShortAddr :%s command = %d ", strShortAddr.c_str(), command); - break; + if (command == ASK_TASK ) + { + memcpy(RecvBuf, &UartRecvBuf[i], 8); + if (!CheckCrc(RecvBuf, 7)) { + zlog_info(zct, "CheckCrc error ShortAddr :%s command = %d ", strShortAddr.c_str(), command); + break; + } } + if (command == WAVE_COMPRESS ) + { + memcpy(RecvBuf, &UartRecvBuf[i], 23); + if (!CheckCrc(RecvBuf, 22)) { + zlog_info(zct, "CheckCrc error ShortAddr :%s command = %d ", strShortAddr.c_str(), command); + break; + } + } + if (command == CONFIG || command == CONFIG_INF2 || command == UPGRADE || command == SIGNAL_STRENGTH || command == DEVICE_EXCEPTION || command == WAVE_COMPRESS) + { + memcpy(RecvBuf, &UartRecvBuf[i], 9); + if (!CheckCrc(RecvBuf, 8)) { + zlog_info(zct, "CheckCrc error ShortAddr :%s command = %d ", strShortAddr.c_str(), command); + break; + } + } + + if (command == DEVICE_INF || command == MEAS_EVAL || command == DEVICE_INF2) + { + memcpy(RecvBuf, &UartRecvBuf[i], 100); + if (!CheckCrc(RecvBuf, 99)) { + zlog_info(zct, "CheckCrc error ShortAddr :%s command = %d ", strShortAddr.c_str(), command); + break; + } + } + + DealRecvData(RecvBuf); } else if (command == 35) { diff --git a/uart/uart.hpp b/uart/uart.hpp index ba95bc8..cb4e528 100644 --- a/uart/uart.hpp +++ b/uart/uart.hpp @@ -23,11 +23,12 @@ enum InteractiveCommand { WAVE_Z = 7, // 只从传感器发出 REVIVE_DURATION = 8, // 复活时长 CONFIG = 9, // 配置 只从无线网关发出 - UPGRADE = 10, // 升级, 升级给这条信息 + CONFIG_INF2 = 10, // 配置 只从无线网关发出 DEVICE_INF2 = 11, // 测点名称,测点编号 - SIGNAL_STRENGTH = 12, // 信号强度 - DEVICE_EXCEPTION = 13, // 异常: 外设 - WAVE_COMPRESS = 14, // 波形数据压缩 + UPGRADE = 12, // 升级, 升级给这条信息 + SIGNAL_STRENGTH = 13, // 信号强度 + DEVICE_EXCEPTION = 14, // 异常: 外设 + WAVE_COMPRESS = 15, // 波形数据压缩 }; // 无线传感器请求任务 typedef struct { diff --git a/uart/uart_parameter_config.cpp b/uart/uart_parameter_config.cpp index 3a4b99d..4783266 100644 --- a/uart/uart_parameter_config.cpp +++ b/uart/uart_parameter_config.cpp @@ -543,6 +543,7 @@ int Uart::TaskResp(ScheduleTask scheduleTask){ tmp += UpdateData[k]; } UpdateData[99] = tmp; + mssleep(10000); WriteToUart((const char*)UpdateData, 100); int iRet = CheckZigbeeACK(); if (iRet == 0) {