Arduino int 到字符串的转换

Arduino int to String conversion

我有这个代码:

String c = String(BTLEserial.read());
char relevant = c.charAt(0);
Serial.println(relevant);

其中 BTLEserial.read() returns 输入 Int。我在第一行将其转换为 String,以便我可以在下一行中使用 charAt 函数。

当我发送蓝牙“0000”时,我的 println(relevant) 打印 4

我做了一个测试println()语句来打印c的值,发现它在BTLEserial.read()为0000时的值竟然是48。这告诉我,当我将 IntBTLEserial.read() 更改为字符串 c 时,我遇到了转换问题。

这里发生了什么,将 BTLEserial.read() 转换为类型 String 的正确方法是什么?

难道你的 String 对象的第一个字符在索引 0 处?所以实际上,您正在读取字符串 后面 的一个字符(它不包含 the docs 的空字符)。

一个方便的 String 实现应该抛出异常或至少警告您正在读取越界。但是在 Arduino 上你需要自己验证你的边界检查(嘿,它是嵌入式的)。

I made a test println() statement to print the value of c, and found that its value when BTLEserial.read() is 0000 turns out to be 48.

不足为奇。 "0" 的 ASCII 值为 48.

Adafruit_BLE_UART::read()returns的"int"是最近收到的字节;如果你想接收多个字节,例如字符串“0000”,那么你将需要多次调用它,每次都将字符添加到缓冲区。