Serial.readBytesUntil 串口默认一秒的超时
本帖最后由 hick 于 2013-9-18 14:21 编辑早前我还发帖,以为是蓝牙模块的问题 有没有用蓝牙模块的,发现有一定延时,不知道是否正常 。
调试发现原因是在 ` Serial.readBytesUntil('\0', line, 500);`这里本来是想利用 c 语言的字符串以 \0 结束的特性,结果实际上是不支持这样来判断字符串结束的。但是因为有 1s 超时,效果上拆不多一样, Serial.readBytesUntil 1s 超时以后就出来了。外设向串口写信息的时候加上 \0 就可以解决超时问题了。 把TX RX跳帽拔掉试试
如果你又使用usb,又使用D0,D1的串口,会有端口冲突问题。只能用usb或者D0,D1的一种 弘毅 发表于 2013-9-18 09:31 static/image/common/back.gif
把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 关系比较大。 我回头再试试蓝牙看看。 嘿嘿, 确认不是 OCRobot 的 mango 2 板子的问题了,
蓝牙模块反应很快。基本不到 0.1s
页:
[1]