當前我正在使用藍牙API,專用於Microsoft藍牙堆棧。我用C++開發了藍牙PC應用程序,它發現遠程藍牙設備,然後通過一些API對設備進行身份驗證。問題是當我從遠程設備關閉藍牙無線電,然後通過PC應用程序再次搜索設備時,即使遠程設備無線電關閉,API仍然檢測到遠程設備。藍牙API檢測遠程設備上的收音機關閉
我懷疑作爲操作系統一部分的設備緩存沒有得到更新。所以API返回相同的設備名稱。
任何幫助找到爲什麼設備不更新,也任何指針藍牙API將不勝感激。
當前我正在使用藍牙API,專用於Microsoft藍牙堆棧。我用C++開發了藍牙PC應用程序,它發現遠程藍牙設備,然後通過一些API對設備進行身份驗證。問題是當我從遠程設備關閉藍牙無線電,然後通過PC應用程序再次搜索設備時,即使遠程設備無線電關閉,API仍然檢測到遠程設備。藍牙API檢測遠程設備上的收音機關閉
我懷疑作爲操作系統一部分的設備緩存沒有得到更新。所以API返回相同的設備名稱。
任何幫助找到爲什麼設備不更新,也任何指針藍牙API將不勝感激。
您使用的是什麼API?有'未知','記住'和'認證'的標誌。其中與WSALookupService ...輸出在dwOutputFlags字段,例如,見Bluetooth and WSAQUERYSET for Device Inquiry (Windows)
不幸的是,意味着沒有辦法讓「設備(在可發現模式)的範圍」。 :-(見腳註在「上市僅發現設備」我的文檔Bluetooth in Windows 7更多的信息,尤其如此。
如果您需要關於如何處理這個問題,你應該看看在手藍牙庫的一些想法(源avaible),以瞭解他們是如何做的。 http://32feet.net/ 我使用該庫,我可以得到範圍內的遠程設備(prevoiusly配對)的列表。
設備獲取認證後,認證裝置的列表中。 您需要先從列表中刪除您的設備。
因此在再次搜索設備之前,您可以使用BluetoothFindFirstDevice和BluetoothFindNexttDevice循環訪問經過身份驗證的設備列表。根據類或友好名稱過濾設備,然後通過調用BluetoothRemoveDevice將其刪除。
下次,如果您在設備關閉時調用身份驗證API,它將失敗,併發出超時錯誤。現在您知道設備已關閉!