如何读取特性数据

How to read characteristics data

我正在使用关于 Xamarin.Forms 的 BLE 设备。你能帮忙解决以下问题吗?我正在使用这个 Package

重现步骤

  1. 扫描后我有一些设备。我正在选择设备。选择后,我正在连接到该设备。

  2. 我得到了一些服务列表。所以我正在迭代一项服务并且我得到了该服务特征

  3. 我得到了一些特征列表。我正在迭代第一个特征并阅读。应用程序崩溃。

预期行为

告诉我们应该发生什么

实际行为

它应该读取并提供字节而不是崩溃

崩溃日志

Excepotion 没有抛出。这些是我在输出屏幕中得到的详细信息

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)

配置

插件版本: 例如2.1.1(最新)

平台: Android 8.1 API - 27

设备:红米Note

Xamarin.Forms: 4.4.0.991265(最新)

我无法附上样本。这是我的片段

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;
                            }                  
                }
            }
}

提前致谢

如果我通过 ViewModel 读取特征,它运行良好。我没有单击按钮,而是在列表视图和点击的项目上创建了一组服务,我列出了一组特征,然后我正在阅读