用于检测远程设备上的无线电的蓝牙API

时间:2009-11-04 10:02:16

标签: bluetooth

目前我正在使用适用于Microsoft蓝牙堆栈的蓝牙API。我用C ++开发了一个蓝牙PC应用程序,它发现了远程蓝牙设备,然后通过一些API验证设备。问题是当我从远程设备关闭蓝牙无线电然后再通过PC应用程序再次开始搜索设备时,即使远程设备无线电关闭,API仍会检测到远程设备。

我怀疑作为操作系统一部分的设备缓存没有得到更新。因此API返回相同的设备名称。

任何帮助找到设备未更新的原因,以及任何指向蓝牙API的指针都将受到赞赏。

3 个答案:

答案 0 :(得分:1)

您使用的是什么API?有'未知','记住'和'认证'标志。例如,在dwOutputFlags字段中输出WSALookupService ...,请参阅Bluetooth and WSAQUERYSET for Device Inquiry (Windows)

不幸的是,这意味着无法在范围内获得“设备(在可发现模式下)”。 :-(在我的文档Bluetooth in Windows 7中查看“仅列出可发现设备”的更多信息,特别是在脚注中。

答案 1 :(得分:1)

如果您需要有关如何处理此问题的一些想法,您应该查看手中的蓝牙库(源代码可用)以了解它们的用途。 http://32feet.net/ 我使用该库,我可以获得范围内的远程设备列表(prevoiusly配对)。

答案 2 :(得分:0)

设备在身份验证后添加到经过身份验证的设备列表中。 您需要先从此列表中删除您的设备。

因此,在再次搜索设备之前,您可以使用BluetoothFindFirstDevice和BluetoothFindNexttDevice循环验证设备列表。根据类或友好名称对设备进行过滤,并通过调用BluetoothRemoveDevice将其删除。

下次如果您在设备关闭时调用Authentication API,它将无法发出超时错误。现在您知道设备已关闭!!