在Arduino中串行发送一个整数

Sum*_*udu 4 byte integer arduino char serial-communication

我需要使用串行通信向Arduino发送一个整数,比如介于0到1200之间.这样做的最佳方法是什么?

我可以想到将数字分成一个字符数组(例如:500作为'5','0','0')并将它们作为字节流发送(是的,这很难看).然后在另一端重建.(任何东西都是作为字节流串行发送的,对吧?)

有没有更好的方法?不知何故,它应该能够将值分配给int类型变量.

(如果可能的话,真的需要知道关于字符串的相同事情)

Niñ*_*ipt 7

如果您正在寻找的是速度,那么您可以将数字分成两个字节,而不是发送ASCII编码的int,这是一个例子:

uint16_t number = 5703;               // 0001 0110 0100 0111
uint16_t mask   = B11111111;          // 0000 0000 1111 1111
uint8_t first_half   = number >> 8;   // >>>> >>>> 0001 0110
uint8_t sencond_half = number & mask; // ____ ____ 0100 0111

Serial.write(first_half);
Serial.write(sencond_half);
Run Code Online (Sandbox Code Playgroud)