Question sur les pointeurs

Bonjour je suis en train de lire le bouquin faites jouer le train de Pascal Barnier. je site le livre pour vous donner le contexte de ma question. il y a une ligne de code que je ne comprends pas dans le livre:
dans le loop j ai essaye de voir ce que cela donnait mais je n'y arrive pas. La variable pointeur pointe sur l'octet j imagine. qui peut m éclairer sur cette methodologie?
un octet est d abord défini avec l operation : addr&0x7F
ensuite le pointeur pointe sur les bits? l'octet?
et une verification est effectuée avec un ou XOR sur les 2 octets addr et 0x7F?
Merci

#define DCC_PACKET_SIZE 6
byte packetData[DCC_PACKET_SIZE];
byte checksum=0;
byte packetSize=1;
char* packetPtr=packetData;
word addr = 3;

void setup() {
  Serial.begin(9600);
}

void loop(){
 checksumˆ=*packetPtr++=addr&0x7F;
 packetSize=++;
}

Bonjour,

Ton pointeur pointe sur un char, c'est à dire un octet signé.
C'est défini ici: char* packetPtr

Ce n'est pas tout à fait correct car la table est une table de byte, le pointeur devrait être un pointeur sur des byte

checksumˆ=*packetPtr++=addr&0x7F; La je ne sais pas ce que tu veux faire. Ca ne correspond pas à grand chose.
Si c'est pour calculer un checksum c'est simplement: checksumˆ=*packetPtr++;

Tu ne vérifies pas si ton pointeur ne déborde pas en dehors du tableau. Ton programme va disfonctionner ou même crasher.

:warning: mise en forme par la modération pour cette fois.. Merci de lire « Les bonnes pratiques du Forum Francophone”


Sinon j’ai ce tuto qui peut éventuellement aider (?)

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.