(dis)将蓝牙设备与 Windows.Devices.Bluetooth.Rfcomm (WP8.1) 连接

本文关键字:Bluetooth Devices Rfcomm WP8 连接 Windows dis | 更新日期: 2023-09-27 18:30:34

连接和断开蓝牙设备在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 设备中的任何一个时,都会出现问题。我第一次尝试连接到每个设备时,一切都会很好,连接会打开。当我随后关闭连接并重新连接设备时,故障开始了。在重新连接期间,连接将永远不会打开,调试器将抛出系统异常:

> 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是否存在问题。

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

  • 这里观察到了类似的问题

  • 链接到 MSDN 问题

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

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

(dis)将蓝牙设备与 Windows.Devices.Bluetooth.Rfcomm (WP8.1) 连接

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