sheng xiaolin
/
Nucleo_sim808_BT
BT AT Command Learing
main.cpp@0:a3b9a955988e, 2017-06-23 (annotated)
- Committer:
- shawlinrise
- Date:
- Fri Jun 23 03:32:07 2017 +0000
- Revision:
- 0:a3b9a955988e
BT AT Command Learing
Who changed what in which revision?
User | Revision | Line number | New 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 | //} |