我需要连接到一个蓝牙设备通过虚拟COM口创造了在窗。这很容易时的港口已经创造过手动配对的程序。但我想我应用程序,以缓解用户的手册,配对的设备。我想本中的所有设备的范围,允许用户选择一种,然后建立的虚拟COM端口连接的与所选择的设备。我不试图避免配对过程本身,而是我想要援引我的应用程序。

我开始越来越熟悉 Microsoft牙API.和那些怀疑出现了。我一直想知道什么会发生,如果某些用户将使用不同(比微软)蓝牙?是Microsoft的API真正的蓝牙API,它必须实施通过的任何其他用蓝牙堆提供者?或者说每一个提供者拥有其自己的API,与微软的仅仅是一个许多其他的?

有帮助吗?

解决方案

谢谢大家对有价值输入。我想总结一下,我发现迄今。微软蓝牙API不是操作系统API。书面反对它的应用不会与任何其他蓝牙堆栈的正确配合。看来,这是意在与多个栈合作应用程序需要提供一些堆栈抽象层,和堆栈特定代码的所有them.The其他的解决办法是允许用户对蓝牙设备的手动配对,最终创造出一些虚拟设备在操作系统(例如,COM端口)。然后,应用程序可以使用这样的设备的标准接口。

其他提示

我无法为微软蓝牙API说话,但也有多个蓝牙堆栈可用于PC平台(甚至更适用于移动设备)。

底层API由蓝牙核心规格定义和所以所有堆栈应该能够互动,实际上它是强制性的,他们互操作或不能使用蓝牙的名称和标志。

至于配对,你将有一个很难让设备进行配对,如果他们有默认的安全,这需要一个PIN码。

事情可能会在(近)的未来简单,因为蓝牙标准已经推出了新的安全模式,的安全简单的配对,它具有不需要PIN码一‘只是工作’模式。这仍然是更强的,那么当前的安全性,除了针对中间人攻击的人。但是,您将看到在电脑此功能的芯片之前可能需要一段时间。

如果你可以改变到使用。净:-我可以推荐我们的图书馆 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我们支持成堆,Widcomm/博通,并摆脱.在Widcomm没有支持SetServiceState有没有和他们的API没有支持应对配对 请求.摆脱应该支持两个。

一个简短的用户指南是在 32feet.NET —用户指南, 和所有这类文件提供主站点 http://32feet.net, ,Widcomm文件是只有在我们 代码存储库 的时刻。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top