我维护一个应用程序,其中包括向主计算机上的可用串行端口设备的用户提供一个列表。此应用程序使用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