Как проверить что по serial пришел полный пакет данных?
последовательный порт не передает пакеты. последовательный порт передает поток байт (на самом деле - бит, но прием целых байт уже реализован до вас нижележащими уровнями абстракции)
'разбиение на пакеты' - задача протокола более высокого уровня (который вам видимо и нужно реализовывать).
если у вас 'пакет' это строка, то конец пакета маркируется символом перевода строки, не так ли ?
Сначала передаётся длина (количество байтов) пакета, затем сам пакет, в конце - контрольная сумма, по которой можно проверить целостность пакета.