Arduino对串口接收到的数据处理以及对整数或者浮点数数据进行提取

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino对串口接收到的数据处理以及对整数或者浮点数数据进行提取相关的知识,希望对你有一定的参考价值。

Arduino对串口接收到的整数或者浮点数数据进行提取

本文使用到的是stream_parseFloat
  • 程序源码:
/**********************************************************************
程序名称/Program name     : stream_parseFloat
程序目的/Purpose          : 
此程序使用Serial来演示Stream类中的parseFloat。
parseFloat函数可用于从设备接收到的数据中寻找整数数值。
Stream类用于处理字符数据流或二进制数据流。Stream类是不能被直接调用的。
然而当我们使用基于Stream类的库时,都会调用Stream中的内容。

以下Arduino库及相应库中的类都是基于Stream类所实现的。
 库          类
Core        Serial
Wifi        WiFiClient
Ehternet    EthernetClient
ESP8266FS   File
SD          File
Wire        Wire
GSM         GSMClient
SoftwareSerial  SoftwareSerial

***********************************************************************/

void setup() {
  
  // 启动串口通讯
  Serial.begin(115200); 
  Serial.println();
  
}

void loop() {
  
  if (Serial.available()){              // 当串口接收到信息后   
    int serialData = Serial.parseFloat(); // 使用parseFloat查找接收到的信息中的整数
    Serial.print("serialData = ");      // 然后通过串口监视器输出找到的数值
      Serial.println(serialData);
  }
}
  • 发送perseverance9527串口输出信息:9527

在这里插入图片描述

串口对接收的数据类型:string串口打印出来
String comdata = "";
void setup()
{
    Serial.begin(9600);
}
 
void loop()
{
    while (Serial.available() > 0){
        comdata += char(Serial.read());  //每次读一个char字符,并相加
        delay(2);
    }
    if (comdata.length() > 0){
        Serial.println(comdata); //打印接收到的字符
        comdata = "";//清空数据,等待下一次接收
    }
}

while (Serial.available() > 0){
comdata += char(Serial.read()); //每次读一个char字符,并相加
delay(2);
}

当串口接收到数据时(上面Serial.available()>0这句),反复读取串口的数据并赋值给comdata(上面comdata += char(Serial.read());这句),直到数据读完(即Serial.available()=0的时候)

  • 串口打印
    在这里插入图片描述
将字符串转换为字符串数组:.c_str()
String comdata = "";
const char *cstr = comdata.c_str();
//将string转化为字符串数组,c_str()生成一个const char *指针,指向字符串的首地址。

void setup()
{
    Serial.begin(9600);
}
 
void loop()
{
    while (Serial.available() > 0){
        comdata += char(Serial.read());  //每次读一个char字符,并相加
        delay(2);
    }
    if (comdata.length() > 0){
        Serial.println(cstr); //打印接收到的字符
        comdata = "";
    }
}

以上是关于Arduino对串口接收到的数据处理以及对整数或者浮点数数据进行提取的主要内容,如果未能解决你的问题,请参考以下文章

Arduino 从串口接收到的数据中提取整型数据(parseInt)

Arduino串口接收并打印输出int类型数据

请教一个问题,arduino怎么读取一个字节里的某两位数据

Seeduino XIAO开发板安装Arduino软件包以及USB串口驱动

关于Arduino的串口中断

STM32G070RBT6基于Arduino框架下串口数据接收使用示例