说明
setTimeout函数用于设置设备等待数据流的最大时间间隔。
当设备在接收数据时,是以字符作为单位来逐个字符执行接收任务。由于设备无法预判即将接收到的信息包含有多少字符,因此设备会设置一个等待时间。默认情况下,该等待时间是1000毫秒。
举例来说,假设我们要向设备发送一个字符串“ok”。那么设备在接收到第一个字符“o”以后,他会等待第二个字符的到达。假如在1000毫秒内,设备接收到第二个字符“k”,那么设备会重置等待时间,也就是再等待1000毫秒,看一看字符“k”后面还有没有字符到达。我们知道我们发给设备的字符串只有两个字符,后面没有更多字符了。但是设备并不知道这一情况。因此设备在接收到“k”以后,会等待1000毫秒。直到1000毫秒等待时间结束都没有再次接到字符。这时,设备才会很肯定地结束这一次接收工作。这里这个等待的1000毫秒时间就是通过setTimeout函数来设置的。
setTimeout函数属于Stream类。该函数可被Stream类的子类所使用,如(Serial, WiFiClient, File 等)。
语法
stream.setTimeout(time)
注:此处stream为概念对象名称。在实际使用过程中,需要根据实际使用的stream子类对象名称进行替换。如:
Serial.setTimeout(time)
wifiClient.setTimeout(time)
参数
time: 设置最大等待时间。单位:毫秒。允许类型:long
返回值
无
示例程序
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 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : stream_setTimeout 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200318 程序目的/Purpose : 此程序使用Serial来演示Stream类中的setTimeout。 setTimeout函数用于设置设备等待数据流的最大时间间隔。 默认情况下,该等待时间是1000毫秒。 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ void setup() { Serial.begin(9600); Serial.setTimeout(5000); } void loop() { if (Serial.available()) { String s = Serial.readString(); Serial.println(s); } } |