我維護一個應用程序,其中包括向主計算機上的可用串行端口設備的用戶提供一個列表。此應用程序使用GetDefaultCommConfig()函數來驗證串行端口名稱列表中的設備是否有效。我收到通知,指出我的應用程序不支持藍牙串行端口。在今天調試此問題時,我發現使用藍牙串行端口名稱調用GetDefaultCommConfig()函數時不會返回成功的值。在這些情況下GetLastError()函數返回29(無效參數)。有沒有解決這個問題的方法?GetDefaultCommConfig()如何與藍牙SPP設備不兼容?
0
A
回答
2
我看了一下我的機器上帶有藍牙的串行端口,可以確認GetDefaultCommConfig()對Microsoft藍牙堆棧創建的虛擬串行端口失敗。但對於Widcomm端口來說,它似乎工作正常。 (我沒有測試過BlueSoleil/Toshiba /等)
所以看來最好的計劃是而不是爲MSFT端口使用GetDefaultCommConfig()。要確定哪些端口是哪個堆棧,請檢查HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM下的值,該值將COM端口名稱列爲值。如果數值名稱是「\ Device \ BtModemNNN」,那麼它就是MSFT藍牙堆棧。 (Widcomm有「\ Device \ BtPortNNN」)。
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]
"\\Device\\BtPort3"="COM19"
"\\Device\\BthModem2"="COM25"
艾倫
0
這不是一個完整的答案。 我發現即使使用MSFT的堆棧(端口顯示\ Device \ BthModem0和\ Device \ BthModem1),我的Windows 7開發機器也可以正確地從GetDefaultCommConfig()返回藍牙SPP COM端口。
但是,我看到GetDefaultCommConfig()在Windows 8.1中失敗,返回碼爲87(由GetLastError()返回)。這在行爲上完全不存在的COM端口是相同的。
SPP COM端口仍然與超類型應用程序一起工作,但我不知道端口在該應用程序中是如何掃描或打開的 - 我只知道我的應用程序使用了kernel32.dll中的GetDefaultCommConfig()這不起作用。
遠射一半,但我不認爲其他人在4年後有任何投入?
相關問題
- 1. 藍牙SPP與2.3.6
- 2. Android SPP藍牙到非Android設備
- 3. Windows 8上的藍牙SPP設備
- 4. Android ADK藍牙設備兼容性
- 5. 如何通過SPP連接藍牙設備
- 6. 藍牙與多設備使用SPP連接
- 7. 藍牙SPP和其他藍牙服務
- 8. 不兼容的設備,如何兼容?
- 9. 安卓連接藍牙SPP
- 10. iMac上的藍牙SPP
- 11. 藍牙串口通信(SPP)
- 12. 藍牙Android SPP,發送串口命令到設備?
- 13. 使用Android設備通過SPP通過藍牙發送數據
- 14. Android等設備,UUID和PIN之間的藍牙SPP質疑
- 15. Android:在SPP藍牙設備之間切換
- 16. 藍牙4.2是否與4.0兼容?
- 17. 核心藍牙框架和兼容設備
- 18. 藍牙不發現設備
- 19. 配對與SPP的藍牙設備崩潰,三星Galaxy S(Android 2.2的)
- 20. 如何使用Android藍牙設備選取器檢索藍牙設備信息?
- 21. 配對藍牙設備與32英尺.NET藍牙庫
- 22. 將設備地址發送到Android中的ConnectThread(藍牙設備設備) - 藍牙
- 23. 如何檢測藍牙設備類型?
- 24. 如何連接到藍牙a2dp設備?
- 25. Java:如何查找藍牙設備?
- 26. 如何將藍牙設備列表?
- 27. 如何斷開藍牙設備?
- 28. 如何更新藍牙設備的periphera.name?
- 29. 如何獲取藍牙設備的UUID?
- 30. 與CC2540藍牙LE設備配對
藍牙堆棧是什麼?微軟自己還是Widcomm/Broadcom,BlueSoleil或者東芝?或者全部都是? : - ,( – alanjmcf
這是微軟的堆棧,我正在使用串行通訊API –
我也在這裏看到了這個行爲(例如,Widcomm的端口可以與這個API兼容),我使用WMI或者在註冊表中查找獲取端口名稱見例如http://32feet.codeplex.com/wikipage?title=Getting%20Virtual%20COM%20Port%20Names&referringTitle=Documentation – alanjmcf