UWP蓝牙RFComm ConnectAsync问题

时间:2017-10-22 17:44:17

标签: bluetooth uwp rfcomm spp

我正在开发一个与设备建立蓝牙(RFComm,SPP)连接的应用程序。我的Android应用程序就像一个魅力,但是使用UWP我在使用以下方法完成连接时遇到了很大问题:

socket.ConnectAsync(service.ConnectionHostName,service.ConnectionServiceName);

连接设备时一切正常。 有时ConnectAsync需要很长时间(1分钟),或者最终它不起作用。

似乎当我启动应用程序时,第一个连接工作并在一个vew秒内连接,但所有后续连接似乎都非常不稳定。

我尝试了不同的USB Dongles,但效果相同。我现在在Win 10 Pro 64 1709上。

我还尝试了UWP RFComm Chat示例应用程序。同样的问题。

有人有类似的问题吗?有什么想法吗?

谢谢, 勒夫

一些更新: 我测试了一些其他的Dongles和SPP设备。我的结果:

  1. 一个SPP设备工作,两个有这个问题。一个不起作用的例子:BluePort XP和ASUS USB-BT400

  2. 在Win32 API或.net上使用虚拟COM端口SerialPort适用于所有设备!

  3. 结论:硬件有效。问题出在使用socket.ConnectAsync的UWP上! 这是Win10 UWP Bug ?? !!

    第二次更新:

    我发现如果我使用以下设备: DeviceInformationCollection collection = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));

    并使用rfcomm连接: var services = await _device.GetRfcommServicesForIdAsync(RfcommServiceId.SerialPort,BluetoothCacheMode.Uncached); var op = _socket.ConnectAsync(_service.ConnectionHostName,_service.ConnectionServiceName);

    然后我遇到了连接时间问题 - 在第一次连接/断开阶段之后有男子气概

    但是:当我使用从SPP Dongles创建的虚拟COM端口

    DeviceInformationCollection collection = await DeviceInformation.FindAllAsync(“System.Devices.InterfaceClassGuid:= \”{86E0D1E0-8089-11D0-9CE4-08003E301F73} \“AND System.Devices.InterfaceEnabled:= System.StructuredQueryType.Boolean #True” );

    使用以下命令创建SerialDevice: var serialDevice = await SerialDevice.FromIdAsync(info.Id);

    在创建此serialDevice时自动连接蓝牙目标,然后一切正常。

0 个答案:

没有答案