Używam urządzenia BLE w odniesieniu do XAMARIN.FORTS. Czy możesz pomóc rozwiązać poniższy problem? Używam tego Pakiet

Kroki ku reprodukcji

  1. Po skanowaniu mam jakiś zestaw urządzeń. Wybieram urządzenie. Po wybraniu łączę się z tym urządzeniem.

  2. Mam listę usług. Więc i itamentuję jedną usługę i dostałem te cechy usług

  3. Mam pewną listę cech. ITeresting pierwsze cechy i czytanie. Uszkodzona aplikacja.

Spodziewane zachowanie

Powiedz nam, co powinno się wydarzyć

Rzeczywiste zachowanie

Zamiast awarii powinien czytać i dać bajty

Crashlog.

Excepotion nie jest rzucony. Są to szczegóły, które dostałem na ekranie wyjściowym

12-20 17:54:18.170 D/BluetoothGatt(20372): onConnectionUpdated() - Device=98:07:2D:45:76:83 interval=39 latency=0 timeout=500 status=0
12-20 17:54:22.020 D/BluetoothGatt(20372): onConnectionUpdated() - Device=98:07:2D:45:76:83 interval=798 latency=0 timeout=1000 status=0
12-20 17:54:22.290 I/Choreographer(20372): Skipped 248 frames!  The application may be doing too much work on its main thread.
12-20 17:54:22.292 W/Looper  (20372): Slow Frame: doFrame is 4148ms late
12-20 17:54:24.763 F/        (20372): * Assertion at /Users/builder/jenkins/workspace/xamarin-android-d15-9/xamarin-android/external/mono/mono/mini/debugger-agent.c:4931, condition `is_ok (error)' not met, function:get_this_async_id, Could not execute the method because the containing type is not fully instantiated. assembly:<unknown assembly> type:<unknown type> member:(null)

Konfiguracja

Wersja wtyczki: np. 2.1.1 (najnowsze)

platforma: Android 8.1 API - 27

Urządzenie: Redmi Note

xamarin.forms: 4.4.0.991265 (najnowsze)

Nie mogłem dołączyć próbki. Oto moje fragmenty

private async void Button_Clicked(object sender, EventArgs e)
        {
            var services = await _connectedDevice.GetServicesAsync();
            if (services != null)
            {
                var characteristics = await services[0].GetCharacteristicsAsync();
                if (characteristics != null)
                {
                    foreach (var character in characteristics)
                   {
                                var byteValue = await character.ReadAsync(); /// Crashed while reading this line
                                 var str = Encoding.UTF8.GetString(byteValue);
                                 output.Text = str;
                            }                  
                }
            }
}

Z góry dziękuję

1
rizwika 20 grudzień 2019, 15:36

1 odpowiedź

Najlepsza odpowiedź

Jeśli przeczytałem cechy poprzez ViewModel, działa dobrze. Zamiast klikania przycisku, stworzyłem zestaw usług w ListView i na pozycji, a następnie wymieniam zestaw charakterystyk, a następnie czytam

0
rizwika 3 styczeń 2020, 13:42