i found the problem.

i added

unsigned long int len = tcpSocket->bytesAvailable();
qDebug("%lu %d",len ,sizeof(pScanBufferParsed_t));

to slot() of readyRead() signal.

and results are always same and like this:

1680 560

which means exactly 3 times my pScanBufferParsed_t type size. in other words, readyRead() is emitting at every 3 packages.

anything that i can do to make readyRead emitted at every package?