imdidi — 2017-07-18 17:35:48

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

emoc — 2017-07-19 16:01:39

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

jojolaglaise — 2017-07-20 10:31:32

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!

imdidi — 2017-07-21 17:46:09

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