Le transfert d'un int comme deux octets sur l'Arduino

Je suis d'échantillonnage à haute fréquence et le besoin de transmettre le 10-bit ADC valeur via UART de mon Arduino.

Par défaut, il utilise un octet par caractère. Donc, si faire un analogRead donnerait la valeur de "612", il serait envoyer via UART "6" sur un octet, "1" sur un octet, "2" sur un octet, et le terminateur de ligne que le dernier octet.

Étant donné que mon taux d'échantillonnage est tronqué par cette communication, il est important qu'il soit le plus efficace et uniforme que possible, donc je vais essayer de le forcer à utiliser deux octets à transmettre les données, n'a pas d'importance ce que les données réelles (par défaut elle serait d'utiliser trois octets à transmettre "23", quatre octets à transmettre "883" et cinq octets à transmettre "1001").

Actuellement, je suis en train de faire quelque chose de ce genre, qui est le meilleur moyen que j'ai trouvé:

int a = 600; //Just an example
char high = (char)highByte(a);
char low = (char)lowByte(a);
Serial.print(high);
Serial.println(low);

Actuellement, il utilise trois octets (y compris \n), indépendamment de la valeur. Est-il encore la méthode la plus efficace?

Juste l'impression avec quelque chose comme

Serial.print(foo, BIN);

Ne fonctionne pas du tout. En fait, il utilise un octet par tous les bits de la représentation binaire de toto, qui est tout à fait stupide.

  • Ne pas envoyer de la nouvelle ligne à tous? Si vous savez que les données sont toujours une paire d'octets, et ne vous inquiétez pas sur la suppression d'un octet (vous pouvez avoir la synchronisation octets répartis dans le flux de plus en plus rares), alors il n'y a pas de raison d'utiliser un saut de ligne. En outre, si vous envoyez les données sous forme binaire, ce qui va se passer si l'un de ces octets arriver à être 10 (le même que le saut de ligne ASCII)?
  • Numéro de série.write() est la façon de traiter des données binaires. Le Numéro De Série.print() les fonctions sont conçus pour convertir la valeur en un texte lisible.
InformationsquelleAutor Daniel | 2013-10-10