BT AT Command Learing

Dependencies:   mbed

Fork of Nucleo_sim808_BT by sheng xiaolin

Revision:
0:a3b9a955988e
Child:
1:9e30224e0773
diff -r 000000000000 -r a3b9a955988e main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jun 23 03:32:07 2017 +0000
@@ -0,0 +1,167 @@
+#include "mbed.h"
+#include "string.h"
+
+Serial pc(SERIAL_TX, SERIAL_RX);
+Serial sim808(D1,D0);
+Timer  send_t;
+
+#define buf_max 200
+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";
+
+void CLR_Buf(void);
+int Find(char *a);
+//void Wait_CREG(void);
+
+void SIM808_IRQHandler(void)                    
+{    
+    sim_buf[First_Int++] = sim808.getc();
+    if(sim_buf[First_Int] == 0X0A) 
+    {
+      Rcv_End = 1;
+    } 
+} 
+
+int main()
+{
+    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);
+    sim808.printf("AT+BTUNPAIR=0\r\n");//ɾ³ýÅä¶ÔµÄÀ¶ÑÀÉèÖÃ
+    pc.printf("SIM808Ä£¿é¿ªÊ¼ÊÕË÷À¶ÑÀÉ豸,ÇëÈ·ÈÏÊÖ»úÀ¶ÑÀ´¦Óڿɱ»·¢ÏÖ\r\n");
+    
+    CLR_Buf();
+    Rcv_End = 0;
+    
+    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);   //µÈ´ýÊÕË÷µ½É豸²ÅÍ˳ö
+    
+    CLR_Buf();
+    Rcv_End = 0;
+    
+    do
+    {
+        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);//Æ¥Åä³É¹¦
+    
+    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;
+    
+    send_t.start();
+    while(1);
+    {
+        if(send_t.read()>5)
+        {
+            sim808.printf("AT+BTSPPSEND\r\n");
+            sim808.printf((char *)senddata);
+            send_t.start();
+            CLR_Buf();
+        }
+    }
+}
+
+
+
+
+void CLR_Buf(void)
+{
+    uint16_t k;
+    for(k=0;k<buf_max;k++)      //½«»º´æÄÚÈÝÇåÁã
+    {
+        sim_buf[k] = 0x00;
+    }
+    First_Int = 0;              //½ÓÊÕ×Ö·û´®µÄÆðʼ´æ´¢Î»ÖÃ
+}
+
+int Find(char *a)
+{ 
+  if(strstr(sim_buf,a)!=NULL)
+        return 1;
+    else
+            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