如何在BLE中使用BluetoothGattCharacteristic写字节数组?

时间:2018-01-29 18:30:15

标签: android bluetooth-lowenergy android-bluetooth

此代码正常工作,LED也会关闭。

                byte cmd[] = {(byte) 0xff};
                mWrChar.setValue(cmd);
                mBleGatt.writeCharacteristic(mWrChar);

但我想在BluetoothGattCharacteristic中将“0x0801000”作为字节数组传递,怎么做?

类似的nRF Connect应用程序。

enter image description here

3 个答案:

答案 0 :(得分:1)

您只需将数组传递给变量cmd即可。但是你需要知道字节数组是否是MSO(最重要的八位字节) - > LSO(最低有效八位字节)或LSO - > MSO。通常,特征使用LSO - > MSO,这意味着字节数组中的第一个八位字节是最不重要的八位字节。

在具体情况下,请注意您的特征由四个字节组成:0x08 | 01 | 00 | 00

然后你有:

MSO - > LSO:0x08 | 01 | 00 | 00 - > {0x08,0x01,0x00,0x00}

LSO - > MSO:0x08 | 01 | 00 | 00 - > {0x00,0x00,0x01,0x08}

检查哪一个与您的案例相关,或者尝试两者,看看会发生什么。您的代码将是这样的(我假设LSO - > MSO):

byte[] cmd = {0x00, 0x00, 0x01, 0x08};
mWrChar.setValue(cmd);
mBleGatt.writeCharacteristic(mWrChar);

答案 1 :(得分:0)

为了发送字节数组,我就这样做了(可能来自BluetoothLeGatt示例):

characteristic.setValue((integerToSend),BluetoothGattCharacteristic.FORMAT_UINT8,0);

characteristic.setValue((integerToSend>> 8),BluetoothGattCharacteristic.FORMAT_UINT8,1;;

最后一个参数指定特征中的字节字段。我更喜欢手动设置每个字段。在第一行中,我使用整数的前半部分填充字段0。在第二行中,我使用整数的后半部分填充字段1。然后,您可以单独填充每个再见字段,每个特征最多18个字节(我认为)

答案 2 :(得分:0)

这是我用来将十六进制数据(如您的font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); )格式化为字节数组的方法。然后您可以将其写入特征。

0x08010000

希望有帮助。