java Android BLE写入byte[],包括无符号值

oyjwcjzk  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(92)

这个问题在这里开始了生活,但这似乎是一个红色鲱鱼!
问题是,我有一个字节数组的值需要写入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个值超出了无符号字节/整数的范围,这似乎是设备无法识别命令的原因。
当我将此命令写入特性时,我得到成功代码0(成功),但设备不执行此命令。
因此,我的问题是,我是否以正确的方式发送此消息,或者我是否应该格式化/处理字节数组以维护其中包含的感知值?
任何建议都非常感谢!!!

km0tfn4u

km0tfn4u1#

你做的每件事都是正确的,只是当你打印字节值时,你看到的是以10为基数的有符号整数。你仍然通过无线方式为每个字节发送了正确的8位。

相关问题