From 4f6558e8b65cefd5f58a21a9426d4754395de885 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期三, 16 七月 2025 16:07:58 +0800 Subject: [PATCH] 成功加入一对一配对逻辑 --- keil/include/drivers/serial_at_cmd_app.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/keil/include/drivers/serial_at_cmd_app.c b/keil/include/drivers/serial_at_cmd_app.c index 3ab5c56..2694ec0 100644 --- a/keil/include/drivers/serial_at_cmd_app.c +++ b/keil/include/drivers/serial_at_cmd_app.c @@ -17,7 +17,7 @@ #define Label_id_local 1 //标签id #define data_buff_MAX 50 //基站数量 #define Lora_TXD_bff_MAX 220 //发送缓存区大小 >4+8+4*基站数量+2=14+4*基站数量 - +#define BIND_LIMIT_TIME 20 uint8_t mUsartReceivePack[100] = {0}; uint8_t mUsart2ReceivePack[150] = {0}; uint8_t GPS_GGAmessage[150]={0}; @@ -138,6 +138,9 @@ } double d_value; +uint16_t checksum_temp = 0,checksum_temp1=0; +extern int16_t bind_count; +extern uint16_t group_id; void UsartParseDataHandler(uint8_t data) { if(state5V_prase_flag&&!g_com_map[MODBUS_MODE]) @@ -161,6 +164,8 @@ checksum += pack_index; checksum += pack_datalen; checksum += pack_msgtype; + checksum_temp=checksum; + checksum_temp1=(data + checksum)&0xff; if(((data + checksum)&0xff) == 0xFF) //校验通过 { switch(pack_cmd) @@ -187,6 +192,11 @@ //从g_com_data结构体中的第index位置读取长度为mUsartReceivePack[0]的字节,发送出来 SendComMap(pack_datalen,pack_index>>1); break; + case CMD_BIND: + g_com_map[BIND_START_INDEX] = 1; + bind_count=BIND_LIMIT_TIME; + group_id=0;//变为配对组ID + break; default: break; } @@ -210,6 +220,10 @@ } else if(usart_receive_state == UsartReceiveWaitCMD) { //收到指令类型字节 pack_cmd = data; usart_receive_state = UsartReceiveWaitIndex; + if(pack_cmd==CMD_BIND) + { + usart_receive_state = UsartReceiveWaitChecksum; + } } else if(usart_receive_state == UsartReceiveWaitLength) { //收到长度字节 pack_length = data; -- Gitblit v1.9.3