This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用iOS自带的框架写了个app,与cc2541蓝牙模块连接,每次从iPad传送数据到cc2541到cc2541接收到数据并回应,然后iPad接收,中间大概是60ms。。。想问问有没有办法提高一下速度? 这种速度的话,6秒钟只能传2000字节,不能满足需求啊
jiang,
这个够呛。
iOS限制比较大,最小的connection interval 我记得是20ms, 而且一般都是将近30ms。
所以你用一般的write的方式的话,速度会非常慢。我不清楚iOS的API,但你可以尝试找一下有没有write without response的,可以提高一点速度。
有这个的,我每发送20个字节过去硬件那边会回应过来2个字节,一般我iPad从发出去到接收到数据要56ms,接收到信息后大概4ms发下包数据。。。。所以不是太清楚到底是硬件那边的原因还是iPad这边的原因
嗯,我这边做的是安卓的开发,你要求的传输速度是可以的实现的;但不知道IOS能不能实现,或许向yan所说,有限制。
我这边参考的程序是从机向主机集中上传数据,用的notification方式,参考的是官方吞吐量的测试,原来以为会丢数很厉害,经手机测试之后发现没有丢包。
使用writeWithoutResponse的写入,2541端开启overlappedprocessing,连接间隔设置到最小的30ms,上传速率能达到2.667k/s的极限值(一个连接间隔内4次数据包交互均发送20k字节净荷数据)。
另外,不更新连接参数应该也行,连接后直接用2541的函数获取到的默认连接间隔是0x18,也就是24*1.25=30ms(印象中我试过5s和6p,iOS9和iOS10都是这样)。
想要更快的传输速度,外设端换什么蓝牙芯片都没用,限制都在iPhone端。iPhone7+支持250字节MTU数据扩展能力的完整4.2协议,iPhone8+支持5.0协议。
在更低型号iPhone手机上最高只能接受2.667k/s的净荷MTU,无解。