我仍然有从DSD技术的HM-11蓝牙写入手机应用程序的问题(play store上的串行蓝牙终端1.35)。
我的代码目前有一个大字符串切成2,根据我上一篇文章的结果,由于BLE的最大缓冲区约为252字节。我所面临的问题是,目前需要的dealy(450)来防止乱码。
BTSerial.print(F( "============== RGBCube Bluetooth Help ==============n"
"Commands: n"
" mode:# select mode to operate in n"
" help pull up help screen (this) n"
" Mode 4 only: n"
" reset resets cube to black n"
" pt:x,y,z=r,g,b sets led at (x,y,z) to rgb n"
" set:r,g,b;r,g,b... sets entire cube to the n"
));
delay(450);
BTSerial.print(F( " specified colour n"
" 64 colours long. Faster n"
" than 64 pt calls n"
));
延时输出:
============== RGBCube蓝牙帮助 ==============命令:
模式:# select模式操作在
帮助拉起帮助屏幕(这个)
pt:x,y,z=r,g,b设置led at (x,y,z)为rgb设置:r, g, b; r, g, b…将整个立方体设置为
指定的颜色
64色长。
比64pt调用更快
及时:
============== RGBCube蓝牙帮助 ==============命令:
模式:# select模式操作在
帮助拉起帮助屏幕(这个)模式4:
reset复位立方体为黑色
,b;r,g,b…Setspt:x,y,z=r,g,b整个立方体到
我认为这与串行清除的速度有关,但花那么长时间是没有意义的,因为450ms在计算机时间中是荒谬的长,特别是在115200波特的蓝牙
据我所知,这是BLE消息传递系统的一个限制。对于BLE来说,没有串行通信这样的东西,一切都是基于类型分组的。不知何故,我手机上的应用程序能够通信并向它发送长达252字节的数据包,并将其伪装成串行数据包,这样就不会被注意到。过了这么多,BLE就无法发送这么多数据了,缓冲区就乱了。有更多BLE经验的人也许能解释,但这是我的结果。
要补救,请切换到只支持串行的常规蓝牙(HC-05,或HC-06或同等功能,而不是BLE)。由于没有类型化的数据包,所以它可以工作。我只是换出了组件(完全相同的引脚,所以1换1),问题解决了。谢谢上面那些人的建议,但事实证明这就是问题所在。