2015-11-15 1 views
0

J'ai enregistré toutes les adresses de la plupart de mes ds18b20 avec arduino, et ils ont l'air différents lorsqu'ils sont branchés sur Beaglebone Black exécutant debian. Y a-t-il un moyen de les traduire à quoi ils ressemblent sur Debian? Je ne peux pas les tester puisque la plupart sont installés dans mon prototype ..ds18b20 Un format d'adresse de fil traduire de arduino à debian

arduino = '0x28, 0x9D, 0xB6, 0xAB, 0x05, 0x00, 0x00, 0x3E'

debian = '28 -000005abb69d »

+0

Autre que l'inversion tout sauf le premier octet? –

+0

oh wow je n'ai pas vu ça du tout! ce premier octet est le type de capteur, ce qui fait sens, il reste premier. Qu'en est-il du 3E? Pouvez-vous expliquer cela? – ihavequestions

+0

Une partie de moi dit "checksum", mais je ne connais pas l'algorithme. Mais cela ne devrait pas avoir d'importance si vous traduisez dans la direction des pertes. –

Répondre

1

Il s'agit simplement de convertir l'adresse.

0x28 est le type de capteur (thermomètre numérique programmable).

0x3E est le 1-Wire check-sum (légèrement différent d'un CRC8 normal).

0x9D, 0xB6, 0xAB, 0x05, 0x00, 0x00 est l'adresse réelle en mode big-endian.

Comme une note, l'adresse est généralement brute en forme comme [CRC][Serial][Family Code], il est étrange que votre Arduino présente dans un format basculée [Family Code][Serial][CRC], mais pas renversant la valeur dans l'attribut de série.

+0

Je ne comprends pas très bien les sommes de contrôle. Sont-ils constants? Je pensais qu'ils étaient spécifiques à la lecture du capteur ... – ihavequestions

+0

La somme de contrôle sur l'adresse est constante, mais seulement parce que l'adresse est constante. Vous devez toujours faire une vérification de l'adresse après l'avoir lu pour vous assurer qu'il n'y a pas eu de problème de transmission, car dans le monde réel, vous ne connaissez pas déjà l'adresse, donc la seule façon de savoir si elle était transmis correctement est de calculer la somme de contrôle. Si vous incluez la valeur de la somme de contrôle dans le calcul de la somme de contrôle, la valeur doit sortir 0. Si une autre valeur apparaît, vous avez une erreur et vous devez réexécuter l'opération ou la recherche. – BayssMekanique