Error al comparar un string recibida por XBEE

Buena tarde a todos, disculpen si no es la seccion correcta, pero creo que si lo es, en fin, quisiera ir al grano, estoy tratando de comparar una string recibida via xbee, o mas bien la estoy pasando por una sentencia de control, pero no me quiere aceptar, desconozco por que no lo hace, ojala me puedan ayudar, este es mi codigo.

//Declaracion de variables
char inChar;
String string = "";
int lng = 0;

//Configuracion de puerto serial y reservacion de variable string
void setup() {
  Serial.begin(9600);
  string.reserve(200);
  pinMode(2,OUTPUT);
}

void loop(){
  if (Serial.available()){
//Lectura de caracteres   
   inChar = Serial.read();
//Suma de caracteres en variable string
   string+=inChar;
   
//Imprime la variable con los caracteres acumulados hasta la "|"   
  if(inChar == '|'){  //13 como salto de linea

//Recortando Dato
lng = string.length();
lng = lng-1;
String data = string.substring(0, lng); 
Serial.println(data); // Verifico el String recibida

    if(data == 'on'){
      digitalWrite(12, HIGH);    
          Serial.println(data);
    }
    if(data == 'off'){
      digitalWrite(12, LOW);
          Serial.println(data);
    }
//Borra la variable string para almacenar nuevos datos
    string="";
   }
  }
}

Estas imprimiendo la cadena recogida por serial ¿cuadra con lo que esperas?.Otra cosa ,si compruebas si el caracter recibido es el de final antes de añadirlo a la cadena te ahorraras tener que restarlo y complicar el sketch con lineas innecesarias.

Muchas Gracias por responder, y en efecto trabajo con php, sin embargo aun soy nuevo en lo que es arduino, y tengo muchas dudas todavia, el codigo, lo reescribi adecuandolo a lo que necesito hacer, y si tienes mucha razon en la parte de las variables. en este momento me pongo a modificarlo y les comento como me fue.

Este es el nuevo codigo, que hasta el momento me funciona bien. Quedo muy bien hasta donde yo lo veo, si consideran que tiene algun error mi codigo por favor me dijeran, se los agradeceria muchisimo.

//Declaracion de variables
char inChar;
String cadena = "";
int lng = 0;

//Configuracion de puerto serial y reservacion de variable string
void setup() {
 Serial.begin(9600);
 cadena.reserve(200);
 pinMode(2,OUTPUT);
}

void loop(){
 if (Serial.available()){
//Lectura de caracteres   
  inChar = Serial.read();
//Suma de caracteres en variable string
  cadena+=inChar;
  
//Imprime la variable con los caracteres acumulados hasta la "|"   
 if(inChar == '|'){  //13 como salto de linea

//Recortando Dato
lng = cadena.length();
lng = lng-1;
String data = cadena.substring(0, lng); 
Serial.println(data); // Verifico el String recibida

   if(data == "on"){
     digitalWrite(2, HIGH);    
         Serial.println(data);
         Serial.println("Encendido");
   }
   if(data == "off"){
     digitalWrite(2, LOW);
         Serial.println(data);
         Serial.println("Apagado");
   }
//Borra la variable string para almacenar nuevos datos
   cadena="";
  }
 }
}