A menos que esté haciendo algo particularmente crítico en el tiempo, entonces probablemente deba esperar hasta que se reciban todos los bytes de comando antes de intentar procesarlos.
Esto obviamente requiere que su sistema sepa cuántos bytes contiene el comando.
Hay diferentes maneras de lograr esto. Una forma perfectamente válida es como ya lo has pensado: hacer que todos tus paquetes de comando tengan la misma longitud (por lo general, rellenando los cortos con bytes adicionales).
Esta es probablemente la forma más sencilla, pero podría volverse problemática en algunas situaciones.
Podría significar que necesita enviar muchos bytes de relleno para un comando simple, y también significa que podría haber demoras innecesarias según el tiempo que demore la transferencia de todos los bytes a través de su enlace de comunicaciones.
Un método alternativo sería codificar el tamaño del comando en el comando mismo, ya sea agregando un byte de 'longitud' al principio del paquete de comandos o cerca de él, o bien proporcionando a su sistema integrado una tabla de búsqueda para poder para verificar cuántos bytes esperar para cada comando.
De esta manera, sabe cuántos bytes debe contener el comando antes de que se complete la transferencia del comando y luego puede decidir cuánto tiempo debe esperar los bytes restantes antes de que se agote el tiempo de espera e ignorar el comando no finalizado y / o devolver un mensaje de error o Lo que sea apropiado para su sistema.
Hay muchos montones de "errores" al escribir sus propios protocolos de comunicaciones (como lo que sucede si "pierde" el inicio de su paquete y luego interpreta los bytes de manera incorrecta), verificando la integridad del paquete con sumas de comprobación o CRC, marcadores especiales &erio; byte / bit-stuffing, etc ... Pero los requisitos de su sistema determinarán la cantidad de cosas de las que debe preocuparse.