zhyinch
2021-11-15 0382082159710bfd226723dfd54cae09b2668423
Ô´Âë/ºËÐİå/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) {                  //收到长度字节