如何读取特性数据
How to read characteristics data
我正在使用关于 Xamarin.Forms 的 BLE 设备。你能帮忙解决以下问题吗?我正在使用这个 Package
重现步骤
扫描后我有一些设备。我正在选择设备。选择后,我正在连接到该设备。
我得到了一些服务列表。所以我正在迭代一项服务并且我得到了该服务特征
我得到了一些特征列表。我正在迭代第一个特征并阅读。应用程序崩溃。
预期行为
告诉我们应该发生什么
实际行为
它应该读取并提供字节而不是崩溃
崩溃日志
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 读取特征,它运行良好。我没有单击按钮,而是在列表视图和点击的项目上创建了一组服务,我列出了一组特征,然后我正在阅读
我正在使用关于 Xamarin.Forms 的 BLE 设备。你能帮忙解决以下问题吗?我正在使用这个 Package
重现步骤
扫描后我有一些设备。我正在选择设备。选择后,我正在连接到该设备。
我得到了一些服务列表。所以我正在迭代一项服务并且我得到了该服务特征
我得到了一些特征列表。我正在迭代第一个特征并阅读。应用程序崩溃。
预期行为
告诉我们应该发生什么
实际行为
它应该读取并提供字节而不是崩溃
崩溃日志
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 读取特征,它运行良好。我没有单击按钮,而是在列表视图和点击的项目上创建了一组服务,我列出了一组特征,然后我正在阅读