Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bluetooth 蓝牙设备无法被发现的原因有哪些_Bluetooth - Fatal编程技术网

Bluetooth 蓝牙设备无法被发现的原因有哪些

Bluetooth 蓝牙设备无法被发现的原因有哪些,bluetooth,Bluetooth,一个原因很明显,用户没有让设备被发现。我在找其他人 我观察到(我想每个人都有),在扫描蓝牙设备时,我们并没有“每次”都得到“所有”可发现设备的列表。根据我通常阅读的开发者文档,这是随机的,但我想知道这种随机性背后的原因——我觉得原因在“扫描仪”设备和“扫描”设备上都存在 例如,在我的Android手机上,如果我在一次扫描结束后立即按下“扫描”按钮,那么在第一次扫描中,我几乎得到了30%的设备。这让我想知道出了什么问题!(请注意,我指的是第二次扫描中新发现的设备-大多数设备显示的列表显示了在先前扫

一个原因很明显,用户没有让设备被发现。我在找其他人

我观察到(我想每个人都有),在扫描蓝牙设备时,我们并没有“每次”都得到“所有”可发现设备的列表。根据我通常阅读的开发者文档,这是随机的,但我想知道这种随机性背后的原因——我觉得原因在“扫描仪”设备和“扫描”设备上都存在

例如,在我的Android手机上,如果我在一次扫描结束后立即按下“扫描”按钮,那么在第一次扫描中,我几乎得到了30%的设备。这让我想知道出了什么问题!(请注意,我指的是第二次扫描中新发现的设备-大多数设备显示的列表显示了在先前扫描中发现的旧“缓存”设备)

一个(相关的)问题是,如果我以某种方式将扫描时间(在我的Android设备上)从12秒增加到30秒,我是否有更好的机会发现丢失的设备


PS:虽然我没有用Android来标记这个问题,但是我也很乐意得到Android特有的答案,以及任何低级的答案)在蓝牙术语方面)

蓝牙发现通过在可用的无线电频谱上广播查询包来工作。任何处于可发现模式的蓝牙设备都将发送其接收到的数据包的应答。由于蓝牙无线层的细节,不能保证范围内的所有设备都会收到查询数据包,但是,在实践中,如果扫描运行典型的10秒,概率接近100%

造成这种差异的更可能的原因是蓝牙的短距离,通常为10到20米。因此,在第一次扫描期间在范围内的设备完全可能已经移动,因此它们不再在范围内。如果你在一个有很多人走动的地方进行扫描,这可能就是原因


与短距离相关的另一个原因是,一些设备可能位于蓝牙范围的边缘,因此查询分组或查询响应分组在传输中丢失的概率很大。虽然蓝牙芯片组将为查询响应提供RSSI值,可用于粗略估计范围(在BT 2.1->,IIRC中),但查询功能通常不会显示此信息(例如,Android inquiry不显示此信息)。

我可以获得反对票背后的原因吗?将作为未来的指导方针。。。谢谢Raj,这是一个计算机技术问题,与编程无关。@BenVoigt原则上我同意,但是,蓝牙编程的某些问题源于不理解蓝牙的固有局限性。这篇文章询问了一个这样的方面,我认为这将是有用的蓝牙程序员的背景,即使没有具体的代码涉及。似乎我错过了背后的哲学如此!那我就去另一个论坛。我不知道如何自愿结束这个问题。。。若你们能帮忙的话,我会的。@jhonkola:理解电学的某一部分也有助于编写电池管理代码,但这并不是所有关于这个主题的问题!谢谢乔科拉!但我面临的问题是1类设备(射程约100米);所有这些都是静态放置在一起的。这些设备仍然是随机发现的。如果有许多1类设备同时相互靠近发射,那么这也可能是无线电干扰。您可以尝试使用两个设备,看看结果是否存在差异。或者你可以将设备彼此移动得更远,看看这是否有助于随机性。是的,当我尝试使用4台设备时,与仅使用2台设备的扫描相比,丢失一台设备的概率更高。但是这仍然不能解释我之前的场景,当我连续扫描(没有延迟)并且在第二次扫描中错过了大量设备。这是否又是干扰?也许,很难说。我所知道的是,查询协议实际上用查询和查询响应包(它们在每个通道上发送)填充了可用的无线电频谱。这通常不是一个问题,因为传输距离很短,但对于1类设备,范围更大。