Go Down

Topic: CAMBIAR LA FORMA DE PROGRAMAR (Read 536 times) previous topic - next topic

pincho41700

hola a todos.
tengo un sim900 y la forma que tengo para saber quien me llama es esta,

if(SIM900.available() >0)
  {   
    inchar=SIM900.read();
    //ShowSerialData();
    if (inchar=='6')
    {
      delay(10);
      inchar=SIM900.read();
      if (inchar=='0')
      {
        delay(10);
        inchar=SIM900.read();
        if (inchar=='0')
        {
          delay(10);
          inchar=SIM900.read();
          if (inchar=='1')
          {
            delay(10);
            inchar=SIM900.read();
            if (inchar=='1')
            {
              delay(10);
              inchar=SIM900.read();
              if (inchar=='1')
              {
                delay(10);
                inchar=SIM900.read();
                if (inchar=='1')
                {
                  delay(10);
                  inchar=SIM900.read();
                  if (inchar=='5')
                  {
                    delay(10);
                    inchar=SIM900.read();
                    if (inchar=='1')
                    {
                                                                 
                        Serial.println("do sometehing");
                        Serial.println("Llamada entrante...");
                        delay(10);

Alguien sabe como cambiar  esta programacion a algo mas elegante y simple?
muchas gracias de antemano
un saludo

pacoooh

#1
Apr 21, 2014, 11:24 am Last Edit: Apr 21, 2014, 11:34 am by pacoooh Reason: 1
Hola pincho41700.


Prueba con estas lineas de código en la que se utiliza un puntero.

Code: [Select]

void loop(){
if (SIM900.available()>0)
 {
 char lectura[10];                                // array de char o String
 char *_lectura=lectura; // creamos un puntero a lectura llamado _lectura
    while(SIM900.available()>0){  // mientras tengamos un char en el bufer
   *_lectura++=SIM900.read(); // llamamos al *_lectura y  metemos el char,  
//al mismo tiempo subimos una posición en el array
delay(3);   // le damos un tiempo de espera para que no se pierda ningún char del bufer
   }
*_lectura='\0';                                     // añadimos carácter nulo
Serial.println("Llamada entrante...");
Serial.println(lectura);
 }
}




Espero que te sea de ayuda

Saludos

pincho41700

muchas gracias por contestar pacoooh,
esta noche lo probare  a ver que tal,
Porque creas un puntero para trabajar con el array?
es necesario o se puede hacer de otra manera?
un saludo.

pacoooh

#3
Apr 21, 2014, 02:23 pm Last Edit: Apr 21, 2014, 02:27 pm by pacoooh Reason: 1
Hola pincho41700

Pues no es necesario el crear el puntero, son manías mías para poder recorrer arrays mediante "++" o "--"

Prueba este otro código es  el mismo

Code: [Select]
void loop(){
if (SIM900.available()>0)
 {
char lectura[10];   // array de char
byte pos;          // creamos un puntero  para saber donde meter el char                  
                 
    while(SIM900.available()>0){  // mientras tengamos un char en el bufer
   lectura[pos]= SIM900.read() ; // llamamos al  lectura y  metemos el char en su posición
   pos=pos+1;      //   subimos una posición en el array    
                                                               
delay(3);    // le damos un tiempo de espera para que no se pierda ningún char del bufer
   }
lectura[pos]='\0';

Serial.println("Llamada entrante...");
Serial.println(lectura);
 }
}




saludos

pincho41700

hola de nuevo,
muchas gracias, lo probare y te digo como funciona
un saludo

pincho41700

hola de nuevo,
pacooh funciona perfectamente
muchas gracias
un saludo

Go Up