1

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

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

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

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

我尝试了不同的 USB 加密狗,但结果相同。我现在使用的是 Win 10 Pro 64 1709。

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

有人有类似的问题吗?有任何想法吗?

谢谢,约阿希姆

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

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

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

结论:硬件工作。问题出在使用 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 加密狗创建的虚拟 com 端口时

DeviceInformationCollection 集合 = 等待 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 时自动连接蓝牙目标,然后一切正常。

4

0 回答 0