BT AT Command Learing

Dependencies:   mbed

Fork of Nucleo_sim808_BT by sheng xiaolin

Committer:
shawlinrise
Date:
Fri Jun 23 03:32:07 2017 +0000
Revision:
0:a3b9a955988e
BT AT Command Learing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shawlinrise 0:a3b9a955988e 1 #include "mbed.h"
shawlinrise 0:a3b9a955988e 2 #include "string.h"
shawlinrise 0:a3b9a955988e 3
shawlinrise 0:a3b9a955988e 4 Serial pc(SERIAL_TX, SERIAL_RX);
shawlinrise 0:a3b9a955988e 5 Serial sim808(D1,D0);
shawlinrise 0:a3b9a955988e 6 Timer send_t;
shawlinrise 0:a3b9a955988e 7
shawlinrise 0:a3b9a955988e 8 #define buf_max 200
shawlinrise 0:a3b9a955988e 9 volatile int First_Int = 0;
shawlinrise 0:a3b9a955988e 10 volatile int Rcv_End = 0;
shawlinrise 0:a3b9a955988e 11 char sim_buf[buf_max];
shawlinrise 0:a3b9a955988e 12 char *p1,*p2;
shawlinrise 0:a3b9a955988e 13 const char *senddata="Bluetooth test\r\n";
shawlinrise 0:a3b9a955988e 14
shawlinrise 0:a3b9a955988e 15 void CLR_Buf(void);
shawlinrise 0:a3b9a955988e 16 int Find(char *a);
shawlinrise 0:a3b9a955988e 17 //void Wait_CREG(void);
shawlinrise 0:a3b9a955988e 18
shawlinrise 0:a3b9a955988e 19 void SIM808_IRQHandler(void)
shawlinrise 0:a3b9a955988e 20 {
shawlinrise 0:a3b9a955988e 21 sim_buf[First_Int++] = sim808.getc();
shawlinrise 0:a3b9a955988e 22 if(sim_buf[First_Int] == 0X0A)
shawlinrise 0:a3b9a955988e 23 {
shawlinrise 0:a3b9a955988e 24 Rcv_End = 1;
shawlinrise 0:a3b9a955988e 25 }
shawlinrise 0:a3b9a955988e 26 }
shawlinrise 0:a3b9a955988e 27
shawlinrise 0:a3b9a955988e 28 int main()
shawlinrise 0:a3b9a955988e 29 {
shawlinrise 0:a3b9a955988e 30 sim808.attach(&SIM808_IRQHandler);
shawlinrise 0:a3b9a955988e 31 pc.printf("SIM808 BlueTooth Test!\r\n");
shawlinrise 0:a3b9a955988e 32 pc.printf("Çë´ò¿ªÊÖ»úÀ¶ÑÀ´®¿ÚÖúÊÖ!\r\n");
shawlinrise 0:a3b9a955988e 33 pc.printf("SIM808Ä£¿éÁ¬½ÓÖÐ...\r\n");
shawlinrise 0:a3b9a955988e 34
shawlinrise 0:a3b9a955988e 35 sim808.printf("AT+BTPOWER=1\r\n");//¿ªÆôÀ¶ÑÀµçÔ´
shawlinrise 0:a3b9a955988e 36 wait(0.1);
shawlinrise 0:a3b9a955988e 37 sim808.printf("AT+BTUNPAIR=0\r\n");//ɾ³ýÅä¶ÔµÄÀ¶ÑÀÉèÖÃ
shawlinrise 0:a3b9a955988e 38 pc.printf("SIM808Ä£¿é¿ªÊ¼ÊÕË÷À¶ÑÀÉ豸,ÇëÈ·ÈÏÊÖ»úÀ¶ÑÀ´¦Óڿɱ»·¢ÏÖ\r\n");
shawlinrise 0:a3b9a955988e 39
shawlinrise 0:a3b9a955988e 40 CLR_Buf();
shawlinrise 0:a3b9a955988e 41 Rcv_End = 0;
shawlinrise 0:a3b9a955988e 42
shawlinrise 0:a3b9a955988e 43 do
shawlinrise 0:a3b9a955988e 44 {
shawlinrise 0:a3b9a955988e 45 pc.printf("ÊÕË÷É豸ÖÐ............\r\n");
shawlinrise 0:a3b9a955988e 46 sim808.printf("AT+BTSCAN=1,10\r\n"); //ÊÕË÷¸½½üµÄÀ¶ÑÀÉ豸£¬ÊÕË÷ʱ¼ä10S
shawlinrise 0:a3b9a955988e 47 }while(Rcv_End == 1 && strstr((const char*)sim_buf,"+BTSCAN: 0")==NULL); //µÈ´ýÊÕË÷µ½É豸²ÅÍ˳ö
shawlinrise 0:a3b9a955988e 48
shawlinrise 0:a3b9a955988e 49 CLR_Buf();
shawlinrise 0:a3b9a955988e 50 Rcv_End = 0;
shawlinrise 0:a3b9a955988e 51
shawlinrise 0:a3b9a955988e 52 do
shawlinrise 0:a3b9a955988e 53 {
shawlinrise 0:a3b9a955988e 54 pc.printf("Á¬½ÓÉ豸ÖÐ............\r\n");
shawlinrise 0:a3b9a955988e 55 sim808.printf("AT+BTPAIR=0,1\r\n");//Á¬½ÓµÚÒ»¸öÊÕË÷µ½µÄÉ豸
shawlinrise 0:a3b9a955988e 56 wait(0.2);
shawlinrise 0:a3b9a955988e 57 sim808.printf("AT+BTPAIR=1,1\r\n");//ÏìÓ¦Á¬½Ó
shawlinrise 0:a3b9a955988e 58 wait(0.1);//µÈ´ý½ÓÊÕÊý¾ÝÍê³É
shawlinrise 0:a3b9a955988e 59 }while(Rcv_End == 1 && strstr((const char*)sim_buf,"+BTPAIR: 1")==NULL);//Æ¥Åä³É¹¦
shawlinrise 0:a3b9a955988e 60
shawlinrise 0:a3b9a955988e 61 CLR_Buf();
shawlinrise 0:a3b9a955988e 62 Rcv_End = 0;
shawlinrise 0:a3b9a955988e 63
shawlinrise 0:a3b9a955988e 64 pc.printf("SIM808Ä£¿éÀ¶ÑÀÆ¥Åä³É¹¦\r\n");
shawlinrise 0:a3b9a955988e 65 pc.printf("Çë´ò¿ªÊÖ»úÀ¶ÑÀ´®¿ÚÖúÊÖ\r\n");
shawlinrise 0:a3b9a955988e 66
shawlinrise 0:a3b9a955988e 67 sim808.printf("AT+BTGETPROF=1\r\n");//»ñÈ¡À¶ÑÀ·þÎñÁбí
shawlinrise 0:a3b9a955988e 68 sim808.printf("AT+BTCONNECT=1,4\r\n");//»ñÈ¡À¶ÑÀ·þÎñÁбí
shawlinrise 0:a3b9a955988e 69 pc.printf("SIM808Ä£¿éÀ¶ÑÀ½¨Á¢SPP·þÎñ³É¹¦\r\n");
shawlinrise 0:a3b9a955988e 70
shawlinrise 0:a3b9a955988e 71 CLR_Buf();
shawlinrise 0:a3b9a955988e 72 Rcv_End = 0;
shawlinrise 0:a3b9a955988e 73
shawlinrise 0:a3b9a955988e 74 send_t.start();
shawlinrise 0:a3b9a955988e 75 while(1);
shawlinrise 0:a3b9a955988e 76 {
shawlinrise 0:a3b9a955988e 77 if(send_t.read()>5)
shawlinrise 0:a3b9a955988e 78 {
shawlinrise 0:a3b9a955988e 79 sim808.printf("AT+BTSPPSEND\r\n");
shawlinrise 0:a3b9a955988e 80 sim808.printf((char *)senddata);
shawlinrise 0:a3b9a955988e 81 send_t.start();
shawlinrise 0:a3b9a955988e 82 CLR_Buf();
shawlinrise 0:a3b9a955988e 83 }
shawlinrise 0:a3b9a955988e 84 }
shawlinrise 0:a3b9a955988e 85 }
shawlinrise 0:a3b9a955988e 86
shawlinrise 0:a3b9a955988e 87
shawlinrise 0:a3b9a955988e 88
shawlinrise 0:a3b9a955988e 89
shawlinrise 0:a3b9a955988e 90 void CLR_Buf(void)
shawlinrise 0:a3b9a955988e 91 {
shawlinrise 0:a3b9a955988e 92 uint16_t k;
shawlinrise 0:a3b9a955988e 93 for(k=0;k<buf_max;k++) //½«»º´æÄÚÈÝÇåÁã
shawlinrise 0:a3b9a955988e 94 {
shawlinrise 0:a3b9a955988e 95 sim_buf[k] = 0x00;
shawlinrise 0:a3b9a955988e 96 }
shawlinrise 0:a3b9a955988e 97 First_Int = 0; //½ÓÊÕ×Ö·û´®µÄÆðʼ´æ´¢Î»ÖÃ
shawlinrise 0:a3b9a955988e 98 }
shawlinrise 0:a3b9a955988e 99
shawlinrise 0:a3b9a955988e 100 int Find(char *a)
shawlinrise 0:a3b9a955988e 101 {
shawlinrise 0:a3b9a955988e 102 if(strstr(sim_buf,a)!=NULL)
shawlinrise 0:a3b9a955988e 103 return 1;
shawlinrise 0:a3b9a955988e 104 else
shawlinrise 0:a3b9a955988e 105 return 0;
shawlinrise 0:a3b9a955988e 106 }
shawlinrise 0:a3b9a955988e 107
shawlinrise 0:a3b9a955988e 108 //void Wait_CREG(void)
shawlinrise 0:a3b9a955988e 109 //{
shawlinrise 0:a3b9a955988e 110 // int i;
shawlinrise 0:a3b9a955988e 111 // int k;
shawlinrise 0:a3b9a955988e 112 // i = 0;
shawlinrise 0:a3b9a955988e 113 // CLR_Buf();
shawlinrise 0:a3b9a955988e 114 // while(i == 0)
shawlinrise 0:a3b9a955988e 115 // {
shawlinrise 0:a3b9a955988e 116 // CLR_Buf();
shawlinrise 0:a3b9a955988e 117 // sim808.printf("AT+CREG?");
shawlinrise 0:a3b9a955988e 118 // sim808.printf("\r\n");
shawlinrise 0:a3b9a955988e 119 // wait(1);
shawlinrise 0:a3b9a955988e 120 // for(k=0;k<buf_max;k++)
shawlinrise 0:a3b9a955988e 121 // {
shawlinrise 0:a3b9a955988e 122 // if(sim_buf[k] == ':')
shawlinrise 0:a3b9a955988e 123 // {
shawlinrise 0:a3b9a955988e 124 // if((sim_buf[k+4] == '1')||(sim_buf[k+4] == '5'))
shawlinrise 0:a3b9a955988e 125 // {
shawlinrise 0:a3b9a955988e 126 // i = 1;
shawlinrise 0:a3b9a955988e 127 // break;
shawlinrise 0:a3b9a955988e 128 // }
shawlinrise 0:a3b9a955988e 129 // }
shawlinrise 0:a3b9a955988e 130 // }
shawlinrise 0:a3b9a955988e 131 // pc.printf("×¢²áÖÐ.....\r\n");
shawlinrise 0:a3b9a955988e 132 // }
shawlinrise 0:a3b9a955988e 133 //}
shawlinrise 0:a3b9a955988e 134
shawlinrise 0:a3b9a955988e 135 //void Second_AT_Command(char *b,char *a,u8 wait_time)
shawlinrise 0:a3b9a955988e 136 //{
shawlinrise 0:a3b9a955988e 137 // uint8_t i;
shawlinrise 0:a3b9a955988e 138 // char *c;
shawlinrise 0:a3b9a955988e 139 // c = b; //±£´æ×Ö·û´®µØÖ·µ½c
shawlinrise 0:a3b9a955988e 140 // CLR_Buf2();
shawlinrise 0:a3b9a955988e 141 // i = 0;
shawlinrise 0:a3b9a955988e 142 // while(i == 0)
shawlinrise 0:a3b9a955988e 143 // {
shawlinrise 0:a3b9a955988e 144 // if(!Find(a))
shawlinrise 0:a3b9a955988e 145 // {
shawlinrise 0:a3b9a955988e 146 // if(Timer0_start == 0)
shawlinrise 0:a3b9a955988e 147 // {
shawlinrise 0:a3b9a955988e 148 // b = c; //½«×Ö·û´®µØÖ·¸øb
shawlinrise 0:a3b9a955988e 149 // for (; *b!='\0';b++)
shawlinrise 0:a3b9a955988e 150 // {
shawlinrise 0:a3b9a955988e 151 // while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
shawlinrise 0:a3b9a955988e 152 // USART_SendData(USART2,*b);//UART2_SendData(*b);
shawlinrise 0:a3b9a955988e 153 // }
shawlinrise 0:a3b9a955988e 154 // UART2_SendLR();
shawlinrise 0:a3b9a955988e 155 // Times = 0;
shawlinrise 0:a3b9a955988e 156 // shijian = wait_time;
shawlinrise 0:a3b9a955988e 157 // Timer0_start = 1;
shawlinrise 0:a3b9a955988e 158 // }
shawlinrise 0:a3b9a955988e 159 // }
shawlinrise 0:a3b9a955988e 160 // else
shawlinrise 0:a3b9a955988e 161 // {
shawlinrise 0:a3b9a955988e 162 // i = 1;
shawlinrise 0:a3b9a955988e 163 // Timer0_start = 0;
shawlinrise 0:a3b9a955988e 164 // }
shawlinrise 0:a3b9a955988e 165 // }
shawlinrise 0:a3b9a955988e 166 // CLR_Buf2();
shawlinrise 0:a3b9a955988e 167 //}