Módulos didácticos - Como mejor implementar el programa
La implementación de la parte de comunicaciones se implementa lo mas
'elegantemente', en rutinas especializadas para cada tarea - una
regla general para todo tipo de programación estructurada.
Las tareas a distinguir son:
- Inicialización de la interfase
- La inicialización del puerto serial es una tarea especializada que
no se reutilizará después, pero es lógico mantenerla separada del
programa principal.
- Envio de un byte por la línea serial
- El detalle del manejo de los registros de control de la interfase
serial se debe separar de los detalles de la implementación del
protocolo de comunicación - entonces lo mejor es de hacer una rutina
que recibe un 'byte a enviar' y se encarga de controlar el estado
de la interfase como especificado en la descripción del integrado.
- Recepción de un byte de la línea
- Por los mismos motivos, los detalles de la implementación de la
recepción deben estar 'encapsulados' en una función que devolverá
el proximo byte - cuando haya llegado.
- Envio de un paquete del protocolo
- La preparación de un paquete de transmisión no es la tarea de un
programa principal. El programa principal dirá unicamente 'enviame
este byte de comando y/o datos'. Los detalles del protocolo
(el 0xC0 inicial y final, la suma de control, etc)
deben estar concentrados en una rutina de 'envio de paquete'. Es esta
rutina que debe llamar a la rutina (arriba) de envio de bytes
tantas veces que sea necesario para enviar el paquete completo.
- Recepción de un paquete de protocolo
- De la misma forma, no es tarea del programa principal de recibir
un paquete de respuesta del módulo: Los detalles de la detección
del inicio de paquete (0xC0), los datos, suma de control etc,
deben estar escondidos en una función cuya función es 'recibíme
el próximo paquete válido, y deme únicamente lo que me interesa,
probablemente la medición, en nuestro caso.
Una vez implementadas estas cinco funciones, es facil de hacer
las tareas reales de comandar el módulo para las tareas por hacer.
(c) John Coppens ON6JC/LW3HAZ |
correo |