arduino 获取串口数据,并将每次串口数据中截取带有关键字的一行数据,将该行数据按逗号分解为数据
时间: 2024-02-11 10:03:43 浏览: 81
好的,下面是一个简单的基于Arduino串口通信的程序,可以实现获取串口数据、截取带有关键字的一行数据,并将该行数据按逗号分解为数据的功能:
```
String keyword = "data"; // 关键字
String dataString = ""; // 接收到的串口数据
int data[3]; // 分解后的数据,假设有3个数据
void setup() {
Serial.begin(9600); // 初始化串口通信
}
void loop() {
while (Serial.available() > 0) { // 如果串口有数据可读
char c = Serial.read(); // 读取一个字符
if (c == '\n') { // 如果是换行符
if (dataString.indexOf(keyword) >= 0) { // 如果包含关键字
int pos = dataString.indexOf(keyword); // 找到关键字的位置
String line = dataString.substring(pos); // 截取关键字后面的一行数据
int commaPos[3]; // 用于保存逗号的位置
int dataIndex = 0; // 数据下标
for (int i = 0; i < line.length(); i++) { // 遍历一行数据的所有字符
if (line[i] == ',') { // 如果是逗号
commaPos[dataIndex] = i; // 保存逗号的位置
dataIndex++; // 数据下标加一
}
}
data[0] = line.substring(0, commaPos[0]).toInt(); // 截取第一个数据
data[1] = line.substring(commaPos[0] + 1, commaPos[1]).toInt(); // 截取第二个数据
data[2] = line.substring(commaPos[1] + 1, commaPos[2]).toInt(); // 截取第三个数据
// 处理数据
// ...
}
dataString = ""; // 清空串口数据
} else {
dataString += c; // 将读取到的字符添加到串口数据中
}
}
}
```
该程序的原理是不断读取串口数据,当读到换行符时,截取关键字后面的一行数据,并按逗号分解为三个数据。在程序中,通过 `Serial.read()` 来读取一个字符,通过 `Serial.available()` 来判断串口是否有数据可读,通过 `indexOf()` 来查找关键字的位置,通过 `substring()` 来截取一行数据和分解数据。分解后的数据保存在 `data` 数组中,可以进行后续的处理。
阅读全文