SerialDevice.FromIdAsync() 抛出无效数据异常

时间:2021-03-27 09:58:16

标签: uwp bluetooth spp

我正在尝试用 C# 编写一个 uwp 应用程序,该应用程序必须连接到将与计算机配对的任何蓝牙设备(不是 LE)。

我从复制 Microsoft RFComm Chat 示例应用程序开始,但遇到了 here (它太慢了,有时会无缘无故地断开连接)。这个 SO 用户通过使用 SerialDevice 方法解决了这个问题,所以我实现了。

this SO answer 开始,我发现 Microsoft 建议使用 DeviceWatcher 来查找所有已连接的蓝牙设备,因此我实施了该方法,并且没有问题。我得到了蓝牙设备的完整列表作为 DeviceInformation 对象。

但是,然后我尝试使用选定的 DeviceInformation 对象来创建 SerialDevice,它总是因“数据无效”异常而失败。

SerialDevice sd = await SerialDevice.FromIdAsync(myDeviceInfo.Id);

给予

<块引用>

“Die Daten sind unzulässig。(来自 HRESULT 的异常:0x8007000D)”

("数据无效")

myDeviceInfo.Id 的内容是 Bluetooth#Bluetoothc0:b6:f9:c1:62:62-00:80:25:40:95:7b

我也试过直接将这个字符串作为字符串参数输入,结果相同。该设备已经与计算机配对,并通过此 Id 字符串和 RfcommService 代码成功使用了多次。

在清单中,我添加了以下几行:

 <Capabilities>
<DeviceCapability Name="bluetooth.rfcomm">
  <Device Id="any">
    <Function Type="name:serialPort" />
  </Device>
</DeviceCapability>

如何成功获取蓝牙设备的 SerialDevice 对象?

编辑 1:将 DeviceCapability 的名称更正为“串行通信”。我仍然遇到同样的异常。

编辑 2:设备公开传入和传出 COM 端口如下: enter image description here

0 个答案:

没有答案
相关问题