Go Down

Topic: Comment lire deux octets qui se suivent  (Read 130 times) previous topic - next topic

juleslebars

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??

J-M-L

#1
Apr 17, 2019, 11:56 am Last Edit: Apr 17, 2019, 12:44 pm by J-M-L
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
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Brice_B

#2
Apr 18, 2019, 01:52 pm Last Edit: Apr 18, 2019, 01:56 pm by Brice_B
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.

Go Up