Go Down

Topic: Duvida para ler uma trama (Read 3707 times) previous topic - next topic

bubulindo

Podias melhorar fazendo com que essa funcão verificasse se a trama é válida ou não.

Mas em todo o caso, ainda bem que servimos de ajuda. :)
This... is a hobby.

tretas

Boas,

para ter a certeza que estou a receber a boa trama calculo o checksum, aqui fica o codigo ... sempre pode dar jeito a alguém
Code: [Select]

byte rx_trama (byte *trama)
{
byte cpt, i = 0;
byte checksum = 0;


     if (Serial.available() > 17 )
      {
//-----------------------------------------------------------------------            
           for (cpt = 0; cpt < 18; cpt ++ )
            {
              trama[cpt] = Serial.read();
           
            }
//-----------------------------------------------------------------------            
            // calcula checksum - XOR
            for (i = 2; i < 16; i ++ )
            {              
              checksum ^= trama[i];
            }
           
//-----------------------------------------------------------------------
               
               //Serial.println ("DEBUG fdx");              
               //Serial.println (checksum, HEX);
                 
                  if( checksum == trama[17])
                  {
                   // Serial.print("\n\r DEBUG - CRC");
                    trama_OK = true;
                    return 1;
                  }      
                   else
                     {
                      trama_OK = false;
                      return 0;
                     }
//-----------------------------------------------------------------------                      
      }            
}


PS : isto de usar ponteiros até é fixe :p

Cpts

Zé tretas
Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

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