1
我正在嘗試編寫代碼來存儲串行終端中{和}之間的命令文本。到目前爲止,我有:Arduino:如何將char數組中的值存儲在一行中然後清除/清空char數組?
byte index = 0; // Index into array; where to store the character
char cmdArr[10];
boolean startOfLine = false;
boolean endOfLine = false;
void setup()
{
Serial.begin(38400);
}
void serialEvent()
{
while (Serial.available())
{
char cmd = (char)Serial.read();
if (cmd == '{')
{
startOfLine = true;
}
if (cmd == '}')
{
endOfLine = true;
//cmdArr[index] = '\0'; //null terminate the C string; I'm not sure if this is needed
}
if (startOfLine && cmd != '{' && cmd != '}')
{
cmdArr[index++] = cmd;
}
if (startOfLine && endOfLine)
{
int i;
for (i = 0; i < 10; i++)
{
//Do something with the command
}
startOfLine = false;
endOfLine = false;
break;
}
}
}
void loop()
{
}
我能夠迭代通過cmdArr打印出數組值。現在,例如,命令被存儲如下:char cmdArr [10] = {'p','h','c','\ 0'};是否可以存儲命令,如char cmdArr [10] = {「phc」};?另外,如何清除/清空該命令以準備下一個命令?
似乎正在工作的新代碼。我採取使用一個字符串,因爲它似乎是最簡單的方法:
String cmdData; //Store the complete command on one line to send to sensor board.
boolean startOfLine = false;
boolean endOfLine = false;
void setup()
{
Serial.begin(38400);
Serial3.begin(38400);
}
void serialEvent()
{
while (Serial.available())
{
char cmd = (char)Serial.read();
if (cmd == '{')
{
startOfLine = true;
}
if (cmd == '}')
{
endOfLine = true;
}
if (startOfLine && cmd != '{' && cmd != '}')
{
//Serial.print("Send command");
cmdData += cmd;
}
if (startOfLine && endOfLine)
{
startOfLine = false;
endOfLine = false;
cmdData += '\r';
Serial3.print(cmdData);
cmdData = "";
}
}
}
void serialEvent3()
{
char cmd3 = (char)Serial3.read();
Serial.print(cmd3);
}
void loop()
{
}
'cmdArr [10] =「phc \ 0」'可以工作。另外,'cmdArr'可以和'&(cmdArr [0])'一樣使用;都是'char *'類型,它與C中的'真實'字符串非常接近。對字符串進行操作的操作(比如'strcmp()')會將'char *'作爲輸入,代表'字符串'變量。 – JimmyB