Arduino Forum

International => Français => Topic started by: juleslebars on Apr 17, 2019, 10:22 am

Title: Comment lire deux octets qui se suivent
Post by: juleslebars on Apr 17, 2019, 10:22 am
Bonjour,
Je suis sur Arduino mega 2560, et je reçois des trames de données venant d'un dispositif annexe. Cependant je ne reçois qu'un octet à la fois et j'aimerais bien mettre en relation l'octet reçu avec l'octet reçu suivant.
En fait, je dois lire les octets 2 par 2 afin de les tester pour faire avancer le projet.
Pourriez vous m'aider svp??
Title: Re: Comment lire deux octets qui se suivent
Post by: J-M-L on Apr 17, 2019, 11:56 am
prenez une variable uint16_t et utilisez un décalage

Code: [Select]
void setup()
{
  Serial.begin(115200);

  uint16_t resultat = 0;
  uint8_t octetPoidsFort = 0b11110101; // poids fort
  uint8_t octetPoidsFaible = 0b00001111; // poids faible

  Serial.println(resultat, BIN);
  resultat = octetPoidsFort; // simule lecture du poids fort
  Serial.println(resultat, BIN);
  resultat <<= 8; // on décale les bits de 8 positions pour faire de la place
  Serial.println(resultat, BIN);
  resultat |= octetPoidsFaible; // on lit l'octet de poids faible
  Serial.println(resultat, BIN);
}

void loop(){}


Vous verrez dans la console (à 115200 bauds)

0                                              <<-- la valeur initiale
11110101                            <<-- l'octet de poids fort, pour l'instant mis en poids faible
1111010100000000       <<-- déplacé à la bonne place
1111010100001111       <<-- injection de l'octet de poids faible
Title: Re: Comment lire deux octets qui se suivent
Post by: Brice_B on Apr 18, 2019, 01:52 pm
Si tu es en liaison série, tu peux récupérer tes octets avec le Serial.read, il récupère l'octet qu'il met dans une variable de ton choix ( NomDeTaVariable = Serial.read() ) la commande va aussi supprimer la 1er variable, donc quand tu vas refaire le Serial.read il va te récupérer l'octet suivant.