我想用C#/ Visual Studio 2010构建一个windows应用程序,它将执行以下功能(按顺序):对于蓝牙操作,我使用32feet .Net库功能。32feet.net:如何通过BluetoothClient连接到特定的COM端口
查找蓝牙设备并将它们列出在列表/组合框中供用户选择。 (我想允许用户选择多个设备,因此不适用于
SelectBluetoothDeviceDialog
类选项。)。我可以通过BluetoothClient.DiscoverDevices()
获得设备列表,但它不是异步操作。如果可能的话,我想去异步操作。我读了关于BluetoothComponent
类与事件DiscoverDevicesProgress
和DiscoverDevicesComplete
和方法DiscoverDevicesAsync
,但不能得到它的工作。如果可能的话,请分享一个示例代码。用户从列表中选择设备并单击“配对”按钮。到目前为止,我可以通过
BluetoothSecurity.PairRequest
成功配对设备。这里没有问题。用户现在从“配对”列表中选择一个/多个设备并单击“连接”。在这里,我尝试使用
BeginConnect
(用于异步操作)和Connected
类的BluetoothClient
类的方法连接到设备,但遇到异常。
System.Net.Sockets.SocketsException:{ “一个无效的参数 供给000319002CC6:0000110100001000800000805f9b34fb”}。
上述例外中的数字是我使用BluetoothService.SerialPort
通过的Connected
方法所需的GUID号码。这会失败,因为我的设备希望在COM7端口连接。我不知道如何在特定的COM端口连接/配对设备? 32feet.Net库函数甚至可能吗?如果是这样,请提供代码示例。
参考文献注意:我已经阅读并试图实现在StackOverflow中下面的文章中解释的代码。但是,由于我的要求(允许用户在COM端口配对并连接到多个设备),我无法运行相同的代码。但是,它确实有助于理解这个概念。 32feet.net howto discover nearby bluetooth devices async in c#
请求您提供处理这种情况的最佳方法。如果我尝试使用32feet.Net以外的其他库/函数,请告诉我。
我的最终目标是同时向连接的设备读写数据。所以,截至目前,我只是试图通过蓝牙连接到特定的COM端口。
问候, Rumit
=========================== 编辑:答案为1更新的信息:
我收到了应该连接到TOSHIBA VIRTUAL BT COM端口的bluetooh设备(补丁)。我很抱歉,如果东芝的信息对于更好地回答这个问题是必要的。我是与港口沟通的新手。到目前为止,我知道我需要使用COM7。我有一个使用C++构建的应用程序,它通过bluetooh连接到COM7上的相同补丁。但是,我没有源代码,并且我被要求在C#中实现相同的实用程序。从你的回复中,我可以假设C++应用程序可能会使用Windows Sockets 2吗?
此外,我可以看到一个选项来指定BluetoothEndClient
中的端口(整数值)值,但这也不起作用。所以,我认为端口不是COM,是其他类型的端口。
问候, Rumit
我已经更新了我原来的职位以获得更多信息。让我知道这是否有帮助。另外,关于错误代码,我随机收到两个错误:10058:Socket被关闭错误(可能是由于无效的端口)和10022。 – 2013-03-13 17:39:40
我发现我可以使用WCL库。但是,在这一点上,我没有看到指定COM端口的选项。万一你能提供任何使用WCL的帮助,请告诉我。 – 2013-03-13 22:50:11