arduino串口输入的字符串怎么变成数组
时间: 2023-11-24 19:59:05 浏览: 88
要将 Arduino 串口输入的字符串转换为数组,可以使用 `strtok()` 函数将字符串分割成多个子字符串,并将它们存储在一个字符数组中。以下是一个示例代码:
```c++
#define MAX_INPUT_LENGTH 50 // 定义最大输入长度
char inputString[MAX_INPUT_LENGTH]; // 定义输入字符串数组
char *tokens[MAX_INPUT_LENGTH]; // 定义分割后的子字符串数组
int tokenCount = 0; // 分割后的子字符串数量
void setup() {
Serial.begin(9600); // 初始化串口
}
void loop() {
if (Serial.available()) { // 如果串口有输入
char c = Serial.read(); // 读取输入字符
if (c == '\n') { // 如果输入字符为换行符
inputString[tokenCount] = '\0'; // 在输入字符串末尾添加结束符
tokenCount = 0; // 重置子字符串数量
char *token = strtok(inputString, ","); // 分割输入字符串并获取第一个子字符串
while (token != NULL) { // 如果还有子字符串
tokens[tokenCount++] = token; // 将子字符串添加到数组中
token = strtok(NULL, ","); // 获取下一个子字符串
}
// 现在 tokens 数组中存储了分割后的子字符串,可以对它们进行处理
Serial.println("Input received:"); // 输出提示信息
for (int i = 0; i < tokenCount; i++) { // 遍历子字符串数组
Serial.print(i); // 输出子字符串的下标
Serial.print(": "); // 输出分隔符
Serial.println(tokens[i]); // 输出子字符串
}
} else if (tokenCount < MAX_INPUT_LENGTH - 1) { // 如果输入字符不是换行符且输入字符串未满
inputString[tokenCount++] = c; // 将输入字符添加到输入字符串中
}
}
}
```
在上面的示例代码中,我们首先定义了一个最大输入长度为 50 的输入字符串数组 `inputString`,以及一个最大长度为 `MAX_INPUT_LENGTH` 的分割后的子字符串数组 `tokens`。然后在 `setup()` 函数中初始化串口,然后在 `loop()` 函数中不断读取串口输入。
当读取到的输入字符为换行符时,我们先在输入字符串末尾添加结束符,然后使用 `strtok()` 函数将输入字符串分割成多个子字符串,并将它们存储在 `tokens` 数组中。在遍历 `tokens` 数组时,我们可以对每个子字符串进行处理。
如果输入字符不是换行符且输入字符串未满,我们将输入字符添加到输入字符串中。如果输入字符串已满,我们将不再添加新字符,直到读取到换行符为止。
阅读全文