目前我正在使用适用于Microsoft蓝牙堆栈的蓝牙API。我用C ++开发了一个蓝牙PC应用程序,它发现了远程蓝牙设备,然后通过一些API验证设备。问题是当我从远程设备关闭蓝牙无线电然后再通过PC应用程序再次开始搜索设备时,即使远程设备无线电关闭,API仍会检测到远程设备。
我怀疑作为操作系统一部分的设备缓存没有得到更新。因此API返回相同的设备名称。
任何帮助找到设备未更新的原因,以及任何指向蓝牙API的指针都将受到赞赏。
答案 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,它将无法发出超时错误。现在您知道设备已关闭!!