(Dis) Підключення пристроїв Bluetooth з Windows.Devices.Bluetooth.Rfcomm (WP8.1)


82

Підключення та відключення від пристроїв Bluetooth дало різні результати на Windows Phone / Desktop 8.1. Я використовую Windows.Devices.Bluetooth.Rfcommпростір імен і намагався підключити кілька пристроїв з різними версіями / класами Bluetooth.

  • Версія 1.2 (класи 1 та 2)
  • Версія 2.0 (Класи 1 та 2)
  • Версія 2.1 (Класи 1 та 2)
  • Перевірено на Nokia Lumia 625 та Lumia 635, Dell Latitude E6500 та Dell Precision M6400.

Щоразу, коли я намагаюся підключитися до будь-якого з пристроїв 2.0 або 2.1, виникають проблеми. Перший раз, коли я намагаюся підключитися до кожного з пристроїв, все піде нормально, і зв’язок відкриється. Коли згодом я перериваю з’єднання та знову підключаю пристрій, проблема починається. Під час повторного підключення з'єднання ніколи не відкриється, і налагоджувач видасть System.Exception:

> Message: No further data is available.

Крім того, коли з’єднання не вдається, пристрої з Windows 8.1 намагатимуться (безуспішно) підключатись до пристроїв Bluetooth самостійно, навіть коли мою власну програму припинено. Іноді пристрій Windows 8.1 також відображатиме пристрій Bluetooth як підключений, тоді як пристрій візуально показує, що він більше не підключений. Єдиний спосіб повторного підключення пристрою Bluetooth - це від’єднати його та вимкнути / перезапустити Bluetooth на пристрої 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>

Вибір пристрою:

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, зразки коду, демонстраційні відео, відео каналу 9 та StackOverflow, жоден ресурс не може сказати мені, чи є проблеми з Windows.Devices.Bluetooth.Rfcomm.

Хтось визнає ці дивні результати? Я щось роблю не так?

ОНОВЛЕННЯ: Можливим рішенням є робота з Windows Phone 8.1 GDR2.

ПРИМІТКА. Для мене та деяких інших людей це оновлення все ще видає ті самі проблеми.


2
Привіт gl77 - Я працюю над цією проблемою у вашому обліковому записі MSDN. Я оновив ланцюжок повідомлень і повідомим вас, коли дізнаюся більше.
Метт Смолл

Ви знайшли рішення для цього? Я маю подібну проблему, коли вона працює на одному пристрої, але не на іншому. Одна примітка - пристрій, який працює, працює з драйвером Bluetooth Intel: 17.0.1401.422, а той, який не працює, - драйвером Bluetooth Intel: 17.0.1405.460.
Jon H

Я ще не знайшов рішення, команда Метта все ще працює над цим питанням. Будемо сподіватися на виправлення найближчим часом.
ggg

2
Виробництво обладнання провело мене через видалення 17.0.1405.460 версії драйверів Intel Bluetooth та встановлення старої версії 17.0.1401.422. Щойно ми зробили це, моя заявка знову запрацювала. Отже, для мене питання було в нових драйверах.
Jon H

1
Чи можете ви прикріпити посилання на допис MSDN?
SILENT

Відповіді:


1

Я хотів би спробувати CoolTerm і подивитися, чи це вам підходить. У мене була подібна проблема з підключенням динаміка до мікросхеми Sigma DSP всередині через підключення USB, тому, якщо у вас є проблеми з переглядом зовнішніх пристроїв, можливо, пристрій несумісний з вашим комп’ютером. Завантажте CoolTerm і перейдіть до опцій, і в розділі Серійний порт вам слід змінити порт на потрібне з'єднання (Bluetooth, USB тощо). Потім відредагуйте параметри за необхідності та перейдіть до головного вікна та натисніть кнопку підключення та перевірте, чи він працює для вас.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.