关于串口read到的数据如何提取的问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3060|回复: 4

[未解决] 关于串口read到的数据如何提取的问题

[复制链接]
发表于 2021-6-1 22:27 | 显示全部楼层 |阅读模式

现在串口的数据是@XXXXX#XXXX
请问一下只想要#号后面的XXXX怎么处理呢
查了很多方法也不知道怎么弄

下载.png
发表于 2021-6-2 09:18 | 显示全部楼层
把读到的值放到一个String里,如果#前面是固定长度,用
Serial.write(mystr,substring(7))

如果#前面不是固定长度,用循环找到#的位置:
String val;
for (int i = 0; i < mystr.length(); i++) {
    if (mystr.charAt(i) == "#") {
        val= mystr.substring(i+1);
        break;
    }
}
 楼主| 发表于 2021-6-2 18:15 | 显示全部楼层
ifeue 发表于 2021-6-2 09:18
把读到的值放到一个String里,如果#前面是固定长度,用
Serial.write(mystr,substring(7))

感谢您的回复,#前面是固定长度,我用了您提供的方法,貌似还是不太行,请您看看我这样有什么问题嘛?谢谢!
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
String mystr;
void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop()
{
    if (mySerial.available())
    String mystr = Serial.readString();
    Serial.print(mystr.substring(7));
    Serial.println("mm");
    delay(500);
}
发表于 2021-6-3 06:32 | 显示全部楼层
if 语句少 {  }

void loop()
{
    if (mySerial.available())
    {
        String mystr = Serial.readString();
        Serial.print(mystr.substring(7));
        Serial.println("mm");
    }
    delay(500);
}
发表于 2021-6-3 06:39 | 显示全部楼层
loop()中不要再声明 String myStr

void loop()
{
    if (mySerial.available())
    {
        mystr = Serial.readString();
        Serial.print(mystr.substring(7));
        Serial.println("mm");
    }
    delay(500);
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 05:46 , Processed in 0.094573 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表