我正在编写我的BB-8项目,我正在使用蓝牙和我的Arduino,所以我正在使用:
if (Serial.available() > 0) {
state = Serial.read();
大多数人通过这样的方式发送号码:
if (state == '1') {
但我想通过一个数字来发送一个字符串,以便更容易这样:
if (state == 'stop') { // or go etc.
但这似乎不会起作用所以我尝试使用字符串:
if (state == "stop") {
但是我收到了这个错误
ISO C ++禁止指针和整数[-fpermissive]
之间的比较
哪一个会起作用,如果我不应该做什么呢?
谢谢。
答案 0 :(得分:0)
首先,撇号适用于字符文字而不是字符串,'x'
类型为char
,而"x"
类型为char*
。没有明确定义'xyz'
的含义,正如本问题所述:https://stackoverflow.com/a/3961219/607407
值Serial.read
返回的类型为int
。所以在这种情况下:
if (state == "stop")
您正在将int
与const char*
进行比较。相反,您可能想要读取一个字符串并进行比较。以下是从序列中读取arduino字符串的示例:
const int max_len = 20;
char input_string[max_len+1]; // Allocate some space for the string
size_t index = 0;
while(Serial.available() > 0) // Don't read unless
{
if(max_len < 19) // One less than the size of the array
{
int input_num = Serial.read(); // Read a character
input_string[index] = (char)input_num; // Store it
index++; // Increment where to write next
input_string[index] = '\0'; // Null terminate the string
}
else {
// all data read, time to data processing
break;
}
}
// Don't forget that you have to compare
// strings using strcmp
if(strcmp(inData, "stop") == 0) {
// do something
}
// reset the buffer so that
// you can read another string
index = 0;