Go Down

Topic: CAMBIAR LA FORMA DE PROGRAMAR (Read 649 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy