【问题标题】:Writing multiple commands to characteristic将多个命令写入特征
【发布时间】:2018-06-19 22:44:53
【问题描述】:

我刚刚发现 rxandroidble 并且可以在连接后可靠地向 BLE 设备发送单个命令

但是我正在努力寻找编写命令链的最佳方法,即如果我有一系列需要发送的 3 个命令

当然这可以通过嵌套发送来完成,但我相信有更好的方法!

单个命令发送代码为

rxBleMainConection.writeCharacteristic(COMS_WRITE_CHAR_UUID,bytes).toObservable()
.subscribe(
                    characteristicValue -> {
                        // Written characteristic value.
                        Log.d(TAG,"Written command: " + Arrays.toString(characteristicValue));

                    },
                    throwable -> {
                        // Handle an error here.
                        Log.d(TAG,"Error writing command");
                        throwable.printStackTrace();
                    }
            );

发送一系列说 5 个命令的最佳方式是什么?

【问题讨论】:

  • 您能否详细说明“更好的方法”是什么意思?你想链接 3 个 observables 让它们一个接一个地执行吗?你想如何处理他们每个人的响应?

标签: java android rx-java rx-java2 rxandroidble


【解决方案1】:

你可以像这样连接所有你想写的东西:

Single.concat(Arrays.asList(
        rxBleMainConnection.writeCharacteristic(COMS_WRITE_CHAR_UUID, bytes0),
        rxBleMainConnection.writeCharacteristic(COMS_WRITE_CHAR_UUID, bytes1),
        rxBleMainConnection.writeCharacteristic(COMS_WRITE_CHAR_UUID, bytes2),
        rxBleMainConnection.writeCharacteristic(COMS_WRITE_CHAR_UUID, bytes3),
        // ...
        rxBleMainConnection.writeCharacteristic(COMS_WRITE_CHAR_UUID, bytesn)
))
        .subscribe(
                characteristicValue -> {
                    // Written characteristic value.
                    Log.d(TAG, "Written command: " + Arrays.toString(characteristicValue));
                },
                throwable -> {
                    // Handle an error here.
                    Log.d(TAG, "Error writing command");
                    throwable.printStackTrace();
                },
                () -> {
                    Log.d(TAG, "All writes completed");
                }
        );

我鼓励您查看已在此站点上询问的其他 questions regarding "multiple writes" with RxAndroidBle。有些帖子可以给你提示/想法。

附带说明:最好创建仅使用单个 .subscribe() 的代码,因为这样您需要自己管理的状态最少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-04-26
    • 2020-12-01
    • 2018-04-23
    • 2013-11-07
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多