我需要通过在Windows中创建的虚拟COM端口连接到蓝牙设备。在手动配对过程中已经创建端口很容易。但我希望我的应用程序能够减轻用户手动配对设备的负担。我想介绍该范围内的所有设备,允许用户选择一个设备,然后创建与所选设备连接的虚拟COM端口。我并不是想避免配对程序本身,而是我想用我的应用程序来调用它。我开始熟悉Microsoft Bluetooth API。然后出现了一些疑问。我一直在想,如果一些用户使用不同的(比微软的)蓝牙堆栈会发生什么?微软的API是真正的蓝牙API,必须由其他蓝牙堆栈提供商来实施吗?或者说,每个供应商都有自己的API,而微软只是其中的一个?在Windows上访问蓝牙虚拟COM端口而无需手动配对
回答
谢谢大家的宝贵意见。我想总结一下我迄今为止发现的内容。 Microsoft Bluetooth API不是操作系统API。针对其撰写的申请将不会与任何其他Bluetooth stack正确配合。看起来,旨在与多个堆栈协作的应用程序需要提供一些堆栈抽象层,并为所有堆栈提供特定的代码。另一种解决方案是允许用户手动配对蓝牙设备,最终创建一些虚拟设备在操作系统中(例如,COM端口)。然后应用程序可以使用这种设备的标准接口。
我不能说微软蓝牙API,但有multiple Bluetooth stacks可用于PC平台(甚至更多的移动设备)。
底层API由Bluetooth Core Spec定义,因此所有堆栈都应该能够进行交互,实际上它们是互操作的,或者它们不能使用蓝牙名称和徽标。
至于配对,如果他们有默认安全性(需要PIN码),您将很难获得设备配对。
由于蓝牙标准引入了一种新的安全模式secure simple pairing,它具有“正常工作”模式,无需PIN码,因此在未来(将来)可能会更简单。除了对抗中间人攻击的Man之外,这种情况仍然比目前的安全性更强。但是,在PC上看到具有此功能的芯片可能还有一段时间。
感谢您的回答。 更具体地说,我没有试图避免配对。实际上,如果设备尚未配对,我想从我的应用程序开始配对程序。我想这样做,不管安装的堆栈如何(如果可能的话),这就是我问及Windows上可用的蓝牙API的原因。如果我可以使用API而不管底层堆栈如何,那就太棒了。如果所有堆栈都提供了自己的API,那么我需要针对它们中的每一个进行编程...... – 2009-05-26 08:37:55
如果您可以更改为使用.NET: - /我可以推荐我们的库32feet.NET。 对于显式配对有BluetoothSecurity.PairDevice。我们也可以为您创建的虚拟端口,例如:
BluetoothClient cli = new BluetoothClient();
BluetoothDeviceInfo[] list = cli.DiscoverDevices();
BluetoothDeviceInfo selected = GetUserToSelectOne(list);
BluetoothSecurity.PairDevice(selected, pin);
// Ask Win32 to create a virtual serial port
selected.SetServiceState(BluetoothService.SerialPort);
但是我真的不喜欢虚拟串行端口,所以我一直建议人们使用我们的BluetoothClient类使用普通插座连接时,它会自动处理如果需要配对请求。
在Win32上,我们支持来自Microsoft,Widcomm/Broadcom和BlueSoleil的堆栈。在Widcomm上还没有支持SetServiceState,并且他们的API不支持响应请求的配对。 BlueSoleil应该支持两者。
一个简单的用户指南在32feet.NET — User’s Guide,所有的类文件可在主站点http://32feet.net,Widcomm文件目前只在我们的code repository。
谢谢你的提示。不幸的是,我需要支持比图书馆管理的更多的堆栈...但是,无论如何,您间接地回答了我关于蓝牙API的问题,这些蓝牙堆栈由不同的蓝牙堆栈提供 - 它们不可互换,并且每个必须单独处理。 – 2009-05-26 12:42:35
- 1. 蓝牙配对,但没有COM端口
- 2. Android蓝牙COM端口
- 3. 蓝牙COM端口RXTX问题
- 4. 蓝牙串口通讯无需配对
- 5. Widcomm蓝牙:如何打开虚拟COM
- 6. 蓝牙COM端口例外在C#.NET
- 7. 从Windows上的蓝牙COM端口获取FILE *
- 8. Stm32虚拟COM端口 - 无法连接
- 9. Archos上的Android USB虚拟COM端口?
- 10. 在Windows Mobile上使用虚拟COM端口
- 11. 在WS2016码头集装箱内访问虚拟COM端口
- 12. 在超级终端中接收来自Android 2.3.3设备的蓝牙串行端口(虚拟COM端口)数据
- 13. 自动连接到蓝牙设备而无需配对
- 14. 无法访问蓝牙模拟器
- 15. Android:与Android手机进行蓝牙串行(Com端口)通信
- 16. 虚拟机无法访问端口25,而主机可以
- 17. 在c中删除虚拟COM端口#
- 18. 通过蓝牙通过蓝牙发送消息,而无需配对linux
- 19. 在COM端口上通过蓝牙进行串行通信
- 20. C# - Windows Mobile - 蓝牙配对
- 21. Android上的虚拟蓝牙设备?
- 22. 访问COM端口与Windows 10
- 23. 带有Windows 7和手机的自动(蓝牙配对)
- 24. 在com端口c上拒绝访问#
- 25. 如何配对蓝牙设备而无需确认
- 26. 如何配对的蓝牙设备,而无需输入引脚
- 27. 创建一个虚拟COM端口
- 28. 与虚拟PC的COM端口通信
- 29. Android 3.1+ USB作为虚拟COM端口
- 30. 虚拟发送数据到COM端口
感谢您分享您的发现。 – TeamWild 2013-04-30 10:38:01