Go Down

Topic: Duvida para ler uma trama (Read 2 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. :)
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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