sheng xiaolin
/
Nucleo_sim808_sms
learning the AT command
Diff: main.cpp
- Revision:
- 0:e791ad8b9e26
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jun 11 10:28:21 2017 +0000 @@ -0,0 +1,137 @@ +#include "mbed.h" +#include "string.h" + +Serial pc(SERIAL_TX, SERIAL_RX); +Serial sim808(D1,D0); +DigitalOut myled(LED1); + +#define buf_max 200 +int First_Int = 0; +char sim_buf[buf_max]; +char *phone="\"17865578811\"";//¶ÌÐŽÓÊÕ·½ÊÖ»úºÅ +char *content="HELLO ~";//·¢ËͶÌÐÅÄÚÈÝ +char CtrlZ = 0x1A; +char temp[50]="AT+CMGS="; + +void SIM808_IRQHandler(void); +void CLR_Buf(void); +void Wait_CREG(void); + +//void getline(); + +void SIM808_IRQHandler(void) +{ + sim_buf[First_Int] = sim808.getc(); + First_Int++; +} + +//void callback() +//{ +// getline(); +//} + +int main() +{ + pc.baud(115200); + sim808.baud(115200); + + sim808.attach(&SIM808_IRQHandler,SerialBase::RxIrq); + + pc.printf("Send Message Test!"); + wait(1); + + sim808.printf("AT"); + sim808.printf("\r\n"); + wait(1); + pc.printf("%s",sim_buf); + CLR_Buf(); + + Wait_CREG(); + pc.printf("Register Succeed! "); + + sim808.printf("AT+CMGF=1"); + sim808.printf("\r\n"); + wait(1); + pc.printf("%s",sim_buf); + CLR_Buf(); + + sim808.printf("AT+CSCS=\"GSM\""); + sim808.printf("\r\n"); + wait(1); + pc.printf("%s",sim_buf); + CLR_Buf(); + + sim808.printf("AT+CSMP=17,167,240"); + sim808.printf("\r\n"); + wait(1); + pc.printf("%s",sim_buf); + CLR_Buf(); + + strcat(temp,(char*)phone); + sim808.printf("%s",temp); + sim808.printf("\r\n"); + wait(1); + pc.printf("%s",sim_buf); + CLR_Buf(); + + sim808.printf("%s",(char*)content); + sim808.printf("%c",CtrlZ); + pc.printf("%s",sim_buf); + CLR_Buf(); + + while(1); +} + + +//void getline() +//{ +// pc.putc(sim808.getc()); +//} + + +void CLR_Buf(void) +{ + uint16_t k; + for(k=0;k<buf_max;k++) //½«»º´æÄÚÈÝÇåÁã + { + sim_buf[k] = 0x00; + } + First_Int = 0; //½ÓÊÕ×Ö·û´®µÄÆðʼ´æ´¢Î»Öà +} + +//u8 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); + pc.printf("%s\r\n",sim_buf); + 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("CREGING.....\r\n"); + } +} +