Actualizacion General del codigo para CCN con el objetivo de proveer mantenimiento estable.

Dependencies:   BufferedSerial

Committer:
fmanzano_dtk
Date:
Mon May 24 15:50:26 2021 +0000
Revision:
4:e0b1d06c5cc5
Parent:
3:bf6747585064
Version no compilable. Actualizacion y correccion de typos.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmanzano_dtk 1:c7bcbf5eac28 1 /**
fmanzano_dtk 1:c7bcbf5eac28 2 * @file exe_rfid.cpp
fmanzano_dtk 1:c7bcbf5eac28 3 * @author Felícito Manzano (felicito.manzano@detektor.com.sv)
fmanzano_dtk 1:c7bcbf5eac28 4 * @brief
fmanzano_dtk 1:c7bcbf5eac28 5 * @version 0.1
fmanzano_dtk 1:c7bcbf5eac28 6 * @date 2021-05-23
fmanzano_dtk 1:c7bcbf5eac28 7 *
fmanzano_dtk 1:c7bcbf5eac28 8 * @copyright Copyright (c) 2021
fmanzano_dtk 1:c7bcbf5eac28 9 *
fmanzano_dtk 1:c7bcbf5eac28 10 */
fmanzano_dtk 1:c7bcbf5eac28 11
fmanzano_dtk 1:c7bcbf5eac28 12
fmanzano_dtk 3:bf6747585064 13 #include "BufferedSerial.h"
fmanzano_dtk 1:c7bcbf5eac28 14 #include "constantes.hpp"
fmanzano_dtk 1:c7bcbf5eac28 15 #include "f_basicas.hpp"
fmanzano_dtk 3:bf6747585064 16 #include "exe_rfid.hpp"
fmanzano_dtk 1:c7bcbf5eac28 17
fmanzano_dtk 1:c7bcbf5eac28 18
fmanzano_dtk 1:c7bcbf5eac28 19 int leer_rfid(BufferedSerial *puerto_data, char id[256])
fmanzano_dtk 1:c7bcbf5eac28 20 {
fmanzano_dtk 1:c7bcbf5eac28 21 /* Esta función se encarga de leer el puerto serial y
fmanzano_dtk 1:c7bcbf5eac28 22 almacenar la respuesta en un buffer de datos de entrada.
fmanzano_dtk 1:c7bcbf5eac28 23 Esta función retorna la cantidad de caracteres leidos*/
fmanzano_dtk 1:c7bcbf5eac28 24 int i = 0;
fmanzano_dtk 1:c7bcbf5eac28 25
fmanzano_dtk 1:c7bcbf5eac28 26 while (puerto_data -> readable()) {// || (i < 19)) {
fmanzano_dtk 1:c7bcbf5eac28 27 int incoming_char = puerto_data -> getc();
fmanzano_dtk 1:c7bcbf5eac28 28 id[i] = incoming_char;
fmanzano_dtk 1:c7bcbf5eac28 29 i++;
fmanzano_dtk 1:c7bcbf5eac28 30 }
fmanzano_dtk 1:c7bcbf5eac28 31 id[i] = '\0'; //strcpy(id, tmp_buff);
fmanzano_dtk 1:c7bcbf5eac28 32
fmanzano_dtk 1:c7bcbf5eac28 33 return(i);
fmanzano_dtk 1:c7bcbf5eac28 34 }
fmanzano_dtk 1:c7bcbf5eac28 35
fmanzano_dtk 1:c7bcbf5eac28 36
fmanzano_dtk 3:bf6747585064 37 extern BufferedSerial rf_id;
fmanzano_dtk 1:c7bcbf5eac28 38 extern DigitalOut display_DP;
fmanzano_dtk 1:c7bcbf5eac28 39 extern BusOut display_H;
fmanzano_dtk 1:c7bcbf5eac28 40 extern BusOut display_dM;
fmanzano_dtk 1:c7bcbf5eac28 41 extern BusOut display_uM;
fmanzano_dtk 4:e0b1d06c5cc5 42 extern BusOut torreLuz;
fmanzano_dtk 4:e0b1d06c5cc5 43 extern Serial pcusb;
fmanzano_dtk 4:e0b1d06c5cc5 44 extern Serial gv300;
fmanzano_dtk 1:c7bcbf5eac28 45 extern Ticker ticker_minuto;
fmanzano_dtk 1:c7bcbf5eac28 46 extern Timer t_apagado;
fmanzano_dtk 4:e0b1d06c5cc5 47 extern Timer t_ocupado;
fmanzano_dtk 1:c7bcbf5eac28 48 extern bool mostrar_tiempo;
fmanzano_dtk 1:c7bcbf5eac28 49 extern char buffer_antena_ID[];
fmanzano_dtk 1:c7bcbf5eac28 50 extern char antena_trailerID_HEX[];
fmanzano_dtk 1:c7bcbf5eac28 51 extern char actual_trailerID_HEX[];
fmanzano_dtk 1:c7bcbf5eac28 52 extern char skytrack_frame[];
fmanzano_dtk 1:c7bcbf5eac28 53 extern int rfid_respuesta;
fmanzano_dtk 1:c7bcbf5eac28 54 extern int bahia_vacia;
fmanzano_dtk 1:c7bcbf5eac28 55 extern int lidar_vacio;
fmanzano_dtk 1:c7bcbf5eac28 56 extern int comparacion;
fmanzano_dtk 1:c7bcbf5eac28 57 extern int contador_diferentes;
fmanzano_dtk 1:c7bcbf5eac28 58 extern int contador_tramas;
fmanzano_dtk 1:c7bcbf5eac28 59 extern int horas;
fmanzano_dtk 1:c7bcbf5eac28 60 extern int dminutos;
fmanzano_dtk 1:c7bcbf5eac28 61 extern int uminutos;
fmanzano_dtk 1:c7bcbf5eac28 62 extern int tiempo_luz_amarilla;
fmanzano_dtk 1:c7bcbf5eac28 63 extern int tiempo_luz_roja;
fmanzano_dtk 4:e0b1d06c5cc5 64 extern int w;
fmanzano_dtk 1:c7bcbf5eac28 65
fmanzano_dtk 1:c7bcbf5eac28 66 void exe_RFiD() {
fmanzano_dtk 1:c7bcbf5eac28 67 rfid_respuesta = leer_rfid(&rf_id, buffer_antena_ID);
fmanzano_dtk 1:c7bcbf5eac28 68 if (rfid_respuesta == 0) { // En caso que no se recibe información
fmanzano_dtk 1:c7bcbf5eac28 69 bahia_vacia++;
fmanzano_dtk 1:c7bcbf5eac28 70 if (bahia_vacia == DECLARAR_VACIO) { // Si ha pasado tiempo sin recibir datos de la antena RFiD
fmanzano_dtk 1:c7bcbf5eac28 71 bahia_vacia = 0; // Para dar más tiempo a que responda la antena.
fmanzano_dtk 1:c7bcbf5eac28 72 }
fmanzano_dtk 1:c7bcbf5eac28 73 } else if ((rfid_respuesta > 16) && (rfid_respuesta <= 20)) { // En caso se recibió información del lector RFiD
fmanzano_dtk 1:c7bcbf5eac28 74 bahia_vacia = lidar_vacio = 0; // Reiniciar el contador de vacio
fmanzano_dtk 1:c7bcbf5eac28 75 convertir_id(buffer_antena_ID, antena_trailerID_HEX, &rfid_respuesta);
fmanzano_dtk 1:c7bcbf5eac28 76 pcusb.printf("\r\nRFiD[%d]: %s", rfid_respuesta, antena_trailerID_HEX);
fmanzano_dtk 1:c7bcbf5eac28 77
fmanzano_dtk 1:c7bcbf5eac28 78 comparacion = strcmp(actual_trailerID_HEX, antena_trailerID_HEX);
fmanzano_dtk 1:c7bcbf5eac28 79 if (comparacion == 0) { // Comparar si se ha recuperado el anterior
fmanzano_dtk 1:c7bcbf5eac28 80 if (!mostrar_tiempo) {
fmanzano_dtk 1:c7bcbf5eac28 81 mostrar_tiempo = true;
fmanzano_dtk 1:c7bcbf5eac28 82 pcusb.printf("\r\nReanudar conteo previo...");
fmanzano_dtk 1:c7bcbf5eac28 83 t_apagado.stop();
fmanzano_dtk 1:c7bcbf5eac28 84 t_apagado.reset();
fmanzano_dtk 1:c7bcbf5eac28 85 display_DP = 1;
fmanzano_dtk 1:c7bcbf5eac28 86 presentar_torre(&VERDE, &torreLuz); // Cambiar a luz verde
fmanzano_dtk 1:c7bcbf5eac28 87 presentar_tiempo(&horas, &dminutos, &uminutos, &display_H, &display_dM, &display_uM); // Configurar a 0 el cronometro
fmanzano_dtk 1:c7bcbf5eac28 88 }
fmanzano_dtk 1:c7bcbf5eac28 89 contador_diferentes = 0;
fmanzano_dtk 1:c7bcbf5eac28 90 } else { // Comparar si es un nuevo cabezal
fmanzano_dtk 1:c7bcbf5eac28 91 contador_diferentes++; // Incrementar contador de diferentes
fmanzano_dtk 1:c7bcbf5eac28 92 pcusb.printf("\r\nDiferentes: %d", contador_diferentes);
fmanzano_dtk 1:c7bcbf5eac28 93
fmanzano_dtk 1:c7bcbf5eac28 94 if (contador_diferentes == DELTA_ID) {
fmanzano_dtk 1:c7bcbf5eac28 95 pcusb.printf("\r\nNuevo ID de cabezal...\r\n");
fmanzano_dtk 1:c7bcbf5eac28 96 mostrar_tiempo = true;
fmanzano_dtk 1:c7bcbf5eac28 97 ticker_minuto.detach();
fmanzano_dtk 1:c7bcbf5eac28 98 t_ocupado.reset(); t_ocupado.start();
fmanzano_dtk 1:c7bcbf5eac28 99 t_apagado.stop();
fmanzano_dtk 1:c7bcbf5eac28 100 ticker_minuto.attach(&actualizar_minuto, 60.0);
fmanzano_dtk 1:c7bcbf5eac28 101 horas = dminutos = uminutos = 0; // Reset las variables del cronometro
fmanzano_dtk 1:c7bcbf5eac28 102 strcpy(actual_trailerID_HEX, antena_trailerID_HEX);
fmanzano_dtk 1:c7bcbf5eac28 103 presentar_torre(&VERDE, &torreLuz); // Cambiar a luz verde
fmanzano_dtk 1:c7bcbf5eac28 104 presentar_tiempo(&horas, &dminutos, &uminutos, &display_H, &display_dM, &display_uM); // Configurar a 0 el cronometro
fmanzano_dtk 1:c7bcbf5eac28 105 display_DP = 1;
fmanzano_dtk 1:c7bcbf5eac28 106 contador_diferentes = 0;
fmanzano_dtk 1:c7bcbf5eac28 107
fmanzano_dtk 1:c7bcbf5eac28 108 pcusb.printf("\r\nSemaforo VERDE...");
fmanzano_dtk 1:c7bcbf5eac28 109 pcusb.printf("\r\nTiempo inicia en [0:00]");
fmanzano_dtk 1:c7bcbf5eac28 110 w = tiempo_asignado(actual_trailerID_HEX, &tiempo_luz_amarilla, &tiempo_luz_roja); // Cargar los tiempos de la torre de luz
fmanzano_dtk 1:c7bcbf5eac28 111 if (w == 0) {
fmanzano_dtk 1:c7bcbf5eac28 112 pcusb.printf("\r\nSin tiempo predeterminado\r\n\r\n");
fmanzano_dtk 1:c7bcbf5eac28 113 } else {
fmanzano_dtk 1:c7bcbf5eac28 114 pcusb.printf("\r\nSemaforo - Amarillo:%d Rojo:%d\r\n\r\n", tiempo_luz_amarilla, tiempo_luz_roja);
fmanzano_dtk 1:c7bcbf5eac28 115 }
fmanzano_dtk 1:c7bcbf5eac28 116
fmanzano_dtk 4:e0b1d06c5cc5 117
fmanzano_dtk 1:c7bcbf5eac28 118 sprintf(skytrack_frame, "%s%s%s%s%s%04X%s",
fmanzano_dtk 1:c7bcbf5eac28 119 CABECERA_TX, CODIGO_INT, BAY_NEWID, actual_trailerID_HEX, FIN_CABECERA_TX, contador_tramas, ULTIMO_CARACTER);
fmanzano_dtk 1:c7bcbf5eac28 120 gv300.printf("%s\r\n", skytrack_frame);
fmanzano_dtk 4:e0b1d06c5cc5 121 wait_us(300000);
fmanzano_dtk 1:c7bcbf5eac28 122 }
fmanzano_dtk 1:c7bcbf5eac28 123 }
fmanzano_dtk 1:c7bcbf5eac28 124 } else {
fmanzano_dtk 1:c7bcbf5eac28 125 bahia_vacia = lidar_vacio = 0;
fmanzano_dtk 1:c7bcbf5eac28 126 pcusb.printf("\r\nDescartados %d", rfid_respuesta);
fmanzano_dtk 1:c7bcbf5eac28 127 }
fmanzano_dtk 1:c7bcbf5eac28 128 }