Config Array
/
SIM800l_EVB
main.cpp@0:8a18ec6374e5, 2019-04-18 (annotated)
- Committer:
- ConfigArray
- Date:
- Thu Apr 18 10:52:47 2019 +0000
- Revision:
- 0:8a18ec6374e5
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ConfigArray | 0:8a18ec6374e5 | 1 | #include "mbed.h" |
ConfigArray | 0:8a18ec6374e5 | 2 | |
ConfigArray | 0:8a18ec6374e5 | 3 | Serial pc(USBTX, USBRX); |
ConfigArray | 0:8a18ec6374e5 | 4 | Serial SIM(p13, p14); |
ConfigArray | 0:8a18ec6374e5 | 5 | |
ConfigArray | 0:8a18ec6374e5 | 6 | DigitalOut myled(LED1); |
ConfigArray | 0:8a18ec6374e5 | 7 | void GSMSetUp(void); |
ConfigArray | 0:8a18ec6374e5 | 8 | |
ConfigArray | 0:8a18ec6374e5 | 9 | int main() |
ConfigArray | 0:8a18ec6374e5 | 10 | { |
ConfigArray | 0:8a18ec6374e5 | 11 | int i = 0; |
ConfigArray | 0:8a18ec6374e5 | 12 | int CRCounter = 0; |
ConfigArray | 0:8a18ec6374e5 | 13 | int IncomingCounter = 0; |
ConfigArray | 0:8a18ec6374e5 | 14 | int NewMessage = 0; |
ConfigArray | 0:8a18ec6374e5 | 15 | char IncomingChar = 0; |
ConfigArray | 0:8a18ec6374e5 | 16 | char IncomingString1 [200] = {}; |
ConfigArray | 0:8a18ec6374e5 | 17 | char Number [200] = {}; |
ConfigArray | 0:8a18ec6374e5 | 18 | char Date [200] = {}; |
ConfigArray | 0:8a18ec6374e5 | 19 | char Message [200] = {}; |
ConfigArray | 0:8a18ec6374e5 | 20 | |
ConfigArray | 0:8a18ec6374e5 | 21 | SIM.baud(115200); |
ConfigArray | 0:8a18ec6374e5 | 22 | pc.baud (115200); |
ConfigArray | 0:8a18ec6374e5 | 23 | while(1) |
ConfigArray | 0:8a18ec6374e5 | 24 | { |
ConfigArray | 0:8a18ec6374e5 | 25 | if(SIM.readable() ) //if incoming char from Sim card |
ConfigArray | 0:8a18ec6374e5 | 26 | { |
ConfigArray | 0:8a18ec6374e5 | 27 | IncomingChar = SIM.getc(); //collect the char |
ConfigArray | 0:8a18ec6374e5 | 28 | IncomingString1[IncomingCounter] = IncomingChar; //store char in an array |
ConfigArray | 0:8a18ec6374e5 | 29 | // pc.putc(IncomingString1[IncomingCounter] ); //print char to screen, goo for debug |
ConfigArray | 0:8a18ec6374e5 | 30 | IncomingCounter ++; //increment the char counter |
ConfigArray | 0:8a18ec6374e5 | 31 | |
ConfigArray | 0:8a18ec6374e5 | 32 | if(IncomingChar == 0x0D) //if a carrage return has been detected, then count then up |
ConfigArray | 0:8a18ec6374e5 | 33 | { |
ConfigArray | 0:8a18ec6374e5 | 34 | CRCounter++; //increment CR counter |
ConfigArray | 0:8a18ec6374e5 | 35 | |
ConfigArray | 0:8a18ec6374e5 | 36 | if(CRCounter == 3) //after 3rd CR, the message has ended |
ConfigArray | 0:8a18ec6374e5 | 37 | { |
ConfigArray | 0:8a18ec6374e5 | 38 | pc.printf("\n\r message buffer: %s",IncomingString1); //print the whole buffer to screen - debug |
ConfigArray | 0:8a18ec6374e5 | 39 | |
ConfigArray | 0:8a18ec6374e5 | 40 | |
ConfigArray | 0:8a18ec6374e5 | 41 | for(i = 9; i<22 ; i++) //parse the array - always has this number/date format |
ConfigArray | 0:8a18ec6374e5 | 42 | { |
ConfigArray | 0:8a18ec6374e5 | 43 | Number[i-9] = IncomingString1[i]; |
ConfigArray | 0:8a18ec6374e5 | 44 | } |
ConfigArray | 0:8a18ec6374e5 | 45 | |
ConfigArray | 0:8a18ec6374e5 | 46 | Number[13] = NULL; |
ConfigArray | 0:8a18ec6374e5 | 47 | pc.printf("\n\r%s",Number); |
ConfigArray | 0:8a18ec6374e5 | 48 | |
ConfigArray | 0:8a18ec6374e5 | 49 | for(i = 28; i<45; i++) //parse data |
ConfigArray | 0:8a18ec6374e5 | 50 | { |
ConfigArray | 0:8a18ec6374e5 | 51 | Date[i-28] = IncomingString1[i]; |
ConfigArray | 0:8a18ec6374e5 | 52 | } |
ConfigArray | 0:8a18ec6374e5 | 53 | |
ConfigArray | 0:8a18ec6374e5 | 54 | pc.printf("\n\r%s",Date); |
ConfigArray | 0:8a18ec6374e5 | 55 | Date[i-28] = NULL; |
ConfigArray | 0:8a18ec6374e5 | 56 | |
ConfigArray | 0:8a18ec6374e5 | 57 | |
ConfigArray | 0:8a18ec6374e5 | 58 | |
ConfigArray | 0:8a18ec6374e5 | 59 | for(i = 51; i<IncomingCounter; i++) //parse the message |
ConfigArray | 0:8a18ec6374e5 | 60 | { |
ConfigArray | 0:8a18ec6374e5 | 61 | Message[i-51] = IncomingString1[i]; |
ConfigArray | 0:8a18ec6374e5 | 62 | } |
ConfigArray | 0:8a18ec6374e5 | 63 | Message[i-52] = NULL; |
ConfigArray | 0:8a18ec6374e5 | 64 | pc.printf("\n\r%s",Message); |
ConfigArray | 0:8a18ec6374e5 | 65 | |
ConfigArray | 0:8a18ec6374e5 | 66 | |
ConfigArray | 0:8a18ec6374e5 | 67 | IncomingChar = SIM.getc(); |
ConfigArray | 0:8a18ec6374e5 | 68 | NewMessage = 1; //rasie flag that a new message has been recieved |
ConfigArray | 0:8a18ec6374e5 | 69 | CRCounter = 0; //end of message processing, reset all counters etc |
ConfigArray | 0:8a18ec6374e5 | 70 | IncomingCounter = 0; |
ConfigArray | 0:8a18ec6374e5 | 71 | i = 0; |
ConfigArray | 0:8a18ec6374e5 | 72 | }//if CR |
ConfigArray | 0:8a18ec6374e5 | 73 | }//if incoming |
ConfigArray | 0:8a18ec6374e5 | 74 | }//if sim |
ConfigArray | 0:8a18ec6374e5 | 75 | |
ConfigArray | 0:8a18ec6374e5 | 76 | if(NewMessage == 1) |
ConfigArray | 0:8a18ec6374e5 | 77 | { |
ConfigArray | 0:8a18ec6374e5 | 78 | if((!(strcmp(Number,"+447568396622"))) || (!(strcmp(Number,"+447447293026")))) |
ConfigArray | 0:8a18ec6374e5 | 79 | { |
ConfigArray | 0:8a18ec6374e5 | 80 | pc.printf("\n\right number"); |
ConfigArray | 0:8a18ec6374e5 | 81 | } |
ConfigArray | 0:8a18ec6374e5 | 82 | else |
ConfigArray | 0:8a18ec6374e5 | 83 | { |
ConfigArray | 0:8a18ec6374e5 | 84 | pc.printf("\n\rUnknown Number"); |
ConfigArray | 0:8a18ec6374e5 | 85 | } |
ConfigArray | 0:8a18ec6374e5 | 86 | |
ConfigArray | 0:8a18ec6374e5 | 87 | if(!(strcmp(Message,"Open"))) |
ConfigArray | 0:8a18ec6374e5 | 88 | { |
ConfigArray | 0:8a18ec6374e5 | 89 | pc.printf("\n\rOpening"); |
ConfigArray | 0:8a18ec6374e5 | 90 | } |
ConfigArray | 0:8a18ec6374e5 | 91 | else if(!(strcmp(Message,"Close"))) |
ConfigArray | 0:8a18ec6374e5 | 92 | { |
ConfigArray | 0:8a18ec6374e5 | 93 | pc.printf("\n\rClosing"); |
ConfigArray | 0:8a18ec6374e5 | 94 | } |
ConfigArray | 0:8a18ec6374e5 | 95 | else if(!(strcmp(Message,"Report"))) |
ConfigArray | 0:8a18ec6374e5 | 96 | { |
ConfigArray | 0:8a18ec6374e5 | 97 | pc.printf("\n\rReporting"); |
ConfigArray | 0:8a18ec6374e5 | 98 | } |
ConfigArray | 0:8a18ec6374e5 | 99 | else if(!(strcmp(Message,"OK"))) |
ConfigArray | 0:8a18ec6374e5 | 100 | { |
ConfigArray | 0:8a18ec6374e5 | 101 | pc.printf("\n\rOKing"); |
ConfigArray | 0:8a18ec6374e5 | 102 | } |
ConfigArray | 0:8a18ec6374e5 | 103 | else |
ConfigArray | 0:8a18ec6374e5 | 104 | { |
ConfigArray | 0:8a18ec6374e5 | 105 | pc.printf("\n\rUnknown Command"); |
ConfigArray | 0:8a18ec6374e5 | 106 | } |
ConfigArray | 0:8a18ec6374e5 | 107 | |
ConfigArray | 0:8a18ec6374e5 | 108 | NewMessage = 0; |
ConfigArray | 0:8a18ec6374e5 | 109 | }//if NewMessage |
ConfigArray | 0:8a18ec6374e5 | 110 | |
ConfigArray | 0:8a18ec6374e5 | 111 | |
ConfigArray | 0:8a18ec6374e5 | 112 | if(pc.readable()) |
ConfigArray | 0:8a18ec6374e5 | 113 | { |
ConfigArray | 0:8a18ec6374e5 | 114 | // SIM.putc(pc.getc()); |
ConfigArray | 0:8a18ec6374e5 | 115 | switch(pc.getc()) |
ConfigArray | 0:8a18ec6374e5 | 116 | { |
ConfigArray | 0:8a18ec6374e5 | 117 | case 'a':SIM.printf("AT+CMGF=1\r\n"); break; |
ConfigArray | 0:8a18ec6374e5 | 118 | case 'b':SIM.printf("AT+CSCS=\"GSM\"\r\n"); break; |
ConfigArray | 0:8a18ec6374e5 | 119 | case 'c':SIM.printf("AT+CMGS=\"+447568396622\"\r\n"); break; |
ConfigArray | 0:8a18ec6374e5 | 120 | case 'd':SIM.printf("WHATS UP MF?"); break; |
ConfigArray | 0:8a18ec6374e5 | 121 | case 'e':SIM.putc((char)26); break; |
ConfigArray | 0:8a18ec6374e5 | 122 | case 'f':SIM.printf("AT+CNMI=1,2,0,0,0\r\n"); break; |
ConfigArray | 0:8a18ec6374e5 | 123 | case 'g':SIM.printf("AT+CMGL \"REC UNREAD\" 0\r\n"); break; |
ConfigArray | 0:8a18ec6374e5 | 124 | }//switch |
ConfigArray | 0:8a18ec6374e5 | 125 | }//if |
ConfigArray | 0:8a18ec6374e5 | 126 | |
ConfigArray | 0:8a18ec6374e5 | 127 | }//while1 |
ConfigArray | 0:8a18ec6374e5 | 128 | |
ConfigArray | 0:8a18ec6374e5 | 129 | }//main |