Arduino代码机制-Serial中

上一篇说到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:
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值