Estoy trabajando en un proyecto en el que tengo que comunicar comandos de diferentes longitudes desde mi PC a un microcontrolador. (Usando el puente usb a uart) Ya hice un pequeño protocolo (byte de inicio, algunos datos, suma de verificación ...) pero necesito adaptarlo para mi nueva necesidad.
Me pregunto si ya existe un estándar o una forma común de hacerlo.
comandos de longitud variable
Mucha gente prefiere mucho los comandos de longitud fija. Si necesita tener comandos de longitud variable, debe pensar en:
consejos generales de diseño de protocolos
Hay muchos protocolos más o menos simples enumerados en el Wikibook "Programación en serie" .
Si tiene suerte, quizás uno de ellos ya sea perfecto para su aplicación. O al menos lo suficientemente cerca como para que solo requiera un pequeño ajuste para que encaje.
Prácticamente todos los que desarrollan con éxito un nuevo protocolo pasan por estas fases:
Hay muchos protocolos disponibles. Uno de mis favoritos es el Modbus. Protocolo Modbus
Si solo hay una conexión maestro-esclavo, parece que ha hecho todo lo que necesita hacer. Utilice un algoritmo de suma de comprobación CRC estándar, pero eso es todo lo que hay que estandarizar significativamente. No se preocupe por tener un protocolo oficial ISO/IEEE.
No sé para qué es su aplicación, pero si está tratando de hacer algo en un "mercado definido", investigue ese mercado e intente usar algo que esté implementado allí. En SCADA, Modbus en cualquiera de sus dos o tres versiones (dos en serie y una en IP) es una buena apuesta. En CCTV, Pelco D es una buena apuesta. Todos estos protocolos son fáciles de implementar y están documentados. Y además hay otros protocolos en el mismo mercado, así que diviértete decidiendo lo que quieres hacer. Todos los protocolos que pueda encontrar pueden ser "mejorados", pero si planea conectarse a algún equipo "real", use su protocolo, no invente el suyo propio.
davidcary