ESP8266 – WiFiClient库 – readStringUntil()

本文详细介绍了readStringUntil函数在设备通信中的作用,如何通过' '作为终止字符接收服务器响应信息,并通过实例展示了其在解析多行数据中的应用。重点讲解了' '在串口输出中的表现和while循环的使用技巧。
摘要由CSDN通过智能技术生成

定义:

readStringUntil函数可用于从设备接收到的数据中读取信息。读取到的数据信息将以字符串形式返回。该函数在满足以下任一条件后都会停止函数执行并返回。当函数读取到终止字符后,会立即停止函数执行。此时函数所返回的字符串为”终止字符”前的所有字符信息。

语法

client.readStringUntil(terminator)

参数

terminator: 终止字符。用于设置终止函数执行的字符信息。设备在读取数据时一旦读取到此终止字符,将会结束函数执行。允许使用char类型。


返回值

接收到的数据,类型为字符串。

示例(只展示部分代码)

当客户端收到服务器请求的响应的信息时:

 //利用while函数将响应的信息逐条输出显示出来:
 Serial.println("Web Server Response:");        
    while (client.connected() || client.available()){ 
      if (client.available()){
        String line = client.readStringUntil('\n');
        Serial.println(line);
      }
    }

为了更直观解释为什么 `readStringUntil('\n');` 所带的参数为'\n',可以看看下面这幅图。图中表示的是服务器中发送给客户端的响应信息,其中包括响应状态(第1行)+响应头(第2~14行)+响应体(第15行~结尾)。由图中可以知道,每一行都有一个 ‘\n’ 作为结尾,即通过 `readStringUntil('\n');`函数,当读取到 '\n'字符时,将自动结束并返回那一行的响应信息。

在这里插入图片描述


实际串口输出的结果如下图所示:

在这里插入图片描述
注意:
①:因为 ‘\r\n’ 表示换行的意思,所以在串口中输出的结果中由换行来显示,故没有出现 '\r\n’这个符号。

②代码中通过while()函数才可以将所有的响应信息读取出来,单独的readStringUntil('\n');函数只能读取一条响应信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值