From 29044bd524ee76b1d20772f7c9b46934df995812 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期四, 19 十一月 2020 15:58:21 +0800
Subject: [PATCH] V1.35 去掉恢复出厂设置功能,电梯客户测试
---
源码/核心板/Src/application/serial_at_cmd_app.c | 20 +++++++++++++-------
1 files changed, 13 insertions(+), 7 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 1f347bd..560de9f 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"
@@ -9,7 +9,7 @@
#define CMD_READ 1
#define CMD_WRITE 2
#define CMD_REPLY 3
-#define EUART_RX_BUF_SIZE 100
+#define EUART_RX_BUF_SIZE 200
typedef enum{ UsartReceiveWaitHead0,
UsartReceiveWaitHead1,
UsartReceiveWaitMsgType,
@@ -18,7 +18,8 @@
UsartReceiveWaitIndex,
UsartReceiveWaitDataLen,
UsartReceiveWaitData,
- UsartReceiveWaitChecksum
+ UsartReceiveWaitChecksum0,
+ UsartReceiveWaitChecksum1
}UsartRecvPackState;
uint8_t mUsartReceivePack[100] = {0};
@@ -43,7 +44,7 @@
UART_PushFrame(send_frame, data_length+9);
}
-
+u16 rec_checksum;
void UsartParseDataHandler(uint8_t data)
{
static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0;
@@ -53,7 +54,7 @@
- if(usart_receive_state == UsartReceiveWaitChecksum) { //若收到校验和包
+ if(usart_receive_state == UsartReceiveWaitChecksum1) { //若收到校验和包
checksum = 0;
for(int i = 0; i<pack_length-5; i++) {
checksum += mUsartReceivePack[i];
@@ -63,8 +64,10 @@
checksum += pack_index;
checksum += pack_datalen;
checksum += pack_msgtype;
+ checksum = ~checksum;
cmd_mode = 0;
- if(((data + checksum)&0xff) == 0xFF) //校验通过
+ rec_checksum = rec_checksum|(data<<8);
+ if((rec_checksum&0xff) == (checksum&0xff)) //校验通过
{
switch(pack_cmd)
{
@@ -90,11 +93,14 @@
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-5) { //如果收到的index与长度相等
- usart_receive_state = UsartReceiveWaitChecksum;
+ usart_receive_state = UsartReceiveWaitChecksum0;
}
} else if(usart_receive_state == UsartReceiveWaitDataLen) { //收到指令类型字节
pack_datalen = data;
--
Gitblit v1.9.3