Felícito Manzano
/
CCN_Control_Bahia_TFMiniPlus
Actualizacion General del codigo para CCN con el objetivo de proveer mantenimiento estable.
exe_rfid.cpp@8:3fc41e5029f7, 2021-05-24 (annotated)
- Committer:
- fmanzano_dtk
- Date:
- Mon May 24 12:13:06 2021 -0600
- Revision:
- 8:3fc41e5029f7
- Parent:
- 4:e0b1d06c5cc5
Cambio de puertos RFID y LIDAR
Who changed what in which revision?
User | Revision | Line number | New 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 | } |