我正在尝试使用 C#/Visual Studio 2010 构建一个 Windows 应用程序,它将执行以下功能(按顺序): 对于蓝牙操作,我正在使用 32feet.Net 库函数。
找到蓝牙设备并将它们列在列表/组合框中供用户选择。(我想允许用户选择多个设备,因此不去
SelectBluetoothDeviceDialog
上课选项。)。我可以通过 获取设备列表BluetoothClient.DiscoverDevices()
,但是,它不是异步操作。如果可能的话,我想进行异步操作。我阅读了有关BluetoothComponent
事件DiscoverDevicesProgress
和DiscoverDevicesComplete
方法的类,DiscoverDevicesAsync
但无法使其正常工作。如果可能,请为此分享示例代码。用户从列表中选择设备并单击“配对”按钮。到目前为止,我可以通过
BluetoothSecurity.PairRequest
. 这里没有问题。用户现在从“配对”列表中选择一个/多个设备并单击“连接”。在这里,我尝试使用
BeginConnect
(用于异步操作)和类Connected
的方法连接到设备,BluetoothClient
但出现以下异常。
System.Net.Sockets.SocketsException:{“提供的参数无效 000319002CC6:0000110100001000800000805f9b34fb”}。
上述异常中的数字是Connected
我使用传递的方法所需的 GUID 号BluetoothService.SerialPort
。这将失败,因为我的设备预计将连接到 COM7 端口。我不确定如何在特定的 COM 端口连接/配对设备?32feet.Net 库函数甚至可以实现吗?如果是这样,请提供代码示例。
参考注意事项:我已经阅读并尝试实现下面关于 StackOverflow 的文章中解释的代码。但是,由于我的要求(允许用户在 COM 端口配对并连接到多个设备),我无法运行相同的代码。但是,它确实有助于理解这个概念。 32feet.net 如何在 c# 中异步发现附近的蓝牙设备
请您建议处理这种情况的最佳方法。如果我应该尝试使用 32feet.Net 以外的任何其他库/函数,请告诉我。
我的最终目标是从连接的设备读取和写入数据。所以,到目前为止,我只是想通过蓝牙连接到特定的 COM 端口。
问候, 鲁米特
============================ 编辑:答案1的更新信息:
我收到了一个蓝牙设备(补丁),它应该连接到 TOSHIBA VIRTUAL BT COM 端口。如果需要东芝信息以更好地回答问题,我深表歉意。我不熟悉与端口的通信。到目前为止,我知道我需要使用 COM7。我有一个用 C++ 构建的应用程序,它通过蓝牙连接到 COM7 上的同一个补丁。但是,我没有源代码,我被要求在 C# 中实现相同的实用程序。从您的回复中,我可以假设 C++ 应用程序可能正在使用 Windows Sockets 2 吗?
此外,我可以看到一个选项来指定端口(整数值)值,BluetoothEndClient
但这也不起作用。因此,我假设该端口不是 COM,而是某种其他类型的端口。
问候, 鲁米特