I\'ve used code from BluetoothChat example to send and receive byte data from a Bluetooth Scale. The scale receives the command from the device, then sends back a byte array
I was in the same position as you a few weeks ago.
I discovered The read count is random when using read(buffer). So you will never truly predict how big the next data packet will be.
The simple fix for me was to read a single byte at a time using read() and add it to a local buffer until every byte is received.
Hope this helps.