hacer una tabla para todos los comandos es mejor que una cadena, necesitas menos recursos, la velocidad de transmision es mas rapida, si es un proyecto que salga a la venta no dejas tan facil el averiguar que es cada comando.
Yo hace años me dedicaba a la programacion de un juego online, este enviaba los comandos por strings (por ejemplo MOVER1,1 para mandar un movimiento), decir que el juego era codigo libre, pero nosotros lo modificamos para hacer nuestro propio modelo.
Tuvimos problemas de lag, el servidor se saturaba al tener que enviar tantos datos, pues yo mismo me encarge de reducir un 40% la cantidad de datos, y asi fue, despues para mover por ejemplo se enviaba el ascii 'M' unicamente (por ejemplo), para otra cosa pues otro byte, como tenemos hasta 255 combinaciones por byte pues nos sobro comandos aun.
Ademas de tambien codificar las strings grandes, por ejemplo el servidor enviaba 0x90 y en el cliente al recibirla este mostraba una string previamente guardada en el cliente.
Las tramas las implementarias en caso de que necesitaras recibir varios datos, por ejemplo, pon led 5 apagado.
La trama seria asi (inicio trama)(tamaño*)(datos)(final trama*)(crc*) *=opcional.
por ejemplo:
0x33;0x02;0x05;0x01
asi cuando recibes 0x33 inicias el estado de trama, luego recibirias el tamaño, y los datos (0x05=led 5) (0x01=on)