代码之家  ›  专栏  ›  技术社区  ›  Tai Squared

扫描iPhone范围内的蓝牙设备需要多长时间?

  •  8
  • Tai Squared  · 技术社区  · 16 年前

    我知道iPhone的蓝牙功能在3.0之前是无法通过SDK访问的,但是在这个地区找到设备需要多长时间呢?是否取决于区域内设备的数量?如果范围内大约有5台设备,扫描是否需要<5秒或>30秒?

    我知道有很多未知因素,但我正在尝试确定是否可以在启动时进行蓝牙扫描,如果时间很短,或者如果我必须告诉用户即将进行扫描,可能会有很长的延迟。我无法在现实世界中测试这一点,因为其他蓝牙设备都不可用,但我正在尝试了解它是如何设计的。

    2 回复  |  直到 16 年前
        1
  •  20
  •   Simon Peverett    16 年前

    我是个蓝牙新手,不是专家,但是。。。

    不过,可能有几种设备可以在1.28秒的时间内做出响应。

    如果您找到了您要找的特定设备,也可以取消查询。

    不科学的测试,从我的办公桌上使用CSR蓝牙芯片与蓝牙2.1+EDR固件运行在芯片上,通过芯片UART调试输出查询。每次调查进行10次,取平均结果:

    • 平均10次
    • 5时段查询 时间(6.4秒)得出平均值 23个唯一的蓝牙地址。
    • 10 查询时间(12.8秒)

    我说“unique”,实际上结果一遍又一遍地重复了很多相同的地址,这可能取决于实现,而appleapi可能只返回唯一的地址。

    然而,这并不能代表“真实世界”,因为这里(我的办公室)的大多数蓝牙设备都不处于低功耗模式。我想,我可以过滤出个人电脑,笔记本电脑和测试套件的设备类别。会有手机,耳机等可以发现的东西。。。

    对于您的场景,您可能需要根据时间和设备数量进行查询,例如4*1.28秒或10台设备。

    最短的查询时间是1.28秒,可以得到10+/-?如果他们醒着并且在附近,在该区域的设备。

    如果你有一个饱和的蓝牙环境或(微波炉在同一个房间里)可能需要更长的时间才能找到范围内的所有设备。

        2
  •  4
  •   Community Mohan Dere    8 年前

    我知道这是一个老问题,但我想我可以为以后发现这个问题的人补充一些东西。

    Simon Peverett 提到,设备发现由蓝牙主机控制器接口执行的底层“查询命令”执行。在蓝牙规范V4.0第2卷E部分第6.1.4节中,该规范规定:

    当蓝牙设备启动常规查询时,查询状态 并决定提前中止查询状态。

    换句话说,执行查询的最短时间量的良好基线是10.24秒,即查询命令测量时间的1.28秒周期中的8秒。