Problema GPS y GPRS no logro comunicación con ambos.

Hola. Pues verán, estoy intentando hacer un rastreador con un módulos GPS y un GSM, lo que necesito que haga es que tome los datos del GPS, los almacene en variables y cuando yo envíe un mensaje al GSM este lo evalúe con una condición, si esta condición es verdadera me mande la ubicación del GPS mediante un SMS, el problema empieza en que mando el mensaje y solo me aparece la dirección http://maps.google.com.mx/maps?q= pero nunca me da las coordenadas, lo que me parece curioso es que si no evalúo ningún mensaje y empiezo a enviar los SMS así nadamas si me envía las coordenadas entonces es cuando decido recurrir a ustedes tal vez, alguien ya haya pasado por esto y me pueda ayudar he probado el código del GPS y GSM independientemente y funcionan bien, pareciera ser que arduino solo obedece a un modulo, algo que se me hace raro porque si no evaluó el sms recibido si registra la información de los 2.

Bueno adjunto el codigo:

#include <SoftwareSerial.h>
#include <TinyGPS++.h> 

TinyGPSPlus gps; 



SoftwareSerial SIM900(7, 8);



char server[] = "http://maps.google.com.mx/maps?q=";
float dado_lat;
char lat_aux[10];
String latParaString;
float dado_lng;
char lng_aux[10];
String lngParaString;
char inchar=0;

void setup()
{
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  Serial.begin(9600); 
  SIM900.begin(19200); 
  delay(10000);  
   SIM900.print("AT+CMGF=1\r");  
  delay(100);
  SIM900.print("AT+CNMI=2,2,0,0,0\r");
 
}

void loop()
{
    if(Serial.available()>0)
      if(gps.encode(Serial.read())){
        if(gps.location.isValid())
        {
          dado_lat=gps.location.lat();
          dado_lng=gps.location.lng();
          dtostrf(dado_lat,2,5,lat_aux);
          latParaString = String(lat_aux);
          dtostrf(dado_lng,2,5,lng_aux);
          lngParaString = String(lng_aux);
          delay(300); 
        }
      }
      
      if (millis() > 5000 && gps.charsProcessed() < 10)
  {
  
    while(true);
  }

  
  delay(100);
  
   if(SIM900.available() >0)
  {
    inchar=SIM900.read();
    if (inchar=='#')
    {
      delay(10);
      inchar=SIM900.read();
      if (inchar=='a')
      {
        delay(10);
        inchar=SIM900.read();
        if (inchar=='0')
        {
          
            digitalWrite(13,HIGH);
            SIM900.println("AT + CMGS = \"+xxxxxxxxxxx\"");
            delay(100);
            SIM900.print(server);
            SIM900.print(latParaString);
            SIM900.print(",");
            SIM900.println(lngParaString);
            delay(100);
            SIM900.println((char)26);
            delay(100);
            SIM900.println();
            delay(1000);
        }
        else if (inchar=='1')
        {
          
            digitalWrite(13,LOW);
        }
        
        
          SIM900.println("AT+CMGD=1,4"); 
        }
      }
    }
  }
}

Espero puedan ayudarme a encontrar el error.

Muchas Gracias…

Hola que módulos estas ocupando, yo tengo el mismo problema pero yo de vez en cuando obtengo las coordenadas correctas, yo uso un sim900 y un neo 6m, tú cuales estas usando? Espero podamos ayudarnos mutuamente. Y cual es tú condición para poder recibir el mensaje? para poder intentar probar el código.