From 15582c4c4955031b897320af886a240715f83640 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Mon, 6 Jan 2025 16:44:15 +0800 Subject: [PATCH] fix receive wave bugs --- uart/uart.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/uart/uart.cpp b/uart/uart.cpp index 69140bc..7b1a9f6 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -1030,13 +1030,13 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { sprintf(buf, "%02d", UartRecvBuf[i + 5]); int command = atoi(buf); //zlog_info(zct, "command = %d ShortAddr :%s", command, strShortAddr.c_str()); - if ((mPackgeIndex == -1 || (unsigned int)UartRecvBuf[i + 6] == 0) ) { + if ((mPackgeIndex == -1 || (unsigned int)UartRecvBuf[i + 6] == 0) && (command == WAVE_X || command == WAVE_Y || command == WAVE_Z) ) { mPackgeIndex = UartRecvBuf[i + 6] & 0xFF; - } else if ((unsigned int)mPackgeIndex == (unsigned int)UartRecvBuf[i + 6] && mPackgeIndex != -1 && command != 2) { + } else if ((unsigned int)mPackgeIndex == (unsigned int)UartRecvBuf[i + 6] && mPackgeIndex != -1 && command != 2 && (command == WAVE_X || command == WAVE_Y || command == WAVE_Z)) { zlog_warn(zct, "mPackgeIndex same index1:%d,index2:%02d ShortAddr :%s ", mPackgeIndex, UartRecvBuf[i + 6] & 0xff, strShortAddr.c_str()); continue; - } else if ((unsigned int)mPackgeIndex + 1 != (unsigned int)UartRecvBuf[i + 6] && mPackgeIndex != -1 && command != 2) { + } else if ((unsigned int)mPackgeIndex + 1 != (unsigned int)UartRecvBuf[i + 6] && mPackgeIndex != -1 && command != 2 && (command == WAVE_X || command == WAVE_Y || command == WAVE_Z)) { m_TimeStamp = 0; zlog_warn(zct, "mPackgeIndex error index1:%d,index2:%02d ShortAddr :%s ", mPackgeIndex, UartRecvBuf[i + 6] & 0xff, strShortAddr.c_str()); @@ -1125,6 +1125,7 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { } memcpy(RecvBuf, (char *)&UartRecvBuf[i], 100); DealDataNodeWave(RecvBuf, command); + mPackgeIndex = (unsigned int)UartRecvBuf[i + 6]; } 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}; if (command == ASK_TASK ) @@ -1195,7 +1196,7 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { } } } - mPackgeIndex = (unsigned int)UartRecvBuf[i + 6]; + } else { continue;