I'm writing to you as I need help converting a reply from BLE device, and I want to convert it to comprehensible data, but I'm failing to. I'm using React native BLE manager library, and the documentation for the bluetooth device Is like this.
"peripheral": "D6:AD:15:67:4A:A5", "service": "XXXXX-XXXXX-XXXXXX", "value": [85, 0, 255, 0, 0, 13, 0, 96, 93, 0, 0, 0, 0, 0, 49, 0, 0, 0, 1, 0]
CodePudding user response:
The value that is returned from your peripheral appear to map to the document like so:
85 = 0x55 = ACK Header
0 = 0x00 = ACKCMD
255 = 0xFF = ~ACKCMD_OK
0, 0 = 0x0000 = ACK_PKT_NR
13, 0 = 0x0d = ACK_BUF_SIZE
96 = 0x60 = SpO2
93, 0 = 0x5d00 = Pulse Rate
0, 0, 0, 0 = 0x00000000 = Step Count
49 = 0x31 = Battery
0 = 0x00 = Charging Status
0 = 0x00 = 3-axis
0 = 0x00 = PI
1 = 0x01 = Current state
0 = 0x00 = Reserved
To get at those values the code would be something like:
const bytes = new Uint8Array([85, 0, 255, 0, 0, 13, 0, 96, 93, 0, 0, 0, 0, 0, 49, 0, 0, 0, 1, 0]);
const pulse = new DataView(bytes.buffer).getUint16(8, true)
const battery = new Uint8Array(bytes.buffer)[14];
console.log('Pulse Rate:' pulse);
console.log('Battery Leve:' battery);