Bonjour a tous
quel serait l’équivalent de ce bout de code C en processing
dans une librairie pour arduino jai trouver la ligne suivante:
"return (int32_t)(int8_t)pressureHigh << 16 | (uint16_t)pressureLow << 8 | pressureXL;"
en commentaire c'est ecrit //combine bytes
j'ai essayer comme ca mais cela ne semble pas fonctionner j'ai pas les bonnes valeurs
accRaw = (int)(byte)pressureHigh << 16 | (short)pressureLow << 8 | pressureXL;
Merci
Danny
Hors ligne
Salut,
Le principe de la ligne en C est de recréer un nombre 24 bits à partir de 3 nombres 8 bits.
Il y a de bons exemples qui peuvent t'aider à comprendre ces principes :
https://processing.org/reference/bitwiseOR.html
https://processing.org/reference/leftshift.html
Essaie peut-être :
int accRaw = (int)pressureHigh << 16 | (int)pressureLow << 8 | (int)pressureXL;
Les "int" de processing sont en 32 bits, ça devrait coller avec le (int32_t) du C
Hors ligne
Je suis tombé la dessus, pas mal!
https://openclassrooms.com/courses/les- … es-entiers
Quelques échanges intéressants ici:
https://www.developpez.net/forums/d1278 … tion-bits/
Et un tutoriel de Mozilla:
https://developer.mozilla.org/fr/docs/W … s_binaires
J'ai toujours un peu ignoré le bazar, mais ça donne envie de s'y pencher plus sérieusement!
Dernière modification par jojolaglaise (2017-07-20 10:41:18)
Hors ligne
merci a vous 2
je vais lire les documents de jojolaglaise ils ont l'air très bien expliqué
emoc cela ne fonctionne pas la cause que pololu mon donner est que les int sont "signed" et pour ces valeurs la, cela doit etre en "unsigned" et il paraitrait que processing ne fait pas le unsigned
j'ai reussi a le faire fonctionner comme ca
pressure = (int)pressureHigh << 16 | pressureLow << 8 | (pressureXL & 0xff);
de cette facon pressurexl est forcer de rester positif et me donne alors la bonne valeur dans les alentour de 1013 millibar
sinon si je ne met pas le 0xff pressurexl va en negatif et lorsque quil y va pressure passe de 1013 a 0.0045829 jusqu'a ce qu'il retourne positif
Danny
Hors ligne
Pages: 1