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

在Windows Phone / Desktop 8.1上连接和断开与蓝牙设备的连接已经得到各种结果。 我一直在使用Windows.Devices.Bluetooth.Rfcomm命名空间,并试图用不同的蓝牙版本/类来连接多个设备。

  • 版本1.2(1级和2级)
  • 版本2.0(1级和2级)
  • 版本2.1(1级和2级)
  • testing诺基亚Lumia 625和Lumia 635,戴尔Latitude E6500和戴尔Precision M6400。

每当我尝试连接到2.0或2.1设备都有问题。 我第一次尝试连接到每个设备,一切都会好起来,连接将打开。 当我closures连接并重新连接设备时,麻烦就开始了。 在重新连接期间,连接永远不会打开,debugging器将抛出一个System.Exception:

 > Message: No further data is available. 

另外,当连接失败时,Windows 8.1设备将自行尝试(不成功)连接到蓝牙设备,即使我自己的应用程序被终止。 有时Windows 8.1设备也会将蓝牙设备显示为已连接,而设备可视化地显示它不再连接。 重新连接蓝牙设备的唯一方法是取消配对并closures/重新启动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> 

select设备:

 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,代码示例,演示,频道9video和StackOverflow,没有资源可以告诉我,如果Windows.Devices.Bluetooth.Rfcomm有问题。

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

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

  • 链接到MSDN问题

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

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

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