我正在高频采样,并需要通过UART从我的Arduino传输10位ADC值。默认情况下,它使用一个字节来表示一个字符。因此,如果进行analogRead会得到值"612",则会通过UART发送"6"作为一个字节,"1"作为一个字节,"2"作为一个字节,最后一个字节为行终止符。由于这种通信方式截断了我的采样率,因此让它尽可能地高效和统一非常重要,因此我试图强制它使用两个字节来传输数据,无论数据实际是什么(默认情况下,传输"23"需要三个字节,传输"883"需要四个字节,传输"1001"需要五个字节)。目前,我正在尝试以下方法,这是我找到的最佳方法:
int a = 600; //Just an example
char high = (char)highByte(a);
char low = (char)lowByte(a);
Serial.print(high);
Serial.println(low);
目前无论值是什么,都会使用三个字节(包括 \n)。是否有更高效的方法?
可以尝试像这样直接打印:
Serial.print(foo, BIN);
完全不起作用。实际上,它为foo的二进制表示中的每个位使用一个字节,这相当愚蠢。
10
(与ASCII换行符相同),会发生什么? - Some programmer dude