将串口输入的字符串转化为数组并通过另一个串口传出
时间: 2023-06-01 15:03:06 浏览: 131
以下是Arduino代码示例:
```
void setup() {
Serial.begin(9600); // 设置串口通信速率为9600
Serial1.begin(9600); // 设置另一个串口通信速率为9600
}
void loop() {
if (Serial.available()) { // 如果串口有数据可用
String str = Serial.readStringUntil('\n'); // 读取一行字符串
str.trim(); // 去除字符串两端的空格和换行符
int len = str.length(); // 获取字符串长度
int arr[len]; // 定义数组
for (int i = 0; i < len; i++) { // 遍历字符串的每个字符
arr[i] = str.charAt(i) - '0'; // 将字符转化为数字并存入数组
}
for (int i = 0; i < len; i++) { // 遍历数组并通过另一个串口传出
Serial1.print(arr[i]);
Serial1.print(" ");
}
Serial1.println(); // 发送换行符
}
}
```
在这个示例中,我们使用了两个串口:Serial和Serial1。首先,在setup函数中,我们分别初始化了这两个串口,并将通信速率设置为9600。
在loop函数中,我们使用了Serial.available()函数来检查串口是否有数据可用。如果有,我们使用Serial.readStringUntil('\n')函数读取一行字符串,并使用String.trim()函数去除字符串两端的空格和换行符。接着,我们定义了一个数组,并使用for循环遍历字符串的每个字符,将其转化为数字并存入数组中。最后,我们再使用for循环遍历数组,并通过Serial1.print()函数将数组元素依次传出,同时在最后发送一个换行符。
需要注意的是,在Arduino中,串口通信的数据类型均为字符型,因此我们需要将字符转化为数字才能存入数组中。在上面的示例中,我们使用了字符型数字的ASCII码值来进行转化,因为字符'0'~'9'的ASCII码值正好是48~57。因此,我们可以通过减去'0'的ASCII码值来得到相应的数字值。例如,字符'5'的ASCII码值是53,减去'0'的ASCII码值48后,得到的就是数字5。
阅读全文