说明
readBytesUntil() 函数可用于从设备接收到数据中读取信息。读取到的数据信息将存放在缓存变量中。该函数在满足以下任一条件后都会停止函数执行并且返回。
– 读取到指定终止字符
– 读取到指定字节数的信息
– 达到设定时间(可使用setTimeout来设置)
当函数读取到终止字符后,会立即停止函数执行。此时buffer(缓存变量/数组)中所存储的信息为设备读取到终止字符前的字符内容。
本函数属于Stream类。该函数可被Stream类的子类所使用,如(Serial, WiFiClient, File 等)。
语法
stream.readBytesUntil(character, buffer, length)
注:此处stream为概念对象名称。在实际使用过程中,需要根据实际使用的stream子类对象名称进行替换。如:
Serial.readBytesUntil(character, buffer, length)
wifiClient.readBytesUntil(character, buffer, length)
参数
character: 终止字符。用于设置终止函数执行的字符信息。设备在读取数据时一旦读取到此终止字符,将会结束函数执行。允许使用char类型。
buffer: 缓存变量/数组。用于存储读取到的信息。允许使用char或者byte类型的变量或数组。
length: 读取字节数量。readBytes函数在读取到length所指定的字节数量后就会停止运行。允许使用int类型。
返回值
buffer(缓存变量)中存储的字节数。数据类型:size_t
示例程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : stream_readBytesUntil 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200317 程序目的/Purpose : Stream类用于处理字符数据流或二进制数据流。Stream类是不能被直接调用的。 然而当我们使用基于Stream类的库时,都会调用Stream中的内容。 以下Arduino库及相应库中的类都是基于Stream类所实现的。 库 类 Core Serial Wifi WiFiClient Ehternet EthernetClient ESP8266FS File SD File Wire Wire GSM GSMClient SoftwareSerial SoftwareSerial 此程序使用Serial对象来演示Stream类中的readByteUntil()函数使用方法。 ----------------------------------------------------------------------- 修订历史/Revision History 日期/Date 作者/Author 参考号/Ref 修订说明/Revision Description ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ char terminateChar = 'T'; // 建立终止字符 const int bufferLength = 10; // 定义缓存大小为10个字节 char serialBuffer[bufferLength];// 建立字符数组用于缓存 void setup() { // 启动串口通讯 Serial.begin(9600); Serial.println(); } void loop() { if (Serial.available()){ // 当串口接收到信息后 Serial.readBytesUntil(terminateChar, serialBuffer, bufferLength);// 将接收到的信息使用read读取 for(int i=0; i<bufferLength; i++){ // 然后通过串口监视器输出readBytesUntil Serial.print(serialBuffer[i]); // 函数所读取的信息 } Serial.println(""); } } |
相关内容
– available
– readBytes
– setTimeout