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


82

在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,Dell Latitude E6500和Dell 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

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

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

注意:对于我本人和其他几个人,此更新仍然存在相同的问题。


2
您好gl77-我正在您的MSDN帐户上解决此问题。我更新了线程,在我了解更多信息时也会更新您。
Matt Small

您找到了解决方案吗?我在一个设备而不是另一个设备上也遇到类似的问题。请注意,可以运行的设备运行英特尔的蓝牙驱动程序:17.0.1401.422,而不能运行的设备运行英特尔的蓝牙驱动程序:17.0.1405.460。
Jon

我还没有找到解决方案,Matt的团队仍在解决这个问题。让我们希望在不久的将来能解决此问题。
ggg

2
硬件制造商引导我完成了17.0.1405.460版本的英特尔蓝牙驱动程序的安装,以及旧版本17.0.1401.422的安装。一旦完成,我的应用程序将再次开始工作。因此,对我而言,问题是更新的驱动程序。
乔恩·H

1
您可以将链接附加到MSDN帖子吗?
沉默

Answers:


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.