Tout est dans le cast, je ne sais pas comment faire.
Si j'utilise le terminal arduino et que j'écris 1.99585, il m'affiche 1.99585.
Donc automatiquement, il concatène la reception de 4 octets, et affiche la valeur ? Pourtant dans le code je lis et write() octet par octet? Ou bien c'est converti en string et le premier octet vaut "1", puis le deuxieme ".", puis "9", etc ?
En clair, je ne sais pas quel(s) cast sont fait sur la transmission, et finalement, comment obtenir mon double ?
J'ai vu ce topic: http://forum.arduino.cc/index.php/topic,124745.0.html qui convertit 8 octet en 32 bits, mais ça répond pas totalement à ma question.
Anduriel:
Si j'utilise le terminal arduino et que j'écris 1.99585, il m'affiche 1.99585.
Donc automatiquement, il concatène la reception de 4 octets, et affiche la valeur ? Pourtant dans le code je lis et write() octet par
Le terminal envoie des caractères. Donc ton programme reçoit une chaîne de caractères.
Pour récupérer la valeur numérique il faut passer la chaîne à la fonction atof() qui converti une chaîne de caractères en flottant.
Je n'arrive pas à trouver des docs qui m'expliquent ceci (si vous avez des liens, je suis preneur:): je vois en VB que le serial possède un buffer de lecture et d'écrire. J'imagine que la Arduino aussi.
Que se passe-t-il si trop de byte sont empilés, et pas assez vite dépilés, ce qui est envoyé est alors perdu?
Pouvez-vous me dire quel est le "chronogramme" ou fonctionnement / traitement de débordement ou je ne sais quoi d'autre? Car c'est possible que ma loop() soit plus lente que les données reçues?
Si tu veux savoir en detail comment ca se passe , c'est de lire la doc de ton mico-controleur! T'as quoi comme type d'arduino? Par contre accroche toi c'est tout en anglais
Voici la doc du Atmega32u4: http://academy.cba.mit.edu/classes/embedded_programming/doc7766.pdf
(regarde la section USART)
Et pis si tu as peur de rater des données sur ta liaison utlise les interrruptions...