极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18995|回复: 3

Serial.readBytesUntil 串口默认一秒的超时

[复制链接]
发表于 2013-9-18 02:52:11 | 显示全部楼层 |阅读模式
本帖最后由 hick 于 2013-9-18 14:21 编辑

早前我还发帖,以为是蓝牙模块的问题 有没有用蓝牙模块的,发现有一定延时,不知道是否正常





调试发现原因是在 ` Serial.readBytesUntil('\0', line, 500);`  这里本来是想利用 c 语言的字符串以 \0 结束的特性,结果实际上是不支持这样来判断字符串结束的。但是因为有 1s 超时,效果上拆不多一样, Serial.readBytesUntil 1s 超时以后就出来了。外设向串口写信息的时候加上 \0 就可以解决超时问题了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-9-18 09:31:33 | 显示全部楼层
把TX RX跳帽拔掉试试
如果你又使用usb,又使用D0,D1的串口,会有端口冲突问题。只能用usb或者D0,D1的一种
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-18 12:12:46 | 显示全部楼层
弘毅 发表于 2013-9-18 09:31
把TX RX跳帽拔掉试试
如果你又使用usb,又使用D0,D1的串口,会有端口冲突问题。只能用usb或者D0,D1的一种 ...


嘿嘿 多谢。 一觉醒来,想到可能是串口读取方法有关,试了下果然:

代码 Serial.readBytesUntil('\0', line, 500);  并不会像 c 语言那样,把 \0 作为字符串的结尾来处理。而是等到 1s 超时以后才超时并结束读取。


刚才我试的时候把 \0 换成 \n , 在发送字符串到 arduino 的时候,如果不带 "\n" ,则照样超时 1s ; 带上 "\n" 就会快很多了。  

不过延时还是比较大,基本上发送俩个字符需要 0.2s 左右,80 个字符 0.3s 左右。可能跟走 wifi 的 socket 关系比较大。 我回头再试试蓝牙看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-18 14:17:11 | 显示全部楼层
嘿嘿, 确认不是 OCRobot 的 mango 2 板子的问题了,  
蓝牙模块反应很快。基本不到 0.1s

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 00:35 , Processed in 0.072728 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表