Como ya puede haber determinado de todas las respuestas no directamente dirigiéndolo a un protocolo, que su propio enfoque sea su mejor elección.
lo tanto, esto me hizo pensar y bueno, aquí están algunos de mis pensamientos -
Teniendo en cuenta que este chip tiene 6 canales ADC, más probable es que esté utilizando RS-232 comunicación en serie (una suposición de su pregunta), y por supuesto el espacio de código limitado, que define una estructura de comando simple ayudará, como lo señala Adam. Puede desear mantener el procesamiento de entrada al mínimo en el chip, por lo que el binario suena atractivo pero el intercambio está en facilidad de desarrollo Y mantenimiento (puede que tenga que solucionar el problema de una entrada muerta dentro de 6 meses) - hyperterminal es una poderosa herramienta de depuración - entonces, eso me hizo pensar cómo implementar una estructura de comando simple con buena confiabilidad.
Algunas consideraciones generales - Comandos
mantener el mismo tamaño - Hace que la decodificación más fácil.
Enmarcar los comandos y la suma de verificación opcional, como señala Adam, se puede ajustar fácilmente a sus comandos. (con comandos pequeños, una suma de comprobación XOR/ADD simple es rápida e indolora)
Recomendaría un anuncio de inicio al host con la versión de firmware en el reinicio, por ejemplo, "HOLA; Versión de firmware 1.00z" - decirle al anfitrión que el objetivo acaba de comenzar y lo que está funcionando.
Si está supervisando principalmente, puede considerar un modo de "ejecución libre" donde el objetivo simplemente recorre las lecturas analógicas y digitales, por supuesto, esto no tiene que ser continuo, puede ser espaciado a 1, 5, 10 segundos, o simplemente al comando. Tu micro siempre está escuchando, por lo que enviar un valor actualizado es una tarea independiente.
Terminar cada línea de salida con un CR (u otro carácter) hace que la sincronización en el host sea directa.
por ejemplo, su micro podría simplemente dar salida a las cadenas;
V0=3.20
V1=3.21
V2= ...
D1=0
D2=1
D3=...
and then start over --
Además, los comandos podrían ser muy simple -
? - Lee todos los valores - no hay muchos, así que entiéndelos.
X = 12.34 - Para establecer un valor, el primer byte es el puerto, luego el voltaje y yo recomendaríamos mantener el "=" y el "." como encuadre para garantizar un paquete válido si renuncia a la suma de comprobación.
Otra posibilidad, si sus salidas están dentro de un rango establecido, puede preescalarlas. Por ejemplo, si la salida no tiene que ser exacto, usted podría enviar algo así como
5=0
6=9
2=5
que fijaría el puerto 5 de descuento, puerto 6 de lleno, y el puerto 2 a la mitad del valor - Con este enfoque , Ascii y los datos binarios están casi en pie de igualdad con respecto a los recursos de computación/decodificación en el micro. O para mayor precisión, haga que la salida sea de 2 bytes, por ejemplo, 2 = 54 - O, agregue una tabla xref y los valores ni siquiera tienen que ser lineales donde el byte de datos es un índice en una tabla de búsqueda.
Como me gusta decir; Simple es usualmente mejor, a menos que no lo sea.
Espero que esto ayude un poco.
Tuve que pensar mientras releía; la adición de un comando "*" podría solicitar los datos entre etiquetas HTML y ahora su aplicación anfitrión podría simplemente redirigir la salida de su micro a un navegador y wala, navegador listo -
:)
+1 para lectura humana –