I have an Arudino UNO R3 & a SIMCOM SIM808 GSM/GPRS/GPS Shield. Since the libraries used in the examples given here on Arduino site didn't work, I had to refer to the library given here on GitHub.
I ran the GSM_Client_Library from the example given there.. Filled in all my details like APN, USERNAME, PASSWORD & blah blah.. But I'm not getting what I want. My Arduino program is detailed below:
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"
//To change pins for Software Serial, use the two lines in GSM.cpp.
//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.
//Simple sketch to start a connection as client.
InetGSM inet;
//CallGSM call;
//SMSGSM sms;
char* content;
char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;
void setup()
{
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)) {
Serial.println("\nstatus=READY");
started=true;
} else Serial.println("\nstatus=IDLE");
if(started) {
//GPRS attach, put in order APN, username and password.
//If no needed auth let them blank.
if (inet.attachGPRS("TATA.DOCOMO.INTERNET", "", ""))
Serial.println("status=ATTACHED");
else Serial.println("status=ERROR");
delay(1000);
//Read IP address.
gsm.SimpleWriteln("AT+CIFSR");
delay(5000);
//Read until serial buffer is empty.
gsm.WhileSimpleRead();
//TCP Client GET, send a GET request to the server and
//save the reply.
numdata=inet.httpGET("www.boat.esy.es", 80, "/output.txt", msg, 50);
//Print the results.
Serial.println("\nNumber of data received:");
Serial.println(numdata);
Serial.println("\nData received:");
Serial.println(msg);
content = strstr(msg,"\r\n\r\n"); // PROBLEM STARTS HERE..
content = content + 4;
if(content == NULL)
Serial.println("ERROR!! Nothing was read into Content!!"); //THIS NEVER GETS EXECUTED
else
Serial.println(content); //THIS NEVER GETS EXECUTED
}
};
void loop()
{
//Read for new byte on serial hardware,
//and write them on NewSoftSerial.
serialhwread();
//Read for new byte on NewSoftSerial.
serialswread();
};
void serialhwread()
{
i=0;
if (Serial.available() > 0) {
while (Serial.available() > 0) {
inSerial[i]=(Serial.read());
delay(10);
i++;
}
inSerial[i]='\0';
if(!strcmp(inSerial,"/END")) {
Serial.println("_");
inSerial[0]=0x1a;
inSerial[1]='\0';
gsm.SimpleWriteln(inSerial);
}
//Send a saved AT command using serial port.
if(!strcmp(inSerial,"TEST")) {
Serial.println("SIGNAL QUALITY");
gsm.SimpleWriteln("AT+CSQ");
}
//Read last message saved.
if(!strcmp(inSerial,"MSG")) {
Serial.println(msg);
} else {
Serial.println(inSerial);
gsm.SimpleWriteln(inSerial);
}
inSerial[0]='\0';
}
}
void serialswread()
{
gsm.SimpleRead();
}
And this is the OUTPUT I'm getting
GSM Shield testing.
status=READY
status=ATTACHED
100.106.251.203
HTTP/1.1
Number of data received:
50
Data received:
HTTP/1.1
` À
200 OK
Date: Sun, 05 Jun 2016 08:35:38 GMT
Server: Apache
Last-Modified: Sat, 04 Jun 2016 23:23:33 GMT
Accept-Ranges: bytes
Content-Length: 3
Connection: close
Content-Type: text/plain
1 //THE VALUE I WANT
1 //THE VALUE I WANT
CLOSED //NO WHERE IN MY PROGRAM HAVE I SEEN THE "CLOSED" THING. IT MUST BE COMING FROM ONE OF THE LIBRARIES.
What I'm trying to do here: I'm trying to separate the content of the response from the header of it, which is why I used \r\n\r\n. But nothing is getting copied to content. This part never even executes. I just want the values 11 from my response & store in in a string variable. But I have tried several times, nothing happens. Please help.
Thank you for your time!!