用c语言写一段代码,在arduino uno开发板中运行,将上位机发送的,串口接收到的“360,360;720,0;0,0;”这个字符串中的三组数据(360,360)(720,0)(0,0)提取出来
时间: 2024-11-22 13:42:04 浏览: 19
在Arduino Uno开发板中,你可以使用SoftwareSerial库来处理从上位机通过串口接收到的数据。首先确保已安装该库。下面是一个简单的示例代码,展示了如何读取并解析字符串:
```cpp
#include <SoftwareSerial.h> // 引入SoftwareSerial库
// 初始化软件串口,假设连接到RX (0) 和 TX (1)
SoftwareSerial mySerial(0, 1);
void setup() {
Serial.begin(9600); // 主串口用于调试,初始化主串口通信速度
mySerial.begin(9600); // 初始化软件串口通信速度
}
void loop() {
if (mySerial.available()) { // 如果串口有新数据可用
char incomingChar = mySerial.read(); // 读取一个字符
String dataString = ""; // 定义一个空字符串来保存完整数据
while (incomingChar != ';' && incomingChar != '\n') { // 遇到分隔符或换行之前持续读取
dataString += incomingChar;
incomingChar = mySerial.read();
}
// 数据分割
String[] pairs = dataString.split(","); // 使用逗号作为分隔符分割成数组
for (int i = 0; i < pairs.length; i += 2) {
int x = parseInt(pairs[i]); // 提取第一个数字
int y = parseInt(pairs[i + 1]); // 提取第二个数字
Serial.print("坐标: (" + x + ", " + y + ")");
Serial.println(); // 打印坐标对
}
}
}
// 辅助函数将字符串转换为整数
int parseInt(String str) {
return str.toInt();
}
```
在这个程序中,我们监听串口接收到的数据,并在遇到分隔符`;`或者换行符`\n`时停止读取。然后,我们将数据分为两部分并转换为整数。记得替换串口连接的RX和TX引脚的实际值。
阅读全文