我们正在尝试初始化一个字符数组但是我们得到一个错误,说我们不能,因为我们不能混合整数和字符,但我们没有初始化整数.
提前致谢
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不是一个arduino家伙,但昨晚我住在假日酒店,可以访问Google :)
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数组)null在传递时终止Serial.print().上面的建议没有这样做,事实上会引起问题.
您需要做的是读取小于数组长度的一个字节,然后null使用实际读取的字节数终止"字符串",这bytesRead()将返回给您(数组为零索引):
int numBytesRead = 0;
...
numBytesRead = Serial.readBytes(line1, 4);
line1[numBytesRead] = '\0';
Serial.print(line1);
Run Code Online (Sandbox Code Playgroud)
选项B是我最初提到的,但是line1使用索引从数组中一次循环并打印一个字节:
int numBytesRead = 0;
numBytesRead = Serial.readBytes(line1, 5);
int i;
for (i = 0; i < numBytesRead; i++) {
Serial.print(line1[i]);
}
Run Code Online (Sandbox Code Playgroud)
根据文档Serial.print()自动知道发送单个字节/字符时,所有这些都传递给它.