I can only guess that there is some data left when you start reading from the serial port and it causes the prefix counting to be broken. Don't use prefix mode.
I change the "BigEndian" option to True instead of false. But I dont understand why this works.
From Android/iPhone to ESP8266 I use the False, but then it has to be True from ESP8266 to my device?