Android(Xamarin)如何通过蓝牙从手镯中获取数据(脉冲)

Str*_*Bog 6 c# android bluetooth xamarin android-bluetooth

我的目标是使用我的应用程序从健身手镯Torntisc T1获取数据(脉冲),并独立处理手镯中的数据.

为了实现我使用Xamarin并找到了一个用于Xamarin插件的蓝牙LE插件来连接到设备并从中接收数据.但是,获得的所有特征称为" 未知特征 ",并且值为0字节.虽然它有5个服务,每个服务都有3个特征.1服务中唯一的特征名称是:" 设备名称 "," 外观 "," 外围设备首选连接参数 ".但是,值(值)到处是0字节.如何获得特色?如何获得脉搏?

在手镯上有一个应用程序H Band 2.0,它显示了相当多的手镯设置,问题出现在哪里呢?

原生app H Band 2.0.在这里尝试反编译.我在以下目录中找到了负责连接的类:sources \no \nordicsemi\android\dfu.我看到通过BluetoothGatt做了什么.不幸的是,我不是java和android的专家,不熟悉这个库.我没有找到任何与"脉冲"相关的方法或任何东西,但是大量的魔法解析特征:parse (characteristic)

foreach (var TestService in Services)
            {
                var characteristics = await TestService.GetCharacteristicsAsync();
                foreach (var Characteristic in characteristics)
                {
                    var properties = Characteristic.Properties;
                    var name = Characteristic.Name;
                    var serv = Characteristic.Service;
                    var value = Characteristic.Value;
                    var stringValue = value.ToString();
                    string result = "";
                    if (value.Length != 0)
                        result = System.Text.Encoding.UTF8.GetString(value, 0, value.Length - 1);
                }
            }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mar*_*skI 0

首先,您可以使用以下应用程序更好地概述您正在使用的服务和特征,而无需编写调用代码来获取您需要的值。

话虽如此,您需要文档才能与设备通信,我的意思是您发送什么数据,什么是可接受的响应,它们如何映射到有意义的数据等。BLE 的核心是低能耗位,这意味着交换为数据尽可能少,例如 将整数映射到没有文档就不知道的枚举值,您可以从反编译的源代码中返回,但这会困难几个数量级。

另一件事是,BLE 是出了名的不可靠(如果您在三星上遇到 gatt 133 错误,您就会明白:),因此大多数实现还增加了一种网络层来处理丢弃和优雅降级,以及发送更大的和平信号数据,这是根据应用程序/设备定制开发的,您还需要大量文档来实现它,这不是小事。

您选择的库非常好,并且很好地包装了您需要的大部分内容,但它无法处理不稳定性,因此您必须自己处理该部分。

干杯:)