Android(Xamarin)如何通过蓝牙从手环获取数据(脉搏)

6
我的目标是使用我的应用程序从健身手环Torntisc T1获取数据(脉冲),并独立处理手环的数据。
为了实现这一目标,我使用Xamarin,并找到一个Xamarin的蓝牙LE插件插件来连接设备并接收数据。然而,所有获取的特征都被称为“未知特征”,值为0字节。尽管它有5个服务,每个服务都有3个特征。其中1个服务中唯一的特征名称是:“设备名称”、“外观”和“外围首选连接参数”。然而,无论在哪里,值(value)都是0字节。如何获取特征?如何获取脉冲?
对于手环,有一个名为H Band 2.0的应用程序,它显示出相当多的手环设置,问题是它们都在哪里?

本地应用程序 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);
                }
            }

enter image description here

1个回答

0

首先,您可以使用以下app来更好地了解您正在使用的服务和特性,而无需编写调用以获取所需值。

话虽如此,您仍然需要文档才能与设备进行通信,我的意思是您发送哪些数据,可接受的响应是什么,它们如何映射到有意义的数据等。 BLE 的核心是低功耗位,这意味着尽可能少地交换数据,例如将整数映射到枚举值,如果没有文档,则难以理解,您可以从反编译的源代码中找回信息,但这将是数量级更加困难的。

还有一件事是,BLE 非常不可靠(如果您在三星手机上遇到 gatt 133 错误,您就会明白:),因此大多数实现还具有一种添加的网络层来处理掉落和优雅降级,以及发送更大的数据块,这是针对每个应用程序/设备定制开发的,您还需要广泛的文档来实施它,这并不是一个微不足道的问题。

你选择的库非常不错,包装得很好,覆盖了大部分你需要的内容,但它不能处理不稳定性,所以你必须自己注意这个部分。
干杯 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接