我们正在尝试初始化一个字符数组,但我们得到一个错误,说我们不能,因为我们不能混合整数和字符,但我们没有初始化的整数。
提前致谢
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);
}
}
答案 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]);
}
自动知道在传递给它的所有内容时发送单个字节/字符。