Go Down

Topic: Sacar texto entre 2 palabras (Read 338 times) previous topic - next topic

pacooca

Hola, tal y como comente anteriormente tengo una maquina a la que le tengo que mandar comandos por el serial, los comandos pueden ser como estos:

ESC 'D' CR ESC "#000027D8" CR ESC 'E' CR

En un solo string tendría 3 comandos que me gustaría meter en un array para analizarlos posteriormente:

ESC 'D' CR
ESC "#000027D8" CR
ESC 'E' CR
 
Me podeis asesorar como puedo hacer para sacar estas instrucciones a un array, creo que esto se debería hacer con punteros, pero no se como. Hace 20 años cuando aprendi a programar hice algo similar con punteros, pero de eso hace mucho tiempo y no se por donde empezar, ya llevo mas de 15 años sin programar y con el tema de los punteros me pierdo...

El código con el que estoy trabajando en estos mementos es este que pongo a continuación, pero igual vosotros sabéis hacerlo de una forma más eficaz.

Muchas gracias.


Code: [Select]

void SacarComandos(String Texto){
  //String inputString = "g";         // a string to hold incoming data
  int TamanoTexto;
  char Contenido[TamanoTexto];       
  String Comando = "";                //Para almacenar el comando que va saliendo segun leemos el array
  String Comandos[0];       //Creamos un array para guardar los comandos que contiene el array contenido[]
  int ContArrayComandos = 0;       //Contador que cuenta los comandos que van saliendo
  boolean ChEsc, ChCr;           //Para saber que biene un caracter de escape.
 int i2, i3;
  TamanoTexto = Texto.length() - 2;      //Calculamos el tano del texto.
  Texto.toCharArray(Contenido, TamanoTexto);  //Pasamos el texto a un array

  ChEsc = false;                       
  ChCr = false;

  for (int i=0; i <= TamanoTexto; i++){                                                        //Analizamos el array Contenido[]


if (i2 > TamanoTexto){
   i2 = i;
  }
  else
  {
   i2 = i + 1;
}


if (i3 > TamanoTexto){
   i3 = i;
  }
  else
  {
   i3 = i + 2;
}

  Serial.print("Texto: "); Serial.println(Texto);
  Serial.print("Tamano texto: "); Serial.println(TamanoTexto);
  Serial.print("i: ");  Serial.println(i);
  Serial.print(i);Serial.print(" Contenido 1 :");  Serial.println(Contenido [i]);
  Serial.print(i2);Serial.print("Contenido 2 :");  Serial.println(Contenido [i2]);
  Serial.print(i3);Serial.print("Contenido 3 :");  Serial.println(Contenido [i3]);
/*
    if ((Contenido [i]= 'E')and(Contenido [i2]= 'S')and(Contenido [i3]= 'C')) ChEsc = true;  //Detectamos que enpieza un comando nuevo
    if ((Contenido [i]= 'C')and(Contenido [i2]= 'R')) ChCr = true;                            //Detectamos que termina un comando
 
    if ((ChEsc = true)and(ChCr = false)) Comando = Comando + Contenido [i];                      //Mientras el comando no termiene anadimos caracteres a Comando
 
    if ((ChEsc = true)and(ChCr = true)){                 //Si detecta que ha terminado mete el comando en un array.
       Comandos[ContArrayComandos]= Comando; //Metemos los comandos capturados datos capturados al array

       Comando = "";          //Ponemos comandos a "" para capturar de nuevo caracteres

       ContArrayComandos++;          //Como vamos a capturar un nuevo comando que va ir a otro registro de datos le sumamos 1     
 
       ChEsc = false;                                    //Para empezar de nuevo ponemos todo a false. 
       ChCr = false;   
    }*/   
  } //Fin For
}//Fin SacarComandos

Go Up