The micro controler used was the STM32F746ZG

Dependencies:   mbed

main.cpp

Committer:
juansparra
Date:
2018-02-06
Revision:
0:d14c82c59346

File content as of revision 0:d14c82c59346:

#include "mbed.h"

char CtrlZ = 0x1A;
char buffer[256],buffer_GPS[256],posbuffer=5,posbufferinterrup=0,imprima=0;
Serial sim808(PE_8,PE_7);//Serial xxxx(SERIAL_TX, SERIAL_RX);

Serial pc(SERIAL_TX, SERIAL_RX);


void obtener(){
    
        char ob = sim808.getc();
        if(ob==13||ob==10)
            {imprima=1;
            posbuffer=posbufferinterrup;
            posbufferinterrup=0;
            }
        else
            {buffer[posbufferinterrup]=ob;
            posbufferinterrup++;
            }
        
    }
DigitalIn mybutton(USER_BUTTON);
DigitalOut myled(LED1);

 
 
int main() {
  sim808.baud(9600);
  sim808.attach(&obtener); 
  while(1) {
    if (mybutton == 1) { // Button is pressed
      myled = !myled; // Toggle the LED state
      wait(2); // 200 ms
      //myled = !myled; // Toggle the LED state
      //wait(2); // 200 ms
     
     
     
     
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CGPSPWR=1");
     pc.printf("AT+CGPSPWR=1");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<posbuffer;imprima++)
                {pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[0]=='O')and(buffer[1]=='K'))
        imprima=1;
    
         }while(imprima==0);
     
     
     
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CGPSSTATUS?");
     pc.printf("AT+CGPSSTATUS?");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<posbuffer;imprima++)
                {pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[24]=='D')or(buffer[23]=='D'))
        imprima=1;
    
         }while(imprima==0);
     
     
     
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CGNSSEQ?");
     pc.printf("AT+CGNSSEQ?");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<posbuffer;imprima++)
                {pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[12]=='C')or(buffer[13]=='C'))
        imprima=1;
    
         }while(imprima==0);
     
     
     
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CGNSURC?");
     pc.printf("AT+CGNSURC?");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<posbuffer;imprima++)
                {pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[8]=='C')or(buffer[7]=='C'))
        imprima=1;
    
         }while(imprima==0);
     
     
     
     
     
     
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CGNSINF");
     pc.printf("AT+CGNSINF");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<52;imprima++)
                {buffer_GPS[imprima]=buffer[imprima];
                    pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[7]=='N')or(buffer[8]=='N'))
        imprima=1;
    
         }while(imprima==0);
     
     
     
     
     
     
     
     
     
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CIPSHUT");
     pc.printf("shut");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<posbuffer;imprima++)
                {pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[0]=='S')and(buffer[1]=='H'))
        imprima=1;
    
         }while(imprima==0);
     
     
     
      do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CIPMUX=0");
     pc.printf("AT+CIPMUX=0");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
        for(imprima=0;imprima<posbuffer;imprima++)
                pc.putc(buffer[imprima]);
     
     if((buffer[0]=='O')and(buffer[1]=='K'))
        imprima=1;
    else
        imprima=0;
         }while(imprima==0);
     
     myled = !myled; // Toggle the LED state
      wait(2); // 200 ms
      myled = !myled; // Toggle the LED state
      wait(2); // 200 ms
   
   
   do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CGATT=1");
     pc.printf("AT+CGATT=1");
     sim808.putc(13);
     wait(.9);
    while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
     for(imprima=0;imprima<posbuffer;imprima++)
                pc.putc(buffer[imprima]);
     if((buffer[0]=='O')and(buffer[1]=='K'))
        imprima=1;
    else
        imprima=0;
         }while(imprima==0);
   
    
    
   do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CSTT=");
      sim808.putc(34);
     sim808.printf("internet.comcel.com.co");
      sim808.putc(34);
      sim808.putc(44);
      sim808.putc(34);
      sim808.putc(34);
         sim808.putc(44);
      sim808.putc(34);
      sim808.putc(34);
      
     pc.printf("AT+CSTT=internet");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
     for(imprima=0;imprima<posbuffer;imprima++)
                pc.putc(buffer[imprima]);
     if((buffer[0]=='O')and(buffer[1]=='K'))
        imprima=1;
    else
        imprima=0;
         }while(imprima==0);
    
   
 
 
   do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CIICR");
     pc.printf("AT+CIICR");
     sim808.putc(13);
     wait(.9);
      while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
    for(imprima=0;imprima<posbuffer;imprima++)
                {pc.putc(imprima+48);
                    pc.putc(buffer[imprima]);
                }
     
     if((buffer[0]=='O')and(buffer[1]=='K'))
        imprima=1;
        else
        imprima=0;
    
         }while(imprima==0);
         
         
    
 
   do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CIFSR");
     pc.printf("AT+CIFSR");
     sim808.putc(13);
     wait(.9);
    while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
     for(imprima=0;imprima<posbuffer;imprima++)
                pc.putc(buffer[imprima]);
     if((buffer[0]>='1')and(buffer[1]>='0'))
        imprima=1;
    else
        imprima=0;
         }while(imprima==0);
   
 
 
 
 
 
   
    
   do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CIPSTART=");
      sim808.putc(34);
     sim808.printf("TCP");
      sim808.putc(34);
      sim808.putc(44);
      sim808.putc(34);
     sim808.printf("200.93.168.133"); //
     
     
      sim808.putc(34);
      sim808.putc(44);
      sim808.putc(34);
       sim808.printf("10800");

      sim808.putc(34);
      
     pc.printf("CIPSTART=TCP");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
     for(imprima=0;imprima<posbuffer;imprima++)
                pc.putc(buffer[imprima]);
     if((buffer[0]=='O')and(buffer[1]=='K'))
        imprima=1;
    else
        imprima=0;
         }while(imprima==0);
    
   
   
   
   
      do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("AT+CIPSEND");
          pc.printf("AT+CIPSEND");
     sim808.putc(13);
     wait(.9);
     while(imprima==0)
        {}
        pc.putc(13);
        pc.putc(10);
     for(imprima=0;imprima<posbuffer;imprima++)
                pc.putc(buffer[imprima]);
     if(buffer[0]=='>')
        imprima=1;
    else
        imprima=0;
         }while(imprima==0);
    
   
     do
     {
         imprima=0;
         posbuffer=0;
     sim808.printf("porfin desde el mbed.");
     
    for(imprima=0;imprima<52;imprima++)
                {sim808.putc(buffer_GPS[imprima]);
                }
     sim808.putc(0x1a);
     wait(3);
    
        imprima=1;
             }while(imprima==0);
   
   
      myled = !myled; // Toggle the LED state
      wait(6); // 200 ms
      myled = !myled; // Toggle the LED state
      wait(1); // 200 ms
      myled = !myled; // Toggle the LED state
      wait(6); // 200 ms
      myled = !myled; // Toggle the LED state
      wait(1); // 200 ms
      
    }
  }
}