Arduino 串口读写函数快慢/时间花费

Arduino的读函数功能和时间花费(串口通信必知):

  (1) Serial.read(): 每次只读取一个字节(or 一个字母),但是单次读取时间很快;

  (2)Serial.readString(): 每次读取一个字符串,程序不知道什么时候能够读取完整的字符串,会默认系统等待1s的时间,这个时间对于及时响应的系统来说实在是太漫长了,所以有了下面这个;

  (3) Serial.readStringUntil(): 每次读取一个字符串,知道遇到截至字符,比如:Serial.readStringUntil(','):程序遇到逗号就不读取串口中的内容了,系统也不会等待,所以你只需要把你要传达的命令放在逗号之前就可以了,相当于给系统一个明确的提示,花费的时间与read()不相上下,但是又能成功读取到字符串,字符串的读取对于一个程序操作来说,在某些情境下是至关重要和方便的。但是如果不想用这个函数,也可以set一下系统的等待时间 Serial.setTimeout(time),把要设置的时间填到括号中即可,但是不建议使用这种方法,这种方法并没有给程序增加多少效率,反而使得整个系统处于一种被束缚的状态;

  (4) Serial.parseInt(): 可以将字符串中遇到的第一个int型的数据抓取下来,比如我有一个字符串:“www.123_456.com”,该函数会抓取到123。但是这个函数的反应时间在某些情况下也是很慢,可能等待的时间也是1s,比如我有一个字符串“www.123”,同样程序也能抓取到123,但是在123之后没有非数字的字符,所以程序需要等待1s中确认后面再也没有整型的数据了。所以这个时候如果你要发送含有整型数据的命令的时候,可以把命令改成"www.123.",只要数字后面加上一个任意非数字的字符就ok了,这个时候程序就会在“.”之前截至,反应时间也是“及时”的。

字符串缓存(串口通信必知):

  假设我们有一个字符串“www.123.com”,如果使用函数 Serial.read(),那么程序会读取到“w”,这个时候串口中的缓存变成了“ww.123.com”,假设我们有一个字符串“www.123.com”,如果我们使用了函数 Serial.parseInt(),那么之后字符串中的缓存变成了 ".com",对于串口通信编程来说,知道串口缓存以及各个函数对串口缓存的影响是至关重要的,其他关于串口操作的函数,可以依次类推,自己加以实验,用类似的办法总能解决现实需求(比如时间效率,特定命令等等)。

  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
ArduinoSerial 库提供了许多常用的串口相关函数,下面是一些常见的函数及其用法: 1. Serial.begin(baudrate) 用于初始化串口,设置波特率。baudrate 参数为波特率,单位为 bps。常见的波特率有 9600、115200 等。例如: ``` Serial.begin(9600); // 初始化串口,波特率为9600 ``` 2. Serial.print() 用于向串口发送数据,可以发送数字、字符串、变量等。例如: ``` Serial.print("Hello, world!"); // 发送字符串 int value = 123; Serial.print(value); // 发送数字 ``` 3. Serial.write() 用于向串口发送字节数据。例如: ``` Serial.write(0x55); // 发送字节数据 ``` 4. Serial.available() 用于检查串口接收缓冲区中是否有数据可读。返回值为可读取的字节数。例如: ``` if (Serial.available() > 0) { // 有数据可读 } ``` 5. Serial.read() 用于从串口接收缓冲区中读取一个字节。返回值为读取到的字节数据,如果没有可读取的数据则返回 -1。例如: ``` int data = Serial.read(); // 读取一个字节 if (data != -1) { // 读取到数据 } ``` 6. Serial.flush() 用于清空串口接收缓冲区。例如: ``` Serial.flush(); // 清空接收缓冲区 ``` 7. Serial.setTimeout() 用于设置串口读取数据时的超时时间,单位为毫秒。如果在超时时间内没有读取到数据,则返回 0。例如: ``` Serial.setTimeout(1000); // 设置超时时间为1秒 ``` 以上是一些常见的 Arduino 串口相关函数,还有一些其他的函数和属性可以在 Arduino 的官方文档中查看。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值