From 0382082159710bfd226723dfd54cae09b2668423 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期一, 15 十一月 2021 11:56:00 +0800
Subject: [PATCH] V1.61

---
 源码/核心板/Src/application/serial_at_cmd_app.c |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c"
index 831634f..77ef341 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c"
@@ -21,7 +21,8 @@
 				UsartReceiveWaitIndex,
 				UsartReceiveWaitDataLen,
 				UsartReceiveWaitData,
-				UsartReceiveWaitChecksum,
+				UsartReceiveWaitChecksum0,
+				UsartReceiveWaitChecksum1
 			
 }UsartRecvPackState;
 
@@ -65,7 +66,7 @@
 }
 u8 remotetag_para[30],remotetag_paralen,userdata_len,userdata[50];
 u8 remotesend_state=0;
-u16 rec_checksum;
+u16 rec_checksum,userdata_targetid;
 uint16_t configremotetagID;
 u32 getuserdata_tick;
 void UsartParseDataHandler(uint8_t data)
@@ -77,15 +78,16 @@
 	uint8_t i;
 
 	
-	if(usart_receive_state == UsartReceiveWaitChecksum) {			//若收到校验和包
+	if(usart_receive_state == UsartReceiveWaitChecksum1) {			//若收到校验和包
 		checksum = 0;
 		for(int i = 0; i<pack_length-2; i++) { 
 			checksum += mUsartReceivePack[i];
 		}
 		checksum += pack_msgtype;
 		checksum += pack_length;
-
-		if(((data + checksum)&0xff) == 0xFF)				//校验通过
+		checksum = ~checksum;
+		rec_checksum = rec_checksum|(data<<8);
+		if(rec_checksum == checksum)				//校验通过
 		{
 			switch(pack_msgtype)
 			{
@@ -144,10 +146,11 @@
 					memcpy(&remotetag_para[1],&mUsartReceivePack[3],remotetag_paralen);
 					break;
 				case MSG_USERDATA:	
-					userdata_len = mUsartReceivePack[0];
+					userdata_len = mUsartReceivePack[2];
+				memcpy(&userdata_targetid,mUsartReceivePack,2);
 				if(userdata_len==USERDATA_LEN)
 				{
-					memcpy(userdata,&mUsartReceivePack[0],USERDATA_LEN+1);
+					memcpy(userdata,&mUsartReceivePack[0],USERDATA_LEN+3);
 					getuserdata_tick = time32_incr;
 					SendConfigConfirm(pack_msgtype,pack_length);
 				}
@@ -160,11 +163,16 @@
 		pack_index = 0;
 		pack_length = 0;
 		index=0;
-	} else if(usart_receive_state == UsartReceiveWaitData)  {	//若果收到的是正常通讯包
+	}else if(usart_receive_state==UsartReceiveWaitChecksum0)
+	{
+		rec_checksum = data;
+		usart_receive_state = UsartReceiveWaitChecksum1;
+	}
+	else if(usart_receive_state == UsartReceiveWaitData)  {	//若果收到的是正常通讯包
 		mUsartReceivePack[index] = data;
 		index++;
 		if(index == pack_length-2) {		//如果收到的index与长度相等
-			usart_receive_state = UsartReceiveWaitChecksum;
+			usart_receive_state = UsartReceiveWaitChecksum0;
 		}
 	} else if(usart_receive_state == UsartReceiveWaitLength) {						//收到长度字节
 		

--
Gitblit v1.9.3