Arduino代码机制-Serial中

本文介绍Arduino的Stream类,该类在Print基础上增加了数据读取功能。Stream通过虚函数允许子类自定义数据读取方式,并提供了超时读取设置。文章详细解析了Stream的查找和转换功能,包括find系列函数、parseInt和parseFloat等,强调了正确使用字符查找和避免错误的方法。此外,还介绍了如何将接收到的数据转换为整型和浮点型,以及如何读取到字符串。
摘要由CSDN通过智能技术生成

上一篇说到Print类,是用来将各种数据打印出来的类。Stream类继承了Print,添加了数据的读取和转换功能。同样由于不知道底层实现,跟Print类似,将底层的实现申明为虚函数。

Stream

读取数据时,可能当前没有数据可读取但数据很快就传送过来,也可能根本就没有数据,为了适应这种不确定性,设定了超时读取时间,超过这个时间还没有读取到数据则读取失败。

 protected:
    unsigned long _timeout;

这个时间是以毫秒为单位的,默认1000ms。如果要更改超时时间,可以用函数:

void setTimeout(unsigned long timeout);

Stream类中并不知道是通过什么硬件读取数据的,因此并不知道如何去读取数据。与Print类类似,将这样底层函数申明为虚函数,需要在子类中实现。
Stream申明了4个虚函数:

virtual int available() = 0;//判断当前是否有可读取的数据
virtual int read() = 0;//读取一个字节并丢弃
virtual int peek() = 0;//读取这个字节但不丢弃,此时如果在读取的话还是同样的数据
virtual void flush() = 0;//将缓冲区中的数据发送出去

还有一些实用函数,在接收到的数据中查找,find和finduntil函数所有的查找最终都是通过调用一个函数实现的,在接收到的数据中查找target,查找到target或者超时或者查找到terminator就结束。

bool Stream:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值