I will ask this another way I guess. I have a program that reads in a line and acts on each character for a control over GMS. It reads a string, looks for characters after a # symbol. I would like it to continue if it does not find what is expected, it looks for g1 or g0 or b1 or b0. I use 5 characters with a 1 or 0 to indicate on or off. Now I need to send the entire set for it to read to the end, I would like to just send what I want changed. Here is the code:
// Example 55.7
#include <SoftwareSerial.h>
char inchar; // Will hold the incoming character from the GSM shield
SoftwareSerial SIM900(7, 8);
int led1 = 10;
int led2 = 11;
int led3 = 12;
int led4 = 13;
int led5 = 5;
int led6 = 6;
void setup()
{
Serial.begin(19200);
// set up the digital pins to control
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
// wake up the GSM shield
SIM900power();
SIM900.begin(19200);
delay(20000); // give time to log on to network.
SIM900.print("AT+CMGF=1\r"); // set SMS mode to text
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
// blurt out contents of new SMS upon receipt to the GSM shield's serial out
delay(100);
}
void SIM900power()
// software equivalent of pressing the GSM shield "power" button
{
digitalWrite(9, HIGH);
delay(2000);
digitalWrite(9, LOW);
Serial.println("power");
delay(7000);
Serial.println("ready");
}
void loop()
{
//If a character comes in from the cellular module...
if(SIM900.available() >0)
{
inchar=SIM900.read();
if (inchar=='#')
{
delay(10);
inchar=SIM900.read();
if (inchar=='g')
{
delay(10);
inchar=SIM900.read();
if (inchar=='0')
{
digitalWrite(led1, LOW);
Serial.println("-g");
}
else if (inchar=='1')
{
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
Serial.println("+g");
}
delay(10);
inchar=SIM900.read();
if (inchar=='b')
{
inchar=SIM900.read();
if (inchar=='0')
{
digitalWrite(led2, LOW);
Serial.println("-b");
}
else if (inchar=='1')
{
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
Serial.println("+b");
}
delay(10);
inchar=SIM900.read();
if (inchar=='y')
{
inchar=SIM900.read();
if (inchar=='0')
{
digitalWrite(led3, LOW);
Serial.println("-y");
}
else if (inchar=='1')
{
digitalWrite(led3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led4, LOW);
Serial.println("+y");
}
delay(10);
inchar=SIM900.read();
if (inchar=='r')
{
delay(10);
inchar=SIM900.read();
if (inchar=='0')
{
digitalWrite(led4, LOW);
Serial.println("-r");
}
else if (inchar=='1')
{
digitalWrite(led4, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
Serial.println("+r");
}
delay(10);
inchar=SIM900.read();
if (inchar=='w')
delay(10);
{
inchar=SIM900.read();
if (inchar=='0')
{
digitalWrite(led5, LOW);
Serial.println("-w");
}
else if (inchar=='1')
{
digitalWrite(led5, HIGH);
Serial.println("+w");
}
delay(10);
inchar=SIM900.read();
if (inchar=='a')
{
delay(10);
inchar=SIM900.read();
if (inchar=='0')
{
digitalWrite(led6, LOW);
Serial.println("-a");
}
else if (inchar=='1')
{
digitalWrite(led6, HIGH);
delay (1000);
digitalWrite(led6, LOW);
Serial.println("+alert");
}
}
}
Serial.println("Done...");
SIM900.println("AT+CMGD=1,4"); // delete all SMS
}
}
}
}
}
}
}