Sample code :
#include "SIM900.h"
#include
//#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 communicate with SIM900 through AT commands.
//InetGSM inet;
//CallGSM call;
//SMSGSM sms;
int numdata;
char inSerial[40];
int i=0;
String substring;
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(9600))
Serial.println("\nstatus=READY");
else Serial.println("\nstatus=IDLE");
};
void loop()
{
//Read for new byte on NewSoftSerial.
serialswread();
};
void serialswread()
{
//gsm.SimpleRead();
//gsm.SimpleWriteln("ATD + +94785056197;");
//delay(10000);
//gsm.SimpleWriteln("AT+CUSD=1,\"*344#\""); //sending AT+CUSD=1,"*344#"
char msg[100];
gsm.read(msg, 100);
//Serial.println(msg);
//Substring the incoming caller id from AT string
if(strstr(msg, "+CLIP:")) {
String input = "";
delay(100);
//input += msg;
input = msg;
String input_trimmed = input;
substring = input_trimmed.substring(18, 28); // get the callers number.
Serial.print("Your Number is: ");
Serial.println(substring);
delay(5000);
}
String ussd4 = "*10*1#\"\"";
String ussd1 = "\"AT+CUSD=1,\"*121*";
String ussd = ussd1+substring+ussd4;
//String ussd3 = ussd2 + ussd4;
Serial.println(ussd);
//gsm.SimpleWriteln("AT+CUSD=1,\"*121*0786007019*10*1#\""); //sending AT+CUSD=1,"*121#"
// gsm.SimpleWrite(ussd);
delay(5000);
char resp[100];
gsm.read(resp, 100); //this command will send the response to the serial port and, at the same time, copy to "resp" string
}