I think that you can have a timing problem....
Try this with your company data:
//*************
// Inicia conexion GPRS y conecta con la web deseada
//*************
void GPRS_init()
{
// Llamar y conectarse a internet
cell.println("AT+CGATT?"); // Activar GPRS 1= si => AT+CGATT = 0 desactiva
EsperamosOK();
cell.println("AT+CGDCONT=1, \"IP\", \"internet \""); // Setup PDP amena
EsperamosOK("Direccion: ");
cell.println("AT+CGPCO=0, \"CLIENTE \", \"AMENA\", 1"); // Parametros PDP amena
EsperamosOK("Clave: ");
// Activamos conexion GPRS
cell.println("AT+CGACT=1,1"); // Activar GPRS
EsperamosOK("CGACT: ");
// Buscar una direccion en internet
cell.println("AT+SDATACONF=1, \"TCP\", \"
www.google.es\", 80"); // Host y puerto
EsperamosOK("TCP: ");
// Iniciar comunicacion
cell.println("AT+SDATASTART=1,1"); // Iniciar comunicacion TCP/UDP
EsperamosOK("SDATASTART: ");
// Estado comunicaciones
cell.println("AT+SDATASTATUS=1"); // Consulta estado, hacer varias veces esta consulta.
EsperamosOK("SDATASTATUS: ");
// +SOCKSTATUS: 1,0,0104,0,0,0 (0 means socket not connected, 0104 means socket is connecting)
// +SOCKSTATUS: 1,1,0102,0,0,0 (1 means socket connected)
}
//*****************
// Esperar respuesta
//*****************
void EsperamosOK(const char* enviado){
unsigned long espera= millis();
Serial.println();
Serial.print(enviado);
while(cell.available()<1 && (millis()-espera) < 10000){} // Esperamos
while(cell.available()>0) {
incoming_char=cell.read(); //Get the character from the cellular serial port.
Serial.print(incoming_char);
delay(2);
}
}
And you must recive:
+SIND: 1
+SIND: 10,"SM",1,"FD",1,"LD",1,"MC
+SIND: 11
+SIND: 3
+SIND: 4
+CGATT: 1
OK
Direccion:
OK
Clave:
OK
CGACT:
OK
TCP:
OK
SDATASTART:
OK
SDATASTATUS:
+SOCKSTATUS: 1,1,0102,0,0,0 // CONNECTED
OK
bye,
Pablo