Я разрабатываю приложение, которое устанавливает соединения Bluetooth (RFComm, SPP) с устройством. Мое приложение для Android работает как шарм, но с UWP у меня большие проблемы с подключением, используя:
socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
При подключении устройства все работает. Иногда ConnectAsync занимает много времени (1 минуту) или, наконец, не работает.
Кажется, что когда я запускаю приложение, первое соединение работает и подключается в течение нескольких секунд, но все последующие соединения кажутся очень нестабильными.
Я пробовал разные USB-ключи, но с теми же результатами. У меня сейчас Win 10 Pro 64 1709.
Я также попробовал пример приложения UWP RFComm Chat. Там те же проблемы.
Есть ли у кого-то подобные проблемы? Любые идеи?
Спасибо, Йоахим.
Несколько обновлений: я протестировал несколько других ключей и SPP-устройств. Мои результаты:
Один SPP Device работает, у двух такая проблема. Нерабочий пример: BluePort XP и ASUS USB-BT400
Использование виртуальных COM-портов через Win32 API или .net SerialPort работает на всех устройствах!
Вывод: оборудование работает. Проблема в UWP с использованием socket.ConnectAsync! Это ошибка Win10 UWP??!!
Второе обновление:
Я узнал, что если я использую устройства из: 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);
тогда у меня проблемы со временем подключения - мужественно после первой фазы подключения/отключения
НО: когда я использую виртуальные com-порты, созданные из ключей SPP
Коллекция DeviceInformationCollection = await DeviceInformation.FindAllAsync("System.Devices.InterfaceClassGuid:=\"{86E0D1E0-8089-11D0-9CE4-08003E301F73}\" И System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True");
и создайте SerialDevice, используя: var serialDevice = await SerialDevice.FromIdAsync(info.Id);
который автоматически подключает цель Bluetooth при создании этого serialDevice, тогда все работает идеально.
await chatSocket.ConnectAsync(chatService.ConnectionHostName, chatService.ConnectionServiceName);
работает хорошо. Не могли бы вы рассказать нам о ваших действиях, чтобы воспроизвести проблему? - person Jayden   schedule 24.10.2017