布尔值的整数总是给我1

时间:2014-07-07 21:29:52

标签: casting arduino

我是新编程。

我试图在arduino中将整数转换为布尔值,但我总是得到1。 请帮帮我:

/////////////////////////////////
boolean booleanValue;
int val;


void setup() {
 Serial.begin(9600);// connect to the serial port
}

void loop () {
  if (Serial.available()) {
    val = Serial.read();//// read the serial port
      boolean booleanValue = !!val;


    Serial.println(booleanValue);
  }

}

1 个答案:

答案 0 :(得分:1)

您需要使用Serial.parseInt()代替Serial.read()

Serial.read()返回输入字节的位模式,字符为#30; 0"的十六进制30。如果输入是空字节,则返回0,而不是数字,字母等。

或者,您可以检查输入是否为0x30,将其视为false,并将所有其他输入视为true。

您应该尝试隔离您怀疑的代码,并确保您确切知道它正在使用哪些输入。在这种情况下,在阅读之后立即插入Serial.println(val,HEX);会告诉您问题在于您的阅读方式,而不是在转换中。