Android BLE write byte[] including unsigned values

2019-09-12 15: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条回答
Ridiculous、
2楼-- · 2019-09-12 15:45

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.

查看更多
登录 后发表回答