UNIVERSIDAD DE OVIEDO Departamento de Ingeniería Eléctrica, Electrónica, de Computadores y Sistemas Guía de Prácticas ASIGNATURA: CENTRO: ESTUDIOS: CURSO: CARÁCTER: PROFESORADO: Informática Industrial y Comunicaciones Escuela Politécnica de Ingeniería de Gijón Grado en Ingeniería Electrónica y Automática 3º CUATRIMESTRE: 1 Obligatoria CRÉDITOS ECTS: 6 Ignacio Alvarez, José Mª Enguita PRACTICA 10: Uso de interrupciones y otras funciones de C 1. Sobre el simulador, se desea escribir en el display LCD cada 1 seg la fecha y hora, mientras se espera por una cadena de caracteres que indique el formato en que se desea. La cadena de caracteres tendrá la forma SET DATE="formato", donde formato puede contener, además de otros caracteres: DD: se desea escribir el día. MM: se desea escribir el mes. YY: se desea escribir el año (2 últimas cifras). YYYY: se desea escribir el año (4 cifras). hh: se desea escribir la hora. mm: se desea escribir el minuto. ss: se desea escribir el segundo. Otros caracteres: se escriben dichos caracteres. Por ejemplo, el comando: SET DATE = "DD/MM/YYYY – hh:mm" Tendrá como efecto que en el display se visualice: 2. Obtención del tiempo (ver ayuda de las diferentes funciones con F1; funciones disponibles con búsqueda Google: MSDN C run time library reference): #include <sys/types.h> #include <sys/timeb.h> #include <time.h> … struct _timeb now; struct tm *hms; .. _ftime( &now ); hms = localtime( &now.time ); printf("%02d:%02d:%02d:%03d\n",hms->tm_hour,hms->tm_min, hms->tm_sec,now.millitm); 3. Solución propuesta: Dado que el nº de caracteres a utilizar por cada elemento es el mismo que los que ocupa dicho elemento en la cadena, se puede realizar sustituciones con strncpy( ). Ej: char texto[]="DD/MM/YYYY – hh:mm" char aux[10]; int anyo=2015; char *pt; pt = Buscar "YYYY" en el texto Si se ha encontrado: sprintf(aux,"%04d",anyo); Copiar 4 caracteres desde aux hacia pt con strncpy() (no se copia el nulo) printf("El texto resultante es: %s\n",texto); 4. Ampliaciones propuestas: Añadir la opción de formato: DDD: se desea escribir el día de la semana (3 primeros caracteres). Añadir la opción de formato: DDDD: se desea escribir el día de la semana (todos los caracteres). Atención, ahora no es posible utilizar directamente la estrategia anterior, ya que el tamaño del día de la semana es variable y mayor que el espacio disponible. Guardar en un archivo de texto los diferentes comandos recibidos en el control del simulador, incluyendo la fecha y hora de cada uno.