yo en mi codigo lo puse de la siguiente forma:
el primer dato que recibe lo compara con X numero de inicio de trama, si corresponde activa una variable de que los demas datos que reciba seran una trama (tamaño, datos, final de trama....). A su vez activo un timer el cual si en 1s la trama se queda atascada, por ejemplo si el tamaño han sido 8bytes y solo ha recibido 7, o bien no se recibe final de trama esa trama se descarta, se pone la variable a 0, y puedes hacer que se envie un dato como error de recepcion y se vuelva a iniciar la trama (yo esto no lo puse).
Aunque volviese a aparacer un dato con el mismo inicio de trama no pasaria nada, ya que lo interpretaria como datos, al estar la variable=1 hasta que no se ponga a 0 no volver a hacer una comprobacion de inicio de trama.