Android BLE 写入 byte[] 包括无符号值
Android BLE write byte[] including unsigned values
这个问题从这里开始 here 但这似乎是一个转移注意力的问题!
所以,问题是,我有一个值的字节数组需要写入 BLE 设备。
byte bytes[] = {0x04,0x08,0x0F,0x66,(byte)0x99,0x41,0x52,0x43,0x55,(byte)0xAA};
ch.setValue(bytes);
如果我记录这个数组的输出,我得到(注意负值):
[4, 8, 15, 102, -103, 65, 82, 67, 85, -86]
但理论上这应该只是 java 值的表示,当它们击中蓝牙设备时不应影响感知值,但情况似乎并非如此
这些值是制造商要求的,因此无法更改,但是其中 2 个值超出了无符号 byte/int 的范围,这似乎是设备无法识别命令。
当我将此命令写入特性时,我得到成功代码 0(成功),但设备不执行命令。
所以,我的问题是,我是否以正确的方式发送它,或者我应该 formatting/processing 字节数组以维护其中包含的感知值?
非常感谢任何建议!!!
你做的一切都是正确的。只是当您打印字节值时,您会看到以 10 为基数的有符号整数。您仍然通过无线方式为每个字节发送正确的 8 位。
这个问题从这里开始 here 但这似乎是一个转移注意力的问题!
所以,问题是,我有一个值的字节数组需要写入 BLE 设备。
byte bytes[] = {0x04,0x08,0x0F,0x66,(byte)0x99,0x41,0x52,0x43,0x55,(byte)0xAA};
ch.setValue(bytes);
如果我记录这个数组的输出,我得到(注意负值):
[4, 8, 15, 102, -103, 65, 82, 67, 85, -86]
但理论上这应该只是 java 值的表示,当它们击中蓝牙设备时不应影响感知值,但情况似乎并非如此
这些值是制造商要求的,因此无法更改,但是其中 2 个值超出了无符号 byte/int 的范围,这似乎是设备无法识别命令。
当我将此命令写入特性时,我得到成功代码 0(成功),但设备不执行命令。
所以,我的问题是,我是否以正确的方式发送它,或者我应该 formatting/processing 字节数组以维护其中包含的感知值?
非常感谢任何建议!!!
你做的一切都是正确的。只是当您打印字节值时,您会看到以 10 为基数的有符号整数。您仍然通过无线方式为每个字节发送正确的 8 位。