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)