Arduino整数错误

时间:2012-12-05 20:53:12

标签: c++ arduino

我们正在尝试初始化一个字符数组,但我们得到一个错误,说我们不能,因为我们不能混合整数和字符,但我们没有初始化的整数。

提前致谢

 void setup()
 {
     Serial.begin(9600); //Set the serial monitor.
     lcd.begin(16, 2); //Set the LCD
 }

 char line1 [5] = {0};
 char line2 [] = {0};

 void loop()
 {
     if (Serial.available() > 0) { //If the serial monitor is open it will read a value.
         line1 = Serial.read();
         delay(10);
         Serial.print(line1);
         lcd.print(line1);
     }
 }

1 个答案:

答案 0 :(得分:5)

不是一个arduino家伙,但我昨晚住在假日酒店,可以访问谷歌:)

http://arduino.cc/en/Serial/Read

Serial.read()返回单个字节(作为int)。您正在尝试将其分配给char数组。

你做不到。您可以将某些内容分配给数组中的特定元素line1[0] = 'c'; 例如,但您无法分配给数组本身。

似乎就像你正在寻找Serial.readBytes()

http://arduino.cc/en/Serial/ReadBytes

看起来像是:

Serial.readBytes(line1, 5);

在你的情况下5是你的缓冲区(数组)的长度。这将(最多)5个字节读入您的line1缓冲区。

编辑添加:话虽如此,看起来arduino的“C-Like”语言与C非常相似,因为它期望“Strings”(char数组)为{ {1}}在将其传递给null时终止。上面的建议没有这样做,事实上会导致问题。

你需要做的是读取比数组长度小一个字节,然后Serial.print()使用实际读取的字节数终止“字符串”是null返回给你的(数组是零索引):

bytesRead()

选项B是按照我最初提到的方式进行的,但是使用索引从int numBytesRead = 0; ... numBytesRead = Serial.readBytes(line1, 4); line1[numBytesRead] = '\0'; Serial.print(line1); 数组一次循环并打印一个字节:

line1

根据文档int numBytesRead = 0; numBytesRead = Serial.readBytes(line1, 5); int i; for (i = 0; i < numBytesRead; i++) { Serial.print(line1[i]); } 自动知道在传递给它的所有内容时发送单个字节/字符。