为了账号安全,请及时绑定邮箱和手机立即绑定

向特征写入多个命令

向特征写入多个命令

慕工程0101907 2021-04-05 19:15:01
我只是发现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条命令的最佳方法是什么?
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以像这样将所有要写入的内容串联起来:


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");

                }

        );

我鼓励您看一下有关“多次写入”的RxAndroidBle其他问题,这些问题已经在本网站上问过。有些帖子可能会给您提示/想法。


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


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信