Android BLE write byte[] including unsigned values

本小妞迷上赌 提交于 2019-12-25 07:52:31

问题


this question started life here here but this appears to be a red herring!

So, the issue is, I have a byte array of values that need to be written to a BLE device.

byte bytes[] = {0x04,0x08,0x0F,0x66,(byte)0x99,0x41,0x52,0x43,0x55,(byte)0xAA};
ch.setValue(bytes);

If I log the output of this array I get (note the negative values):

[4, 8, 15, 102, -103, 65, 82, 67, 85, -86]

But in theory this should only be java's representation of the values and shouldn't affect the perceived values when they hit the Bluetooth device but this doesn't seem to be the case

These values are required by the manufacturer so cannot be changed, however 2 of the values are out of the range of an unsigned byte/int and it appears that this is the reason the device isn't recognising the command.

When I write this command to the characteristic I get a success code of 0 (Success) but the device doesn't act upon the command.

So, my question is, am I sending this in the correct way, or should I be formatting/processing the byte array in order to maintain the perceived values contained within?

Any advice greatly appreciated!!!


回答1:


You are doing everything correct. It's just that when you print the byte value you see signed integers in base 10. You still send the correct 8 bits for each byte over the air.



来源:https://stackoverflow.com/questions/42999307/android-ble-write-byte-including-unsigned-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!