点击返回Arduino-SD库页面
peek
描述
peek函数可用于从指定文件中读取一个字节的数据。但是与read函数不同的是,使用peek函数读取数据后,被读取的数据不会从数据流中消除。这就导致每一次调用peek函数,只能读取数据流中的第一个字符。然而每一次调用read函数读取数据时,被读取的数据都会从数据流中删除。
本函数属于Stream类。该函数可被Stream类的子类所使用,如(Serial, WiFiClient, File 等)。
详情可查看太极创客Stream教程
语法
file.peek()
参数
file:File实例化对象(由SD.open()
返回)
返回值
设备没有接收到数据时,返回值为-1
设备接收到数据时,返回值为接收到的数据流中的第1个字符。
示例程序
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
/********************************************************************** 程序名称/Program name : SD_File_peek 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : Dapenson 日期/Date(YYYYMMDD) : 2020/06/18 程序目的/Purpose : 演示如何使用peek函数将收到的信息进行读取并通过串口进行打印 ----------------------------------------------------------------------- 修订历史/Revision History 日期/Date 作者/Author 参考号/Ref 修订说明/Revision Description ----------------------------------------------------------------------- 其它说明: ***********************************************************************/ #include <SPI.h> #include <SD.h> // 创建File实例化对象 File myFile; void setup() { // 初始化硬件串口并设置波特率为9600 Serial.begin(9600); while (!Serial) { ; //等待串口打开 } Serial.print("Initializing SD card..."); // 检测是否初始化完成 if (!SD.begin()) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // 查看是否存在"example"文件 if (SD.exists("example.md")) { Serial.println("example.md exists."); } else { Serial.println("example.md doesn't exist."); } // 打开example文件 myFile = SD.open("example.md"); if (myFile) { Serial.println("example.md : "); //从文件里读取数据并打印到串口,直到读取完成 while (myFile.available()) { // Serial.write(myFile.read()); char serialData = myFile.peek(); // 将接收到的信息使用peek读取 Serial.print((char)serialData); // 然后通过串口监视器输出peek函数所读取的信息 myFile.read();//使用read消除数据流,以便继续读取下一个数据 } // 关闭文件打开状态 myFile.close(); // 向串口打印文件名称 Serial.print(String("") + "file name = " + myFile.name()); } else { //如果文件没有打开,则向串口输出文件打开错误 Serial.println("error opening example.md"); } } void loop() { } |