Arduino Integer error

Arduino Integer error

本文关键字:error Integer Arduino      更新时间:2023-10-16

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

提前感谢

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);
}
}

我不是阿都因人,但我昨晚确实住在假日酒店,可以访问谷歌:)

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是缓冲区(数组)长度的情况下。这将(最多)向line1缓冲区中读取5个字节。

编辑以添加:也就是说,arduino的"C-Like"语言与C非常相似,因为它希望"字符串"(char数组)在传递给Serial.print()时以null终止。上面的建议没有做到这一点,事实上会造成问题。

您需要做的是读取小于数组长度一个字节的,然后null使用实际读取的字节数终止"字符串",这就是bytesRead()返回给您的字节数(数组为零索引):

int numBytesRead = 0;
...
numBytesRead = Serial.readBytes(line1, 4);
line1[numBytesRead] = '';  
Serial.print(line1);

选项B是按照我最初提到的那样做,但使用索引从line1数组中一次循环并打印一个字节

int numBytesRead = 0;
numBytesRead = Serial.readBytes(line1, 5);
int i;
for (i = 0; i < numBytesRead; i++) {
Serial.print(line1[i]);
}

根据文档,Serial.print()自动知道发送一个字节/字符,而这就是所有传递给它的信息

相关文章: