我正在开发一个与设备建立蓝牙(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设备。我的结果:
一个SPP设备工作,两个有这个问题。一个不起作用的例子:BluePort XP和ASUS USB-BT400
在Win32 API或.net上使用虚拟COM端口SerialPort适用于所有设备!
结论:硬件有效。问题出在使用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时自动连接蓝牙目标,然后一切正常。