Pages: 1 [2]   Go Down
Author Topic: Duvida para ler uma trama  (Read 1550 times)
0 Members and 1 Guest are viewing this topic.
'round the world...
Offline Offline
Faraday Member
**
Karma: 41
Posts: 3108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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. smiley
Logged

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).

Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
Logged

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

Pages: 1 [2]   Go Up
Jump to: