(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等)。然后根据需要编辑选项,并转到主窗口并点击连接,看看它是否适用于您。