Protocolos de Comunicación Aplicación Básica Preparado por: jhuircan Octubre -2013 Rev. Agosto 2014 Definición de componentes de App Programación de la interfaz de comunicación Aplicación para testeo del canal Lectura de datos del canal Solicitar el uso del canal mediante el usuario. Envío de datos por el canal Esquema Recepción Básica Configura Comm NO Hay Dato? Si Lee dato del canal Esquema Recepción Básica Configura Comm NO Hay Dato? Si Lee dato del canal Req. Canal Usuario? Si Enviar dato por el canal NO Esquema Recepción Básica Configura Comm NO Hay Dato? Si Lee dato del canal Req. Canal Usuario? Si Enviar dato por el canal NO App C void main() { // Inicializa Puerto while(1) { // Verificar canal // Leer información canal // Solicitar uso de canal // Enviar data por el canal } } App C void main() { init_com(); // Funcion inicializa puertos while(1) { // Verificar canal // Leer información canal // Solicitar uso de canal // Enviar data por el canal } } App C void main() { char st; init_comm(); while(1) { st=verificar_canal(); // Devuelve 1 si hay dato // Leer información canal // Solicitar uso de canal // Enviar data por el canal } } App C void main() { char st; init_comm(); while(1) { st=verificar_canal(); if(st) lee_dato_puerto(); // Solicitar uso de canal // Enviar data por el canal } } App C void main() { char st; init_comm(); while(1) { st=verificar_canal(); if(st) lee_dato_puerto(); // Verificar uso de teclado // Enviar data por el canal } } App C void main() { char st; init_comm(); while(1) { st=verificar_canal(); if(st) lee_dato_puerto(); if(kbhit()) { // Detecta uso de teclado // Enviar data } } } App C void main() { char st,c; init_comm(); while(1) { st=verificar_canal(); if(st) lee_dato_puerto(); if(kbhit()) { c=getch(); // Enviar data } } } App C void main() { char st,c; init_comm(); while(1) { st=verificar_canal(); if(st) lee_dato_puerto(); if(kbhit()) { c=getch(); enviar_data_puerto(c); } } } App New Variante init_com() { // Dependiente // de Hardware } void enviar(char c) { // Envia car } char *recibe() { char dato_rec; // Recibe car return(dato_rec); } char status_canal() { char st_canal; // Lee el estado del // canal // Retorna estado return (st_canal) } App New void main() { char st; init_com(); while(1) { st=status_canal(); if(st) recibe(); if(kbhit()) { c=getch(); enviar(c); } } } Verificación del funcionamiento Mensajes en pantalla Uso de funciones putchar(); // Imprime tecla en pantalla printf(); // Imprime con formato Captura de datos por teclado getch(); // Lee tecla gets(); // Lee string Código fuente de prueba (web) El código fuente disponible en la web realiza una tarea similar a la indicada, en este caso los nombres de las funciones pudieran ser diferentes En dicha aplicación la función recibe(), detecta el estado del canal por lo tanto sino ha llegado dato esta función espera y luego sale sin devolver información.