3

我正在尝试读/写这些 ble 特征:

在此处输入图像描述

现在,我正在尝试阅读AA01*

我正在使用这个库来做到这一点。

这是我的代码:

private void connectToSensorTag(RxBleDevice rxBleDevice) {
    rxBleDevice.establishConnection(getApplicationContext(), false)
            .doOnError(new Action1<Throwable>() {
                @Override
                public void call(Throwable throwable) {
                    int i = 0;
                }
            })
            .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(UUID.fromString("AA01*")))
            .subscribe(new Subscriber<byte[]>() {
                @Override
                public void onCompleted() {
                    int i = 0;
                }

                @Override
                public void onError(Throwable e) {
                    int i = 0;
                }

                @Override
                public void onNext(byte[] bytes) {
                    int i = 0;
                }
            });

我收到此错误:

java.lang.IllegalArgumentException:无效的 UUID:AA01*

我也尝试了这个类似问题的解决方案,但没有任何效果。同样的错误。

4

3 回答 3

6

在 BLE 规范中有两种 UUID。

  • 完全合格的 128 位长,通常分配给 BLE 设备的特定供应商以实现非标准功能: UUID.fromString("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");

  • 也是完全限定的(但由标准定义的)UUID,具有相同的前缀和后缀:填充从 SensorTag 规范中获得的四个字符的位置在哪里UUID.fromString("F000xxxx-0451-4000-B000-000000000000");xxxx为方便起见,标准 UUID 通常使用四个字符标识符来引用。

此外,如果您使用的是 SensorTag 设备,您可以查看今年 MCE^3 会议上展示的库演示应用程序:

演讲:https ://www.youtube.com/watch?v=0aKfUGCxUDM

演示应用程序库:https ://github.com/dariuszseweryn/2016_MCE_Demo_RxAndroidBLE

我希望这会对你有所帮助。

此致。

于 2016-07-25T09:58:24.823 回答
1

如果你需要一个更快的java.util.UUID.fromString(),你可以使用Fast-UUID-Parser 代替。它返回java.util.UUID并且比 . 快 4 倍java.util.UUID.fromString()

于 2017-12-09T02:12:04.773 回答
1

您必须提供完整的 uuid:

UUID uid = UUID.fromString("f000aa01-0451-4000-b000-000000000000"); 
于 2016-07-24T08:55:17.683 回答