目前,我正在使用针对Microsoft蓝牙堆栈的蓝牙API。我在C++上开发了一个蓝牙PC应用程序,它可以发现远程蓝牙设备,然后通过一些API对设备进行身份验证。问题是,当我从远程设备关闭蓝牙无线电,然后开始通过PC应用程序再次搜索设备时,即使远程设备无线电关闭,API仍然检测到远程设备。
我怀疑作为操作系统一部分的设备缓存没有得到更新。所以API返回相同的设备名称。
任何帮助找出为什么设备没有更新,以及任何指向蓝牙API的指针都将不胜感激。
发布于 2009-11-08 00:10:42
您使用的是什么API?有“未知”、“已记住”和“已验证”标志。有了WSALookupService..。例如,在dwOutputFlags字段中输出,请参见Bluetooth and WSAQUERYSET for Device Inquiry (Windows)
不幸的是,这意味着没有办法让“设备(在可发现模式下)在范围内”。:-(请参阅我的文档Bluetooth in Windows 7中的“仅列出可发现的设备”处的更多信息,特别是在脚注中。
发布于 2012-03-12 19:21:08
如果你需要一些关于如何处理这个问题的想法,你应该看看手中的蓝牙库(源码可用),以了解他们是如何做到的。http://32feet.net/我使用这个库,我可以获得范围内的远程设备(预先配对)的列表。
发布于 2013-12-25 23:58:33
验证后,该设备将添加到已验证的设备列表中。您需要首先从此列表中删除您的设备。
因此,在再次搜索设备之前,您可以使用BluetoothFindFirstDevice和BluetoothFindNexttDevice根据类或友好名称遍历设备的已验证devices.Filter列表,并通过调用BluetoothRemoveDevice将其删除。
下次如果您在设备关闭时调用身份验证API,它将失败并给出timeout error.Now you know device is off!
https://stackoverflow.com/questions/1672783
复制相似问题