Arduino Serial.read()到int
当串行数据以字节为单位读入int(它似乎没有被转换成int),然后测试它是否与“1”相同时,这里到底发生了什么?它为什么有效?if如何返回true?“1”和“1”有什么区别(它们不是都是字符串吗)Arduino Serial.read()到int,arduino,serial-port,Arduino,Serial Port,当串行数据以字节为单位读入int(它似乎没有被转换成int),然后测试它是否与“1”相同时,这里到底发生了什么?它为什么有效?if如何返回true?“1”和“1”有什么区别(它们不是都是字符串吗) 读取单个值,并将其存储在number中。将该值与字符“1”进行比较。 在ASCII中,字符“1”的十进制值为49 如果作者将number声明为char(甚至byte),而不是int,我想这个例子会更清楚。我假设read()只返回8位值 对于您的最后一个问题:“这是一个字符串”,但“z”是一个单个字符。
读取单个值,并将其存储在
number
中。将该值与字符“1”进行比较。
在ASCII中,字符“1”的十进制值为49
如果作者将number
声明为char
(甚至byte
),而不是int
,我想这个例子会更清楚。我假设read()
只返回8位值
对于您的最后一个问题:“这是一个字符串”,但“z”是一个单个字符。学习C。它不是python。@非常感谢您的有用评论!我有点理解这一点,但似乎仍然有一个额外的转换发生在您可能期望的地方(在
read()
行中),而在不应该发生的地方(在if()
行中)。无论如何,我已经通过使用.readString()
解决/简化了我的问题。谢谢。如果您使用.readString()
简化了您的问题,那么您应该真正了解C语言中的字符表示法,否则您将再次遇到此问题。@TheSalion我来看看。再次感谢。
SoftwareSerial bluetooth(2, 3);
void loop()
{
if (bluetooth.available())
{
int number = bluetooth.read();
//how is number (49 in bytes) identical to '1'
if (number == '1')
{
Serial.print(number);
Serial.print(" : ");
Serial.println("on");
}
}
}