Go Down

Topic: Duvida para ler uma trama (Read 2925 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