此代码正常工作,LED也会关闭。
byte cmd[] = {(byte) 0xff};
mWrChar.setValue(cmd);
mBleGatt.writeCharacteristic(mWrChar);
但我想在BluetoothGattCharacteristic中将“0x0801000”作为字节数组传递,怎么做?
类似的nRF Connect应用程序。
答案 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
希望有帮助。