BT AT Command Learing

Dependencies:   mbed

Fork of Nucleo_sim808_BT by sheng xiaolin

Revision:
1:9e30224e0773
Parent:
0:a3b9a955988e
--- a/main.cpp	Fri Jun 23 03:32:07 2017 +0000
+++ b/main.cpp	Mon Jul 03 00:26:26 2017 +0000
@@ -9,12 +9,12 @@
 volatile int First_Int = 0;
 volatile int Rcv_End = 0;
 char sim_buf[buf_max];
-char *p1,*p2;
 const char *senddata="Bluetooth test\r\n";
+char CtrlZ = 0x1A;
 
 void CLR_Buf(void);
 int Find(char *a);
-//void Wait_CREG(void);
+void Wait_Connect(void);
 
 void SIM808_IRQHandler(void)                    
 {    
@@ -30,7 +30,6 @@
     sim808.attach(&SIM808_IRQHandler);
     pc.printf("SIM808 BlueTooth Test!\r\n");
     pc.printf("Çë´ò¿ªÊÖ»úÀ¶ÑÀ´®¿ÚÖúÊÖ!\r\n");
-    pc.printf("SIM808Ä£¿éÁ¬½ÓÖÐ...\r\n");
     
     sim808.printf("AT+BTPOWER=1\r\n");//¿ªÆôÀ¶ÑÀµçÔ´
     wait(0.1);
@@ -43,44 +42,57 @@
     do
     {
         pc.printf("ÊÕË÷É豸ÖÐ............\r\n");
-        sim808.printf("AT+BTSCAN=1,10\r\n");   //ÊÕË÷¸½½üµÄÀ¶ÑÀÉ豸£¬ÊÕË÷ʱ¼ä10S
-    }while(Rcv_End == 1 && strstr((const char*)sim_buf,"+BTSCAN: 0")==NULL);   //µÈ´ýÊÕË÷µ½É豸²ÅÍ˳ö
+        sim808.printf("AT+BTSCAN=1,10\r\n");        //ÊÕË÷¸½½üµÄÀ¶ÑÀÉ豸£¬ÊÕË÷ʱ¼ä10S
+        wait(10);
+    }while(Rcv_End == 1 && strstr((const char*)sim_buf,"+BTSCAN: 0")==NULL); //µÈ´ýÊÕË÷µ½É豸²ÅÍ˳ö
     
     CLR_Buf();
     Rcv_End = 0;
     
     do
     {
-        pc.printf("Á¬½ÓÉ豸ÖÐ............\r\n");
-        sim808.printf("AT+BTPAIR=0,1\r\n");//Á¬½ÓµÚÒ»¸öÊÕË÷µ½µÄÉ豸 
+        pc.printf("Åä¶ÔÖÐ............\r\n");
+        sim808.printf("AT+BTPAIR=0,1\r\n");
         wait(0.2); 
-        sim808.printf("AT+BTPAIR=1,1\r\n");//ÏìÓ¦Á¬½Ó
-        wait(0.1);//µÈ´ý½ÓÊÕÊý¾ÝÍê³É
-    }while(Rcv_End == 1 && strstr((const char*)sim_buf,"+BTPAIR: 1")==NULL);//Æ¥Åä³É¹¦
+        sim808.printf("AT+BTPAIR=1,1\r\n");
+        wait(0.1);
+    }while(Rcv_End == 1 && strstr((const char*)sim_buf,"+BTPAIR: 1")==NULL);//Åä¶Ô³É¹¦
     
     CLR_Buf();
     Rcv_End = 0;
     
-    pc.printf("SIM808Ä£¿éÀ¶ÑÀÆ¥Åä³É¹¦\r\n");
-    pc.printf("Çë´ò¿ªÊÖ»úÀ¶ÑÀ´®¿ÚÖúÊÖ\r\n");
-    
-    sim808.printf("AT+BTGETPROF=1\r\n");//»ñÈ¡À¶ÑÀ·þÎñÁбí
-    sim808.printf("AT+BTCONNECT=1,4\r\n");//»ñÈ¡À¶ÑÀ·þÎñÁбí
-    pc.printf("SIM808Ä£¿éÀ¶ÑÀ½¨Á¢SPP·þÎñ³É¹¦\r\n");
-    
-    CLR_Buf();
-    Rcv_End = 0;
+    pc.printf("SIM808Ä£¿éÀ¶ÑÀÅä¶Ô³É¹¦!\r\n");
+    wait(1);
+    pc.printf("Çë´ò¿ªÀ¶ÑÀÖúÊÖÁ¬½ÓSIM808!\r\n");
+    wait(1);
     
-    send_t.start();
-    while(1);
+    Wait_Connect();
+    sim808.printf("AT+ACPT=1\r\n");
+    wait(1);
+    if(Find("OK")|Rcv_End == 1)
     {
-        if(send_t.read()>5)
+        pc.printf("É豸Á¬½Ó³É¹¦!\r\n");
+        
+        CLR_Buf();
+      Rcv_End = 0;
+        
+        send_t.start();
+        while(1);
         {
-            sim808.printf("AT+BTSPPSEND\r\n");
-            sim808.printf((char *)senddata);
-            send_t.start();
-            CLR_Buf();
+            if(send_t.read()>5)
+            {
+                sim808.printf("AT+BTSPPSEND\r\n");
+                wait(0.1);
+                sim808.printf((char *)senddata);
+                sim808.printf("%c",CtrlZ);
+                send_t.start();
+                CLR_Buf();
+            }
         }
+  }
+    else
+    {
+        pc.printf("É豸Á¬½Óʧ°Ü!\r\n");
     }
 }
 
@@ -105,63 +117,21 @@
             return 0;
 }
 
-//void Wait_CREG(void)
-//{
-//  int i;
-//  int k;
-//  i = 0;
-//  CLR_Buf();
-//  while(i == 0)                   
-//  {
-//      CLR_Buf();        
-//      sim808.printf("AT+CREG?");
-//      sim808.printf("\r\n");
-//      wait(1);        
-//      for(k=0;k<buf_max;k++)                  
-//      {
-//          if(sim_buf[k] == ':')
-//          {
-//              if((sim_buf[k+4] == '1')||(sim_buf[k+4] == '5'))
-//              {
-//                  i = 1;
-//                break;
-//              }
-//          }
-//      }
-//      pc.printf("×¢²áÖÐ.....\r\n");
-//  }
-//}
-
-//void Second_AT_Command(char *b,char *a,u8 wait_time)         
-//{
-//  uint8_t i;
-//  char *c;
-//  c = b;                                      //±£´æ×Ö·û´®µØÖ·µ½c
-//  CLR_Buf2(); 
-//  i = 0;
-//  while(i == 0)                    
-//  {
-//      if(!Find(a)) 
-//      {
-//          if(Timer0_start == 0)
-//          {
-//              b = c;                          //½«×Ö·û´®µØÖ·¸øb
-//              for (; *b!='\0';b++)
-//              {
-//                  while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
-//                  USART_SendData(USART2,*b);//UART2_SendData(*b);
-//              }
-//              UART2_SendLR(); 
-//              Times = 0;
-//              shijian = wait_time;
-//              Timer0_start = 1;
-//         }
-//    }
-//    else
-//      {
-//          i = 1;
-//          Timer0_start = 0;
-//      }
-//  }
-//  CLR_Buf2(); 
-//}
\ No newline at end of file
+void Wait_Connect(void)
+{
+    int i;
+    i = 0;
+    CLR_Buf();
+  while(i == 0)                 
+    {
+        CLR_Buf();        
+        wait(1);        
+        if(Find("+BTCONNECTING:"))
+        {
+            i = 1;
+            break;
+        }
+        
+        pc.printf("ÇëÔÚÀ¶ÑÀÖúÊÖÖÐÁ¬½ÓÉ豸!\r\n");
+    }
+}
\ No newline at end of file