(Dis)使用 Windows.Devices.Bluetooth.Rfcomm (WP8.1) 连接蓝牙设备

2024-03-12

在 Windows Phone/Desktop 8.1 上连接和断开蓝牙设备会产生不同的结果。我一直在使用Windows.Devices.Bluetooth.Rfcomm命名空间,我尝试连接多个具有不同蓝牙版本/类别的设备。

  • 版本 1.2(1 类和 2 类)
  • 2.0 版(1 类和 2 类)
  • 版本 2.1(1 类和 2 类)
  • 在诺基亚 Lumia 625 和 Lumia 635、戴尔 Latitude E6500 和戴尔 Precision M6400 上进行了测试。

每当我尝试连接到 2.0 或 2.1 设备时,都会出现问题。我第一次尝试连接到每个设备时,一切都会正常并且连接将打开。当我随后关闭连接并重新连接设备时,问题就开始了。在重新连接期间,连接永远不会打开,调试器将抛出 System.Exception :

> Message: No further data is available.

此外,当连接失败时,Windows 8.1 设备将继续尝试(不成功)自行连接到蓝牙设备,即使我自己的应用程序已终止。有时,Windows 8.1 设备还会将蓝牙设备显示为已连接,而该设备在视觉上显示它已不再连接。重新连接蓝牙设备的唯一方法是取消配对并关闭/重新启动 Windows 设备上的蓝牙。

每当我尝试拨打新电话时DeviceInformation连接失败后,它将拒绝返回我之前尝试连接的设备。

> Message: The service cannot be found in the specified name space.

奇怪的结果是,1.2 设备运行良好。

清单文件:

<m2:DeviceCapability Name="bluetooth.rfcomm">
  <m2:Device Id="any">
    <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
  </m2:Device>
</m2:DeviceCapability>

选择设备:

Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));

连接:(id = chatserviceid)

StreamSocket _socket;    
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);

断开连接:

this._socket.Dispose();
this._socket = null;

我研究了 MSDN、代码示例、演示、第 9 频道视频和 StackOverflow,没有资源可以告诉我是否存在问题Windows.Devices.Bluetooth.Rfcomm.

有人认识到这些奇怪的结果吗?难道我做错了什么?

  • 这里观察到类似的问题 https://stackoverflow.com/questions/27122484/rfcomm-connection-works-unstable/

  • 链接到 MSDN 问题 https://social.msdn.microsoft.com/Forums/windowsapps/en-US/c2d2cc7a-b966-42b2-9c04-835b125b404e/disconnecting-bluetooth-devices-with-windowsdevicesbluetoothrfcomm?forum=wpdevelop

更新:使用 Windows Phone 8.1 GDR2 是一种可能的解决方案。

注意:对于我自己和其他几个人来说,此更新仍然会带来相同的问题。


我会尝试 CoolTerm 看看是否适合您。我在通过 USB 连接连接带有 Sigma DSP 芯片的扬声器时遇到了类似的问题,因此,如果您在查看外部设备时遇到问题,则可能是该设备与您的计算机不兼容。下载 CoolTerm 并转到选项,在串行端口下,您应该将端口更改为所需的连接(蓝牙、USB 等),然后根据需要编辑选项,然后转到主窗口并点击连接,看看它是否适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Dis)使用 Windows.Devices.Bluetooth.Rfcomm (WP8.1) 连接蓝牙设备 的相关文章

随机推荐