Podłączanie i odłączanie do urządzeń Bluetooth daje różne wyniki w systemie Windows Phone/Desktop 8.1. Używałem przestrzeni nazw Windows.Devices.Bluetooth.Rfcomm
i próbowałem podłączyć kilka urządzeń z różnymi wersjami/klasami Bluetooth.(Dis) Podłączanie urządzeń Bluetooth za pomocą Windows.Devices.Bluetooth.Rfcomm (WP8.1)
- w wersji 1.2 (klasa 1 i 2)
- Wersja 2.0 (klasa 1 i 2)
- Wersja 2.1 (klasa 1 i 2)
- Testowane na Nokia Lumia 625 i Lumia 635, Dell Latitude E6500 i Dell Precision M6400.
Zawsze, gdy próbuję połączyć się z jednym z urządzeń 2.0 lub 2.1, występują problemy. Za pierwszym razem, gdy spróbuję połączyć się z każdym urządzeniem, wszystko pójdzie dobrze i połączenie się otworzy. Kiedy następnie zamknę połączenie i ponownie podłączę urządzenie, problem zacznie się. Podczas ponownego łączenia połączenia nigdy nie otwarty i debugger rzuci System.Exception:
> Message: No further data is available.
Również, gdy połączenie nie powiedzie urządzeń Windows 8.1 będzie na bieżąco stara się (bezskutecznie) połączyć z Bluetooth Urządzenia same w sobie, nawet gdy moja własna aplikacja zostanie rozwiązana. Czasami urządzenie z systemem Windows 8.1 wyświetla również podłączone urządzenie Bluetooth, a urządzenie wizualnie pokazuje, że nie jest już podłączone. Jedynym sposobem na ponowne podłączenie urządzenia Bluetooth jest sparowanie go i wyłączenie/ponowne uruchomienie połączenia Bluetooth na urządzeniu z systemem Windows.
Zawsze, gdy próbuję wykonać nowe połączenie z numerem DeviceInformation
po nieudanym połączeniu, odmówię zwrotu urządzenia, które wcześniej próbowałam połączyć.
> Message: The service cannot be found in the specified name space.
Dziwny wynik, urządzenia 1.2 działają idealnie.
plik spisu:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
</m2:Device>
</m2:DeviceCapability>
Wybór urządzenia:
Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));
Łączenie (id = chatserviceid)
StreamSocket _socket;
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
odłączanie:
this._socket.Dispose();
this._socket = null;
Sprawdziłem MSDN, próbki kodu, wersje demonstracyjne, wideo kanału 9 i StackOverflow, żaden zasób nie może mi powiedzieć, czy są problemy z Windows.Devices.Bluetooth.Rfcomm
.
Czy istnieje ktoś, kto rozpoznaje te dziwne wyniki? czy robię coś źle?
UPDATE: Praca z Windows Phone 8.1 GDR2 jest możliwe rozwiązanie.
UWAGA: Dla mnie i kilku innych osób ta aktualizacja nadal powoduje takie same problemy.
Witam gl77 - Pracuję nad tym problemem na Twoim koncie MSDN. Zaktualizowałem wątek i zaktualizuję go, gdy będę wiedział więcej. –
Czy znalazłeś rozwiązanie tego problemu? Mam podobny problem, który działa na jednym urządzeniu, ale nie na innym. Jedna uwaga to urządzenie, które działa, działa sterownik Bluetooth firmy Intel: 17.0.1401.422, a urządzenie, które nie działa, obsługuje sterownik Bluetooth Intela: 17.0.1405.460. –
Nie znalazłem jeszcze rozwiązania, zespół Matta wciąż pracuje nad tym problemem. Miejmy nadzieję na naprawę w najbliższej przyszłości. – ggg