Programa Prototipo Setex

Dependencies:   BatteryPanel-prot-prod Slave-prot-prod mbed GraphicLCD-prot-prod ThermalPrinter-prot-prod LimitSwitches-prot-prod ParkingMeter-prot-prod

Committer:
pabloandres2906
Date:
Mon Jul 22 22:11:36 2019 +0000
Revision:
1:4cdf726a3497
Parent:
0:a1ce6cdc3045
Programa Prototipo produccion

Who changed what in which revision?

UserRevisionLine numberNew contents of line
williequesada 0:a1ce6cdc3045 1 #include "mbed.h"
williequesada 0:a1ce6cdc3045 2 #include "BatteryPanel.h"
williequesada 0:a1ce6cdc3045 3 #include "ParkingMeter.h"
williequesada 0:a1ce6cdc3045 4 #include "ThermalPrinter.h"
williequesada 0:a1ce6cdc3045 5 #include "LimitSwitches.h"
williequesada 0:a1ce6cdc3045 6 #include "GraphicLCD.h"
williequesada 0:a1ce6cdc3045 7 #include "Slave.h"
williequesada 0:a1ce6cdc3045 8
williequesada 0:a1ce6cdc3045 9 #define NO_KEY 0x00
williequesada 0:a1ce6cdc3045 10 #define NO_DATA 0x87
williequesada 0:a1ce6cdc3045 11
williequesada 0:a1ce6cdc3045 12 #define COMMAND_ON 0X70
williequesada 0:a1ce6cdc3045 13 #define COMMAND_INIT 0X71
williequesada 0:a1ce6cdc3045 14 #define COMMAND_GPRS 0X72
williequesada 0:a1ce6cdc3045 15 #define COMMAND_DATA 0X73
williequesada 0:a1ce6cdc3045 16 #define COMMAND_POST 0X74
williequesada 0:a1ce6cdc3045 17 #define COMMAND_ANSWER 0X75
williequesada 0:a1ce6cdc3045 18 #define COMMAND_SIGNAL 0X76
williequesada 0:a1ce6cdc3045 19 #define COMMAND_CONNECT 0X77
williequesada 0:a1ce6cdc3045 20 #define COMMAND_OFF 0X78
williequesada 0:a1ce6cdc3045 21 #define HOSTING_STEP1 0x79
williequesada 0:a1ce6cdc3045 22 #define HOSTING_STEP2 0x7A
williequesada 0:a1ce6cdc3045 23 #define HOSTING_STEP3 0x7B
williequesada 0:a1ce6cdc3045 24 #define HOSTING_STEP4 0x7C
williequesada 0:a1ce6cdc3045 25 #define HOSTING_STEP5 0x7D
williequesada 0:a1ce6cdc3045 26 #define HOSTING_STEP6 0x7E
williequesada 0:a1ce6cdc3045 27 #define HOSTING_STEP7 0x7F
williequesada 0:a1ce6cdc3045 28 #define HOSTING_STEP8 0x80
williequesada 0:a1ce6cdc3045 29 #define HOSTING_STEP9 0x81
williequesada 0:a1ce6cdc3045 30 #define HOSTING_STEP10 0x82
williequesada 0:a1ce6cdc3045 31 #define HOSTING_STEP11 0x83
williequesada 0:a1ce6cdc3045 32 #define HOSTING_OFF 0x84
williequesada 0:a1ce6cdc3045 33 #define NEXT_STEP 0x85
williequesada 0:a1ce6cdc3045 34 #define NEXT_SLEEP 0x86
williequesada 0:a1ce6cdc3045 35 #define COMMAND_END 0X88
williequesada 0:a1ce6cdc3045 36
williequesada 0:a1ce6cdc3045 37 #define USER_INIT 0xA0
williequesada 0:a1ce6cdc3045 38 #define USER_PLACE 0xA1
williequesada 0:a1ce6cdc3045 39 #define USER_CARD 0xA2
williequesada 0:a1ce6cdc3045 40 #define USER_TIME 0xA3
williequesada 0:a1ce6cdc3045 41 #define USER_DATA 0xA4
williequesada 0:a1ce6cdc3045 42 #define USER_PRINT 0xA5
williequesada 0:a1ce6cdc3045 43 #define USER_TICKET 0xA6
williequesada 0:a1ce6cdc3045 44 #define USER_FINISH 0xA7
williequesada 0:a1ce6cdc3045 45 #define USER_POST 0xA8
williequesada 0:a1ce6cdc3045 46 #define USER_ANSWER 0xA9
williequesada 0:a1ce6cdc3045 47 #define USER_INIT2 0xAA
williequesada 0:a1ce6cdc3045 48 #define USER_INIT3 0xB0
williequesada 0:a1ce6cdc3045 49 #define USER_INIT4 0xB1
williequesada 0:a1ce6cdc3045 50 #define USER_CARD2 0xB2
williequesada 0:a1ce6cdc3045 51 #define USER_INIT5 0xB3
williequesada 0:a1ce6cdc3045 52 #define USER_CARD3 0xB4
williequesada 0:a1ce6cdc3045 53
williequesada 0:a1ce6cdc3045 54 #define M_SISTEMA 0x40
williequesada 0:a1ce6cdc3045 55 #define M_RED 0x41
williequesada 0:a1ce6cdc3045 56 #define M_IMPRESORA 0x42
williequesada 0:a1ce6cdc3045 57 #define M_TECLADO 0x43
williequesada 0:a1ce6cdc3045 58 #define M_LECTORA 0X44
williequesada 0:a1ce6cdc3045 59 #define M_INFORMACION 0x45
williequesada 0:a1ce6cdc3045 60 #define M_OFF 0x46
williequesada 0:a1ce6cdc3045 61 #define M_PARQUIMETRO 0x47
williequesada 0:a1ce6cdc3045 62 #define M_MUNICIPIO 0x48
williequesada 0:a1ce6cdc3045 63 #define M_PRECIO 0x49
williequesada 0:a1ce6cdc3045 64 #define M_ATRAS 0x4A
williequesada 0:a1ce6cdc3045 65 #define M_SENAL 0x4B
williequesada 0:a1ce6cdc3045 66 #define M_HOSTING 0x4C
williequesada 0:a1ce6cdc3045 67 #define M_CONEXION_SIM 0x4E
williequesada 0:a1ce6cdc3045 68 #define M_PAPEL 0x4F
williequesada 0:a1ce6cdc3045 69 #define M_IMPRESION 0x50
williequesada 0:a1ce6cdc3045 70 #define M_CONEXION_IMP 0x51
williequesada 0:a1ce6cdc3045 71 #define M_LECTURA 0x52
williequesada 0:a1ce6cdc3045 72 #define M_CONEXION_LEC 0x53
williequesada 0:a1ce6cdc3045 73 #define M_PRUEBA_TECLA 0x54
williequesada 0:a1ce6cdc3045 74
williequesada 0:a1ce6cdc3045 75 PARKING_METER ParkingMeter(LED1, LED3, LED2, PC_8);
williequesada 0:a1ce6cdc3045 76
williequesada 0:a1ce6cdc3045 77 // PARKING_METER(ManteLed,UserLed,HostLed,MAX232);
williequesada 0:a1ce6cdc3045 78 // ParkingMeter.h es una clase creada para encender y apagar los leds que se usan en las operaciones:
williequesada 0:a1ce6cdc3045 79 // por ejemplo el led azul se enciende durante una operacion de hosting, verde en una operacion de
williequesada 0:a1ce6cdc3045 80 // mantenimiento y rojo para operaciones de usuario. Agregando que en tambien se enciende y apagan los
williequesada 0:a1ce6cdc3045 81 // integrados MAX232 usados en la comunicacion RS232. Adicionalmente se controla la frecuencia con la que
williequesada 0:a1ce6cdc3045 82 // el parquimetro actualiza su estado en el sistema y controla las alarmas.
williequesada 0:a1ce6cdc3045 83
williequesada 0:a1ce6cdc3045 84 BATTERY_PANEL Charger(PF_9, PF_7, PG_1);
williequesada 0:a1ce6cdc3045 85
williequesada 0:a1ce6cdc3045 86 // BATTERY_PANEL Charger(AnalogBattery, AnalogPanel, ControlCarga);
williequesada 0:a1ce6cdc3045 87 // La clase batteryPanel.h es una clase creada para controlar la carga de la bateria, este nos nos permite
williequesada 0:a1ce6cdc3045 88 // por medio de entradas analogas junto con divisores de tension conocer aproximadamente el voltaje en la
williequesada 0:a1ce6cdc3045 89 // bateria y salida del panel, agregango un tercera salida que permite controlar le paso de corriente entre
williequesada 0:a1ce6cdc3045 90 // el panel solar y la bateria.
williequesada 0:a1ce6cdc3045 91
williequesada 0:a1ce6cdc3045 92 GLCD Screen(PD_8,PE_10,PD_9,PE_12,PE_8,PE_14,PE_7,PE_15,PE_9,PE_11,PF_15,PE_13,PF_13,PB_1,PF_14);
williequesada 0:a1ce6cdc3045 93
williequesada 0:a1ce6cdc3045 94 // CLASS GLCD(D1,D2,D3,D4,D5,D6,D7,D8,CD,RESET,CE,WR,RD,Power,Light)
williequesada 0:a1ce6cdc3045 95 // GraphicLCD es una clase creada exclusivamente para el manejo de la pantalla grafica, en la cual tenemos
williequesada 0:a1ce6cdc3045 96 // un puerto paralelo de ocho bits y cinco senales de control, salida de encendido y para la retroiluminacion
williequesada 0:a1ce6cdc3045 97 // de la pantalla
williequesada 0:a1ce6cdc3045 98
williequesada 0:a1ce6cdc3045 99 PRINTER Impresora(PC_10,PC_11,PE_0,PB_10,PB_0,PC_2);
williequesada 0:a1ce6cdc3045 100
williequesada 0:a1ce6cdc3045 101 // CLASS PRINTER(TX,RX,PAPER,SELECT,RESET,POWER)
williequesada 0:a1ce6cdc3045 102 // La Clase ThermalPrinter es exclusiva para el manejo de la impresora, donde tenemos 5 hilos de control de los cuales
williequesada 0:a1ce6cdc3045 103 // dos son de comunicacion serial, tambien se tiene un salida para cortar la alimentacion electrica a la impresora, con
williequesada 0:a1ce6cdc3045 104 // la intension de disminuir el consumo de energia.
williequesada 0:a1ce6cdc3045 105
williequesada 0:a1ce6cdc3045 106 SLAVE Slave(PD_5,PD_6,PD_7);
williequesada 0:a1ce6cdc3045 107
williequesada 0:a1ce6cdc3045 108 // CLASS SLAVE(TX,RX,AWAKE)
williequesada 0:a1ce6cdc3045 109 // La clase Slave.h controla la tarjeta STM32-86 tiene una comunicacion serial bidiraccional entre las tarjetas, ademas
williequesada 0:a1ce6cdc3045 110 // de controlar el estado ya sea Sleep o Awake de la tarjeta esclava. Los #define que comienzan con Command y Hosting, son
williequesada 0:a1ce6cdc3045 111 // son las posibles intrucciones que se pueden enviar al esclavo para que este realice alguna operacion.
williequesada 0:a1ce6cdc3045 112
williequesada 0:a1ce6cdc3045 113 SWITCHES Doors(PC_4,PC_1);
williequesada 0:a1ce6cdc3045 114
williequesada 0:a1ce6cdc3045 115 // CLASS SWITCHES(SENSOR1,SENSOR2)
williequesada 0:a1ce6cdc3045 116 // La clase LimitSwitches.h se utiliza para controlar los finales de carrera colocados en las puertas del parquimtro, por
williequesada 0:a1ce6cdc3045 117 // trabaja de la mano con la clase parquimtro en las alarmas del sistema
williequesada 0:a1ce6cdc3045 118
williequesada 0:a1ce6cdc3045 119 RawSerial CardReader(PC_12,PD_2,9600);
williequesada 0:a1ce6cdc3045 120 DigitalOut CardReaderPower(PF_3);
williequesada 0:a1ce6cdc3045 121
williequesada 0:a1ce6cdc3045 122 // Serial CardReader(TX,RX,BAUT) y CardReaderPower(PF_3), son las salida para controlar el lector de tarjetas, este se enciende
williequesada 0:a1ce6cdc3045 123 // y apaga su interaccion con el usuario para reducir el consumo de enerigia.
williequesada 0:a1ce6cdc3045 124
williequesada 0:a1ce6cdc3045 125 Serial Computer(USBTX,USBRX,9600);
williequesada 0:a1ce6cdc3045 126
williequesada 0:a1ce6cdc3045 127 // Serial Computer es una herramienta para debuguear el sistema que me permite mostrar en el computador mediantre una conexion USB
williequesada 0:a1ce6cdc3045 128 // datos e instrucciones del priceso.
williequesada 0:a1ce6cdc3045 129
williequesada 0:a1ce6cdc3045 130 InterruptIn Configuracion(USER_BUTTON);
williequesada 0:a1ce6cdc3045 131
williequesada 0:a1ce6cdc3045 132 // Interrupt Configuration es una entrada en forma de push button que nos permite ingresar al modo de configuracion, por lo que se debe
williequesada 0:a1ce6cdc3045 133 // presionar dicho boton para ingresar a esta interfaz, esta entrada no se puede cambiar debido a que no todos los pines de la tarjeta soportan
williequesada 0:a1ce6cdc3045 134 // interrupciones de hardware en modo sleep.
williequesada 0:a1ce6cdc3045 135
williequesada 0:a1ce6cdc3045 136 DigitalOut Regulator5V(PA_1);//(PF_0);
williequesada 0:a1ce6cdc3045 137 DigitalOut Keypad_F1(PE_3);//(PF_0);
williequesada 0:a1ce6cdc3045 138 DigitalOut Keypad_F2(PF_0);//(PE_3);
williequesada 0:a1ce6cdc3045 139 DigitalOut Keypad_F3(PF_8);//(PF_1);
williequesada 0:a1ce6cdc3045 140 DigitalOut Keypad_F4(PF_1);//(PF_8);
williequesada 0:a1ce6cdc3045 141 InterruptIn Keypad_C1(PA_2);//(PA_0);
williequesada 0:a1ce6cdc3045 142 InterruptIn Keypad_C2(PA_0);//(PE_6);
williequesada 0:a1ce6cdc3045 143 InterruptIn Keypad_C3(PE_6);//(PC_5);
williequesada 0:a1ce6cdc3045 144 InterruptIn Keypad_C4(PC_5);//(PA_2);
williequesada 0:a1ce6cdc3045 145
williequesada 0:a1ce6cdc3045 146 // Corresponde a las entradas para el teclado de matrix 4x4 donde 4 de estos trabajan como salidas y los restantes como interrupciones,
williequesada 0:a1ce6cdc3045 147 // de las combinaciones del teclado de salidas e interrupciones se obtiene la tecla presionada por el usuario, indispensable considerar que las
williequesada 0:a1ce6cdc3045 148 // interrupciones no se pueden cambiar, debido a no todos los pines de la tarjeta soportan interrupciones de hardware en estado Sleep.
williequesada 0:a1ce6cdc3045 149
williequesada 0:a1ce6cdc3045 150 //-----------------------Conexiones GLCD T6963C---------------------------------
williequesada 0:a1ce6cdc3045 151 // 1 2 Vss Vss Ti Ti(NO Conectada)
williequesada 0:a1ce6cdc3045 152 // 3 4 Vcc Cte Vc Po
williequesada 0:a1ce6cdc3045 153 // 5 6 WR RD D14 D15
williequesada 0:a1ce6cdc3045 154 // 7 8 CE CD F12 F13
williequesada 0:a1ce6cdc3045 155 // 9 10 -V RST Po E9
williequesada 0:a1ce6cdc3045 156 // 11 12 D0 D1 E11 F14
williequesada 0:a1ce6cdc3045 157 // 13 14 D2 D3 E13 F15
williequesada 0:a1ce6cdc3045 158 // 15 16 D4 D5 D8 D9
williequesada 0:a1ce6cdc3045 159 // 17 18 D6 D7 E8 E7
williequesada 0:a1ce6cdc3045 160 // 19 20 NC NC
williequesada 0:a1ce6cdc3045 161 //
williequesada 0:a1ce6cdc3045 162 //-----------Conexiones Usadas--------- //-------Conexiones Usadas STM32-------
williequesada 0:a1ce6cdc3045 163 // ____________ // ___________
williequesada 0:a1ce6cdc3045 164 // 2 4 6 8 // F8 F5 F2 F0
williequesada 0:a1ce6cdc3045 165 // 1 3 5 7 // F9 F7 F3 F1
williequesada 0:a1ce6cdc3045 166 // ____________ // ___________
williequesada 0:a1ce6cdc3045 167 // APEM // APEM
williequesada 0:a1ce6cdc3045 168 // Serial number 12470157 // Serial number 12470157
williequesada 0:a1ce6cdc3045 169 //------------------------------------- //-------------------------------------
williequesada 0:a1ce6cdc3045 170 //
williequesada 0:a1ce6cdc3045 171 //----------------------CONEXIONES FUJITSU SERIAL PRINTER-----------------------
williequesada 0:a1ce6cdc3045 172 // Conector RS232C(ZHR-8)
williequesada 0:a1ce6cdc3045 173 // _ _ _ _ _ _ _ _
williequesada 0:a1ce6cdc3045 174 // ! ! ! ! ! ! ! ! ! 1->RXD 2->TXD 3->DTR 4->GND
williequesada 0:a1ce6cdc3045 175 // 1 2 3 4 5 6 7 8 5->DST 6->SLCTIN 7->INPRM 8->AFT
williequesada 0:a1ce6cdc3045 176 //
williequesada 0:a1ce6cdc3045 177 // Conector Power(PHR-2)
williequesada 0:a1ce6cdc3045 178 // _ _ _ _ _ _
williequesada 0:a1ce6cdc3045 179 // ! ! ! ! ! ! ! 1->VCC Logic Supply 2->GND Logic
williequesada 0:a1ce6cdc3045 180 // 1 2 3 4 5 6 4,3->GND Head/Motor 5,6->VCC Head/Motor
williequesada 0:a1ce6cdc3045 181
williequesada 0:a1ce6cdc3045 182 const char SOH=1;
williequesada 0:a1ce6cdc3045 183 const char EOT=4;
williequesada 0:a1ce6cdc3045 184 const char ADDR=0;
williequesada 0:a1ce6cdc3045 185 const char LEN=0;
williequesada 0:a1ce6cdc3045 186 const char CARD_POSITION='8';
williequesada 0:a1ce6cdc3045 187 const char DEV_RESET=127;
williequesada 0:a1ce6cdc3045 188 const char ARM_MODE='P';
williequesada 0:a1ce6cdc3045 189 const char ARM_DEBUG='p';
williequesada 0:a1ce6cdc3045 190 const char ARM_ABORT=27;
williequesada 0:a1ce6cdc3045 191 const char MAG_ISO_T2='R';
williequesada 0:a1ce6cdc3045 192 const char BBCA='=';
williequesada 0:a1ce6cdc3045 193 const char BBCE='U';
williequesada 0:a1ce6cdc3045 194 const char BBCF='u';
williequesada 0:a1ce6cdc3045 195 const char BBCG=30;
williequesada 0:a1ce6cdc3045 196 const char BBCI='z';
williequesada 0:a1ce6cdc3045 197 const char BBCK='W';
williequesada 0:a1ce6cdc3045 198 const char R_ACTION='^';
williequesada 0:a1ce6cdc3045 199 const char R_ERROR='*';
williequesada 0:a1ce6cdc3045 200 const char R_INVALID='!';
williequesada 0:a1ce6cdc3045 201 const char R_NO_DATA='+';
williequesada 0:a1ce6cdc3045 202 const char R_COMAND_ERROR='?';
williequesada 0:a1ce6cdc3045 203 const char R_START=':';
williequesada 0:a1ce6cdc3045 204 const char R_POSITION1='q';
williequesada 0:a1ce6cdc3045 205 const char R_POSITION2='s';
williequesada 0:a1ce6cdc3045 206 const char R_NO_MAG_CARD='>';
williequesada 0:a1ce6cdc3045 207 const char R_MAG_DETECT_ON='(';
williequesada 0:a1ce6cdc3045 208 const char R_MAG_DETECT_OFF=')';
williequesada 0:a1ce6cdc3045 209
williequesada 0:a1ce6cdc3045 210 char StateReader[7]= "AAAAAA";
williequesada 0:a1ce6cdc3045 211 char CardReader_Buffer[255];
williequesada 0:a1ce6cdc3045 212 int CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 213
williequesada 0:a1ce6cdc3045 214 char Tecla;
williequesada 0:a1ce6cdc3045 215 char Tecla_Before;
williequesada 0:a1ce6cdc3045 216 char Comando;
williequesada 0:a1ce6cdc3045 217 char InByte;
williequesada 0:a1ce6cdc3045 218 uint32_t Inicio, Fin, Transcurrido;
williequesada 0:a1ce6cdc3045 219
williequesada 0:a1ce6cdc3045 220 char Tiempo[6];
williequesada 0:a1ce6cdc3045 221 int TiempoMinutos;
williequesada 0:a1ce6cdc3045 222 int NumeroTiquetePrueba=1;
williequesada 0:a1ce6cdc3045 223 char Importe[8];
williequesada 0:a1ce6cdc3045 224 char Espacio[6];
williequesada 0:a1ce6cdc3045 225 char Track2[38]="0000000000000000000000000000000000000";
williequesada 0:a1ce6cdc3045 226
pabloandres2906 1:4cdf726a3497 227 char Parquimetro[5]="1068";
williequesada 0:a1ce6cdc3045 228 char Municipio[9]="San Jose";//"San Jose";
williequesada 0:a1ce6cdc3045 229 char CodigoMunicipio[3]="01";
williequesada 0:a1ce6cdc3045 230
williequesada 0:a1ce6cdc3045 231 char NumeroRespuesta[7]="000000";
williequesada 0:a1ce6cdc3045 232 char FechaRespuesta[11]="00-00-0000";
williequesada 0:a1ce6cdc3045 233 char HoraRespuesta[6]="00:00";
williequesada 0:a1ce6cdc3045 234 char HoraFinal[6]="00:00";
williequesada 0:a1ce6cdc3045 235 char Alarmas[7]="AAAAAA";
williequesada 0:a1ce6cdc3045 236
williequesada 0:a1ce6cdc3045 237 char PapelDisponible[5]="0000";
williequesada 0:a1ce6cdc3045 238 char Clave[4]= {'4','3','2','2'};
williequesada 0:a1ce6cdc3045 239 char Progreso[3];
pabloandres2906 1:4cdf726a3497 240 int Precio=420;
williequesada 0:a1ce6cdc3045 241 int Papel=4000;
williequesada 0:a1ce6cdc3045 242 bool MantenimientoInterruption=0;
williequesada 0:a1ce6cdc3045 243 uint8_t Message[] ="{\"municipio\":\"Santa Ana\",\"id\":1068,\"place\":\"2222\",\"time\":120,\"t2\":\"%5303105315252296=2108?\"}";
williequesada 0:a1ce6cdc3045 244
williequesada 0:a1ce6cdc3045 245 Ticker Host;
williequesada 0:a1ce6cdc3045 246 Timer BaseClock;
williequesada 0:a1ce6cdc3045 247
williequesada 0:a1ce6cdc3045 248 void Keypad_Init()
williequesada 0:a1ce6cdc3045 249 {
williequesada 0:a1ce6cdc3045 250 Tecla_Before=NO_KEY;
williequesada 0:a1ce6cdc3045 251 Keypad_F1=0;
williequesada 0:a1ce6cdc3045 252 Keypad_F2=0;
williequesada 0:a1ce6cdc3045 253 Keypad_F3=0;
williequesada 0:a1ce6cdc3045 254 Keypad_F4=0;
williequesada 0:a1ce6cdc3045 255 }
williequesada 0:a1ce6cdc3045 256
williequesada 0:a1ce6cdc3045 257 char KeyPad_Read(void)
williequesada 0:a1ce6cdc3045 258 {
williequesada 0:a1ce6cdc3045 259 Keypad_F1=1;
williequesada 0:a1ce6cdc3045 260 Keypad_F2=0;
williequesada 0:a1ce6cdc3045 261 Keypad_F3=0;
williequesada 0:a1ce6cdc3045 262 Keypad_F4=0;
williequesada 0:a1ce6cdc3045 263 wait_us(10);
williequesada 0:a1ce6cdc3045 264 if(Keypad_C1.read()) {
williequesada 0:a1ce6cdc3045 265 if(Tecla_Before!='1') {
williequesada 0:a1ce6cdc3045 266 Tecla_Before='1';
williequesada 0:a1ce6cdc3045 267 return '1';
williequesada 0:a1ce6cdc3045 268 } else {
williequesada 0:a1ce6cdc3045 269 return NO_KEY;
williequesada 0:a1ce6cdc3045 270 }
williequesada 0:a1ce6cdc3045 271 }
williequesada 0:a1ce6cdc3045 272 if(Keypad_C2.read()) {
williequesada 0:a1ce6cdc3045 273 if(Tecla_Before!='2') {
williequesada 0:a1ce6cdc3045 274 Tecla_Before='2';
williequesada 0:a1ce6cdc3045 275 return '2';
williequesada 0:a1ce6cdc3045 276 } else {
williequesada 0:a1ce6cdc3045 277 return NO_KEY;
williequesada 0:a1ce6cdc3045 278 }
williequesada 0:a1ce6cdc3045 279 }
williequesada 0:a1ce6cdc3045 280 if(Keypad_C3.read()) {
williequesada 0:a1ce6cdc3045 281 if(Tecla_Before!='3') {
williequesada 0:a1ce6cdc3045 282 Tecla_Before='3';
williequesada 0:a1ce6cdc3045 283 return '3';
williequesada 0:a1ce6cdc3045 284 } else {
williequesada 0:a1ce6cdc3045 285 return NO_KEY;
williequesada 0:a1ce6cdc3045 286 }
williequesada 0:a1ce6cdc3045 287 }
williequesada 0:a1ce6cdc3045 288 if(Keypad_C4.read()) {
williequesada 0:a1ce6cdc3045 289 if(Tecla_Before!='A') {
williequesada 0:a1ce6cdc3045 290 Tecla_Before='A';
williequesada 0:a1ce6cdc3045 291 return 'A';
williequesada 0:a1ce6cdc3045 292 } else {
williequesada 0:a1ce6cdc3045 293 return NO_KEY;
williequesada 0:a1ce6cdc3045 294 }
williequesada 0:a1ce6cdc3045 295 }
williequesada 0:a1ce6cdc3045 296
williequesada 0:a1ce6cdc3045 297 Keypad_F1=0;
williequesada 0:a1ce6cdc3045 298 Keypad_F2=1;
williequesada 0:a1ce6cdc3045 299 Keypad_F3=0;
williequesada 0:a1ce6cdc3045 300 Keypad_F4=0;
williequesada 0:a1ce6cdc3045 301 wait_us(10);
williequesada 0:a1ce6cdc3045 302 if(Keypad_C1.read()) {
williequesada 0:a1ce6cdc3045 303 if(Tecla_Before!='4') {
williequesada 0:a1ce6cdc3045 304 Tecla_Before='4';
williequesada 0:a1ce6cdc3045 305 return '4';
williequesada 0:a1ce6cdc3045 306 } else {
williequesada 0:a1ce6cdc3045 307 return NO_KEY;
williequesada 0:a1ce6cdc3045 308 }
williequesada 0:a1ce6cdc3045 309 }
williequesada 0:a1ce6cdc3045 310 if(Keypad_C2.read()) {
williequesada 0:a1ce6cdc3045 311 if(Tecla_Before!='5') {
williequesada 0:a1ce6cdc3045 312 Tecla_Before='5';
williequesada 0:a1ce6cdc3045 313 return '5';
williequesada 0:a1ce6cdc3045 314 } else {
williequesada 0:a1ce6cdc3045 315 return NO_KEY;
williequesada 0:a1ce6cdc3045 316 }
williequesada 0:a1ce6cdc3045 317 }
williequesada 0:a1ce6cdc3045 318 if(Keypad_C3.read()) {
williequesada 0:a1ce6cdc3045 319 if(Tecla_Before!='6') {
williequesada 0:a1ce6cdc3045 320 Tecla_Before='6';
williequesada 0:a1ce6cdc3045 321 return '6';
williequesada 0:a1ce6cdc3045 322 } else {
williequesada 0:a1ce6cdc3045 323 return NO_KEY;
williequesada 0:a1ce6cdc3045 324 }
williequesada 0:a1ce6cdc3045 325 }
williequesada 0:a1ce6cdc3045 326 if(Keypad_C4.read()) {
williequesada 0:a1ce6cdc3045 327 if(Tecla_Before!='B') {
williequesada 0:a1ce6cdc3045 328 Tecla_Before='B';
williequesada 0:a1ce6cdc3045 329 return 'B';
williequesada 0:a1ce6cdc3045 330 } else {
williequesada 0:a1ce6cdc3045 331 return NO_KEY;
williequesada 0:a1ce6cdc3045 332 }
williequesada 0:a1ce6cdc3045 333 }
williequesada 0:a1ce6cdc3045 334
williequesada 0:a1ce6cdc3045 335 Keypad_F1=0;
williequesada 0:a1ce6cdc3045 336 Keypad_F2=0;
williequesada 0:a1ce6cdc3045 337 Keypad_F3=1;
williequesada 0:a1ce6cdc3045 338 Keypad_F4=0;
williequesada 0:a1ce6cdc3045 339 wait_us(10);
williequesada 0:a1ce6cdc3045 340 if(Keypad_C1.read()) {
williequesada 0:a1ce6cdc3045 341 if(Tecla_Before!='7') {
williequesada 0:a1ce6cdc3045 342 Tecla_Before='7';
williequesada 0:a1ce6cdc3045 343 return '7';
williequesada 0:a1ce6cdc3045 344 } else {
williequesada 0:a1ce6cdc3045 345 return NO_KEY;
williequesada 0:a1ce6cdc3045 346 }
williequesada 0:a1ce6cdc3045 347 }
williequesada 0:a1ce6cdc3045 348 if(Keypad_C2.read()) {
williequesada 0:a1ce6cdc3045 349 if(Tecla_Before!='8') {
williequesada 0:a1ce6cdc3045 350 Tecla_Before='8';
williequesada 0:a1ce6cdc3045 351 return '8';
williequesada 0:a1ce6cdc3045 352 } else {
williequesada 0:a1ce6cdc3045 353 return NO_KEY;
williequesada 0:a1ce6cdc3045 354 }
williequesada 0:a1ce6cdc3045 355 }
williequesada 0:a1ce6cdc3045 356 if(Keypad_C3.read()) {
williequesada 0:a1ce6cdc3045 357 if(Tecla_Before!='9') {
williequesada 0:a1ce6cdc3045 358 Tecla_Before='9';
williequesada 0:a1ce6cdc3045 359 return '9';
williequesada 0:a1ce6cdc3045 360 } else {
williequesada 0:a1ce6cdc3045 361 return NO_KEY;
williequesada 0:a1ce6cdc3045 362 }
williequesada 0:a1ce6cdc3045 363 }
williequesada 0:a1ce6cdc3045 364 if(Keypad_C4.read()) {
williequesada 0:a1ce6cdc3045 365 if(Tecla_Before!='C') {
williequesada 0:a1ce6cdc3045 366 Tecla_Before='C';
williequesada 0:a1ce6cdc3045 367 return 'C';
williequesada 0:a1ce6cdc3045 368 } else {
williequesada 0:a1ce6cdc3045 369 return NO_KEY;
williequesada 0:a1ce6cdc3045 370 }
williequesada 0:a1ce6cdc3045 371 }
williequesada 0:a1ce6cdc3045 372
williequesada 0:a1ce6cdc3045 373 Keypad_F1=0;
williequesada 0:a1ce6cdc3045 374 Keypad_F2=0;
williequesada 0:a1ce6cdc3045 375 Keypad_F3=0;
williequesada 0:a1ce6cdc3045 376 Keypad_F4=1;
williequesada 0:a1ce6cdc3045 377 wait_us(10);
williequesada 0:a1ce6cdc3045 378 if(Keypad_C1.read()) {
williequesada 0:a1ce6cdc3045 379 if(Tecla_Before!='F') {
williequesada 0:a1ce6cdc3045 380 Tecla_Before='F';
williequesada 0:a1ce6cdc3045 381 return 'F';
williequesada 0:a1ce6cdc3045 382 } else {
williequesada 0:a1ce6cdc3045 383 return NO_KEY;
williequesada 0:a1ce6cdc3045 384 }
williequesada 0:a1ce6cdc3045 385 }
williequesada 0:a1ce6cdc3045 386 if(Keypad_C2.read()) {
williequesada 0:a1ce6cdc3045 387 if(Tecla_Before!='0') {
williequesada 0:a1ce6cdc3045 388 Tecla_Before='0';
williequesada 0:a1ce6cdc3045 389 return '0';
williequesada 0:a1ce6cdc3045 390 } else {
williequesada 0:a1ce6cdc3045 391 return NO_KEY;
williequesada 0:a1ce6cdc3045 392 }
williequesada 0:a1ce6cdc3045 393 }
williequesada 0:a1ce6cdc3045 394 if(Keypad_C3.read()) {
williequesada 0:a1ce6cdc3045 395 if(Tecla_Before!='E') {
williequesada 0:a1ce6cdc3045 396 Tecla_Before='E';
williequesada 0:a1ce6cdc3045 397 return 'E';
williequesada 0:a1ce6cdc3045 398 } else {
williequesada 0:a1ce6cdc3045 399 return NO_KEY;
williequesada 0:a1ce6cdc3045 400 }
williequesada 0:a1ce6cdc3045 401 }
williequesada 0:a1ce6cdc3045 402 if(Keypad_C4.read()) {
williequesada 0:a1ce6cdc3045 403 if(Tecla_Before!='D') {
williequesada 0:a1ce6cdc3045 404 Tecla_Before='D';
williequesada 0:a1ce6cdc3045 405 return 'D';
williequesada 0:a1ce6cdc3045 406 } else {
williequesada 0:a1ce6cdc3045 407 return NO_KEY;
williequesada 0:a1ce6cdc3045 408 }
williequesada 0:a1ce6cdc3045 409 }
williequesada 0:a1ce6cdc3045 410
williequesada 0:a1ce6cdc3045 411 Tecla_Before=NO_KEY;
williequesada 0:a1ce6cdc3045 412 return NO_KEY;
williequesada 0:a1ce6cdc3045 413 }
williequesada 0:a1ce6cdc3045 414
williequesada 0:a1ce6cdc3045 415 void KeyPad_InterruptDisable()
williequesada 0:a1ce6cdc3045 416 {
williequesada 0:a1ce6cdc3045 417 Keypad_C1.disable_irq();
williequesada 0:a1ce6cdc3045 418 Keypad_C2.disable_irq();
williequesada 0:a1ce6cdc3045 419 Keypad_C3.disable_irq();
williequesada 0:a1ce6cdc3045 420 Keypad_C4.disable_irq();
williequesada 0:a1ce6cdc3045 421 }
williequesada 0:a1ce6cdc3045 422
williequesada 0:a1ce6cdc3045 423 void KeyPad_InterruptEnable()
williequesada 0:a1ce6cdc3045 424 {
williequesada 0:a1ce6cdc3045 425 Keypad_C1.enable_irq();
williequesada 0:a1ce6cdc3045 426 Keypad_C2.enable_irq();
williequesada 0:a1ce6cdc3045 427 Keypad_C3.enable_irq();
williequesada 0:a1ce6cdc3045 428 Keypad_C4.enable_irq();
williequesada 0:a1ce6cdc3045 429 Keypad_F1=1;
williequesada 0:a1ce6cdc3045 430 Keypad_F2=1;
williequesada 0:a1ce6cdc3045 431 Keypad_F3=1;
williequesada 0:a1ce6cdc3045 432 Keypad_F4=1;
williequesada 0:a1ce6cdc3045 433 }
williequesada 0:a1ce6cdc3045 434
williequesada 0:a1ce6cdc3045 435 //-----------------------------------------------------------------------------------------------------------------------------------------------------
williequesada 0:a1ce6cdc3045 436 void PantallaInicio()
williequesada 0:a1ce6cdc3045 437 {
williequesada 0:a1ce6cdc3045 438 Computer.printf("Pantala de Inicio\n");
williequesada 0:a1ce6cdc3045 439
williequesada 0:a1ce6cdc3045 440 Screen.Limits();
williequesada 0:a1ce6cdc3045 441 Screen.PutString(45,19,"Prueba E-Park");
williequesada 0:a1ce6cdc3045 442 Screen.Show();
williequesada 0:a1ce6cdc3045 443 wait_ms(2000);
williequesada 0:a1ce6cdc3045 444
williequesada 0:a1ce6cdc3045 445 Screen.Limits();
williequesada 0:a1ce6cdc3045 446 Screen.PutString(58,12,"Grupo Setex");
williequesada 0:a1ce6cdc3045 447 Screen.PutString(65,34,"Costa Rica");
williequesada 0:a1ce6cdc3045 448 Screen.Show();
williequesada 0:a1ce6cdc3045 449 wait_ms(3000);
williequesada 0:a1ce6cdc3045 450 }
williequesada 0:a1ce6cdc3045 451
williequesada 0:a1ce6cdc3045 452 char GetTime(char Salida,uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 453 {
williequesada 0:a1ce6cdc3045 454 int PositionTime=3;
williequesada 0:a1ce6cdc3045 455 int Hora=PositionTime/6;
williequesada 0:a1ce6cdc3045 456 int Minuto=(PositionTime%6)*10;
williequesada 0:a1ce6cdc3045 457 int Costo=(PositionTime*Precio)/3;
williequesada 0:a1ce6cdc3045 458 TiempoMinutos=PositionTime*10;
williequesada 0:a1ce6cdc3045 459
williequesada 0:a1ce6cdc3045 460 sprintf(Tiempo,"0:30");
williequesada 0:a1ce6cdc3045 461 sprintf(Importe,"%i*",Costo);
williequesada 0:a1ce6cdc3045 462
williequesada 0:a1ce6cdc3045 463 Screen.PutString(15,12,"Tiempo:");
williequesada 0:a1ce6cdc3045 464 Screen.PutString(88,12,Tiempo);
williequesada 0:a1ce6cdc3045 465 Screen.PutString(15,34,"Precio:");
williequesada 0:a1ce6cdc3045 466 Screen.PutString(85,34,Importe);
williequesada 0:a1ce6cdc3045 467 Screen.PutString(141,46,"Confirmar");
williequesada 0:a1ce6cdc3045 468 Screen.Limits();
williequesada 0:a1ce6cdc3045 469 Screen.Show();
williequesada 0:a1ce6cdc3045 470
williequesada 0:a1ce6cdc3045 471 Computer.printf("Tiempo y precio \n");
williequesada 0:a1ce6cdc3045 472 Computer.printf("%s %s\n",Tiempo,Importe);
williequesada 0:a1ce6cdc3045 473
williequesada 0:a1ce6cdc3045 474 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 475 Keypad_Init();
williequesada 0:a1ce6cdc3045 476 while(true) {
williequesada 0:a1ce6cdc3045 477
williequesada 0:a1ce6cdc3045 478 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 479 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 480 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 481 Screen.Clean();
williequesada 0:a1ce6cdc3045 482 return USER_FINISH;
williequesada 0:a1ce6cdc3045 483 }
williequesada 0:a1ce6cdc3045 484
williequesada 0:a1ce6cdc3045 485 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 486 if (Tecla!=NO_KEY) { // Se valida que se ingrese una tecla valida por el teclado
williequesada 0:a1ce6cdc3045 487 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 488
williequesada 0:a1ce6cdc3045 489 if ((Tecla=='E')&&(PositionTime<72)) { // Sumar 30 minutos, maximos 12 horas
williequesada 0:a1ce6cdc3045 490 PositionTime+=3;
williequesada 0:a1ce6cdc3045 491 }
williequesada 0:a1ce6cdc3045 492 if ((Tecla=='F')&&(PositionTime>3)) { // Restar 10 minutos, minimo 30 minutos
williequesada 0:a1ce6cdc3045 493 if(CodigoMunicipio[1]=='1'){
williequesada 0:a1ce6cdc3045 494 PositionTime-=1;
williequesada 0:a1ce6cdc3045 495 }
williequesada 0:a1ce6cdc3045 496 if(CodigoMunicipio[1]=='3'){
williequesada 0:a1ce6cdc3045 497 PositionTime-=3;
williequesada 0:a1ce6cdc3045 498 }
williequesada 0:a1ce6cdc3045 499 }
williequesada 0:a1ce6cdc3045 500 if (Tecla=='C') { // Cancelar operacion
williequesada 0:a1ce6cdc3045 501 Screen.Clean();
williequesada 0:a1ce6cdc3045 502 return USER_FINISH;
williequesada 0:a1ce6cdc3045 503 }
williequesada 0:a1ce6cdc3045 504 if (Tecla=='D') { // En caso de confirmacion
williequesada 0:a1ce6cdc3045 505 Screen.PutString(15,12,"Realizando");
williequesada 0:a1ce6cdc3045 506 Screen.PutString(15,34,"Operacion...");
williequesada 0:a1ce6cdc3045 507 Screen.PutChar(84,33,'!');
williequesada 0:a1ce6cdc3045 508 Screen.Limits();
williequesada 0:a1ce6cdc3045 509 Screen.Show();
williequesada 0:a1ce6cdc3045 510 Slave.Set_Time(TiempoMinutos);
williequesada 0:a1ce6cdc3045 511 return Salida;
williequesada 0:a1ce6cdc3045 512 }
williequesada 0:a1ce6cdc3045 513
williequesada 0:a1ce6cdc3045 514 Hora=PositionTime/6;
williequesada 0:a1ce6cdc3045 515 Minuto=(PositionTime%6)*10;
williequesada 0:a1ce6cdc3045 516 Costo=(PositionTime*Precio)/3;
williequesada 0:a1ce6cdc3045 517 TiempoMinutos=PositionTime*10;
williequesada 0:a1ce6cdc3045 518
williequesada 0:a1ce6cdc3045 519 if(Minuto==0) { // Calcular tiempo en horas y minutos
williequesada 0:a1ce6cdc3045 520 sprintf(Tiempo,"%i:0%i",Hora,Minuto);
williequesada 0:a1ce6cdc3045 521 sprintf(Importe,"%i*",Costo);
williequesada 0:a1ce6cdc3045 522 } else {
williequesada 0:a1ce6cdc3045 523 sprintf(Tiempo,"%i:%i",Hora,Minuto);
williequesada 0:a1ce6cdc3045 524 sprintf(Importe,"%i*",Costo);
williequesada 0:a1ce6cdc3045 525 }
williequesada 0:a1ce6cdc3045 526
williequesada 0:a1ce6cdc3045 527 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 528 Screen.PutString(15,12,"Tiempo:");
williequesada 0:a1ce6cdc3045 529 Screen.PutString(88,12,Tiempo);
williequesada 0:a1ce6cdc3045 530 Screen.PutString(15,34,"Precio:");
williequesada 0:a1ce6cdc3045 531 Screen.PutString(85,34,Importe);
williequesada 0:a1ce6cdc3045 532 Screen.PutString(141,46,"Confirmar");
williequesada 0:a1ce6cdc3045 533 Screen.Limits();
williequesada 0:a1ce6cdc3045 534 Screen.Show();
williequesada 0:a1ce6cdc3045 535
williequesada 0:a1ce6cdc3045 536 Computer.printf("%s %s\n",Tiempo,Importe);
williequesada 0:a1ce6cdc3045 537 }
williequesada 0:a1ce6cdc3045 538 }
williequesada 0:a1ce6cdc3045 539 }
williequesada 0:a1ce6cdc3045 540
williequesada 0:a1ce6cdc3045 541 char GetPlace(char Salida,uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 542 {
williequesada 0:a1ce6cdc3045 543 uint8_t PositionPlace=0;
williequesada 0:a1ce6cdc3045 544
pabloandres2906 1:4cdf726a3497 545 sprintf(Espacio,"_ "); //char Espacio que contiene la posicion para parquear
williequesada 0:a1ce6cdc3045 546
williequesada 0:a1ce6cdc3045 547 Screen.Limits();
pabloandres2906 1:4cdf726a3497 548 Screen.PutString(15,12,"Numero de espacio:"); // interactua con el usuario a traves de la pantalla y el puerto usb
williequesada 0:a1ce6cdc3045 549 Screen.PutChar(28,11,'!');
williequesada 0:a1ce6cdc3045 550 Screen.PutString(15,34,Espacio);
williequesada 0:a1ce6cdc3045 551 Screen.Show();
williequesada 0:a1ce6cdc3045 552
williequesada 0:a1ce6cdc3045 553 Computer.printf("Numero de espacio:\n");
williequesada 0:a1ce6cdc3045 554 Computer.printf("%s\n",Espacio);
williequesada 0:a1ce6cdc3045 555
williequesada 0:a1ce6cdc3045 556 Inicio=BaseClock.read_ms();
pabloandres2906 1:4cdf726a3497 557 Keypad_Init(); //inicia teclado
williequesada 0:a1ce6cdc3045 558 while(true) {
pabloandres2906 1:4cdf726a3497 559 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 560 Transcurrido=Fin-Inicio;
pabloandres2906 1:4cdf726a3497 561 if(Transcurrido>TimeOut) { //si se supera el timeout sin presionar teclas se finaliza la operacion de usuario
williequesada 0:a1ce6cdc3045 562 Screen.Clean();
williequesada 0:a1ce6cdc3045 563 return USER_FINISH;
williequesada 0:a1ce6cdc3045 564 }
williequesada 0:a1ce6cdc3045 565
williequesada 0:a1ce6cdc3045 566 Tecla=KeyPad_Read();
pabloandres2906 1:4cdf726a3497 567 if (Tecla!=NO_KEY) { // Se verifica que se ingrese una tecla valida
pabloandres2906 1:4cdf726a3497 568 Inicio=BaseClock.read_ms(); //se reinicia la cuenta de tiempo
williequesada 0:a1ce6cdc3045 569 if (((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9'))&&(PositionPlace<4)) { //Agregar un digito
williequesada 0:a1ce6cdc3045 570 Espacio[PositionPlace]=Tecla;
williequesada 0:a1ce6cdc3045 571 PositionPlace++;
williequesada 0:a1ce6cdc3045 572 Espacio[PositionPlace]='_';
williequesada 0:a1ce6cdc3045 573 Espacio[4]=' ';
pabloandres2906 1:4cdf726a3497 574 Espacio[5]='\0'; //agrega el numero correspondiente a Espacio
williequesada 0:a1ce6cdc3045 575 }
williequesada 0:a1ce6cdc3045 576 if ((Tecla=='B')&&(PositionPlace>0)) { //Borrar el ultimo digito
williequesada 0:a1ce6cdc3045 577 Espacio[PositionPlace]=' ';
williequesada 0:a1ce6cdc3045 578 PositionPlace--;
williequesada 0:a1ce6cdc3045 579 Espacio[PositionPlace]='_';
williequesada 0:a1ce6cdc3045 580 Espacio[4]=' ';
williequesada 0:a1ce6cdc3045 581 Espacio[5]='\0';
williequesada 0:a1ce6cdc3045 582 }
pabloandres2906 1:4cdf726a3497 583 if (Tecla=='C') { //Cancelar operacion, finaliza operacion de usuario
williequesada 0:a1ce6cdc3045 584 Screen.Clean();
williequesada 0:a1ce6cdc3045 585 return USER_FINISH;
williequesada 0:a1ce6cdc3045 586 }
williequesada 0:a1ce6cdc3045 587 if ((Tecla=='D')&&(PositionPlace==4)) { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 588 Slave.Set_Place(Espacio);
williequesada 0:a1ce6cdc3045 589 return Salida;
williequesada 0:a1ce6cdc3045 590 }
williequesada 0:a1ce6cdc3045 591 if(PositionPlace==4) { //Se debe confirmar cuando estan los 4 digitos
williequesada 0:a1ce6cdc3045 592 Screen.Limits();
williequesada 0:a1ce6cdc3045 593 Screen.PutString(15,12,"Numero de espacio:");
williequesada 0:a1ce6cdc3045 594 Screen.PutChar(28,11,'!');
williequesada 0:a1ce6cdc3045 595 Screen.PutString(15,34,Espacio);
williequesada 0:a1ce6cdc3045 596 Screen.PutString(141,46,"Confirmar");
williequesada 0:a1ce6cdc3045 597 Screen.Show();
williequesada 0:a1ce6cdc3045 598 } else {
williequesada 0:a1ce6cdc3045 599 Screen.Limits();
williequesada 0:a1ce6cdc3045 600 Screen.PutString(15,12,"Numero de espacio:");
williequesada 0:a1ce6cdc3045 601 Screen.PutChar(28,11,'!');
williequesada 0:a1ce6cdc3045 602 Screen.PutString(15,34,Espacio);
williequesada 0:a1ce6cdc3045 603 Screen.Show();
williequesada 0:a1ce6cdc3045 604 }
williequesada 0:a1ce6cdc3045 605 Computer.printf("%s\n",Espacio);
williequesada 0:a1ce6cdc3045 606 }
williequesada 0:a1ce6cdc3045 607 }
williequesada 0:a1ce6cdc3045 608 }
williequesada 0:a1ce6cdc3045 609
williequesada 0:a1ce6cdc3045 610
williequesada 0:a1ce6cdc3045 611 void Interrupt_CardReader()
williequesada 0:a1ce6cdc3045 612 {
williequesada 0:a1ce6cdc3045 613 if(CardReader.readable()) {
williequesada 0:a1ce6cdc3045 614 CardReader_Buffer[CardReader_Counter]=CardReader.getc();
williequesada 0:a1ce6cdc3045 615 CardReader_Counter++;
williequesada 0:a1ce6cdc3045 616 }
williequesada 0:a1ce6cdc3045 617 }
williequesada 0:a1ce6cdc3045 618
williequesada 0:a1ce6cdc3045 619 int ResetCard()
williequesada 0:a1ce6cdc3045 620 {
williequesada 0:a1ce6cdc3045 621 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 622 StateReader[0]='S';
williequesada 0:a1ce6cdc3045 623 Computer.printf("\n Reset card reader");
williequesada 0:a1ce6cdc3045 624 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 625 CardReader.putc(SOH); // 00000001
williequesada 0:a1ce6cdc3045 626 CardReader.putc(ADDR); // 00000000
williequesada 0:a1ce6cdc3045 627 CardReader.putc(LEN); // 00000000
williequesada 0:a1ce6cdc3045 628 CardReader.putc(LEN); // 00000000
williequesada 0:a1ce6cdc3045 629 CardReader.putc(DEV_RESET); // 01111111
williequesada 0:a1ce6cdc3045 630 CardReader.putc(EOT); // 00000100
williequesada 0:a1ce6cdc3045 631 CardReader.putc(BBCI); // 01111010
williequesada 0:a1ce6cdc3045 632 }
williequesada 0:a1ce6cdc3045 633 wait_ms(2000);
williequesada 0:a1ce6cdc3045 634 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 635 if(CardReader_Buffer[i]==R_START) {
williequesada 0:a1ce6cdc3045 636 Computer.printf("\n Start\n"); // Encendido
williequesada 0:a1ce6cdc3045 637 StateReader[0]='A';
williequesada 0:a1ce6cdc3045 638 ParkingMeter.AlarmCall(1,'A');
williequesada 0:a1ce6cdc3045 639 return 1;
williequesada 0:a1ce6cdc3045 640 }
williequesada 0:a1ce6cdc3045 641 if(CardReader_Buffer[i]==R_INVALID) {
williequesada 0:a1ce6cdc3045 642 Computer.printf("\n Invalid "); // Comando Invalido
williequesada 0:a1ce6cdc3045 643 StateReader[0]='N';
williequesada 0:a1ce6cdc3045 644 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 645 return 0;
williequesada 0:a1ce6cdc3045 646 }
williequesada 0:a1ce6cdc3045 647 if(CardReader_Buffer[i]==R_ERROR) {
williequesada 0:a1ce6cdc3045 648 Computer.printf("\n Error "); // Error
williequesada 0:a1ce6cdc3045 649 StateReader[0]='E';
williequesada 0:a1ce6cdc3045 650 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 651 return 0;
williequesada 0:a1ce6cdc3045 652 }
williequesada 0:a1ce6cdc3045 653 if(CardReader_Buffer[i]==R_COMAND_ERROR) {
williequesada 0:a1ce6cdc3045 654 Computer.printf("\n Comando error "); // Error en comando
williequesada 0:a1ce6cdc3045 655 StateReader[0]='C';
williequesada 0:a1ce6cdc3045 656 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 657 return 0;
williequesada 0:a1ce6cdc3045 658 }
williequesada 0:a1ce6cdc3045 659 }
williequesada 0:a1ce6cdc3045 660 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 661 return 2;
williequesada 0:a1ce6cdc3045 662 }
williequesada 0:a1ce6cdc3045 663
williequesada 0:a1ce6cdc3045 664 void DetectionCard(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 665 {
williequesada 0:a1ce6cdc3045 666 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 667 StateReader[1]='S';
williequesada 0:a1ce6cdc3045 668 StateReader[2]='S';
williequesada 0:a1ce6cdc3045 669 StateReader[3]='S';
williequesada 0:a1ce6cdc3045 670 if(StateReader[0]=='A') { // Se envia el comando Arm Debug
williequesada 0:a1ce6cdc3045 671 Computer.printf("\n Introducir tarjeta");
williequesada 0:a1ce6cdc3045 672 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 673 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 674 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 675 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 676 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 677 CardReader.putc(ARM_DEBUG);
williequesada 0:a1ce6cdc3045 678 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 679 CardReader.putc(BBCF);
williequesada 0:a1ce6cdc3045 680 }
williequesada 0:a1ce6cdc3045 681 wait_ms(500);
williequesada 0:a1ce6cdc3045 682 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 683 if(CardReader_Buffer[i]==R_ACTION) {
williequesada 0:a1ce6cdc3045 684 Computer.printf("\n ACTION "); // Accion ejecutada
williequesada 0:a1ce6cdc3045 685 StateReader[1]='A';
williequesada 0:a1ce6cdc3045 686 ParkingMeter.AlarmCall(1,'A');
williequesada 0:a1ce6cdc3045 687 }
williequesada 0:a1ce6cdc3045 688 if(CardReader_Buffer[i]==R_INVALID) {
williequesada 0:a1ce6cdc3045 689 Computer.printf("\n Invalido "); // Comando Invalido
williequesada 0:a1ce6cdc3045 690 StateReader[1]='N';
williequesada 0:a1ce6cdc3045 691 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 692 }
williequesada 0:a1ce6cdc3045 693 if(CardReader_Buffer[i]==R_ERROR) {
williequesada 0:a1ce6cdc3045 694 Computer.printf("\n Error "); // Error
williequesada 0:a1ce6cdc3045 695 StateReader[1]='E';
williequesada 0:a1ce6cdc3045 696 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 697 }
williequesada 0:a1ce6cdc3045 698 if(CardReader_Buffer[i]==R_COMAND_ERROR) {
williequesada 0:a1ce6cdc3045 699 Computer.printf("\n Comando error ");// Error en comando
williequesada 0:a1ce6cdc3045 700 StateReader[1]='C';
williequesada 0:a1ce6cdc3045 701 ParkingMeter.AlarmCall(1,'E');
williequesada 0:a1ce6cdc3045 702 }
williequesada 0:a1ce6cdc3045 703 }
williequesada 0:a1ce6cdc3045 704 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 705
williequesada 0:a1ce6cdc3045 706 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 707 while(CardReader_Counter==0) { // Esperando introduccion de tarjeta
williequesada 0:a1ce6cdc3045 708 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 709 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 710 if(StateReader[1]=='C'||StateReader[1]=='E'||StateReader[1]=='N') {
williequesada 0:a1ce6cdc3045 711 Computer.printf("\n Error en comando");
williequesada 0:a1ce6cdc3045 712 break;
williequesada 0:a1ce6cdc3045 713 }
williequesada 0:a1ce6cdc3045 714 if(StateReader[1]=='S') {
williequesada 0:a1ce6cdc3045 715 Computer.printf("\n Sin respuesta");
williequesada 0:a1ce6cdc3045 716 break;
williequesada 0:a1ce6cdc3045 717 }
williequesada 0:a1ce6cdc3045 718 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 719 if(Tecla=='C') {
williequesada 0:a1ce6cdc3045 720 Computer.printf("\n Cancelar operacion");
williequesada 0:a1ce6cdc3045 721 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 722 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 723 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 724 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 725 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 726 CardReader.putc(ARM_ABORT);
williequesada 0:a1ce6cdc3045 727 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 728 CardReader.putc(BBCG);
williequesada 0:a1ce6cdc3045 729 }
williequesada 0:a1ce6cdc3045 730 break;
williequesada 0:a1ce6cdc3045 731 }
williequesada 0:a1ce6cdc3045 732 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 733 Computer.printf("\n Tiempo de respuesta");
williequesada 0:a1ce6cdc3045 734 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 735 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 736 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 737 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 738 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 739 CardReader.putc(ARM_ABORT);
williequesada 0:a1ce6cdc3045 740 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 741 CardReader.putc(BBCG);
williequesada 0:a1ce6cdc3045 742 }
williequesada 0:a1ce6cdc3045 743 break;
williequesada 0:a1ce6cdc3045 744 }
williequesada 0:a1ce6cdc3045 745 }
williequesada 0:a1ce6cdc3045 746 wait_ms(1000);
williequesada 0:a1ce6cdc3045 747 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 748 Computer.printf("%c",CardReader_Buffer[i]);
williequesada 0:a1ce6cdc3045 749 if(CardReader_Buffer[i]==R_NO_MAG_CARD) {
williequesada 0:a1ce6cdc3045 750 Computer.printf("\n Deteccion nula "); // No se detecta banda magnetica
williequesada 0:a1ce6cdc3045 751 StateReader[2]='N';
williequesada 0:a1ce6cdc3045 752 StateReader[3]='N';
williequesada 0:a1ce6cdc3045 753 }
williequesada 0:a1ce6cdc3045 754 if(CardReader_Buffer[i]==R_MAG_DETECT_ON) {
williequesada 0:a1ce6cdc3045 755 Computer.printf("\n Deteccion on "); // Se inicia verificacion de banda
williequesada 0:a1ce6cdc3045 756 StateReader[2]='A';
williequesada 0:a1ce6cdc3045 757 }
williequesada 0:a1ce6cdc3045 758 if(CardReader_Buffer[i]==R_MAG_DETECT_OFF) {
williequesada 0:a1ce6cdc3045 759 Computer.printf("\n Deteccion off "); // Se termina verificacion de banda
williequesada 0:a1ce6cdc3045 760 StateReader[3]='A';
williequesada 0:a1ce6cdc3045 761 }
williequesada 0:a1ce6cdc3045 762 if(CardReader_Buffer[i]==R_ACTION) {
williequesada 0:a1ce6cdc3045 763 Computer.printf("\n Action arm abort "); // Accion ejecutada
williequesada 0:a1ce6cdc3045 764 StateReader[1]='T';
williequesada 0:a1ce6cdc3045 765 }
williequesada 0:a1ce6cdc3045 766 }
williequesada 0:a1ce6cdc3045 767 }
williequesada 0:a1ce6cdc3045 768 }
williequesada 0:a1ce6cdc3045 769
williequesada 0:a1ce6cdc3045 770 int PositionCard()
williequesada 0:a1ce6cdc3045 771 {
williequesada 0:a1ce6cdc3045 772 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 773 StateReader[4]='S';
williequesada 0:a1ce6cdc3045 774 Computer.printf("\n Detectando tarjeta");
williequesada 0:a1ce6cdc3045 775 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 776 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 777 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 778 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 779 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 780 CardReader.putc(CARD_POSITION);
williequesada 0:a1ce6cdc3045 781 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 782 CardReader.putc(BBCA);
williequesada 0:a1ce6cdc3045 783 }
williequesada 0:a1ce6cdc3045 784 wait_ms(250);
williequesada 0:a1ce6cdc3045 785 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 786 Computer.printf("%c",CardReader_Buffer[i]);
williequesada 0:a1ce6cdc3045 787 if(CardReader_Buffer[i]==R_POSITION1) {
williequesada 0:a1ce6cdc3045 788 Computer.printf("\n Tarjeta en posicion incorrecta "); // Mal colocada la tarjeta
williequesada 0:a1ce6cdc3045 789 StateReader[4]='N';
williequesada 0:a1ce6cdc3045 790 ParkingMeter.AlarmCall(1,'A');
williequesada 0:a1ce6cdc3045 791 return 0;
williequesada 0:a1ce6cdc3045 792 }
williequesada 0:a1ce6cdc3045 793 if(CardReader_Buffer[i]==R_POSITION2) {
williequesada 0:a1ce6cdc3045 794 Computer.printf("\n Tarjeta en posicion correcta "); // Bien colocada la tarjeta
williequesada 0:a1ce6cdc3045 795 StateReader[4]='A';
williequesada 0:a1ce6cdc3045 796 ParkingMeter.AlarmCall(1,'A');
williequesada 0:a1ce6cdc3045 797 return 1;
williequesada 0:a1ce6cdc3045 798 }
williequesada 0:a1ce6cdc3045 799 if(CardReader_Buffer[i]==R_INVALID) {
williequesada 0:a1ce6cdc3045 800 Computer.printf("\n Invalido "); // Comando Invalido
williequesada 0:a1ce6cdc3045 801 StateReader[4]='N';
williequesada 0:a1ce6cdc3045 802 return 0;
williequesada 0:a1ce6cdc3045 803 }
williequesada 0:a1ce6cdc3045 804 if(CardReader_Buffer[i]==R_ERROR) {
williequesada 0:a1ce6cdc3045 805 Computer.printf("\n Error "); // Error
williequesada 0:a1ce6cdc3045 806 StateReader[4]='E';
williequesada 0:a1ce6cdc3045 807 return 0;
williequesada 0:a1ce6cdc3045 808 }
williequesada 0:a1ce6cdc3045 809 if(CardReader_Buffer[i]==R_COMAND_ERROR) {
williequesada 0:a1ce6cdc3045 810 Computer.printf("\n Comando error ");// Error en comando
williequesada 0:a1ce6cdc3045 811 StateReader[4]='C';
williequesada 0:a1ce6cdc3045 812 return 0;
williequesada 0:a1ce6cdc3045 813 }
williequesada 0:a1ce6cdc3045 814 }
williequesada 0:a1ce6cdc3045 815 return 2;
williequesada 0:a1ce6cdc3045 816 }
williequesada 0:a1ce6cdc3045 817
williequesada 0:a1ce6cdc3045 818 int ReadCard(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 819 {
williequesada 0:a1ce6cdc3045 820 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 821 StateReader[5]='S';
williequesada 0:a1ce6cdc3045 822 StateReader[6]='S';
williequesada 0:a1ce6cdc3045 823 if(StateReader[4]=='A') {
williequesada 0:a1ce6cdc3045 824 Computer.printf("\n Retirar Tarjeta en un solo movimiento");
williequesada 0:a1ce6cdc3045 825 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 826 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 827 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 828 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 829 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 830 CardReader.putc(ARM_MODE);
williequesada 0:a1ce6cdc3045 831 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 832 CardReader.putc(BBCE);
williequesada 0:a1ce6cdc3045 833 }
williequesada 0:a1ce6cdc3045 834 wait_ms(300);
williequesada 0:a1ce6cdc3045 835 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 836 Computer.printf("%c",CardReader_Buffer[i]);
williequesada 0:a1ce6cdc3045 837 if(CardReader_Buffer[i]==R_ACTION) {
williequesada 0:a1ce6cdc3045 838 Computer.printf("\n Accion"); // Accion ejecutada
williequesada 0:a1ce6cdc3045 839 StateReader[5]='A';
williequesada 0:a1ce6cdc3045 840 }
williequesada 0:a1ce6cdc3045 841 if(CardReader_Buffer[i]==R_INVALID) {
williequesada 0:a1ce6cdc3045 842 Computer.printf("\n Invalido "); // Comando Invalido
williequesada 0:a1ce6cdc3045 843 StateReader[5]='N';
williequesada 0:a1ce6cdc3045 844 }
williequesada 0:a1ce6cdc3045 845 if(CardReader_Buffer[i]==R_ERROR) {
williequesada 0:a1ce6cdc3045 846 Computer.printf("\n Error "); // Error
williequesada 0:a1ce6cdc3045 847 StateReader[5]='E';
williequesada 0:a1ce6cdc3045 848 }
williequesada 0:a1ce6cdc3045 849 if(CardReader_Buffer[i]==R_COMAND_ERROR) {
williequesada 0:a1ce6cdc3045 850 Computer.printf("\n Comando error ");// Error en comando
williequesada 0:a1ce6cdc3045 851 StateReader[5]='C';
williequesada 0:a1ce6cdc3045 852 }
williequesada 0:a1ce6cdc3045 853 }
williequesada 0:a1ce6cdc3045 854 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 855 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 856 Keypad_Init();
williequesada 0:a1ce6cdc3045 857 while(CardReader_Counter==0) { // Esperando introduccion de tarjeta
williequesada 0:a1ce6cdc3045 858 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 859 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 860 if(StateReader[5]=='C'||StateReader[5]=='E'||StateReader[5]=='N') {
williequesada 0:a1ce6cdc3045 861 Computer.printf("\n Error en comando");
williequesada 0:a1ce6cdc3045 862 break;
williequesada 0:a1ce6cdc3045 863 }
williequesada 0:a1ce6cdc3045 864 if(StateReader[5]=='S') {
williequesada 0:a1ce6cdc3045 865 Computer.printf("\n Sin Respuesta");
williequesada 0:a1ce6cdc3045 866 break;
williequesada 0:a1ce6cdc3045 867 }
williequesada 0:a1ce6cdc3045 868 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 869 Computer.printf("\n Tiempo de respuesta superado");
williequesada 0:a1ce6cdc3045 870 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 871 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 872 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 873 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 874 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 875 CardReader.putc(ARM_ABORT);
williequesada 0:a1ce6cdc3045 876 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 877 CardReader.putc(BBCG);
williequesada 0:a1ce6cdc3045 878 }
williequesada 0:a1ce6cdc3045 879 StateReader[5]='T';
williequesada 0:a1ce6cdc3045 880 break;
williequesada 0:a1ce6cdc3045 881 }
williequesada 0:a1ce6cdc3045 882 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 883 if(Tecla=='C') {
williequesada 0:a1ce6cdc3045 884 Computer.printf("\n Cancelar operacion");
williequesada 0:a1ce6cdc3045 885 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 886 CardReader.putc(SOH);
williequesada 0:a1ce6cdc3045 887 CardReader.putc(ADDR);
williequesada 0:a1ce6cdc3045 888 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 889 CardReader.putc(LEN);
williequesada 0:a1ce6cdc3045 890 CardReader.putc(ARM_ABORT);
williequesada 0:a1ce6cdc3045 891 CardReader.putc(EOT);
williequesada 0:a1ce6cdc3045 892 CardReader.putc(BBCG);
williequesada 0:a1ce6cdc3045 893 }
williequesada 0:a1ce6cdc3045 894 StateReader[5]='T';
williequesada 0:a1ce6cdc3045 895 return 2;
williequesada 0:a1ce6cdc3045 896 }
williequesada 0:a1ce6cdc3045 897 }
williequesada 0:a1ce6cdc3045 898 wait_ms(200);
williequesada 0:a1ce6cdc3045 899 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 900 Computer.printf("%c",CardReader_Buffer[i]);
williequesada 0:a1ce6cdc3045 901 Computer.printf("-%2X-",CardReader_Buffer[i]);
williequesada 0:a1ce6cdc3045 902 if(CardReader_Buffer[i]==R_NO_MAG_CARD) {
williequesada 0:a1ce6cdc3045 903 Computer.printf("\n Deteccion nula "); // No se detecta banda magnetica
williequesada 0:a1ce6cdc3045 904 StateReader[6]='N';
williequesada 0:a1ce6cdc3045 905 return 0;
williequesada 0:a1ce6cdc3045 906 }
williequesada 0:a1ce6cdc3045 907 if(CardReader_Buffer[i]==R_ACTION) {
williequesada 0:a1ce6cdc3045 908 Computer.printf("\n Tarjeta leida "); // Tarjeta leida
williequesada 0:a1ce6cdc3045 909 StateReader[6]='A';
williequesada 0:a1ce6cdc3045 910 return 1;
williequesada 0:a1ce6cdc3045 911 }
williequesada 0:a1ce6cdc3045 912 if(CardReader_Buffer[i]==R_INVALID) {
williequesada 0:a1ce6cdc3045 913 Computer.printf("\n Invalido "); // Comando Invalido
williequesada 0:a1ce6cdc3045 914 StateReader[6]='N';
williequesada 0:a1ce6cdc3045 915 return 0;
williequesada 0:a1ce6cdc3045 916 }
williequesada 0:a1ce6cdc3045 917 if(CardReader_Buffer[i]==R_ERROR) {
williequesada 0:a1ce6cdc3045 918 Computer.printf("\n Error "); // Error
williequesada 0:a1ce6cdc3045 919 StateReader[6]='E';
williequesada 0:a1ce6cdc3045 920 return 0;
williequesada 0:a1ce6cdc3045 921 }
williequesada 0:a1ce6cdc3045 922 if(CardReader_Buffer[i]==R_COMAND_ERROR) {
williequesada 0:a1ce6cdc3045 923 Computer.printf("\n Error comando "); // Error en comando
williequesada 0:a1ce6cdc3045 924 StateReader[6]='C';
williequesada 0:a1ce6cdc3045 925 return 0;
williequesada 0:a1ce6cdc3045 926 }
williequesada 0:a1ce6cdc3045 927 }
williequesada 0:a1ce6cdc3045 928 }
williequesada 0:a1ce6cdc3045 929 return 0;
williequesada 0:a1ce6cdc3045 930 }
williequesada 0:a1ce6cdc3045 931
williequesada 0:a1ce6cdc3045 932 int RecibeDataCard()
williequesada 0:a1ce6cdc3045 933 {
williequesada 0:a1ce6cdc3045 934 if (StateReader[6]=='A') {
williequesada 0:a1ce6cdc3045 935 CardReader_Counter=0;
williequesada 0:a1ce6cdc3045 936 if(CardReader.writeable()) {
williequesada 0:a1ce6cdc3045 937 CardReader.putc(SOH); // 00000001
williequesada 0:a1ce6cdc3045 938 CardReader.putc(ADDR); // 00000000
williequesada 0:a1ce6cdc3045 939 CardReader.putc(LEN); // 00000000
williequesada 0:a1ce6cdc3045 940 CardReader.putc(LEN); // 00000000
williequesada 0:a1ce6cdc3045 941 CardReader.putc(MAG_ISO_T2); // 01010101
williequesada 0:a1ce6cdc3045 942 CardReader.putc(EOT); // 00000100
williequesada 0:a1ce6cdc3045 943 CardReader.putc(BBCK);
williequesada 0:a1ce6cdc3045 944 }
williequesada 0:a1ce6cdc3045 945 wait_ms(200);
williequesada 0:a1ce6cdc3045 946 for(int i=0; i<=CardReader_Counter; i++) {
williequesada 0:a1ce6cdc3045 947 if(CardReader_Buffer[i]==R_NO_DATA) {
williequesada 0:a1ce6cdc3045 948 Computer.printf("Sin lectura\n");
williequesada 0:a1ce6cdc3045 949 return 0;
williequesada 0:a1ce6cdc3045 950 }
williequesada 0:a1ce6cdc3045 951 Computer.putc(CardReader_Buffer[i]);
williequesada 0:a1ce6cdc3045 952 if(CardReader_Buffer[i]=='=') {
williequesada 0:a1ce6cdc3045 953 Computer.printf("Datos leidos ");
williequesada 0:a1ce6cdc3045 954 for(int i=0; i<37; i++) {
williequesada 0:a1ce6cdc3045 955 Track2[i]=CardReader_Buffer[i+4];
williequesada 0:a1ce6cdc3045 956 }
williequesada 0:a1ce6cdc3045 957 Computer.printf("<%s>\n",Track2);
williequesada 0:a1ce6cdc3045 958 Slave.Set_Track(Track2);
williequesada 0:a1ce6cdc3045 959 return 1;
williequesada 0:a1ce6cdc3045 960 }
williequesada 0:a1ce6cdc3045 961 }
williequesada 0:a1ce6cdc3045 962 }
williequesada 0:a1ce6cdc3045 963 return 2;
williequesada 0:a1ce6cdc3045 964 }
williequesada 0:a1ce6cdc3045 965
williequesada 0:a1ce6cdc3045 966 int RetiroTarjeta(uint32_t TiempoFuera)
williequesada 0:a1ce6cdc3045 967 {
williequesada 0:a1ce6cdc3045 968 Computer.printf("Retiro tarjeta\n");
williequesada 0:a1ce6cdc3045 969 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 970 while(true) {
williequesada 0:a1ce6cdc3045 971 if(PositionCard()==0) {
williequesada 0:a1ce6cdc3045 972 return 1;
williequesada 0:a1ce6cdc3045 973 } else {
williequesada 0:a1ce6cdc3045 974 Screen.Limits(); // Se pide al usuario por pantalla el retiro de la tarjeta
williequesada 0:a1ce6cdc3045 975 Screen.PutString(15,12,"Retire tarjeta");
williequesada 0:a1ce6cdc3045 976 Screen.Show();
williequesada 0:a1ce6cdc3045 977 }
williequesada 0:a1ce6cdc3045 978 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 979 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 980 if(Transcurrido>TiempoFuera) {
williequesada 0:a1ce6cdc3045 981 StateReader[1]='T';
williequesada 0:a1ce6cdc3045 982 return 0;
williequesada 0:a1ce6cdc3045 983 }
williequesada 0:a1ce6cdc3045 984 }
williequesada 0:a1ce6cdc3045 985 }
williequesada 0:a1ce6cdc3045 986
williequesada 0:a1ce6cdc3045 987 uint8_t IngresoTarjeta(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 988 {
williequesada 0:a1ce6cdc3045 989 Computer.printf("Funcion ingreso de tarjeta\n");
williequesada 0:a1ce6cdc3045 990
williequesada 0:a1ce6cdc3045 991 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 992 Keypad_Init();
williequesada 0:a1ce6cdc3045 993 while(true) {
williequesada 0:a1ce6cdc3045 994 if(PositionCard()==1) {
williequesada 0:a1ce6cdc3045 995 Computer.printf("Tarjeta ingresada\n");
williequesada 0:a1ce6cdc3045 996 StateReader[1]='A';
williequesada 0:a1ce6cdc3045 997 StateReader[2]='A';
williequesada 0:a1ce6cdc3045 998 StateReader[3]='A';
williequesada 0:a1ce6cdc3045 999 return 1;
williequesada 0:a1ce6cdc3045 1000 }
williequesada 0:a1ce6cdc3045 1001 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1002 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1003 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 1004 Computer.printf("Tiempo limite\n");
williequesada 0:a1ce6cdc3045 1005 StateReader[1]='T';
williequesada 0:a1ce6cdc3045 1006 StateReader[2]='N';
williequesada 0:a1ce6cdc3045 1007 StateReader[3]='N';
williequesada 0:a1ce6cdc3045 1008 return 0;
williequesada 0:a1ce6cdc3045 1009 }
williequesada 0:a1ce6cdc3045 1010 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 1011 if(Tecla=='C') {
williequesada 0:a1ce6cdc3045 1012 Computer.printf("Operacion cancelada\n");
williequesada 0:a1ce6cdc3045 1013 StateReader[1]='T';
williequesada 0:a1ce6cdc3045 1014 StateReader[2]='N';
williequesada 0:a1ce6cdc3045 1015 StateReader[3]='N';
williequesada 0:a1ce6cdc3045 1016 return 2;
williequesada 0:a1ce6cdc3045 1017 }
williequesada 0:a1ce6cdc3045 1018 }
williequesada 0:a1ce6cdc3045 1019 }
williequesada 0:a1ce6cdc3045 1020
williequesada 0:a1ce6cdc3045 1021 uint8_t GetCard(char Salida,uint32_t TimeOutEntrada,uint32_t TimeOutSalida)
williequesada 0:a1ce6cdc3045 1022 {
williequesada 0:a1ce6cdc3045 1023 //CardReaderStatus=[Reset,ArmDebug,DetectionOn,DetectionOff,Position,Arm,Read]
williequesada 0:a1ce6cdc3045 1024 // C-> Command error
williequesada 0:a1ce6cdc3045 1025 // A-> Accepted
williequesada 0:a1ce6cdc3045 1026 // N-> Invalid
williequesada 0:a1ce6cdc3045 1027 // E-> Error
williequesada 0:a1ce6cdc3045 1028 // N-> No detection
williequesada 0:a1ce6cdc3045 1029 // S-> Without answer
williequesada 0:a1ce6cdc3045 1030 // T-> Time out
williequesada 0:a1ce6cdc3045 1031 // Se pide al usuario por pantalla la intrduccion de la tarjeta
williequesada 0:a1ce6cdc3045 1032
williequesada 0:a1ce6cdc3045 1033 Screen.Limits();
williequesada 0:a1ce6cdc3045 1034 Screen.PutString(15,12,"Introduzca tarjeta");
williequesada 0:a1ce6cdc3045 1035 Screen.PutString(15,34,"debito o credito");
williequesada 0:a1ce6cdc3045 1036 Screen.PutChar(26,33,'!');
williequesada 0:a1ce6cdc3045 1037 Screen.PutChar(110,33,'!');
williequesada 0:a1ce6cdc3045 1038 Screen.Show();
williequesada 0:a1ce6cdc3045 1039 sprintf(Track2,"0000000000000000000000000000000000000");
williequesada 0:a1ce6cdc3045 1040
williequesada 0:a1ce6cdc3045 1041 if(ResetCard()==1) {
williequesada 0:a1ce6cdc3045 1042 while(true) {
williequesada 0:a1ce6cdc3045 1043 uint8_t RespuestaIngresoTarjeta = IngresoTarjeta(TimeOutEntrada);
williequesada 0:a1ce6cdc3045 1044 if(RespuestaIngresoTarjeta==1) {
williequesada 0:a1ce6cdc3045 1045 Screen.Limits();
williequesada 0:a1ce6cdc3045 1046 Screen.PutString(15,12,"Retire tarjeta");
williequesada 0:a1ce6cdc3045 1047 Screen.Show();
williequesada 0:a1ce6cdc3045 1048 }
williequesada 0:a1ce6cdc3045 1049 if(RespuestaIngresoTarjeta==0) {
williequesada 0:a1ce6cdc3045 1050 Screen.PutString(15,12,"Sin deteccion");
williequesada 0:a1ce6cdc3045 1051 Screen.PutChar(111,11,'!');
williequesada 0:a1ce6cdc3045 1052 Screen.Limits();
williequesada 0:a1ce6cdc3045 1053 Screen.Show();
williequesada 0:a1ce6cdc3045 1054 wait(3);
williequesada 0:a1ce6cdc3045 1055 Screen.Clean();
williequesada 0:a1ce6cdc3045 1056 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1057 }
williequesada 0:a1ce6cdc3045 1058 if(RespuestaIngresoTarjeta==2) {
williequesada 0:a1ce6cdc3045 1059 Screen.Clean();
williequesada 0:a1ce6cdc3045 1060 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1061 }
williequesada 0:a1ce6cdc3045 1062
williequesada 0:a1ce6cdc3045 1063 uint8_t RespuestaReadCard=ReadCard(TimeOutSalida); // Se le la tarjeta al retirarse
williequesada 0:a1ce6cdc3045 1064 if(RespuestaReadCard==2) {
williequesada 0:a1ce6cdc3045 1065 Screen.Clean();
williequesada 0:a1ce6cdc3045 1066 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1067 }
williequesada 0:a1ce6cdc3045 1068
williequesada 0:a1ce6cdc3045 1069 uint8_t DataResult=RecibeDataCard(); // Se corrobora que la informacion de la tajeta es la corre
williequesada 0:a1ce6cdc3045 1070 if(DataResult==0) {
williequesada 0:a1ce6cdc3045 1071 Screen.PutString(15,12,"Banda magnetica");
williequesada 0:a1ce6cdc3045 1072 Screen.PutChar(125,11,'!');
williequesada 0:a1ce6cdc3045 1073 Screen.PutString(15,34,"ilegible");
williequesada 0:a1ce6cdc3045 1074 Screen.Limits();
williequesada 0:a1ce6cdc3045 1075 Screen.Show();
williequesada 0:a1ce6cdc3045 1076 wait(2);
williequesada 0:a1ce6cdc3045 1077 if(RetiroTarjeta(7000)) {
williequesada 0:a1ce6cdc3045 1078 Screen.Limits();
williequesada 0:a1ce6cdc3045 1079 Screen.PutString(15,12,"Introduzca tarjeta");
williequesada 0:a1ce6cdc3045 1080 Screen.PutString(15,34,"debito o credito");
williequesada 0:a1ce6cdc3045 1081 Screen.PutChar(26,33,'!');
williequesada 0:a1ce6cdc3045 1082 Screen.PutChar(110,33,'!');
williequesada 0:a1ce6cdc3045 1083 Screen.Show();
williequesada 0:a1ce6cdc3045 1084 } else {
williequesada 0:a1ce6cdc3045 1085 Screen.Clean();
williequesada 0:a1ce6cdc3045 1086 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1087 }
williequesada 0:a1ce6cdc3045 1088 }
williequesada 0:a1ce6cdc3045 1089 if(DataResult==1) {
williequesada 0:a1ce6cdc3045 1090 return Salida;
williequesada 0:a1ce6cdc3045 1091 }
williequesada 0:a1ce6cdc3045 1092 if(DataResult==2) {
williequesada 0:a1ce6cdc3045 1093 Screen.PutString(15,12,"Banda magnetica");
williequesada 0:a1ce6cdc3045 1094 Screen.PutChar(125,11,'!');
williequesada 0:a1ce6cdc3045 1095 Screen.PutString(15,34,"ilegible");
williequesada 0:a1ce6cdc3045 1096 Screen.Limits();
williequesada 0:a1ce6cdc3045 1097 Screen.Show();
williequesada 0:a1ce6cdc3045 1098 wait(2);
williequesada 0:a1ce6cdc3045 1099 if(RetiroTarjeta(7000)) {
williequesada 0:a1ce6cdc3045 1100 Screen.Limits();
williequesada 0:a1ce6cdc3045 1101 Screen.PutString(15,12,"Introduzca tarjeta");
williequesada 0:a1ce6cdc3045 1102 Screen.PutString(15,34,"debito o credito");
williequesada 0:a1ce6cdc3045 1103 Screen.PutChar(26,33,'!');
williequesada 0:a1ce6cdc3045 1104 Screen.PutChar(110,33,'!');
williequesada 0:a1ce6cdc3045 1105 Screen.Show();
williequesada 0:a1ce6cdc3045 1106 } else {
williequesada 0:a1ce6cdc3045 1107 Screen.Clean();
williequesada 0:a1ce6cdc3045 1108 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1109 }
williequesada 0:a1ce6cdc3045 1110 }
williequesada 0:a1ce6cdc3045 1111 }
williequesada 0:a1ce6cdc3045 1112 } else {
williequesada 0:a1ce6cdc3045 1113 Screen.Limits();
williequesada 0:a1ce6cdc3045 1114 Screen.PutString(15,20,"Error");
williequesada 0:a1ce6cdc3045 1115 Screen.Show();
williequesada 0:a1ce6cdc3045 1116 wait(3);
williequesada 0:a1ce6cdc3045 1117 Screen.Clean();
williequesada 0:a1ce6cdc3045 1118 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 1119 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1120 }
williequesada 0:a1ce6cdc3045 1121 }
williequesada 0:a1ce6cdc3045 1122
williequesada 0:a1ce6cdc3045 1123 uint8_t Continuar(uint8_t Salida,uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 1124 {
williequesada 0:a1ce6cdc3045 1125 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1126 while(true) {
williequesada 0:a1ce6cdc3045 1127 if(Slave.Answer()) {
williequesada 0:a1ce6cdc3045 1128 Computer.printf("Continuar\n");
williequesada 0:a1ce6cdc3045 1129 return Salida;
williequesada 0:a1ce6cdc3045 1130 }
williequesada 0:a1ce6cdc3045 1131 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1132 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1133 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 1134 Computer.printf("Continuar tiempo\n");
williequesada 0:a1ce6cdc3045 1135 Screen.PutString(15,12,"Operacion");
williequesada 0:a1ce6cdc3045 1136 Screen.PutChar(84,11,'!');
williequesada 0:a1ce6cdc3045 1137 Screen.PutString(15,34,"no disponible");
williequesada 0:a1ce6cdc3045 1138 Screen.Limits();
williequesada 0:a1ce6cdc3045 1139 Screen.Show();
williequesada 0:a1ce6cdc3045 1140 wait(4);
williequesada 0:a1ce6cdc3045 1141 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1142 }
williequesada 0:a1ce6cdc3045 1143
williequesada 0:a1ce6cdc3045 1144 }
williequesada 0:a1ce6cdc3045 1145 }
williequesada 0:a1ce6cdc3045 1146 uint8_t Respuesta1(uint8_t Salida,uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 1147 {
williequesada 0:a1ce6cdc3045 1148 Screen.PutString(15,12,"Realizando");
williequesada 0:a1ce6cdc3045 1149 Screen.PutString(15,34,"Operacion...");
williequesada 0:a1ce6cdc3045 1150 Screen.PutChar(84,33,'!');
williequesada 0:a1ce6cdc3045 1151 Screen.Limits();
williequesada 0:a1ce6cdc3045 1152 Screen.Show();
williequesada 0:a1ce6cdc3045 1153 wait_ms(TimeOut);
williequesada 0:a1ce6cdc3045 1154 return Salida;
williequesada 0:a1ce6cdc3045 1155 }
williequesada 0:a1ce6cdc3045 1156 uint8_t Respuesta2(uint8_t Salida,uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 1157 {
williequesada 0:a1ce6cdc3045 1158 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1159 while(true) {
williequesada 0:a1ce6cdc3045 1160 if(Slave.Message()) {
williequesada 0:a1ce6cdc3045 1161 Computer.printf("Respuesta recibida\n");
williequesada 0:a1ce6cdc3045 1162 wait_ms(100);
williequesada 0:a1ce6cdc3045 1163 break;
williequesada 0:a1ce6cdc3045 1164 }
williequesada 0:a1ce6cdc3045 1165 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1166 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1167 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 1168 break;
williequesada 0:a1ce6cdc3045 1169 }
williequesada 0:a1ce6cdc3045 1170 }
williequesada 0:a1ce6cdc3045 1171 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1172 Computer.printf("%c",InByte);
williequesada 0:a1ce6cdc3045 1173 if(InByte=='A') {
williequesada 0:a1ce6cdc3045 1174 Screen.PutString(15,12,"Operacion");
williequesada 0:a1ce6cdc3045 1175 Screen.PutChar(84,11,'!');
williequesada 0:a1ce6cdc3045 1176 Screen.PutString(15,34,"Aceptada");
williequesada 0:a1ce6cdc3045 1177 Screen.Limits();
williequesada 0:a1ce6cdc3045 1178 Screen.Show();
williequesada 0:a1ce6cdc3045 1179 wait_ms(1000);
williequesada 0:a1ce6cdc3045 1180 FechaRespuesta[9]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1181 FechaRespuesta[9]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1182 FechaRespuesta[8]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1183 FechaRespuesta[7]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1184 FechaRespuesta[6]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1185 FechaRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1186 FechaRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1187 FechaRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1188 FechaRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1189 FechaRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1190 FechaRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1191 HoraRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1192 HoraRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1193 HoraRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1194 HoraRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1195 HoraRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1196 HoraRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1197 NumeroRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1198 NumeroRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1199 NumeroRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1200 NumeroRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1201 NumeroRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1202 NumeroRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1203 NumeroRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1204 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1205 while(true) {
williequesada 0:a1ce6cdc3045 1206 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1207 if(InByte==NO_DATA) {
williequesada 0:a1ce6cdc3045 1208 break;
williequesada 0:a1ce6cdc3045 1209 }
williequesada 0:a1ce6cdc3045 1210 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1211 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1212 if(Transcurrido>100) {
williequesada 0:a1ce6cdc3045 1213 break;
williequesada 0:a1ce6cdc3045 1214 }
williequesada 0:a1ce6cdc3045 1215 }
williequesada 0:a1ce6cdc3045 1216 Computer.printf("<%s> <%s> <%s>\n",FechaRespuesta,HoraRespuesta,NumeroRespuesta);
williequesada 0:a1ce6cdc3045 1217 return Salida;
williequesada 0:a1ce6cdc3045 1218 } else {
williequesada 0:a1ce6cdc3045 1219 Screen.PutString(15,12,"Operacion");
williequesada 0:a1ce6cdc3045 1220 Screen.PutString(15,34,"Rechazada");
williequesada 0:a1ce6cdc3045 1221 Screen.PutChar(84,11,'!');
williequesada 0:a1ce6cdc3045 1222 Screen.Limits();
williequesada 0:a1ce6cdc3045 1223 Screen.Show();
williequesada 0:a1ce6cdc3045 1224 wait_ms(3000);
williequesada 0:a1ce6cdc3045 1225 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1226 while(true) {
williequesada 0:a1ce6cdc3045 1227 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 1228 if(InByte==NO_DATA) {
williequesada 0:a1ce6cdc3045 1229 break;
williequesada 0:a1ce6cdc3045 1230 }
williequesada 0:a1ce6cdc3045 1231 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1232 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1233 if(Transcurrido>100) {
williequesada 0:a1ce6cdc3045 1234 break;
williequesada 0:a1ce6cdc3045 1235 }
williequesada 0:a1ce6cdc3045 1236 }
williequesada 0:a1ce6cdc3045 1237 return USER_FINISH;
williequesada 0:a1ce6cdc3045 1238 }
williequesada 0:a1ce6cdc3045 1239 }
williequesada 0:a1ce6cdc3045 1240
williequesada 0:a1ce6cdc3045 1241 void CalculoHoraFinal()
williequesada 0:a1ce6cdc3045 1242 {
williequesada 0:a1ce6cdc3045 1243 int MinutoEstacionamiento=TiempoMinutos%60;
williequesada 0:a1ce6cdc3045 1244 int HoraEstacionamiento=TiempoMinutos/60;
williequesada 0:a1ce6cdc3045 1245
williequesada 0:a1ce6cdc3045 1246 int HoraServicio=((uint8_t)HoraRespuesta[0]-48)*10+((uint8_t)HoraRespuesta[1]-48);
williequesada 0:a1ce6cdc3045 1247 int MinutoServicio=((uint8_t)HoraRespuesta[3]-48)*10+((uint8_t)HoraRespuesta[4]-48);
williequesada 0:a1ce6cdc3045 1248
williequesada 0:a1ce6cdc3045 1249 if(HoraServicio<8){
williequesada 0:a1ce6cdc3045 1250 HoraServicio=8;
williequesada 0:a1ce6cdc3045 1251 MinutoServicio=0;
williequesada 0:a1ce6cdc3045 1252 }
williequesada 0:a1ce6cdc3045 1253
williequesada 0:a1ce6cdc3045 1254 int MinutosTotal = MinutoServicio + MinutoEstacionamiento;
williequesada 0:a1ce6cdc3045 1255 int HorasTotal = HoraServicio + HoraEstacionamiento;
williequesada 0:a1ce6cdc3045 1256
williequesada 0:a1ce6cdc3045 1257 while(MinutosTotal >= 60) {
williequesada 0:a1ce6cdc3045 1258 MinutosTotal = MinutosTotal - 60;
williequesada 0:a1ce6cdc3045 1259 HorasTotal = HorasTotal + 1;
williequesada 0:a1ce6cdc3045 1260 }
williequesada 0:a1ce6cdc3045 1261 if(HorasTotal>=24) {
williequesada 0:a1ce6cdc3045 1262 HorasTotal=HorasTotal-24;
williequesada 0:a1ce6cdc3045 1263 }
williequesada 0:a1ce6cdc3045 1264
williequesada 0:a1ce6cdc3045 1265 if(MinutosTotal<10) { // Calcular tiempo en horas y minutos
williequesada 0:a1ce6cdc3045 1266 sprintf(HoraFinal,"%i:0%i",HorasTotal,MinutosTotal);
williequesada 0:a1ce6cdc3045 1267 } else {
williequesada 0:a1ce6cdc3045 1268 sprintf(HoraFinal,"%i:%i",HorasTotal,MinutosTotal);
williequesada 0:a1ce6cdc3045 1269 }
williequesada 0:a1ce6cdc3045 1270
williequesada 0:a1ce6cdc3045 1271 }
williequesada 0:a1ce6cdc3045 1272 uint8_t ImpresoraIniciar(){
williequesada 0:a1ce6cdc3045 1273
williequesada 0:a1ce6cdc3045 1274 if(Impresora.Power(1)){
williequesada 0:a1ce6cdc3045 1275 uint8_t val = Impresora.Reset();
williequesada 0:a1ce6cdc3045 1276 return val;
williequesada 0:a1ce6cdc3045 1277 }
williequesada 0:a1ce6cdc3045 1278 return 0;
williequesada 0:a1ce6cdc3045 1279 }
williequesada 0:a1ce6cdc3045 1280
williequesada 0:a1ce6cdc3045 1281 uint8_t Imprimir(uint8_t Salida,uint8_t Inicio)
williequesada 0:a1ce6cdc3045 1282 {
williequesada 0:a1ce6cdc3045 1283 int State=Inicio;
williequesada 0:a1ce6cdc3045 1284 if(State){
williequesada 0:a1ce6cdc3045 1285 Screen.PutString(15,12,"Imprimiendo");
williequesada 0:a1ce6cdc3045 1286 Screen.PutString(15,34,"Tiquete");
williequesada 0:a1ce6cdc3045 1287 Screen.Limits();
williequesada 0:a1ce6cdc3045 1288 Screen.Show();
williequesada 0:a1ce6cdc3045 1289 CalculoHoraFinal();
williequesada 0:a1ce6cdc3045 1290 }
williequesada 0:a1ce6cdc3045 1291
williequesada 0:a1ce6cdc3045 1292 if(State==0) {
williequesada 0:a1ce6cdc3045 1293 Screen.Limits();
williequesada 0:a1ce6cdc3045 1294 Screen.PutString(15,12,"Operacion aceptada");
williequesada 0:a1ce6cdc3045 1295 Screen.PutChar(84,11,'!');
williequesada 0:a1ce6cdc3045 1296 Screen.PutString(15,34,"Tiquete no disponible");
williequesada 0:a1ce6cdc3045 1297 Screen.Limits();
williequesada 0:a1ce6cdc3045 1298 Screen.Show();
williequesada 0:a1ce6cdc3045 1299 wait(2);
williequesada 0:a1ce6cdc3045 1300 Computer.printf("Error.\n");
williequesada 0:a1ce6cdc3045 1301 Impresora.End();
williequesada 0:a1ce6cdc3045 1302 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 1303 wait(4);
williequesada 0:a1ce6cdc3045 1304 }
williequesada 0:a1ce6cdc3045 1305 if(State==2) {
williequesada 0:a1ce6cdc3045 1306 Screen.Limits();
williequesada 0:a1ce6cdc3045 1307 Screen.PutString(15,12,"Operacion aceptada");
williequesada 0:a1ce6cdc3045 1308 Screen.PutChar(84,11,'!');
williequesada 0:a1ce6cdc3045 1309 Screen.PutString(15,34,"Tiquete no disponible");
williequesada 0:a1ce6cdc3045 1310 Screen.Limits();
williequesada 0:a1ce6cdc3045 1311 Screen.Show();
williequesada 0:a1ce6cdc3045 1312 wait(2);
williequesada 0:a1ce6cdc3045 1313 Computer.printf("Error.\n");
williequesada 0:a1ce6cdc3045 1314 Impresora.End();
williequesada 0:a1ce6cdc3045 1315 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 1316 wait(4);
williequesada 0:a1ce6cdc3045 1317 }
williequesada 0:a1ce6cdc3045 1318 if(State==1) {
williequesada 0:a1ce6cdc3045 1319 State=Impresora.Output(FechaRespuesta,HoraRespuesta,HoraFinal,Espacio,Tiempo,NumeroRespuesta,Importe);
williequesada 0:a1ce6cdc3045 1320 if(State==0) {
williequesada 0:a1ce6cdc3045 1321 Computer.printf("Alarma Output\n");
williequesada 0:a1ce6cdc3045 1322 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 1323 } else {
williequesada 0:a1ce6cdc3045 1324 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 1325 }
williequesada 0:a1ce6cdc3045 1326
williequesada 0:a1ce6cdc3045 1327 State=Impresora.Paper(400);
williequesada 0:a1ce6cdc3045 1328 if(State==0) {
williequesada 0:a1ce6cdc3045 1329 Computer.printf("Alarma Papel\n");
williequesada 0:a1ce6cdc3045 1330 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 1331 } else {
williequesada 0:a1ce6cdc3045 1332 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 1333 }
williequesada 0:a1ce6cdc3045 1334
williequesada 0:a1ce6cdc3045 1335 State=Impresora.Cutter(1);
williequesada 0:a1ce6cdc3045 1336 if(State==0) {
williequesada 0:a1ce6cdc3045 1337 Computer.printf("Alarma Cutter\n");
williequesada 0:a1ce6cdc3045 1338 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 1339 } else {
williequesada 0:a1ce6cdc3045 1340 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 1341 }
williequesada 0:a1ce6cdc3045 1342
williequesada 0:a1ce6cdc3045 1343 Screen.PutString(15,12,"Retire");
williequesada 0:a1ce6cdc3045 1344 Screen.PutString(15,34,"Tiquete");
williequesada 0:a1ce6cdc3045 1345 Screen.Limits();
williequesada 0:a1ce6cdc3045 1346 Screen.Show();
williequesada 0:a1ce6cdc3045 1347 wait(1);
williequesada 0:a1ce6cdc3045 1348
williequesada 0:a1ce6cdc3045 1349 State=Impresora.End();
williequesada 0:a1ce6cdc3045 1350 if(State==0) {
williequesada 0:a1ce6cdc3045 1351 Computer.printf("Alarma Cutter\n");
williequesada 0:a1ce6cdc3045 1352 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 1353 } else {
williequesada 0:a1ce6cdc3045 1354 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 1355 }
williequesada 0:a1ce6cdc3045 1356 wait(1);
williequesada 0:a1ce6cdc3045 1357 }
williequesada 0:a1ce6cdc3045 1358
williequesada 0:a1ce6cdc3045 1359 State=Impresora.Power(0);
williequesada 0:a1ce6cdc3045 1360 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 1361 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 1362 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 1363 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 1364 } else {
williequesada 0:a1ce6cdc3045 1365 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 1366 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 1367 }
williequesada 0:a1ce6cdc3045 1368 return Salida;
williequesada 0:a1ce6cdc3045 1369 }
williequesada 0:a1ce6cdc3045 1370
williequesada 0:a1ce6cdc3045 1371
williequesada 0:a1ce6cdc3045 1372 void Usuario_OperacionConsecutiva()
williequesada 0:a1ce6cdc3045 1373 {
williequesada 0:a1ce6cdc3045 1374 uint8_t Comando=USER_INIT;
williequesada 0:a1ce6cdc3045 1375 int PrinterState;
williequesada 0:a1ce6cdc3045 1376 if(Comando==USER_INIT) {
williequesada 0:a1ce6cdc3045 1377 Computer.printf("Usuario operacion consecutiva\n");
williequesada 0:a1ce6cdc3045 1378 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1379 Screen.On();
williequesada 0:a1ce6cdc3045 1380 wait_ms(20);
williequesada 0:a1ce6cdc3045 1381 Screen.Init();
williequesada 0:a1ce6cdc3045 1382 Screen.Clean();
williequesada 0:a1ce6cdc3045 1383 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1384 Comando=USER_PLACE;
williequesada 0:a1ce6cdc3045 1385 }
williequesada 0:a1ce6cdc3045 1386
williequesada 0:a1ce6cdc3045 1387 if(Comando==USER_PLACE) {
williequesada 0:a1ce6cdc3045 1388 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1389 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1390 Comando=GetPlace(USER_CARD,15000);
williequesada 0:a1ce6cdc3045 1391 if(Comando==USER_CARD) {
williequesada 0:a1ce6cdc3045 1392 Slave.Command(COMMAND_INIT);
williequesada 0:a1ce6cdc3045 1393 }
williequesada 0:a1ce6cdc3045 1394 }
williequesada 0:a1ce6cdc3045 1395
williequesada 0:a1ce6cdc3045 1396 if(Comando==USER_CARD) {
williequesada 0:a1ce6cdc3045 1397 Computer.printf("Usuario tarjeta\n");
williequesada 0:a1ce6cdc3045 1398 Comando=GetCard(USER_TIME,20000,5000);
williequesada 0:a1ce6cdc3045 1399 if(Comando==USER_TIME) {
williequesada 0:a1ce6cdc3045 1400 Slave.Command(COMMAND_GPRS);
williequesada 0:a1ce6cdc3045 1401 }
williequesada 0:a1ce6cdc3045 1402 }
williequesada 0:a1ce6cdc3045 1403
williequesada 0:a1ce6cdc3045 1404 if(Comando==USER_TIME) {
williequesada 0:a1ce6cdc3045 1405 Computer.printf("Usuario tiempo\n");
williequesada 0:a1ce6cdc3045 1406 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 1407 Comando=GetTime(USER_DATA,15000);
williequesada 0:a1ce6cdc3045 1408 if (Comando==USER_FINISH){
williequesada 0:a1ce6cdc3045 1409 Slave.Command(COMMAND_END);
williequesada 0:a1ce6cdc3045 1410 }
williequesada 0:a1ce6cdc3045 1411 Comando=Continuar(Comando,7000);
williequesada 0:a1ce6cdc3045 1412 }
williequesada 0:a1ce6cdc3045 1413
williequesada 0:a1ce6cdc3045 1414 if(Comando==USER_DATA) {
williequesada 0:a1ce6cdc3045 1415 Computer.printf("Usuario datos\n");
williequesada 0:a1ce6cdc3045 1416 Slave.Command(COMMAND_DATA);
williequesada 0:a1ce6cdc3045 1417 Slave.Encryption_Data(Parquimetro,Municipio,TiempoMinutos,Espacio,Track2);
williequesada 0:a1ce6cdc3045 1418 Slave.Encryption_Execute();
williequesada 0:a1ce6cdc3045 1419 Slave.Encryption_Send();
williequesada 0:a1ce6cdc3045 1420 Computer.printf("Tiempo: %i\n",TiempoMinutos);
williequesada 0:a1ce6cdc3045 1421 Computer.printf("Parquimetro: %s\n",Parquimetro);
williequesada 0:a1ce6cdc3045 1422 Computer.printf("Municipio: %s\n",Municipio);
williequesada 0:a1ce6cdc3045 1423 Computer.printf("Espacio: %s\n",Espacio);
williequesada 0:a1ce6cdc3045 1424 Computer.printf("Track2: %s\n",Track2);
williequesada 0:a1ce6cdc3045 1425 Comando=Continuar(USER_POST,20000);
williequesada 0:a1ce6cdc3045 1426 if (Comando==USER_FINISH){
williequesada 0:a1ce6cdc3045 1427 Slave.Command(COMMAND_END);
williequesada 0:a1ce6cdc3045 1428 }
williequesada 0:a1ce6cdc3045 1429 }
williequesada 0:a1ce6cdc3045 1430
williequesada 0:a1ce6cdc3045 1431 if(Comando==USER_POST) {
williequesada 0:a1ce6cdc3045 1432 Computer.printf("Usuario operacion\n");
williequesada 0:a1ce6cdc3045 1433 Slave.Command(COMMAND_POST);
williequesada 0:a1ce6cdc3045 1434 Comando=Respuesta1(USER_ANSWER,20);
williequesada 0:a1ce6cdc3045 1435 }
williequesada 0:a1ce6cdc3045 1436
williequesada 0:a1ce6cdc3045 1437 if(Comando==USER_ANSWER) {
williequesada 0:a1ce6cdc3045 1438 Computer.printf("Usuario respuesta\n");
williequesada 0:a1ce6cdc3045 1439 Slave.Command(COMMAND_ANSWER);
williequesada 0:a1ce6cdc3045 1440 PrinterState = ImpresoraIniciar();
williequesada 0:a1ce6cdc3045 1441 Comando=Respuesta2(USER_PRINT,50000);
williequesada 0:a1ce6cdc3045 1442 }
williequesada 0:a1ce6cdc3045 1443
williequesada 0:a1ce6cdc3045 1444 if(Comando==USER_PRINT) {
williequesada 0:a1ce6cdc3045 1445 Computer.printf("Usuario imprimiendo\n");
williequesada 0:a1ce6cdc3045 1446 Comando=Imprimir(USER_FINISH,PrinterState);
williequesada 0:a1ce6cdc3045 1447 }
williequesada 0:a1ce6cdc3045 1448
williequesada 0:a1ce6cdc3045 1449 if(Comando==USER_FINISH) {
williequesada 0:a1ce6cdc3045 1450 Computer.printf("Usuario finalizar\n");
williequesada 0:a1ce6cdc3045 1451 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 1452 Screen.Clean();
williequesada 0:a1ce6cdc3045 1453 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 1454 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 1455 Screen.Off();
williequesada 0:a1ce6cdc3045 1456 }
williequesada 0:a1ce6cdc3045 1457 }
williequesada 0:a1ce6cdc3045 1458
pabloandres2906 1:4cdf726a3497 1459 void Usuario(uint8_t Entrada) //lleva a cabo de las operaciones necesarias para la interaccion con el usuario
williequesada 0:a1ce6cdc3045 1460 {
williequesada 0:a1ce6cdc3045 1461 int PrinterState;
pabloandres2906 1:4cdf726a3497 1462 uint8_t Comando=Entrada; //cada paso se va dando por comandos empezando por USER_INIT
pabloandres2906 1:4cdf726a3497 1463 if(Comando==USER_INIT) {
williequesada 0:a1ce6cdc3045 1464 Host.detach();//1800 30 minutosHost.attach(&Interrupt_Host,5);//1800 30 minutos
pabloandres2906 1:4cdf726a3497 1465 //durante la operacion de usuario se deshabilita la interrupcion de host
williequesada 0:a1ce6cdc3045 1466 Computer.printf("Usuario iniciar 1\n");
williequesada 0:a1ce6cdc3045 1467 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1468 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1469 Screen.On();
williequesada 0:a1ce6cdc3045 1470 Screen.Init();
pabloandres2906 1:4cdf726a3497 1471 Slave.Awake(); // "despierta" al esclavo
pabloandres2906 1:4cdf726a3497 1472 Slave.Command(COMMAND_ON); //habilita la comunicación con el modem
williequesada 0:a1ce6cdc3045 1473 BaseClock.start();
williequesada 0:a1ce6cdc3045 1474 BaseClock.reset();
pabloandres2906 1:4cdf726a3497 1475 Comando=USER_PLACE; //nos envia a la opcion de que el usuario coloque la posicion en que desea parquear
williequesada 0:a1ce6cdc3045 1476 }
williequesada 0:a1ce6cdc3045 1477
williequesada 0:a1ce6cdc3045 1478 if(Comando==USER_INIT2) {
williequesada 0:a1ce6cdc3045 1479 Computer.printf("Usuario iniciar 2\n");
williequesada 0:a1ce6cdc3045 1480 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1481 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1482 BaseClock.start();
williequesada 0:a1ce6cdc3045 1483 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1484 Comando=USER_PLACE;
williequesada 0:a1ce6cdc3045 1485 }
williequesada 0:a1ce6cdc3045 1486
williequesada 0:a1ce6cdc3045 1487 if(Comando==USER_INIT3) {
williequesada 0:a1ce6cdc3045 1488 Computer.printf("Usuario iniciar 3\n");
williequesada 0:a1ce6cdc3045 1489 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1490 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1491 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1492 BaseClock.start();
williequesada 0:a1ce6cdc3045 1493 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1494 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1495 Comando=GetPlace(USER_CARD,15000);
williequesada 0:a1ce6cdc3045 1496 }
williequesada 0:a1ce6cdc3045 1497
williequesada 0:a1ce6cdc3045 1498 if(Comando==USER_INIT4) {
williequesada 0:a1ce6cdc3045 1499 Computer.printf("Usuario iniciar 4\n");
williequesada 0:a1ce6cdc3045 1500 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1501 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1502 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1503 BaseClock.start();
williequesada 0:a1ce6cdc3045 1504 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1505 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1506 Comando=GetPlace(USER_CARD2,15000);
williequesada 0:a1ce6cdc3045 1507 }
williequesada 0:a1ce6cdc3045 1508
williequesada 0:a1ce6cdc3045 1509 if(Comando==USER_INIT5) {
williequesada 0:a1ce6cdc3045 1510 Computer.printf("Usuario iniciar 5\n");
williequesada 0:a1ce6cdc3045 1511 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1512 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1513 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1514 BaseClock.start();
williequesada 0:a1ce6cdc3045 1515 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1516 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1517 Comando=GetPlace(USER_CARD2,15000);
williequesada 0:a1ce6cdc3045 1518 if(Comando==USER_CARD2) {
williequesada 0:a1ce6cdc3045 1519 Slave.Command(HOSTING_OFF);
williequesada 0:a1ce6cdc3045 1520 }
williequesada 0:a1ce6cdc3045 1521 }
williequesada 0:a1ce6cdc3045 1522
williequesada 0:a1ce6cdc3045 1523 if(Comando==USER_PLACE) {
williequesada 0:a1ce6cdc3045 1524 Computer.printf("Usuario espacio\n");
pabloandres2906 1:4cdf726a3497 1525 CardReaderPower=1; //mientras tanto se va encendiendo la lectora de tarjeta
pabloandres2906 1:4cdf726a3497 1526 Comando=GetPlace(USER_CARD,15000); //si se lee sin problema el espacio de parqueo ahora Comando permite leer la tarjeta
williequesada 0:a1ce6cdc3045 1527 if(Comando==USER_CARD) {
pabloandres2906 1:4cdf726a3497 1528 Slave.Command(COMMAND_INIT); //se va iniciando la conexion a la red celular
williequesada 0:a1ce6cdc3045 1529 }
williequesada 0:a1ce6cdc3045 1530 }
williequesada 0:a1ce6cdc3045 1531
williequesada 0:a1ce6cdc3045 1532 if(Comando==USER_CARD) {
williequesada 0:a1ce6cdc3045 1533 Computer.printf("Usuario tarjeta\n");
pabloandres2906 1:4cdf726a3497 1534 Comando=GetCard(USER_TIME,20000,5000); //si se lee sin problema la tarjeta ahora Comando permite leer el tiempo de parqueo
williequesada 0:a1ce6cdc3045 1535 if(Comando==USER_TIME) {
pabloandres2906 1:4cdf726a3497 1536 Slave.Command(COMMAND_GPRS); //va estableciendo conexión a la red de internet
williequesada 0:a1ce6cdc3045 1537 }
williequesada 0:a1ce6cdc3045 1538 }
williequesada 0:a1ce6cdc3045 1539
williequesada 0:a1ce6cdc3045 1540 if(Comando==USER_CARD2) {
williequesada 0:a1ce6cdc3045 1541 Computer.printf("Usuario tarjeta 2\n");
williequesada 0:a1ce6cdc3045 1542 Comando=GetCard(USER_TIME,20000,5000);
williequesada 0:a1ce6cdc3045 1543 }
williequesada 0:a1ce6cdc3045 1544
williequesada 0:a1ce6cdc3045 1545 if(Comando==USER_TIME) {
williequesada 0:a1ce6cdc3045 1546 Computer.printf("Usuario tiempo\n");
pabloandres2906 1:4cdf726a3497 1547 CardReaderPower=0; //se apaga el lector
pabloandres2906 1:4cdf726a3497 1548 Comando=GetTime(USER_DATA,15000);//si se lee sin problema el tiempo de parqueo ahora Comando permite encriptar y enviar los datos al esclavo
williequesada 0:a1ce6cdc3045 1549 if (Comando==USER_FINISH){
williequesada 0:a1ce6cdc3045 1550 Slave.Command(COMMAND_END);
williequesada 0:a1ce6cdc3045 1551 }
williequesada 0:a1ce6cdc3045 1552 Comando=Continuar(Comando,8000);
williequesada 0:a1ce6cdc3045 1553 }
williequesada 0:a1ce6cdc3045 1554
pabloandres2906 1:4cdf726a3497 1555 if(Comando==USER_DATA) { // se encriptan los datos y se envían al esclavo
williequesada 0:a1ce6cdc3045 1556 Computer.printf("Usuario datos\n");
williequesada 0:a1ce6cdc3045 1557 Slave.Command(COMMAND_DATA);
williequesada 0:a1ce6cdc3045 1558 Slave.Encryption_Data(Parquimetro,Municipio,TiempoMinutos,Espacio,Track2);
williequesada 0:a1ce6cdc3045 1559 Slave.Encryption_Execute();
williequesada 0:a1ce6cdc3045 1560 Slave.Encryption_Send();
williequesada 0:a1ce6cdc3045 1561 Computer.printf("Tiempo: %i\n",TiempoMinutos);
williequesada 0:a1ce6cdc3045 1562 Computer.printf("Parquimetro: %s\n",Parquimetro);
williequesada 0:a1ce6cdc3045 1563 Computer.printf("Municipio: %s\n",Municipio);
williequesada 0:a1ce6cdc3045 1564 Computer.printf("Espacio: %s\n",Espacio);
williequesada 0:a1ce6cdc3045 1565 Computer.printf("Track2: %s\n",Track2);
pabloandres2906 1:4cdf726a3497 1566 Comando=Continuar(USER_POST,20000);//una vez que el esclavo tenga los datos con userpost se envían al servidor
williequesada 0:a1ce6cdc3045 1567 if (Comando==USER_FINISH){
williequesada 0:a1ce6cdc3045 1568 Slave.Command(COMMAND_END);
williequesada 0:a1ce6cdc3045 1569 }
williequesada 0:a1ce6cdc3045 1570 }
williequesada 0:a1ce6cdc3045 1571
williequesada 0:a1ce6cdc3045 1572 if(Comando==USER_POST) {
williequesada 0:a1ce6cdc3045 1573 Computer.printf("Usuario operacion\n");
williequesada 0:a1ce6cdc3045 1574 Slave.Command(COMMAND_POST);
williequesada 0:a1ce6cdc3045 1575 Slave.Encryption_Print();
pabloandres2906 1:4cdf726a3497 1576 Comando=Respuesta1(USER_ANSWER,50);// imprime en pantalla "realizando operación" y Comando=Useranswer
williequesada 0:a1ce6cdc3045 1577 }
williequesada 0:a1ce6cdc3045 1578
pabloandres2906 1:4cdf726a3497 1579 if(Comando==USER_ANSWER) { //
williequesada 0:a1ce6cdc3045 1580 Computer.printf("Usuario respuesta\n");
williequesada 0:a1ce6cdc3045 1581 Slave.Command(COMMAND_ANSWER);
williequesada 0:a1ce6cdc3045 1582 PrinterState = ImpresoraIniciar();
williequesada 0:a1ce6cdc3045 1583 Comando=Respuesta2(USER_PRINT,50000);
williequesada 0:a1ce6cdc3045 1584 }
williequesada 0:a1ce6cdc3045 1585
williequesada 0:a1ce6cdc3045 1586 if(Comando==USER_PRINT) {
williequesada 0:a1ce6cdc3045 1587 Computer.printf("Usuario imprimiendo\n");
williequesada 0:a1ce6cdc3045 1588 Comando=Imprimir(USER_FINISH,PrinterState);
williequesada 0:a1ce6cdc3045 1589 }
williequesada 0:a1ce6cdc3045 1590
williequesada 0:a1ce6cdc3045 1591 if(Comando==USER_FINISH) {
williequesada 0:a1ce6cdc3045 1592 Computer.printf("Usuario finalizar\n");
williequesada 0:a1ce6cdc3045 1593 Impresora.End();
williequesada 0:a1ce6cdc3045 1594 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 1595 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 1596 Screen.Clean();
williequesada 0:a1ce6cdc3045 1597 Screen.Off();
williequesada 0:a1ce6cdc3045 1598 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1599 Keypad_Init();
williequesada 0:a1ce6cdc3045 1600 while(true) {
williequesada 0:a1ce6cdc3045 1601 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1602 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1603 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 1604 break;
williequesada 0:a1ce6cdc3045 1605 }
williequesada 0:a1ce6cdc3045 1606 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 1607 if (Tecla!=NO_KEY) {
williequesada 0:a1ce6cdc3045 1608 Usuario_OperacionConsecutiva();
williequesada 0:a1ce6cdc3045 1609 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1610 }
williequesada 0:a1ce6cdc3045 1611 }
williequesada 0:a1ce6cdc3045 1612 Slave.Command(COMMAND_OFF);
williequesada 0:a1ce6cdc3045 1613 }
williequesada 0:a1ce6cdc3045 1614 }
williequesada 0:a1ce6cdc3045 1615
williequesada 0:a1ce6cdc3045 1616 void EsperarSim900(int TimeOut)
williequesada 0:a1ce6cdc3045 1617 {
williequesada 0:a1ce6cdc3045 1618 Computer.printf("Espera sim900\n");
williequesada 0:a1ce6cdc3045 1619 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1620 Keypad_Init();
williequesada 0:a1ce6cdc3045 1621 while(true) {
williequesada 0:a1ce6cdc3045 1622 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1623 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1624 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 1625 Computer.printf("Espera sim900 salir\n");
williequesada 0:a1ce6cdc3045 1626 BaseClock.stop();
williequesada 0:a1ce6cdc3045 1627 ParkingMeter.Max232(0);
williequesada 0:a1ce6cdc3045 1628 break;
williequesada 0:a1ce6cdc3045 1629 }
williequesada 0:a1ce6cdc3045 1630 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 1631 if (Tecla!=NO_KEY) {
williequesada 0:a1ce6cdc3045 1632 Computer.printf("Espera sim900 teclado\n");
williequesada 0:a1ce6cdc3045 1633 Screen.On();
williequesada 0:a1ce6cdc3045 1634 Screen.Init();
williequesada 0:a1ce6cdc3045 1635 PantallaInicio();
williequesada 0:a1ce6cdc3045 1636 Usuario(USER_INIT);
williequesada 0:a1ce6cdc3045 1637 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1638 }
williequesada 0:a1ce6cdc3045 1639 }
williequesada 0:a1ce6cdc3045 1640 }
williequesada 0:a1ce6cdc3045 1641
williequesada 0:a1ce6cdc3045 1642 //-----------------------------------------------------------------------------------------------------------------------------------------------------
williequesada 0:a1ce6cdc3045 1643
williequesada 0:a1ce6cdc3045 1644 void Interrupt_Mantenimiento()
williequesada 0:a1ce6cdc3045 1645 {
williequesada 0:a1ce6cdc3045 1646 MantenimientoInterruption=1;
williequesada 0:a1ce6cdc3045 1647 }
williequesada 0:a1ce6cdc3045 1648
williequesada 0:a1ce6cdc3045 1649 void M_PantallaConfiguracion()
williequesada 0:a1ce6cdc3045 1650 {
williequesada 0:a1ce6cdc3045 1651 Computer.printf("Pantala modo configuracion\n");
williequesada 0:a1ce6cdc3045 1652 Screen.Limits();
williequesada 0:a1ce6cdc3045 1653 Screen.PutString(35,19,"Modo Configuracion");
williequesada 0:a1ce6cdc3045 1654 Screen.Show();
williequesada 0:a1ce6cdc3045 1655 wait_ms(1000);
williequesada 0:a1ce6cdc3045 1656 }
williequesada 0:a1ce6cdc3045 1657
williequesada 0:a1ce6cdc3045 1658 uint8_t M_MenuConfiguracion(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1659 {
williequesada 0:a1ce6cdc3045 1660 int Selection=1;
williequesada 0:a1ce6cdc3045 1661 uint8_t Salida=M_SISTEMA;
williequesada 0:a1ce6cdc3045 1662 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1663 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1664
williequesada 0:a1ce6cdc3045 1665 Screen.Limits();
williequesada 0:a1ce6cdc3045 1666 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1667 Screen.PutString(15,4,"Sistema");
williequesada 0:a1ce6cdc3045 1668 Screen.PutString(15,23,"Red");
williequesada 0:a1ce6cdc3045 1669 Screen.PutString(15,42,"Impresora");
williequesada 0:a1ce6cdc3045 1670 Screen.PutString(135,4,"Teclado");
williequesada 0:a1ce6cdc3045 1671 Screen.PutString(135,23,"Lectora");
williequesada 0:a1ce6cdc3045 1672 Screen.PutString(135,42,"Informacion");
williequesada 0:a1ce6cdc3045 1673 Screen.Show();
williequesada 0:a1ce6cdc3045 1674
williequesada 0:a1ce6cdc3045 1675 Computer.printf("Sistema\n");
williequesada 0:a1ce6cdc3045 1676
williequesada 0:a1ce6cdc3045 1677 while(true) {
williequesada 0:a1ce6cdc3045 1678 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1679 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1680 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1681 return M_OFF;
williequesada 0:a1ce6cdc3045 1682 }
williequesada 0:a1ce6cdc3045 1683 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1684 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1685 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1686 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1687 Selection++;
williequesada 0:a1ce6cdc3045 1688 if(Selection==7) {
williequesada 0:a1ce6cdc3045 1689 Selection=1;
williequesada 0:a1ce6cdc3045 1690 }
williequesada 0:a1ce6cdc3045 1691 }
williequesada 0:a1ce6cdc3045 1692 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1693 Selection--;
williequesada 0:a1ce6cdc3045 1694 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1695 Selection=6;
williequesada 0:a1ce6cdc3045 1696 }
williequesada 0:a1ce6cdc3045 1697 }
williequesada 0:a1ce6cdc3045 1698 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1699 return M_OFF;
williequesada 0:a1ce6cdc3045 1700 }
williequesada 0:a1ce6cdc3045 1701 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1702 return Salida;
williequesada 0:a1ce6cdc3045 1703 }
williequesada 0:a1ce6cdc3045 1704 switch (Selection) {
williequesada 0:a1ce6cdc3045 1705 case 1:
williequesada 0:a1ce6cdc3045 1706 SelectionBox[0]=4;
williequesada 0:a1ce6cdc3045 1707 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1708 Computer.printf("Sistema\n");
williequesada 0:a1ce6cdc3045 1709 Salida=M_SISTEMA;
williequesada 0:a1ce6cdc3045 1710 break;
williequesada 0:a1ce6cdc3045 1711 case 2:
williequesada 0:a1ce6cdc3045 1712 SelectionBox[0]=4;
williequesada 0:a1ce6cdc3045 1713 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1714 Computer.printf("Red\n");
williequesada 0:a1ce6cdc3045 1715 Salida=M_RED;
williequesada 0:a1ce6cdc3045 1716 break;
williequesada 0:a1ce6cdc3045 1717 case 3:
williequesada 0:a1ce6cdc3045 1718 SelectionBox[0]=4;
williequesada 0:a1ce6cdc3045 1719 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1720 Computer.printf("Impresora\n");
williequesada 0:a1ce6cdc3045 1721 Salida=M_IMPRESORA;
williequesada 0:a1ce6cdc3045 1722 break;
williequesada 0:a1ce6cdc3045 1723 case 4:
williequesada 0:a1ce6cdc3045 1724 SelectionBox[0]=124;
williequesada 0:a1ce6cdc3045 1725 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1726 Computer.printf("Teclado\n");
williequesada 0:a1ce6cdc3045 1727 Salida=M_TECLADO;
williequesada 0:a1ce6cdc3045 1728 break;
williequesada 0:a1ce6cdc3045 1729 case 5:
williequesada 0:a1ce6cdc3045 1730 SelectionBox[0]=124;
williequesada 0:a1ce6cdc3045 1731 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1732 Computer.printf("Lectora\n");
williequesada 0:a1ce6cdc3045 1733 Salida=M_LECTORA;
williequesada 0:a1ce6cdc3045 1734 break;
williequesada 0:a1ce6cdc3045 1735 case 6:
williequesada 0:a1ce6cdc3045 1736 SelectionBox[0]=124;
williequesada 0:a1ce6cdc3045 1737 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1738 Computer.printf("Informacion\n");
williequesada 0:a1ce6cdc3045 1739 Salida=M_INFORMACION;
williequesada 0:a1ce6cdc3045 1740 break;
williequesada 0:a1ce6cdc3045 1741 }
williequesada 0:a1ce6cdc3045 1742
williequesada 0:a1ce6cdc3045 1743 Screen.Limits();
williequesada 0:a1ce6cdc3045 1744 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1745 Screen.PutString(15,4,"Sistema");
williequesada 0:a1ce6cdc3045 1746 Screen.PutString(15,23,"Red");
williequesada 0:a1ce6cdc3045 1747 Screen.PutString(15,42,"Impresora");
williequesada 0:a1ce6cdc3045 1748 Screen.PutString(135,4,"Teclado");
williequesada 0:a1ce6cdc3045 1749 Screen.PutString(135,23,"Lectora");
williequesada 0:a1ce6cdc3045 1750 Screen.PutString(135,42,"Informacion");
williequesada 0:a1ce6cdc3045 1751 Screen.Show();
williequesada 0:a1ce6cdc3045 1752 }
williequesada 0:a1ce6cdc3045 1753 }
williequesada 0:a1ce6cdc3045 1754 }
williequesada 0:a1ce6cdc3045 1755
williequesada 0:a1ce6cdc3045 1756 uint8_t M_MenuSistema(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1757 {
williequesada 0:a1ce6cdc3045 1758 uint8_t Salida=M_PARQUIMETRO;
williequesada 0:a1ce6cdc3045 1759 int Selection=1;
williequesada 0:a1ce6cdc3045 1760 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1761 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1762
williequesada 0:a1ce6cdc3045 1763 Screen.Limits();
williequesada 0:a1ce6cdc3045 1764 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1765 Screen.PutString(15,4,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 1766 Screen.PutString(15,23,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 1767 Screen.PutString(15,42,"Precio 30 mins");
williequesada 0:a1ce6cdc3045 1768 Screen.Show();
williequesada 0:a1ce6cdc3045 1769 Computer.printf("Id parquimetro\n");
williequesada 0:a1ce6cdc3045 1770
williequesada 0:a1ce6cdc3045 1771 while(true) {
williequesada 0:a1ce6cdc3045 1772 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1773 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1774 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1775 return M_OFF;
williequesada 0:a1ce6cdc3045 1776 }
williequesada 0:a1ce6cdc3045 1777 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1778 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1779 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1780 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1781 Selection++;
williequesada 0:a1ce6cdc3045 1782 if(Selection==4) {
williequesada 0:a1ce6cdc3045 1783 Selection=1;
williequesada 0:a1ce6cdc3045 1784 }
williequesada 0:a1ce6cdc3045 1785 }
williequesada 0:a1ce6cdc3045 1786 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1787 Selection--;
williequesada 0:a1ce6cdc3045 1788 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1789 Selection=3;
williequesada 0:a1ce6cdc3045 1790 }
williequesada 0:a1ce6cdc3045 1791 }
williequesada 0:a1ce6cdc3045 1792 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1793 return M_OFF;
williequesada 0:a1ce6cdc3045 1794 }
williequesada 0:a1ce6cdc3045 1795 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 1796 return M_ATRAS;
williequesada 0:a1ce6cdc3045 1797 }
williequesada 0:a1ce6cdc3045 1798 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1799 return Salida;
williequesada 0:a1ce6cdc3045 1800 }
williequesada 0:a1ce6cdc3045 1801 switch (Selection) {
williequesada 0:a1ce6cdc3045 1802 case 1:
williequesada 0:a1ce6cdc3045 1803 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1804 Computer.printf("Id Parquimetro\n");
williequesada 0:a1ce6cdc3045 1805 Salida=M_PARQUIMETRO;
williequesada 0:a1ce6cdc3045 1806 break;
williequesada 0:a1ce6cdc3045 1807 case 2:
williequesada 0:a1ce6cdc3045 1808 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1809 Computer.printf("Id Municipalidad\n");
williequesada 0:a1ce6cdc3045 1810 Salida=M_MUNICIPIO;
williequesada 0:a1ce6cdc3045 1811 break;
williequesada 0:a1ce6cdc3045 1812 case 3:
williequesada 0:a1ce6cdc3045 1813 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1814 Computer.printf("Precio 30mins\n");
williequesada 0:a1ce6cdc3045 1815 Salida=M_PRECIO;
williequesada 0:a1ce6cdc3045 1816 break;
williequesada 0:a1ce6cdc3045 1817 }
williequesada 0:a1ce6cdc3045 1818 Screen.Limits();
williequesada 0:a1ce6cdc3045 1819 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1820 Screen.PutString(15,4,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 1821 Screen.PutString(15,23,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 1822 Screen.PutString(15,42,"Precio 30 mins");
williequesada 0:a1ce6cdc3045 1823 Screen.Show();
williequesada 0:a1ce6cdc3045 1824 }
williequesada 0:a1ce6cdc3045 1825 }
williequesada 0:a1ce6cdc3045 1826 }
williequesada 0:a1ce6cdc3045 1827
williequesada 0:a1ce6cdc3045 1828 uint8_t M_MenuConexion(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1829 {
williequesada 0:a1ce6cdc3045 1830 uint8_t Salida=M_SENAL;
williequesada 0:a1ce6cdc3045 1831 int Selection=1;
williequesada 0:a1ce6cdc3045 1832 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1833 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1834
williequesada 0:a1ce6cdc3045 1835 Screen.Limits();
williequesada 0:a1ce6cdc3045 1836 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1837 Screen.Rectangle(129,6,5,0);
williequesada 0:a1ce6cdc3045 1838 Screen.PutString(15,4,"Intensidad senal");
williequesada 0:a1ce6cdc3045 1839 Screen.PutString(15,23,"Prueba hosting");
williequesada 0:a1ce6cdc3045 1840 Screen.PutString(15,42,"Conexion red");
williequesada 0:a1ce6cdc3045 1841 Screen.Show();
williequesada 0:a1ce6cdc3045 1842
williequesada 0:a1ce6cdc3045 1843 Computer.printf("Intensidad senal\n");
williequesada 0:a1ce6cdc3045 1844
williequesada 0:a1ce6cdc3045 1845 while(true) {
williequesada 0:a1ce6cdc3045 1846 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1847 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1848 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1849 return M_OFF;
williequesada 0:a1ce6cdc3045 1850 }
williequesada 0:a1ce6cdc3045 1851 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1852 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1853 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1854 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1855 Selection++;
williequesada 0:a1ce6cdc3045 1856 if(Selection==4) {
williequesada 0:a1ce6cdc3045 1857 Selection=1;
williequesada 0:a1ce6cdc3045 1858 }
williequesada 0:a1ce6cdc3045 1859 }
williequesada 0:a1ce6cdc3045 1860 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1861 Selection--;
williequesada 0:a1ce6cdc3045 1862 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1863 Selection=3;
williequesada 0:a1ce6cdc3045 1864 }
williequesada 0:a1ce6cdc3045 1865 }
williequesada 0:a1ce6cdc3045 1866 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 1867 return M_ATRAS;
williequesada 0:a1ce6cdc3045 1868 }
williequesada 0:a1ce6cdc3045 1869 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1870 return M_OFF;
williequesada 0:a1ce6cdc3045 1871 }
williequesada 0:a1ce6cdc3045 1872 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1873 return Salida;
williequesada 0:a1ce6cdc3045 1874 }
williequesada 0:a1ce6cdc3045 1875 switch (Selection) {
williequesada 0:a1ce6cdc3045 1876 case 1:
williequesada 0:a1ce6cdc3045 1877 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1878 Computer.printf("Intensidad senal\n");
williequesada 0:a1ce6cdc3045 1879 Salida=M_SENAL;
williequesada 0:a1ce6cdc3045 1880 break;
williequesada 0:a1ce6cdc3045 1881 case 2:
williequesada 0:a1ce6cdc3045 1882 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1883 Computer.printf("Prueba hosting\n");
williequesada 0:a1ce6cdc3045 1884 Salida=M_HOSTING;
williequesada 0:a1ce6cdc3045 1885 break;
williequesada 0:a1ce6cdc3045 1886 case 3:
williequesada 0:a1ce6cdc3045 1887 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1888 Computer.printf("Conexion red\n");
williequesada 0:a1ce6cdc3045 1889 Salida=M_CONEXION_SIM ;
williequesada 0:a1ce6cdc3045 1890 break;
williequesada 0:a1ce6cdc3045 1891 }
williequesada 0:a1ce6cdc3045 1892 Screen.Limits();
williequesada 0:a1ce6cdc3045 1893 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1894 Screen.Rectangle(129,6,5,0);
williequesada 0:a1ce6cdc3045 1895 Screen.PutString(15,4,"Intensidad senal");
williequesada 0:a1ce6cdc3045 1896 Screen.PutString(15,23,"Prueba hosting");
williequesada 0:a1ce6cdc3045 1897 Screen.PutString(15,42,"Conexion red");
williequesada 0:a1ce6cdc3045 1898 Screen.Show();
williequesada 0:a1ce6cdc3045 1899 }
williequesada 0:a1ce6cdc3045 1900 }
williequesada 0:a1ce6cdc3045 1901 }
williequesada 0:a1ce6cdc3045 1902
williequesada 0:a1ce6cdc3045 1903 uint8_t M_MenuImpresora(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1904 {
williequesada 0:a1ce6cdc3045 1905 uint8_t Salida=M_PAPEL;
williequesada 0:a1ce6cdc3045 1906 int Selection=1;
williequesada 0:a1ce6cdc3045 1907 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1908 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1909
williequesada 0:a1ce6cdc3045 1910 Screen.Limits();
williequesada 0:a1ce6cdc3045 1911 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1912 Screen.PutString(15,4,"Cambio de papel");
williequesada 0:a1ce6cdc3045 1913 Screen.PutString(15,23,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 1914 Screen.PutString(15,42,"Conexion impresora");
williequesada 0:a1ce6cdc3045 1915 Screen.Show();
williequesada 0:a1ce6cdc3045 1916
williequesada 0:a1ce6cdc3045 1917 Computer.printf("Cambio de papel\n");
williequesada 0:a1ce6cdc3045 1918
williequesada 0:a1ce6cdc3045 1919 while(true) {
williequesada 0:a1ce6cdc3045 1920 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1921 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1922 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1923 return M_OFF;
williequesada 0:a1ce6cdc3045 1924 }
williequesada 0:a1ce6cdc3045 1925 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1926 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1927 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1928 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1929 Selection++;
williequesada 0:a1ce6cdc3045 1930 if(Selection==4) {
williequesada 0:a1ce6cdc3045 1931 Selection=1;
williequesada 0:a1ce6cdc3045 1932 }
williequesada 0:a1ce6cdc3045 1933 }
williequesada 0:a1ce6cdc3045 1934 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1935 Selection--;
williequesada 0:a1ce6cdc3045 1936 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1937 Selection=3;
williequesada 0:a1ce6cdc3045 1938 }
williequesada 0:a1ce6cdc3045 1939 }
williequesada 0:a1ce6cdc3045 1940 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1941 return M_OFF;
williequesada 0:a1ce6cdc3045 1942 }
williequesada 0:a1ce6cdc3045 1943 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 1944 return M_ATRAS;
williequesada 0:a1ce6cdc3045 1945 }
williequesada 0:a1ce6cdc3045 1946 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1947 return Salida;
williequesada 0:a1ce6cdc3045 1948 }
williequesada 0:a1ce6cdc3045 1949 switch (Selection) {
williequesada 0:a1ce6cdc3045 1950 case 1:
williequesada 0:a1ce6cdc3045 1951 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1952 Computer.printf("Cambio de papel\n");
williequesada 0:a1ce6cdc3045 1953 Salida=M_PAPEL;
williequesada 0:a1ce6cdc3045 1954 break;
williequesada 0:a1ce6cdc3045 1955 case 2:
williequesada 0:a1ce6cdc3045 1956 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1957 Computer.printf("Tiquete de prueba\n");
williequesada 0:a1ce6cdc3045 1958 Salida=M_IMPRESION;
williequesada 0:a1ce6cdc3045 1959 break;
williequesada 0:a1ce6cdc3045 1960 case 3:
williequesada 0:a1ce6cdc3045 1961 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1962 Computer.printf("Conexion impresora\n");
williequesada 0:a1ce6cdc3045 1963 Salida=M_CONEXION_IMP;
williequesada 0:a1ce6cdc3045 1964 break;
williequesada 0:a1ce6cdc3045 1965 }
williequesada 0:a1ce6cdc3045 1966 Screen.Limits();
williequesada 0:a1ce6cdc3045 1967 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1968 Screen.PutString(15,4,"Cambio de papel");
williequesada 0:a1ce6cdc3045 1969 Screen.PutString(15,23,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 1970 Screen.PutString(15,42,"Conexion impresora");
williequesada 0:a1ce6cdc3045 1971 Screen.Show();
williequesada 0:a1ce6cdc3045 1972 }
williequesada 0:a1ce6cdc3045 1973 }
williequesada 0:a1ce6cdc3045 1974 }
williequesada 0:a1ce6cdc3045 1975
williequesada 0:a1ce6cdc3045 1976 uint8_t M_MenuLectora(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1977 {
williequesada 0:a1ce6cdc3045 1978 uint8_t Salida=M_LECTURA;
williequesada 0:a1ce6cdc3045 1979 int Selection=1;
williequesada 0:a1ce6cdc3045 1980 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1981 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1982
williequesada 0:a1ce6cdc3045 1983 Screen.Limits();
williequesada 0:a1ce6cdc3045 1984 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1985 Screen.PutString(15,4,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 1986 Screen.PutString(15,23,"Conexion lectora");
williequesada 0:a1ce6cdc3045 1987 Screen.Show();
williequesada 0:a1ce6cdc3045 1988
williequesada 0:a1ce6cdc3045 1989 Computer.printf("Prueba de lectura\n");
williequesada 0:a1ce6cdc3045 1990
williequesada 0:a1ce6cdc3045 1991 while(true) {
williequesada 0:a1ce6cdc3045 1992 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1993 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1994 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1995 return M_OFF;
williequesada 0:a1ce6cdc3045 1996 }
williequesada 0:a1ce6cdc3045 1997 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1998 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1999 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2000 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 2001 Selection++;
williequesada 0:a1ce6cdc3045 2002 if(Selection==3) {
williequesada 0:a1ce6cdc3045 2003 Selection=1;
williequesada 0:a1ce6cdc3045 2004 }
williequesada 0:a1ce6cdc3045 2005 }
williequesada 0:a1ce6cdc3045 2006 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2007 Selection--;
williequesada 0:a1ce6cdc3045 2008 if(Selection==0) {
williequesada 0:a1ce6cdc3045 2009 Selection=2;
williequesada 0:a1ce6cdc3045 2010 }
williequesada 0:a1ce6cdc3045 2011 }
williequesada 0:a1ce6cdc3045 2012 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2013 return M_OFF;
williequesada 0:a1ce6cdc3045 2014 }
williequesada 0:a1ce6cdc3045 2015 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2016 return M_ATRAS;
williequesada 0:a1ce6cdc3045 2017 }
williequesada 0:a1ce6cdc3045 2018 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2019 return Salida;
williequesada 0:a1ce6cdc3045 2020 }
williequesada 0:a1ce6cdc3045 2021 switch (Selection) {
williequesada 0:a1ce6cdc3045 2022 case 1:
williequesada 0:a1ce6cdc3045 2023 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 2024 Computer.printf("Prueba de lectura\n");
williequesada 0:a1ce6cdc3045 2025 Salida=M_LECTURA;
williequesada 0:a1ce6cdc3045 2026 break;
williequesada 0:a1ce6cdc3045 2027 case 2:
williequesada 0:a1ce6cdc3045 2028 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 2029 Computer.printf("Conexion lectora\n");
williequesada 0:a1ce6cdc3045 2030 Salida=M_CONEXION_LEC;
williequesada 0:a1ce6cdc3045 2031 break;
williequesada 0:a1ce6cdc3045 2032 }
williequesada 0:a1ce6cdc3045 2033 Screen.Limits();
williequesada 0:a1ce6cdc3045 2034 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 2035 Screen.PutString(15,4,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2036 Screen.PutString(15,23,"Conexion lectora");
williequesada 0:a1ce6cdc3045 2037 Screen.Show();
williequesada 0:a1ce6cdc3045 2038 }
williequesada 0:a1ce6cdc3045 2039 }
williequesada 0:a1ce6cdc3045 2040 }
williequesada 0:a1ce6cdc3045 2041
williequesada 0:a1ce6cdc3045 2042 uint8_t M_MenuTeclado(long Delay)
williequesada 0:a1ce6cdc3045 2043 {
williequesada 0:a1ce6cdc3045 2044 uint8_t Salida=M_PRUEBA_TECLA;
williequesada 0:a1ce6cdc3045 2045 int Selection=1;
williequesada 0:a1ce6cdc3045 2046 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 2047 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2048
williequesada 0:a1ce6cdc3045 2049 Screen.Limits();
williequesada 0:a1ce6cdc3045 2050 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 2051 Screen.PutString(15,4,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2052 Screen.Show();
williequesada 0:a1ce6cdc3045 2053 Computer.printf("Prueba de teclado\n");
williequesada 0:a1ce6cdc3045 2054
williequesada 0:a1ce6cdc3045 2055 while(true) {
williequesada 0:a1ce6cdc3045 2056 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2057 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2058 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 2059 return M_OFF;
williequesada 0:a1ce6cdc3045 2060 }
williequesada 0:a1ce6cdc3045 2061 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 2062 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2063 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2064 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 2065 Selection++;
williequesada 0:a1ce6cdc3045 2066 if(Selection==2) {
williequesada 0:a1ce6cdc3045 2067 Selection=1;
williequesada 0:a1ce6cdc3045 2068 }
williequesada 0:a1ce6cdc3045 2069 }
williequesada 0:a1ce6cdc3045 2070 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2071 Selection--;
williequesada 0:a1ce6cdc3045 2072 if(Selection==0) {
williequesada 0:a1ce6cdc3045 2073 Selection=1;
williequesada 0:a1ce6cdc3045 2074 }
williequesada 0:a1ce6cdc3045 2075 }
williequesada 0:a1ce6cdc3045 2076 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2077 return M_OFF;
williequesada 0:a1ce6cdc3045 2078 }
williequesada 0:a1ce6cdc3045 2079 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2080 return M_ATRAS;
williequesada 0:a1ce6cdc3045 2081 }
williequesada 0:a1ce6cdc3045 2082 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2083 return Salida;
williequesada 0:a1ce6cdc3045 2084 }
williequesada 0:a1ce6cdc3045 2085 switch (Selection) {
williequesada 0:a1ce6cdc3045 2086 case 1:
williequesada 0:a1ce6cdc3045 2087 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 2088 Computer.printf("Prueba de teclado\n");
williequesada 0:a1ce6cdc3045 2089 Salida=M_PRUEBA_TECLA;
williequesada 0:a1ce6cdc3045 2090 break;
williequesada 0:a1ce6cdc3045 2091 }
williequesada 0:a1ce6cdc3045 2092 Screen.Limits();
williequesada 0:a1ce6cdc3045 2093 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 2094 Screen.PutString(15,4,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2095 Screen.Show();
williequesada 0:a1ce6cdc3045 2096 }
williequesada 0:a1ce6cdc3045 2097 }
williequesada 0:a1ce6cdc3045 2098 }
williequesada 0:a1ce6cdc3045 2099
williequesada 0:a1ce6cdc3045 2100 uint8_t M_MenuInformacion()
williequesada 0:a1ce6cdc3045 2101 {
williequesada 0:a1ce6cdc3045 2102 return M_INFORMACION;
williequesada 0:a1ce6cdc3045 2103 }
williequesada 0:a1ce6cdc3045 2104
williequesada 0:a1ce6cdc3045 2105 bool M_ClaveIngreso(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2106 {
williequesada 0:a1ce6cdc3045 2107 char Clave_Actual[5]="))))";
williequesada 0:a1ce6cdc3045 2108 int SelectionLine=99;
williequesada 0:a1ce6cdc3045 2109 int Line=1;
williequesada 0:a1ce6cdc3045 2110 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2111
williequesada 0:a1ce6cdc3045 2112 Screen.Rectangle(SelectionLine,32,8,0);
williequesada 0:a1ce6cdc3045 2113 Screen.Rectangle(SelectionLine,50,8,0);
williequesada 0:a1ce6cdc3045 2114 Screen.PutString(15,12,"Ingrese password");
williequesada 0:a1ce6cdc3045 2115 Screen.PutChar(100,34,Clave_Actual[0]);
williequesada 0:a1ce6cdc3045 2116 Screen.PutChar(110,34,Clave_Actual[1]);
williequesada 0:a1ce6cdc3045 2117 Screen.PutChar(120,34,Clave_Actual[2]);
williequesada 0:a1ce6cdc3045 2118 Screen.PutChar(130,34,Clave_Actual[3]);
williequesada 0:a1ce6cdc3045 2119 Screen.Limits();
williequesada 0:a1ce6cdc3045 2120 Screen.Show();
williequesada 0:a1ce6cdc3045 2121 Computer.printf("Ingrese password\n");
williequesada 0:a1ce6cdc3045 2122 Computer.printf("%s\n",Clave);
williequesada 0:a1ce6cdc3045 2123
williequesada 0:a1ce6cdc3045 2124 while(true) {
williequesada 0:a1ce6cdc3045 2125 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2126 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2127 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2128 return 0;
williequesada 0:a1ce6cdc3045 2129 }
williequesada 0:a1ce6cdc3045 2130 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2131 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2132 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2133 if ((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9')) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2134 Clave_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2135 Line++;
williequesada 0:a1ce6cdc3045 2136 Screen.Rectangle(SelectionLine,32,8,0);
williequesada 0:a1ce6cdc3045 2137 Screen.Rectangle(SelectionLine,50,8,0);
williequesada 0:a1ce6cdc3045 2138 Screen.PutString(15,12,"Ingrese password");
williequesada 0:a1ce6cdc3045 2139 Screen.PutChar(100,34,Clave_Actual[0]);
williequesada 0:a1ce6cdc3045 2140 Screen.PutChar(111,34,Clave_Actual[1]);
williequesada 0:a1ce6cdc3045 2141 Screen.PutChar(122,34,Clave_Actual[2]);
williequesada 0:a1ce6cdc3045 2142 Screen.PutChar(133,34,Clave_Actual[3]);
williequesada 0:a1ce6cdc3045 2143 Screen.Limits();
williequesada 0:a1ce6cdc3045 2144 Screen.Show();
williequesada 0:a1ce6cdc3045 2145 if(Line==5) {
williequesada 0:a1ce6cdc3045 2146 Line=1;
williequesada 0:a1ce6cdc3045 2147 }
williequesada 0:a1ce6cdc3045 2148 if(Line==0) {
williequesada 0:a1ce6cdc3045 2149 Line=4;
williequesada 0:a1ce6cdc3045 2150 }
williequesada 0:a1ce6cdc3045 2151 wait_ms(100);
williequesada 0:a1ce6cdc3045 2152 }
williequesada 0:a1ce6cdc3045 2153 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2154 Line++;
williequesada 0:a1ce6cdc3045 2155 if(Line==5) {
williequesada 0:a1ce6cdc3045 2156 Line=1;
williequesada 0:a1ce6cdc3045 2157 }
williequesada 0:a1ce6cdc3045 2158 }
williequesada 0:a1ce6cdc3045 2159 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2160 Line--;
williequesada 0:a1ce6cdc3045 2161 if(Line==0) {
williequesada 0:a1ce6cdc3045 2162 Line=4;
williequesada 0:a1ce6cdc3045 2163 }
williequesada 0:a1ce6cdc3045 2164 }
williequesada 0:a1ce6cdc3045 2165 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2166 return 0;
williequesada 0:a1ce6cdc3045 2167 }
williequesada 0:a1ce6cdc3045 2168 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2169 return 0;
williequesada 0:a1ce6cdc3045 2170 }
williequesada 0:a1ce6cdc3045 2171 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2172 if((Clave_Actual[0]==Clave[0])&&(Clave_Actual[1]==Clave[1])&&(Clave_Actual[2]==Clave[2])&&(Clave_Actual[3]==Clave[3])) {
williequesada 0:a1ce6cdc3045 2173 return 1;
williequesada 0:a1ce6cdc3045 2174 } else {
williequesada 0:a1ce6cdc3045 2175 return 0;
williequesada 0:a1ce6cdc3045 2176 }
williequesada 0:a1ce6cdc3045 2177 }
williequesada 0:a1ce6cdc3045 2178 switch (Line) {
williequesada 0:a1ce6cdc3045 2179 case 1:
williequesada 0:a1ce6cdc3045 2180 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2181 break;
williequesada 0:a1ce6cdc3045 2182 case 2:
williequesada 0:a1ce6cdc3045 2183 SelectionLine=110;
williequesada 0:a1ce6cdc3045 2184 break;
williequesada 0:a1ce6cdc3045 2185 case 3:
williequesada 0:a1ce6cdc3045 2186 SelectionLine=121;
williequesada 0:a1ce6cdc3045 2187 break;
williequesada 0:a1ce6cdc3045 2188 case 4:
williequesada 0:a1ce6cdc3045 2189 SelectionLine=132;
williequesada 0:a1ce6cdc3045 2190 break;
williequesada 0:a1ce6cdc3045 2191 }
williequesada 0:a1ce6cdc3045 2192 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2193 Screen.Rectangle(SelectionLine,32,8,0);
williequesada 0:a1ce6cdc3045 2194 Screen.Rectangle(SelectionLine,50,8,0);
williequesada 0:a1ce6cdc3045 2195 Screen.PutString(15,12,"Ingrese password");
williequesada 0:a1ce6cdc3045 2196 Screen.PutChar(100,34,')');
williequesada 0:a1ce6cdc3045 2197 Screen.PutChar(111,34,')');
williequesada 0:a1ce6cdc3045 2198 Screen.PutChar(122,34,')');
williequesada 0:a1ce6cdc3045 2199 Screen.PutChar(133,34,')');
williequesada 0:a1ce6cdc3045 2200 Screen.Limits();
williequesada 0:a1ce6cdc3045 2201 Screen.Show();
williequesada 0:a1ce6cdc3045 2202 Computer.printf("%s\n",Clave);
williequesada 0:a1ce6cdc3045 2203 }
williequesada 0:a1ce6cdc3045 2204 }
williequesada 0:a1ce6cdc3045 2205 }
williequesada 0:a1ce6cdc3045 2206
williequesada 0:a1ce6cdc3045 2207 void M_Parquimetro(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2208 {
williequesada 0:a1ce6cdc3045 2209 char ID_Actual[5]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2210 sprintf(ID_Actual,"%s",Parquimetro);
williequesada 0:a1ce6cdc3045 2211 int SelectionLine = 99;
williequesada 0:a1ce6cdc3045 2212 int Line=1;
williequesada 0:a1ce6cdc3045 2213
williequesada 0:a1ce6cdc3045 2214 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2215
williequesada 0:a1ce6cdc3045 2216 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2217 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2218 Screen.PutString(15,12,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 2219 Screen.PutChar(100,34,ID_Actual[0]);
williequesada 0:a1ce6cdc3045 2220 Screen.PutChar(110,34,ID_Actual[1]);
williequesada 0:a1ce6cdc3045 2221 Screen.PutChar(120,34,ID_Actual[2]);
williequesada 0:a1ce6cdc3045 2222 Screen.PutChar(130,34,ID_Actual[3]);
williequesada 0:a1ce6cdc3045 2223 Screen.Limits();
williequesada 0:a1ce6cdc3045 2224 Screen.Show();
williequesada 0:a1ce6cdc3045 2225 Computer.printf("Id Parquimetro\n");
williequesada 0:a1ce6cdc3045 2226 Computer.printf("%s\n",ID_Actual);
williequesada 0:a1ce6cdc3045 2227
williequesada 0:a1ce6cdc3045 2228 while(true) {
williequesada 0:a1ce6cdc3045 2229 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2230 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2231 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2232 break;
williequesada 0:a1ce6cdc3045 2233 }
williequesada 0:a1ce6cdc3045 2234 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2235 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2236 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2237 if ((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9')) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2238 if((Tecla=='0')&&(Line==1)) {
williequesada 0:a1ce6cdc3045 2239 ID_Actual[Line-1]='1';
williequesada 0:a1ce6cdc3045 2240 } else {
williequesada 0:a1ce6cdc3045 2241 ID_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2242 }
williequesada 0:a1ce6cdc3045 2243 Line++;
williequesada 0:a1ce6cdc3045 2244 if(Line==5) {
williequesada 0:a1ce6cdc3045 2245 Line=1;
williequesada 0:a1ce6cdc3045 2246 }
williequesada 0:a1ce6cdc3045 2247 if(Line==0) {
williequesada 0:a1ce6cdc3045 2248 Line=4;
williequesada 0:a1ce6cdc3045 2249 }
williequesada 0:a1ce6cdc3045 2250 }
williequesada 0:a1ce6cdc3045 2251 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2252 Line++;
williequesada 0:a1ce6cdc3045 2253 if(Line==5) {
williequesada 0:a1ce6cdc3045 2254 Line=1;
williequesada 0:a1ce6cdc3045 2255 }
williequesada 0:a1ce6cdc3045 2256 }
williequesada 0:a1ce6cdc3045 2257 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2258 Line--;
williequesada 0:a1ce6cdc3045 2259 if(Line==0) {
williequesada 0:a1ce6cdc3045 2260 Line=4;
williequesada 0:a1ce6cdc3045 2261 }
williequesada 0:a1ce6cdc3045 2262 }
williequesada 0:a1ce6cdc3045 2263 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2264 break;
williequesada 0:a1ce6cdc3045 2265 }
williequesada 0:a1ce6cdc3045 2266 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2267 break;
williequesada 0:a1ce6cdc3045 2268 }
williequesada 0:a1ce6cdc3045 2269 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2270 sprintf(Parquimetro,"%s",ID_Actual);
williequesada 0:a1ce6cdc3045 2271 break;
williequesada 0:a1ce6cdc3045 2272 }
williequesada 0:a1ce6cdc3045 2273 switch (Line) {
williequesada 0:a1ce6cdc3045 2274 case 1:
williequesada 0:a1ce6cdc3045 2275 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2276 break;
williequesada 0:a1ce6cdc3045 2277 case 2:
williequesada 0:a1ce6cdc3045 2278 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2279 break;
williequesada 0:a1ce6cdc3045 2280 case 3:
williequesada 0:a1ce6cdc3045 2281 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2282 break;
williequesada 0:a1ce6cdc3045 2283 case 4:
williequesada 0:a1ce6cdc3045 2284 SelectionLine=129;
williequesada 0:a1ce6cdc3045 2285 break;
williequesada 0:a1ce6cdc3045 2286 }
williequesada 0:a1ce6cdc3045 2287 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2288 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2289 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2290 Screen.PutString(15,12,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 2291 Screen.PutChar(100,34,ID_Actual[0]);
williequesada 0:a1ce6cdc3045 2292 Screen.PutChar(110,34,ID_Actual[1]);
williequesada 0:a1ce6cdc3045 2293 Screen.PutChar(120,34,ID_Actual[2]);
williequesada 0:a1ce6cdc3045 2294 Screen.PutChar(130,34,ID_Actual[3]);
williequesada 0:a1ce6cdc3045 2295 Screen.Limits();
williequesada 0:a1ce6cdc3045 2296 Screen.Show();
williequesada 0:a1ce6cdc3045 2297 Computer.printf("%s\n",ID_Actual);
williequesada 0:a1ce6cdc3045 2298 }
williequesada 0:a1ce6cdc3045 2299 }
williequesada 0:a1ce6cdc3045 2300 }
williequesada 0:a1ce6cdc3045 2301
williequesada 0:a1ce6cdc3045 2302 void M_Municipio(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2303 {
williequesada 0:a1ce6cdc3045 2304 char CodigoMunicipio_Actual[3]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2305 sprintf(CodigoMunicipio_Actual,"%s",CodigoMunicipio);
williequesada 0:a1ce6cdc3045 2306
williequesada 0:a1ce6cdc3045 2307 int SelectionLine=109;
williequesada 0:a1ce6cdc3045 2308 int Line=1;
williequesada 0:a1ce6cdc3045 2309
williequesada 0:a1ce6cdc3045 2310 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2311
williequesada 0:a1ce6cdc3045 2312 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2313 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2314 Screen.PutString(15,12,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 2315 Screen.PutChar(110,34,CodigoMunicipio_Actual[0]);
williequesada 0:a1ce6cdc3045 2316 Screen.PutChar(120,34,CodigoMunicipio_Actual[1]);
williequesada 0:a1ce6cdc3045 2317 Screen.Limits();
williequesada 0:a1ce6cdc3045 2318 Screen.Show();
williequesada 0:a1ce6cdc3045 2319 Computer.printf("Id Municipalidad\n");
williequesada 0:a1ce6cdc3045 2320 Computer.printf("%s\n",CodigoMunicipio_Actual);
williequesada 0:a1ce6cdc3045 2321
williequesada 0:a1ce6cdc3045 2322 while(true) {
williequesada 0:a1ce6cdc3045 2323 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2324 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2325 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2326 break;
williequesada 0:a1ce6cdc3045 2327 }
williequesada 0:a1ce6cdc3045 2328 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2329 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2330 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2331 if ((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9')) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2332 CodigoMunicipio_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2333 Line++;
williequesada 0:a1ce6cdc3045 2334 if(Line==3) {
williequesada 0:a1ce6cdc3045 2335 Line=1;
williequesada 0:a1ce6cdc3045 2336 }
williequesada 0:a1ce6cdc3045 2337 if(Line==0) {
williequesada 0:a1ce6cdc3045 2338 Line=2;
williequesada 0:a1ce6cdc3045 2339 }
williequesada 0:a1ce6cdc3045 2340 }
williequesada 0:a1ce6cdc3045 2341 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2342 Line++;
williequesada 0:a1ce6cdc3045 2343 if(Line==3) {
williequesada 0:a1ce6cdc3045 2344 Line=1;
williequesada 0:a1ce6cdc3045 2345 }
williequesada 0:a1ce6cdc3045 2346 }
williequesada 0:a1ce6cdc3045 2347 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2348 Line--;
williequesada 0:a1ce6cdc3045 2349 if(Line==0) {
williequesada 0:a1ce6cdc3045 2350 Line=2;
williequesada 0:a1ce6cdc3045 2351 }
williequesada 0:a1ce6cdc3045 2352 }
williequesada 0:a1ce6cdc3045 2353 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2354 break;
williequesada 0:a1ce6cdc3045 2355 }
williequesada 0:a1ce6cdc3045 2356 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2357 break;
williequesada 0:a1ce6cdc3045 2358 }
williequesada 0:a1ce6cdc3045 2359 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2360 sprintf(CodigoMunicipio,"%s",CodigoMunicipio_Actual);
williequesada 0:a1ce6cdc3045 2361 if((CodigoMunicipio[0]=='0')&&(CodigoMunicipio[1]=='1')) {
williequesada 0:a1ce6cdc3045 2362 sprintf(Municipio,"San Jose ");
williequesada 0:a1ce6cdc3045 2363 Computer.printf("San Jose\n");
williequesada 0:a1ce6cdc3045 2364 }
williequesada 0:a1ce6cdc3045 2365 if((CodigoMunicipio[0]=='0')&&(CodigoMunicipio[1]=='2')) {
williequesada 0:a1ce6cdc3045 2366 sprintf(Municipio,"Tibas ");
williequesada 0:a1ce6cdc3045 2367 Computer.printf("Tibas\n");
williequesada 0:a1ce6cdc3045 2368 }
williequesada 0:a1ce6cdc3045 2369 if((CodigoMunicipio[0]=='0')&&(CodigoMunicipio[1]=='3')) {
williequesada 0:a1ce6cdc3045 2370 sprintf(Municipio,"Santa Ana");
williequesada 0:a1ce6cdc3045 2371 Computer.printf("Santa Ana\n");
williequesada 0:a1ce6cdc3045 2372 }
williequesada 0:a1ce6cdc3045 2373 break;
williequesada 0:a1ce6cdc3045 2374 }
williequesada 0:a1ce6cdc3045 2375 switch (Line) {
williequesada 0:a1ce6cdc3045 2376 case 1:
williequesada 0:a1ce6cdc3045 2377 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2378 break;
williequesada 0:a1ce6cdc3045 2379 case 2:
williequesada 0:a1ce6cdc3045 2380 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2381 break;
williequesada 0:a1ce6cdc3045 2382 }
williequesada 0:a1ce6cdc3045 2383 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2384 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2385 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2386 Screen.PutString(15,12,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 2387 Screen.PutChar(110,34,CodigoMunicipio_Actual[0]);
williequesada 0:a1ce6cdc3045 2388 Screen.PutChar(120,34,CodigoMunicipio_Actual[1]);
williequesada 0:a1ce6cdc3045 2389 Screen.Limits();
williequesada 0:a1ce6cdc3045 2390 Screen.Show();
williequesada 0:a1ce6cdc3045 2391 Computer.printf("%s\n",CodigoMunicipio_Actual);
williequesada 0:a1ce6cdc3045 2392 }
williequesada 0:a1ce6cdc3045 2393 }
williequesada 0:a1ce6cdc3045 2394 }
williequesada 0:a1ce6cdc3045 2395
williequesada 0:a1ce6cdc3045 2396 void M_Precio(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2397 {
williequesada 0:a1ce6cdc3045 2398 char Precio_Actual[5]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2399 if(Precio>999) {
williequesada 0:a1ce6cdc3045 2400 sprintf(Precio_Actual,"%i",Precio);
williequesada 0:a1ce6cdc3045 2401 }
williequesada 0:a1ce6cdc3045 2402 if(Precio<1000) {
williequesada 0:a1ce6cdc3045 2403 sprintf(Precio_Actual,"0%i",Precio);
williequesada 0:a1ce6cdc3045 2404 }
williequesada 0:a1ce6cdc3045 2405 if(Precio<100) {
williequesada 0:a1ce6cdc3045 2406 sprintf(Precio_Actual,"00%i",Precio);
williequesada 0:a1ce6cdc3045 2407 }
williequesada 0:a1ce6cdc3045 2408 if(Precio<10) {
williequesada 0:a1ce6cdc3045 2409 sprintf(Precio_Actual,"000%i",Precio);
williequesada 0:a1ce6cdc3045 2410 }
williequesada 0:a1ce6cdc3045 2411
williequesada 0:a1ce6cdc3045 2412 int SelectionLine=99;
williequesada 0:a1ce6cdc3045 2413 int Line=1;
williequesada 0:a1ce6cdc3045 2414 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2415
williequesada 0:a1ce6cdc3045 2416 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2417 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2418 Screen.PutString(15,12,"Precio establecido");
williequesada 0:a1ce6cdc3045 2419 Screen.PutChar(100,34,Precio_Actual[0]);
williequesada 0:a1ce6cdc3045 2420 Screen.PutChar(110,34,Precio_Actual[1]);
williequesada 0:a1ce6cdc3045 2421 Screen.PutChar(120,34,Precio_Actual[2]);
williequesada 0:a1ce6cdc3045 2422 Screen.PutChar(130,34,Precio_Actual[3]);
williequesada 0:a1ce6cdc3045 2423 Screen.PutChar(140,34,'*');
williequesada 0:a1ce6cdc3045 2424 Screen.Limits();
williequesada 0:a1ce6cdc3045 2425 Screen.Show();
williequesada 0:a1ce6cdc3045 2426 Computer.printf("Precio establecido\n");
williequesada 0:a1ce6cdc3045 2427 Computer.printf("%s\n",Precio_Actual);
williequesada 0:a1ce6cdc3045 2428
williequesada 0:a1ce6cdc3045 2429 while(true) {
williequesada 0:a1ce6cdc3045 2430 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2431 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2432 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2433 break;
williequesada 0:a1ce6cdc3045 2434 }
williequesada 0:a1ce6cdc3045 2435 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2436 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2437 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2438
williequesada 0:a1ce6cdc3045 2439 if ((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9')) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2440 Precio_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2441 Line++;
williequesada 0:a1ce6cdc3045 2442 if(Line==5) {
williequesada 0:a1ce6cdc3045 2443 Line=1;
williequesada 0:a1ce6cdc3045 2444 }
williequesada 0:a1ce6cdc3045 2445 if(Line==0) {
williequesada 0:a1ce6cdc3045 2446 Line=4;
williequesada 0:a1ce6cdc3045 2447 }
williequesada 0:a1ce6cdc3045 2448 }
williequesada 0:a1ce6cdc3045 2449 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2450 Line++;
williequesada 0:a1ce6cdc3045 2451 if(Line==5) {
williequesada 0:a1ce6cdc3045 2452 Line=1;
williequesada 0:a1ce6cdc3045 2453 }
williequesada 0:a1ce6cdc3045 2454 }
williequesada 0:a1ce6cdc3045 2455 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2456 Line--;
williequesada 0:a1ce6cdc3045 2457 if(Line==0) {
williequesada 0:a1ce6cdc3045 2458 Line=4;
williequesada 0:a1ce6cdc3045 2459 }
williequesada 0:a1ce6cdc3045 2460 }
williequesada 0:a1ce6cdc3045 2461 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2462 break;
williequesada 0:a1ce6cdc3045 2463 }
williequesada 0:a1ce6cdc3045 2464 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2465 break;
williequesada 0:a1ce6cdc3045 2466 }
williequesada 0:a1ce6cdc3045 2467 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2468 Precio=((uint8_t)Precio_Actual[0]-48)*1000+((uint8_t)Precio_Actual[1]-48)*100+((uint8_t)Precio_Actual[2]-48)*10+((uint8_t)Precio_Actual[3]-48);
williequesada 0:a1ce6cdc3045 2469 break;
williequesada 0:a1ce6cdc3045 2470 }
williequesada 0:a1ce6cdc3045 2471 switch (Line) {
williequesada 0:a1ce6cdc3045 2472 case 1:
williequesada 0:a1ce6cdc3045 2473 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2474 break;
williequesada 0:a1ce6cdc3045 2475 case 2:
williequesada 0:a1ce6cdc3045 2476 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2477 break;
williequesada 0:a1ce6cdc3045 2478 case 3:
williequesada 0:a1ce6cdc3045 2479 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2480 break;
williequesada 0:a1ce6cdc3045 2481 case 4:
williequesada 0:a1ce6cdc3045 2482 SelectionLine=129;
williequesada 0:a1ce6cdc3045 2483 break;
williequesada 0:a1ce6cdc3045 2484 }
williequesada 0:a1ce6cdc3045 2485 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2486 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2487 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2488 Screen.PutString(15,12,"Precio establecido");
williequesada 0:a1ce6cdc3045 2489 Screen.PutChar(100,34,Precio_Actual[0]);
williequesada 0:a1ce6cdc3045 2490 Screen.PutChar(110,34,Precio_Actual[1]);
williequesada 0:a1ce6cdc3045 2491 Screen.PutChar(120,34,Precio_Actual[2]);
williequesada 0:a1ce6cdc3045 2492 Screen.PutChar(130,34,Precio_Actual[3]);
williequesada 0:a1ce6cdc3045 2493 Screen.PutChar(140,34,'*');
williequesada 0:a1ce6cdc3045 2494 Screen.Limits();
williequesada 0:a1ce6cdc3045 2495 Screen.Show();
williequesada 0:a1ce6cdc3045 2496 Computer.printf("%s\n",Precio_Actual);
williequesada 0:a1ce6cdc3045 2497 }
williequesada 0:a1ce6cdc3045 2498 }
williequesada 0:a1ce6cdc3045 2499 }
williequesada 0:a1ce6cdc3045 2500
williequesada 0:a1ce6cdc3045 2501 void M_IntensidadSenal()
williequesada 0:a1ce6cdc3045 2502 {
williequesada 0:a1ce6cdc3045 2503 char Senal[]="000";
williequesada 0:a1ce6cdc3045 2504 Slave.Command(COMMAND_SIGNAL);
williequesada 0:a1ce6cdc3045 2505 Screen.Rectangle(129,14,5,0);
williequesada 0:a1ce6cdc3045 2506 Screen.PutString(15,12,"Intensidad senal");
williequesada 0:a1ce6cdc3045 2507 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2508 Screen.Limits();
williequesada 0:a1ce6cdc3045 2509 Screen.Show();
williequesada 0:a1ce6cdc3045 2510 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2511 wait(3);
williequesada 0:a1ce6cdc3045 2512
williequesada 0:a1ce6cdc3045 2513 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2514 while(true) {
williequesada 0:a1ce6cdc3045 2515 if(Slave.Available()) {
williequesada 0:a1ce6cdc3045 2516 Computer.putc('A');
williequesada 0:a1ce6cdc3045 2517 wait_ms(100);
williequesada 0:a1ce6cdc3045 2518 break;
williequesada 0:a1ce6cdc3045 2519 }
williequesada 0:a1ce6cdc3045 2520 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2521 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2522 if(Transcurrido>20000) {
williequesada 0:a1ce6cdc3045 2523 Computer.putc('E');
williequesada 0:a1ce6cdc3045 2524 break;
williequesada 0:a1ce6cdc3045 2525 }
williequesada 0:a1ce6cdc3045 2526 }
williequesada 0:a1ce6cdc3045 2527 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2528 if(InByte=='A') {
williequesada 0:a1ce6cdc3045 2529 Senal[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2530 Senal[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2531 Senal[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2532 Screen.Rectangle(129,14,5,0);
williequesada 0:a1ce6cdc3045 2533 Screen.PutString(15,12,"Intensidad senal");
williequesada 0:a1ce6cdc3045 2534 Screen.PutString(15,34,"CSQ:");
williequesada 0:a1ce6cdc3045 2535 Screen.PutChar(70,34,Senal[0]);
williequesada 0:a1ce6cdc3045 2536 Screen.PutChar(80,34,Senal[1]);
williequesada 0:a1ce6cdc3045 2537 Screen.PutChar(92,34,'.');
williequesada 0:a1ce6cdc3045 2538 Screen.PutChar(96,34,Senal[2]);
williequesada 0:a1ce6cdc3045 2539 Screen.Limits();
williequesada 0:a1ce6cdc3045 2540 Screen.Show();
williequesada 0:a1ce6cdc3045 2541 Computer.printf("CSQ: %s\n",Senal);
williequesada 0:a1ce6cdc3045 2542 wait(3);
williequesada 0:a1ce6cdc3045 2543 } else {
williequesada 0:a1ce6cdc3045 2544 Screen.Rectangle(129,14,5,0);
williequesada 0:a1ce6cdc3045 2545 Screen.PutString(15,12,"Intensidad senal");
williequesada 0:a1ce6cdc3045 2546 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2547 Screen.Limits();
williequesada 0:a1ce6cdc3045 2548 Screen.Show();
williequesada 0:a1ce6cdc3045 2549 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2550 wait(3);
williequesada 0:a1ce6cdc3045 2551 }
williequesada 0:a1ce6cdc3045 2552 }
williequesada 0:a1ce6cdc3045 2553
williequesada 0:a1ce6cdc3045 2554 void M_ConexionSim900()
williequesada 0:a1ce6cdc3045 2555 {
williequesada 0:a1ce6cdc3045 2556 Screen.PutString(15,12,"Conexion red");
williequesada 0:a1ce6cdc3045 2557 Screen.PutString(15,34,"Conetando...");
williequesada 0:a1ce6cdc3045 2558 Screen.Limits();
williequesada 0:a1ce6cdc3045 2559 Screen.Show();
williequesada 0:a1ce6cdc3045 2560 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2561
williequesada 0:a1ce6cdc3045 2562 Slave.Command(COMMAND_CONNECT);
williequesada 0:a1ce6cdc3045 2563 while(true) {
williequesada 0:a1ce6cdc3045 2564 if(Slave.Available()) {
williequesada 0:a1ce6cdc3045 2565 wait_ms(200);
williequesada 0:a1ce6cdc3045 2566 break;
williequesada 0:a1ce6cdc3045 2567 }
williequesada 0:a1ce6cdc3045 2568 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2569 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2570 if(Transcurrido>20000) {
williequesada 0:a1ce6cdc3045 2571 Computer.putc('E');
williequesada 0:a1ce6cdc3045 2572 break;
williequesada 0:a1ce6cdc3045 2573 }
williequesada 0:a1ce6cdc3045 2574 }
williequesada 0:a1ce6cdc3045 2575 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2576 if(InByte=='A') {
williequesada 0:a1ce6cdc3045 2577 Screen.PutString(15,12,"Conexion red");
williequesada 0:a1ce6cdc3045 2578 Screen.PutString(15,34,"Conectado.");
williequesada 0:a1ce6cdc3045 2579 Screen.Limits();
williequesada 0:a1ce6cdc3045 2580 Screen.Show();
williequesada 0:a1ce6cdc3045 2581 wait(3);
williequesada 0:a1ce6cdc3045 2582 } else {
williequesada 0:a1ce6cdc3045 2583 Screen.PutString(15,12,"Conexion red");
williequesada 0:a1ce6cdc3045 2584 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2585 Screen.Limits();
williequesada 0:a1ce6cdc3045 2586 Screen.Show();
williequesada 0:a1ce6cdc3045 2587 wait(3);
williequesada 0:a1ce6cdc3045 2588 }
williequesada 0:a1ce6cdc3045 2589 }
williequesada 0:a1ce6cdc3045 2590
williequesada 0:a1ce6cdc3045 2591 void M_PruebaTiquete()
williequesada 0:a1ce6cdc3045 2592 {
williequesada 0:a1ce6cdc3045 2593 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2594 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2595 Screen.Limits();
williequesada 0:a1ce6cdc3045 2596 Screen.Show();
williequesada 0:a1ce6cdc3045 2597 wait(1);
williequesada 0:a1ce6cdc3045 2598 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2599
williequesada 0:a1ce6cdc3045 2600 Impresora.Power(1);
williequesada 0:a1ce6cdc3045 2601 wait_ms(1000);
williequesada 0:a1ce6cdc3045 2602 Comando=Impresora.Reset();
williequesada 0:a1ce6cdc3045 2603
williequesada 0:a1ce6cdc3045 2604 if(Comando==2) {
williequesada 0:a1ce6cdc3045 2605 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2606 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2607 Screen.Limits();
williequesada 0:a1ce6cdc3045 2608 Screen.Show();
williequesada 0:a1ce6cdc3045 2609 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2610
williequesada 0:a1ce6cdc3045 2611 Impresora.End();
williequesada 0:a1ce6cdc3045 2612 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2613 wait(3);
williequesada 0:a1ce6cdc3045 2614 }
williequesada 0:a1ce6cdc3045 2615 if(Comando==1) {
williequesada 0:a1ce6cdc3045 2616 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2617 Screen.PutString(15,34,"Imprimiendo...");
williequesada 0:a1ce6cdc3045 2618 Screen.Limits();
williequesada 0:a1ce6cdc3045 2619 Screen.Show();
williequesada 0:a1ce6cdc3045 2620 Computer.printf("Imprimiendo...\n");
williequesada 0:a1ce6cdc3045 2621
williequesada 0:a1ce6cdc3045 2622 Comando=Impresora.Output(FechaRespuesta,"00:00","00:00","0000","00:00","000000","0000*");
williequesada 0:a1ce6cdc3045 2623 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2624 Computer.printf("Alarma Output\n");
williequesada 0:a1ce6cdc3045 2625 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2626 } else {
williequesada 0:a1ce6cdc3045 2627 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2628 }
williequesada 0:a1ce6cdc3045 2629
williequesada 0:a1ce6cdc3045 2630 Comando=Impresora.Paper(600);
williequesada 0:a1ce6cdc3045 2631 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2632 Computer.printf("Alarma Papel\n");
williequesada 0:a1ce6cdc3045 2633 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2634 } else {
williequesada 0:a1ce6cdc3045 2635 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2636 }
williequesada 0:a1ce6cdc3045 2637
williequesada 0:a1ce6cdc3045 2638 Comando=Impresora.Cutter(1);
williequesada 0:a1ce6cdc3045 2639 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2640 Computer.printf("Alarma Cutter\n");
williequesada 0:a1ce6cdc3045 2641 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2642 } else {
williequesada 0:a1ce6cdc3045 2643 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2644 }
williequesada 0:a1ce6cdc3045 2645
williequesada 0:a1ce6cdc3045 2646 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2647 Screen.PutString(15,34,"Retire.");
williequesada 0:a1ce6cdc3045 2648 Screen.Limits();
williequesada 0:a1ce6cdc3045 2649 Screen.Show();
williequesada 0:a1ce6cdc3045 2650 Computer.printf("Retire\n");
williequesada 0:a1ce6cdc3045 2651 wait(1);
williequesada 0:a1ce6cdc3045 2652 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2653 wait(2);
williequesada 0:a1ce6cdc3045 2654 }
williequesada 0:a1ce6cdc3045 2655 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2656 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2657 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2658 Screen.Limits();
williequesada 0:a1ce6cdc3045 2659 Screen.Show();
williequesada 0:a1ce6cdc3045 2660 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2661 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2662 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2663 wait(3);
williequesada 0:a1ce6cdc3045 2664 }
williequesada 0:a1ce6cdc3045 2665 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 2666
williequesada 0:a1ce6cdc3045 2667 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 2668 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 2669 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2670 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 2671 } else {
williequesada 0:a1ce6cdc3045 2672 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2673 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 2674 }
williequesada 0:a1ce6cdc3045 2675 }
williequesada 0:a1ce6cdc3045 2676
williequesada 0:a1ce6cdc3045 2677 void M_ConexionImpresora()
williequesada 0:a1ce6cdc3045 2678 {
williequesada 0:a1ce6cdc3045 2679 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2680 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2681 Screen.Limits();
williequesada 0:a1ce6cdc3045 2682 Screen.Show();
williequesada 0:a1ce6cdc3045 2683 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2684
williequesada 0:a1ce6cdc3045 2685 Impresora.Power(1);
williequesada 0:a1ce6cdc3045 2686 wait_ms(1000);
williequesada 0:a1ce6cdc3045 2687 Comando=Impresora.Reset();
williequesada 0:a1ce6cdc3045 2688
williequesada 0:a1ce6cdc3045 2689 if(Comando==2) {
williequesada 0:a1ce6cdc3045 2690 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2691 Screen.PutString(15,34,"Desconectada.");
williequesada 0:a1ce6cdc3045 2692 Screen.Limits();
williequesada 0:a1ce6cdc3045 2693 Screen.Show();
williequesada 0:a1ce6cdc3045 2694 Computer.printf("Desconectada\n");
williequesada 0:a1ce6cdc3045 2695 Impresora.End();
williequesada 0:a1ce6cdc3045 2696 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2697 wait(3);
williequesada 0:a1ce6cdc3045 2698 }
williequesada 0:a1ce6cdc3045 2699 if(Comando==1) {
williequesada 0:a1ce6cdc3045 2700 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2701 Screen.PutString(15,34,"Conectada.");
williequesada 0:a1ce6cdc3045 2702 Screen.Limits();
williequesada 0:a1ce6cdc3045 2703 Screen.Show();
williequesada 0:a1ce6cdc3045 2704 Computer.printf("Conectada\n");
williequesada 0:a1ce6cdc3045 2705 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2706 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2707 wait(3);
williequesada 0:a1ce6cdc3045 2708 }
williequesada 0:a1ce6cdc3045 2709 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2710 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2711 Screen.PutString(15,34,"Conectada error.");
williequesada 0:a1ce6cdc3045 2712 Screen.Limits();
williequesada 0:a1ce6cdc3045 2713 Screen.Show();
williequesada 0:a1ce6cdc3045 2714 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2715 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2716 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2717 wait(3);
williequesada 0:a1ce6cdc3045 2718 }
williequesada 0:a1ce6cdc3045 2719 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 2720 }
williequesada 0:a1ce6cdc3045 2721
williequesada 0:a1ce6cdc3045 2722 void M_CambioPapel(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2723 {
williequesada 0:a1ce6cdc3045 2724 char Papel_Actual[5]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2725 if(Papel>999) {
williequesada 0:a1ce6cdc3045 2726 sprintf(Papel_Actual,"%i",Papel);
williequesada 0:a1ce6cdc3045 2727 }
williequesada 0:a1ce6cdc3045 2728 if(Papel<1000) {
williequesada 0:a1ce6cdc3045 2729 sprintf(Papel_Actual,"0%i",Papel);
williequesada 0:a1ce6cdc3045 2730 }
williequesada 0:a1ce6cdc3045 2731 if(Papel<100) {
williequesada 0:a1ce6cdc3045 2732 sprintf(Papel_Actual,"00%i",Papel);
williequesada 0:a1ce6cdc3045 2733 }
williequesada 0:a1ce6cdc3045 2734 if(Papel<10) {
williequesada 0:a1ce6cdc3045 2735 sprintf(Papel_Actual,"000%i",Papel);
williequesada 0:a1ce6cdc3045 2736 }
williequesada 0:a1ce6cdc3045 2737
williequesada 0:a1ce6cdc3045 2738 int SelectionLine= 99;
williequesada 0:a1ce6cdc3045 2739 int Line=1;
williequesada 0:a1ce6cdc3045 2740
williequesada 0:a1ce6cdc3045 2741 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2742
williequesada 0:a1ce6cdc3045 2743 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2744 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2745 Screen.PutString(15,12,"Cambio de papel");
williequesada 0:a1ce6cdc3045 2746 Screen.PutChar(100,34,Papel_Actual[0]);
williequesada 0:a1ce6cdc3045 2747 Screen.PutChar(110,34,Papel_Actual[1]);
williequesada 0:a1ce6cdc3045 2748 Screen.PutChar(120,34,Papel_Actual[2]);
williequesada 0:a1ce6cdc3045 2749 Screen.PutChar(130,34,Papel_Actual[3]);
williequesada 0:a1ce6cdc3045 2750 Screen.Limits();
williequesada 0:a1ce6cdc3045 2751 Screen.Show();
williequesada 0:a1ce6cdc3045 2752 Computer.printf("Cambio de papel\n");
williequesada 0:a1ce6cdc3045 2753 Computer.printf("%s\n",Papel_Actual);
williequesada 0:a1ce6cdc3045 2754
williequesada 0:a1ce6cdc3045 2755 while(true) {
williequesada 0:a1ce6cdc3045 2756 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2757 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2758 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2759 break;
williequesada 0:a1ce6cdc3045 2760 }
williequesada 0:a1ce6cdc3045 2761 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2762 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2763 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2764 if ((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9')) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2765 Papel_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2766 Line++;
williequesada 0:a1ce6cdc3045 2767 if(Line==5) {
williequesada 0:a1ce6cdc3045 2768 Line=1;
williequesada 0:a1ce6cdc3045 2769 }
williequesada 0:a1ce6cdc3045 2770 if(Line==0) {
williequesada 0:a1ce6cdc3045 2771 Line=4;
williequesada 0:a1ce6cdc3045 2772 }
williequesada 0:a1ce6cdc3045 2773 }
williequesada 0:a1ce6cdc3045 2774 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2775 Line++;
williequesada 0:a1ce6cdc3045 2776 if(Line==5) {
williequesada 0:a1ce6cdc3045 2777 Line=1;
williequesada 0:a1ce6cdc3045 2778 }
williequesada 0:a1ce6cdc3045 2779 }
williequesada 0:a1ce6cdc3045 2780 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2781 Line--;
williequesada 0:a1ce6cdc3045 2782 if(Line==0) {
williequesada 0:a1ce6cdc3045 2783 Line=4;
williequesada 0:a1ce6cdc3045 2784 }
williequesada 0:a1ce6cdc3045 2785 }
williequesada 0:a1ce6cdc3045 2786 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2787 break;
williequesada 0:a1ce6cdc3045 2788 }
williequesada 0:a1ce6cdc3045 2789 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2790 break;
williequesada 0:a1ce6cdc3045 2791 }
williequesada 0:a1ce6cdc3045 2792 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2793 Papel=((uint8_t)Papel_Actual[0]-48)*1000+((uint8_t)Papel_Actual[1]-48)*100+((uint8_t)Papel_Actual[2]-48)*10+((uint8_t)Papel_Actual[3]-48);
williequesada 0:a1ce6cdc3045 2794 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 2795 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 2796 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2797 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 2798 } else {
williequesada 0:a1ce6cdc3045 2799 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2800 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 2801 }
williequesada 0:a1ce6cdc3045 2802 break;
williequesada 0:a1ce6cdc3045 2803 }
williequesada 0:a1ce6cdc3045 2804 switch (Line) {
williequesada 0:a1ce6cdc3045 2805 case 1:
williequesada 0:a1ce6cdc3045 2806 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2807 break;
williequesada 0:a1ce6cdc3045 2808 case 2:
williequesada 0:a1ce6cdc3045 2809 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2810 break;
williequesada 0:a1ce6cdc3045 2811 case 3:
williequesada 0:a1ce6cdc3045 2812 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2813 break;
williequesada 0:a1ce6cdc3045 2814 case 4:
williequesada 0:a1ce6cdc3045 2815 SelectionLine=129;
williequesada 0:a1ce6cdc3045 2816 break;
williequesada 0:a1ce6cdc3045 2817 }
williequesada 0:a1ce6cdc3045 2818 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2819 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2820 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2821 Screen.PutString(15,12,"Cambio de papel");
williequesada 0:a1ce6cdc3045 2822 Screen.PutChar(100,34,Papel_Actual[0]);
williequesada 0:a1ce6cdc3045 2823 Screen.PutChar(110,34,Papel_Actual[1]);
williequesada 0:a1ce6cdc3045 2824 Screen.PutChar(120,34,Papel_Actual[2]);
williequesada 0:a1ce6cdc3045 2825 Screen.PutChar(130,34,Papel_Actual[3]);
williequesada 0:a1ce6cdc3045 2826 Screen.Limits();
williequesada 0:a1ce6cdc3045 2827 Screen.Show();
williequesada 0:a1ce6cdc3045 2828 Computer.printf("%s\n",Papel_Actual);
williequesada 0:a1ce6cdc3045 2829 }
williequesada 0:a1ce6cdc3045 2830 }
williequesada 0:a1ce6cdc3045 2831 }
williequesada 0:a1ce6cdc3045 2832 void M_PruebaTeclado(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2833 {
williequesada 0:a1ce6cdc3045 2834 bool Numero;
williequesada 0:a1ce6cdc3045 2835 int Line=0;
williequesada 0:a1ce6cdc3045 2836 char Secuencia[16]= {'1','2','3','A','4','5','6','B','7','8','9','C','F','0','E','D'};
williequesada 0:a1ce6cdc3045 2837 char SecuenciaSelect[2];
williequesada 0:a1ce6cdc3045 2838 SecuenciaSelect[0]='1';
williequesada 0:a1ce6cdc3045 2839 SecuenciaSelect[1]='\0';
williequesada 0:a1ce6cdc3045 2840 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2841
williequesada 0:a1ce6cdc3045 2842 Screen.Limits();
williequesada 0:a1ce6cdc3045 2843 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2844 Screen.PutString(15,34,"> <");
williequesada 0:a1ce6cdc3045 2845 Screen.PutString(33,34,SecuenciaSelect);
williequesada 0:a1ce6cdc3045 2846 Screen.Show();
williequesada 0:a1ce6cdc3045 2847 Computer.putc(SecuenciaSelect[0]);
williequesada 0:a1ce6cdc3045 2848
williequesada 0:a1ce6cdc3045 2849 while(true) {
williequesada 0:a1ce6cdc3045 2850 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2851 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2852 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2853 Screen.Limits();
williequesada 0:a1ce6cdc3045 2854 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2855 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2856 Screen.Show();
williequesada 0:a1ce6cdc3045 2857 Computer.printf("\nError\n");
williequesada 0:a1ce6cdc3045 2858 wait(2);
williequesada 0:a1ce6cdc3045 2859 break;
williequesada 0:a1ce6cdc3045 2860 }
williequesada 0:a1ce6cdc3045 2861 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 2862 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2863 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2864
williequesada 0:a1ce6cdc3045 2865 Numero=(Tecla==Secuencia[Line]);
williequesada 0:a1ce6cdc3045 2866 if (Numero) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2867 Line++;
williequesada 0:a1ce6cdc3045 2868 SecuenciaSelect[0]=Secuencia[Line];
williequesada 0:a1ce6cdc3045 2869 }
williequesada 0:a1ce6cdc3045 2870
williequesada 0:a1ce6cdc3045 2871 if (Line>15) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2872 Screen.Limits();
williequesada 0:a1ce6cdc3045 2873 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2874 Screen.PutString(15,34,"Aprobada.");
williequesada 0:a1ce6cdc3045 2875 Screen.Show();
williequesada 0:a1ce6cdc3045 2876 Computer.printf("\nAprobada\n");
williequesada 0:a1ce6cdc3045 2877 wait(3);
williequesada 0:a1ce6cdc3045 2878 break;
williequesada 0:a1ce6cdc3045 2879 }
williequesada 0:a1ce6cdc3045 2880
williequesada 0:a1ce6cdc3045 2881 Screen.Limits();
williequesada 0:a1ce6cdc3045 2882 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2883 Screen.PutString(15,34,"> <");
williequesada 0:a1ce6cdc3045 2884 Screen.PutString(33,34,SecuenciaSelect);
williequesada 0:a1ce6cdc3045 2885 Screen.Show();
williequesada 0:a1ce6cdc3045 2886 Computer.putc(SecuenciaSelect[0]);
williequesada 0:a1ce6cdc3045 2887 }
williequesada 0:a1ce6cdc3045 2888 }
williequesada 0:a1ce6cdc3045 2889
williequesada 0:a1ce6cdc3045 2890 }
williequesada 0:a1ce6cdc3045 2891 int M_RetiroTarjeta(uint32_t TiempoFuera)
williequesada 0:a1ce6cdc3045 2892 {
williequesada 0:a1ce6cdc3045 2893 Computer.printf("Retiro tarjeta\n");
williequesada 0:a1ce6cdc3045 2894 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2895 while(true) {
williequesada 0:a1ce6cdc3045 2896 if(PositionCard()==0) {
williequesada 0:a1ce6cdc3045 2897 return 1;
williequesada 0:a1ce6cdc3045 2898 } else {
williequesada 0:a1ce6cdc3045 2899 Screen.Limits(); // Se pide al usuario por pantalla el retiro de la tarjeta
williequesada 0:a1ce6cdc3045 2900 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2901 Screen.PutString(15,34,"Retire tarjeta.");
williequesada 0:a1ce6cdc3045 2902 Screen.Show();
williequesada 0:a1ce6cdc3045 2903 }
williequesada 0:a1ce6cdc3045 2904 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2905 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2906 if(Transcurrido>TiempoFuera) {
williequesada 0:a1ce6cdc3045 2907 StateReader[1]='T';
williequesada 0:a1ce6cdc3045 2908 return 0;
williequesada 0:a1ce6cdc3045 2909 }
williequesada 0:a1ce6cdc3045 2910 }
williequesada 0:a1ce6cdc3045 2911 }
williequesada 0:a1ce6cdc3045 2912
williequesada 0:a1ce6cdc3045 2913 void M_PruebaLectora()
williequesada 0:a1ce6cdc3045 2914 {
williequesada 0:a1ce6cdc3045 2915 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 2916 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 2917 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2918 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2919 Screen.Limits(); // Se inicia el lector de tarjetas
williequesada 0:a1ce6cdc3045 2920 Screen.Show();
williequesada 0:a1ce6cdc3045 2921 wait(2);
williequesada 0:a1ce6cdc3045 2922
williequesada 0:a1ce6cdc3045 2923
williequesada 0:a1ce6cdc3045 2924 if(ResetCard()==1) {
williequesada 0:a1ce6cdc3045 2925
williequesada 0:a1ce6cdc3045 2926 Screen.Limits(); // Se pide al usuario por pantalla la intrduccion de la tarjeta
williequesada 0:a1ce6cdc3045 2927 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2928 Screen.PutString(15,34,"Introduzca tarjeta.");
williequesada 0:a1ce6cdc3045 2929 Screen.Show();
williequesada 0:a1ce6cdc3045 2930
williequesada 0:a1ce6cdc3045 2931 while(true) {
williequesada 0:a1ce6cdc3045 2932
williequesada 0:a1ce6cdc3045 2933 uint8_t RespuestaIngresoTarjeta = IngresoTarjeta(10000);
williequesada 0:a1ce6cdc3045 2934 if(RespuestaIngresoTarjeta==1) {
williequesada 0:a1ce6cdc3045 2935 Screen.Limits();
williequesada 0:a1ce6cdc3045 2936 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2937 Screen.PutString(15,34,"Retire tarjeta.");
williequesada 0:a1ce6cdc3045 2938 Screen.Show();
williequesada 0:a1ce6cdc3045 2939 }
williequesada 0:a1ce6cdc3045 2940 if(RespuestaIngresoTarjeta==0) {
williequesada 0:a1ce6cdc3045 2941 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2942 Screen.PutString(15,34,"Sin deteccion.");
williequesada 0:a1ce6cdc3045 2943 Screen.Limits();
williequesada 0:a1ce6cdc3045 2944 Screen.Show();
williequesada 0:a1ce6cdc3045 2945 wait(3);
williequesada 0:a1ce6cdc3045 2946 Screen.Clean();
williequesada 0:a1ce6cdc3045 2947 break;
williequesada 0:a1ce6cdc3045 2948 }
williequesada 0:a1ce6cdc3045 2949 if(RespuestaIngresoTarjeta==2) {
williequesada 0:a1ce6cdc3045 2950 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2951 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2952 Screen.Limits();
williequesada 0:a1ce6cdc3045 2953 Screen.Show();
williequesada 0:a1ce6cdc3045 2954 wait(3);
williequesada 0:a1ce6cdc3045 2955 break;
williequesada 0:a1ce6cdc3045 2956 }
williequesada 0:a1ce6cdc3045 2957
williequesada 0:a1ce6cdc3045 2958 uint8_t RespuestaReadCard=ReadCard(5000);
williequesada 0:a1ce6cdc3045 2959 if(RespuestaReadCard==2) {
williequesada 0:a1ce6cdc3045 2960 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2961 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2962 Screen.Limits();
williequesada 0:a1ce6cdc3045 2963 Screen.Show();
williequesada 0:a1ce6cdc3045 2964 wait(3);
williequesada 0:a1ce6cdc3045 2965 break;
williequesada 0:a1ce6cdc3045 2966 }
williequesada 0:a1ce6cdc3045 2967
williequesada 0:a1ce6cdc3045 2968
williequesada 0:a1ce6cdc3045 2969 // Se le la tarjeta al retirarse
williequesada 0:a1ce6cdc3045 2970 int DataResult=RecibeDataCard(); // Se corrobora que la informacion de la tajeta es la corre
williequesada 0:a1ce6cdc3045 2971 if(DataResult==0) {
williequesada 0:a1ce6cdc3045 2972 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2973 Screen.PutString(15,34,"ilegible.");
williequesada 0:a1ce6cdc3045 2974 Screen.Limits();
williequesada 0:a1ce6cdc3045 2975 Screen.Show();
williequesada 0:a1ce6cdc3045 2976 wait(2);
williequesada 0:a1ce6cdc3045 2977 if(M_RetiroTarjeta(7000)) {
williequesada 0:a1ce6cdc3045 2978 Screen.Limits();
williequesada 0:a1ce6cdc3045 2979 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2980 Screen.PutString(15,34,"Introduzca tarjeta.");
williequesada 0:a1ce6cdc3045 2981 Screen.Show();
williequesada 0:a1ce6cdc3045 2982 } else {
williequesada 0:a1ce6cdc3045 2983 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2984 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2985 Screen.Limits();
williequesada 0:a1ce6cdc3045 2986 Screen.Show();
williequesada 0:a1ce6cdc3045 2987 wait(3);
williequesada 0:a1ce6cdc3045 2988 break;
williequesada 0:a1ce6cdc3045 2989 }
williequesada 0:a1ce6cdc3045 2990 }
williequesada 0:a1ce6cdc3045 2991 if(DataResult==1) {
williequesada 0:a1ce6cdc3045 2992 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2993 Screen.PutString(15,34,"Aprobada.");
williequesada 0:a1ce6cdc3045 2994 Screen.Limits();
williequesada 0:a1ce6cdc3045 2995 Screen.Show();
williequesada 0:a1ce6cdc3045 2996 Computer.printf("\nAprobada\n");
williequesada 0:a1ce6cdc3045 2997 wait(3);
williequesada 0:a1ce6cdc3045 2998 break;
williequesada 0:a1ce6cdc3045 2999 }
williequesada 0:a1ce6cdc3045 3000 if(DataResult==2) {
williequesada 0:a1ce6cdc3045 3001 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3002 Screen.PutString(15,34,"ilegible.");
williequesada 0:a1ce6cdc3045 3003 Screen.Limits();
williequesada 0:a1ce6cdc3045 3004 Screen.Show();
williequesada 0:a1ce6cdc3045 3005 wait(2);
williequesada 0:a1ce6cdc3045 3006 if(M_RetiroTarjeta(7000)) {
williequesada 0:a1ce6cdc3045 3007 Screen.Limits();
williequesada 0:a1ce6cdc3045 3008 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3009 Screen.PutString(15,34,"Introduzca tarjeta.");
williequesada 0:a1ce6cdc3045 3010 Screen.Show();
williequesada 0:a1ce6cdc3045 3011 } else {
williequesada 0:a1ce6cdc3045 3012 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3013 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 3014 Screen.Limits();
williequesada 0:a1ce6cdc3045 3015 Screen.Show();
williequesada 0:a1ce6cdc3045 3016 wait(3);
williequesada 0:a1ce6cdc3045 3017 break;
williequesada 0:a1ce6cdc3045 3018 }
williequesada 0:a1ce6cdc3045 3019 }
williequesada 0:a1ce6cdc3045 3020 }
williequesada 0:a1ce6cdc3045 3021 } else {
williequesada 0:a1ce6cdc3045 3022 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3023 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 3024 Screen.Limits();
williequesada 0:a1ce6cdc3045 3025 Screen.Show();
williequesada 0:a1ce6cdc3045 3026 wait(3);
williequesada 0:a1ce6cdc3045 3027 }
williequesada 0:a1ce6cdc3045 3028 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 3029 Impresora.PowerMax(0);
williequesada 0:a1ce6cdc3045 3030 }
williequesada 0:a1ce6cdc3045 3031
williequesada 0:a1ce6cdc3045 3032 void M_ConexionLectora()
williequesada 0:a1ce6cdc3045 3033 {
williequesada 0:a1ce6cdc3045 3034 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 3035 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 3036 Screen.Limits();
williequesada 0:a1ce6cdc3045 3037 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3038 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 3039 Screen.Show();
williequesada 0:a1ce6cdc3045 3040 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 3041 wait(2);
williequesada 0:a1ce6cdc3045 3042 int RespuestaConexion=ResetCard();
williequesada 0:a1ce6cdc3045 3043
williequesada 0:a1ce6cdc3045 3044 if(RespuestaConexion==2) {
williequesada 0:a1ce6cdc3045 3045 Screen.Limits();
williequesada 0:a1ce6cdc3045 3046 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3047 Screen.PutString(15,34,"Desconectada.");
williequesada 0:a1ce6cdc3045 3048 Screen.Show();
williequesada 0:a1ce6cdc3045 3049 Computer.printf("Desconectada\n");
williequesada 0:a1ce6cdc3045 3050 wait(3);
williequesada 0:a1ce6cdc3045 3051 }
williequesada 0:a1ce6cdc3045 3052 if(RespuestaConexion==1) {
williequesada 0:a1ce6cdc3045 3053 Screen.Limits();
williequesada 0:a1ce6cdc3045 3054 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3055 Screen.PutString(15,34,"Conectada.");
williequesada 0:a1ce6cdc3045 3056 Screen.Show();
williequesada 0:a1ce6cdc3045 3057 Computer.printf("Conectada\n");
williequesada 0:a1ce6cdc3045 3058 wait(3);
williequesada 0:a1ce6cdc3045 3059 }
williequesada 0:a1ce6cdc3045 3060 if(RespuestaConexion==0) {
williequesada 0:a1ce6cdc3045 3061 Screen.Limits();
williequesada 0:a1ce6cdc3045 3062 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3063 Screen.PutString(15,34,"Conectada error.");
williequesada 0:a1ce6cdc3045 3064 Screen.Show();
williequesada 0:a1ce6cdc3045 3065 Computer.printf("Conectada error\n");
williequesada 0:a1ce6cdc3045 3066 wait(3);
williequesada 0:a1ce6cdc3045 3067 }
williequesada 0:a1ce6cdc3045 3068 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 3069 Impresora.PowerMax(0);
williequesada 0:a1ce6cdc3045 3070 }
williequesada 0:a1ce6cdc3045 3071
williequesada 0:a1ce6cdc3045 3072 void M_Informacion()
williequesada 0:a1ce6cdc3045 3073 {
williequesada 0:a1ce6cdc3045 3074 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 3075 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 3076 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 3077 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 3078 } else {
williequesada 0:a1ce6cdc3045 3079 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 3080 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 3081 }
williequesada 0:a1ce6cdc3045 3082
williequesada 0:a1ce6cdc3045 3083 char Alarmas[7]="AAAAAA";
williequesada 0:a1ce6cdc3045 3084 Alarmas[0]=ParkingMeter.AlarmReader();
williequesada 0:a1ce6cdc3045 3085 Alarmas[1]=ParkingMeter.AlarmPrinter();
williequesada 0:a1ce6cdc3045 3086 Alarmas[2]=ParkingMeter.AlarmPaper();
williequesada 0:a1ce6cdc3045 3087 Alarmas[3]=ParkingMeter.AlarmDoor1();
williequesada 0:a1ce6cdc3045 3088 Alarmas[4]=ParkingMeter.AlarmDoor2();
williequesada 0:a1ce6cdc3045 3089 Alarmas[5]=ParkingMeter.AlarmBattery();
williequesada 0:a1ce6cdc3045 3090
williequesada 0:a1ce6cdc3045 3091 Screen.PutString(15,4,"Transaccion:");
williequesada 0:a1ce6cdc3045 3092 Screen.PutString(129,4,FechaRespuesta);
williequesada 0:a1ce6cdc3045 3093 Screen.PutString(15,23,"Papel:");
williequesada 0:a1ce6cdc3045 3094 Screen.PutString(129,23,PapelDisponible);
williequesada 0:a1ce6cdc3045 3095 Screen.PutString(15,42,"Estado:");
williequesada 0:a1ce6cdc3045 3096 Screen.PutString(129,42,Alarmas);
williequesada 0:a1ce6cdc3045 3097 Screen.Limits();
williequesada 0:a1ce6cdc3045 3098 Screen.Show();
williequesada 0:a1ce6cdc3045 3099 wait(5);
williequesada 0:a1ce6cdc3045 3100 }
williequesada 0:a1ce6cdc3045 3101
williequesada 0:a1ce6cdc3045 3102
williequesada 0:a1ce6cdc3045 3103 uint8_t ImprimirHosting()
williequesada 0:a1ce6cdc3045 3104 {
williequesada 0:a1ce6cdc3045 3105 int PrinterState;
williequesada 0:a1ce6cdc3045 3106 wait(2);
williequesada 0:a1ce6cdc3045 3107 PrinterState = Impresora.Power(1);
williequesada 0:a1ce6cdc3045 3108 if(PrinterState){
williequesada 0:a1ce6cdc3045 3109 PrinterState=Impresora.Reset();
williequesada 0:a1ce6cdc3045 3110 }
williequesada 0:a1ce6cdc3045 3111
williequesada 0:a1ce6cdc3045 3112 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3113 wait(2);
williequesada 0:a1ce6cdc3045 3114 Computer.printf("Error.\n");
williequesada 0:a1ce6cdc3045 3115 Impresora.End();
williequesada 0:a1ce6cdc3045 3116 wait(4);
williequesada 0:a1ce6cdc3045 3117 }
williequesada 0:a1ce6cdc3045 3118 if(PrinterState==2) {
williequesada 0:a1ce6cdc3045 3119 wait(2);
williequesada 0:a1ce6cdc3045 3120 Computer.printf("Error.\n");
williequesada 0:a1ce6cdc3045 3121 Impresora.End();
williequesada 0:a1ce6cdc3045 3122 wait(4);
williequesada 0:a1ce6cdc3045 3123 }
williequesada 0:a1ce6cdc3045 3124 if(PrinterState==1) {
williequesada 0:a1ce6cdc3045 3125 PrinterState=Impresora.Output(FechaRespuesta,"00:00",HoraRespuesta,"0000","00:00","000000","0000*");
williequesada 0:a1ce6cdc3045 3126 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3127 Computer.printf("Alarma Output\n");
williequesada 0:a1ce6cdc3045 3128 return 0;
williequesada 0:a1ce6cdc3045 3129 }
williequesada 0:a1ce6cdc3045 3130 PrinterState=Impresora.Paper(250);
williequesada 0:a1ce6cdc3045 3131 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3132 Computer.printf("Alarma Papel\n");
williequesada 0:a1ce6cdc3045 3133 return 0;
williequesada 0:a1ce6cdc3045 3134 }
williequesada 0:a1ce6cdc3045 3135
williequesada 0:a1ce6cdc3045 3136 PrinterState=Impresora.Cutter(1);
williequesada 0:a1ce6cdc3045 3137 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3138 Computer.printf("Alarma Cutter\n");
williequesada 0:a1ce6cdc3045 3139 return 0;
williequesada 0:a1ce6cdc3045 3140 }
williequesada 0:a1ce6cdc3045 3141 wait(1);
williequesada 0:a1ce6cdc3045 3142 PrinterState=Impresora.End();
williequesada 0:a1ce6cdc3045 3143 wait(1);
williequesada 0:a1ce6cdc3045 3144 }
williequesada 0:a1ce6cdc3045 3145
williequesada 0:a1ce6cdc3045 3146 PrinterState=Impresora.Power(0);
williequesada 0:a1ce6cdc3045 3147 return 1;
williequesada 0:a1ce6cdc3045 3148 }
williequesada 0:a1ce6cdc3045 3149
williequesada 0:a1ce6cdc3045 3150 //------------------------------------------------------------------------------------------------------------------------------------------------------
williequesada 0:a1ce6cdc3045 3151 void Interrupt_Host()
williequesada 0:a1ce6cdc3045 3152 {
williequesada 0:a1ce6cdc3045 3153 ParkingMeter.Hosting();
williequesada 0:a1ce6cdc3045 3154 Screen.Light();
williequesada 0:a1ce6cdc3045 3155
williequesada 0:a1ce6cdc3045 3156 if(Doors.Read()>0) {
williequesada 0:a1ce6cdc3045 3157 Computer.printf("Alarma puertas\n");
williequesada 0:a1ce6cdc3045 3158 ParkingMeter.AlarmCall((3+Doors.Read()),'E');
williequesada 0:a1ce6cdc3045 3159 } else {
williequesada 0:a1ce6cdc3045 3160 ParkingMeter.AlarmCall(4,'A');
williequesada 0:a1ce6cdc3045 3161 ParkingMeter.AlarmCall(5,'A');
williequesada 0:a1ce6cdc3045 3162 }
williequesada 0:a1ce6cdc3045 3163
williequesada 0:a1ce6cdc3045 3164 if(Charger.Control()>0){
williequesada 0:a1ce6cdc3045 3165 ParkingMeter.AlarmCall(6,'A');
williequesada 0:a1ce6cdc3045 3166 Computer.printf("Bateria ok\n");
williequesada 0:a1ce6cdc3045 3167 Computer.printf("B:%.2f P:%.2f\n",Charger.BatteryRead(),Charger.PanelRead());
williequesada 0:a1ce6cdc3045 3168 } else {
williequesada 0:a1ce6cdc3045 3169 ParkingMeter.AlarmCall(6,'E');
williequesada 0:a1ce6cdc3045 3170 Computer.printf("Bateria baja\n");
williequesada 0:a1ce6cdc3045 3171 }
williequesada 0:a1ce6cdc3045 3172 }
williequesada 0:a1ce6cdc3045 3173
williequesada 0:a1ce6cdc3045 3174 void H_EnviarPaso(uint8_t Entrada_Comando)
williequesada 0:a1ce6cdc3045 3175 {
williequesada 0:a1ce6cdc3045 3176 switch (Entrada_Comando) {
williequesada 0:a1ce6cdc3045 3177 case 1:
williequesada 0:a1ce6cdc3045 3178 Slave.Command(HOSTING_STEP1);
williequesada 0:a1ce6cdc3045 3179 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3180 Progreso[1]='1';
williequesada 0:a1ce6cdc3045 3181 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3182 break;
williequesada 0:a1ce6cdc3045 3183 case 2:
williequesada 0:a1ce6cdc3045 3184 Slave.Command(HOSTING_STEP2);
williequesada 0:a1ce6cdc3045 3185 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3186 Progreso[1]='2';
williequesada 0:a1ce6cdc3045 3187 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3188 break;
williequesada 0:a1ce6cdc3045 3189 case 3:
williequesada 0:a1ce6cdc3045 3190 Slave.Command(HOSTING_STEP3);
williequesada 0:a1ce6cdc3045 3191 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3192 Progreso[1]='3';
williequesada 0:a1ce6cdc3045 3193 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3194 break;
williequesada 0:a1ce6cdc3045 3195 case 4:
williequesada 0:a1ce6cdc3045 3196 Slave.Command(HOSTING_STEP4);
williequesada 0:a1ce6cdc3045 3197 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3198 Progreso[1]='4';
williequesada 0:a1ce6cdc3045 3199 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3200 break;
williequesada 0:a1ce6cdc3045 3201 case 5:
williequesada 0:a1ce6cdc3045 3202 Slave.Command(HOSTING_STEP5);
williequesada 0:a1ce6cdc3045 3203 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3204 Progreso[1]='5';
williequesada 0:a1ce6cdc3045 3205 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3206 break;
williequesada 0:a1ce6cdc3045 3207 case 6:
williequesada 0:a1ce6cdc3045 3208 Slave.Command(HOSTING_STEP6);
williequesada 0:a1ce6cdc3045 3209 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3210 Progreso[1]='6';
williequesada 0:a1ce6cdc3045 3211 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3212 break;
williequesada 0:a1ce6cdc3045 3213 case 7:
williequesada 0:a1ce6cdc3045 3214 Slave.Command(HOSTING_STEP7);
williequesada 0:a1ce6cdc3045 3215 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3216 Progreso[1]='7';
williequesada 0:a1ce6cdc3045 3217 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3218 break;
williequesada 0:a1ce6cdc3045 3219 case 8:
williequesada 0:a1ce6cdc3045 3220 Alarmas[0]=ParkingMeter.AlarmReader();
williequesada 0:a1ce6cdc3045 3221 Alarmas[1]=ParkingMeter.AlarmPrinter();
williequesada 0:a1ce6cdc3045 3222 Alarmas[2]=ParkingMeter.AlarmPaper();
williequesada 0:a1ce6cdc3045 3223 Alarmas[3]=ParkingMeter.AlarmDoor1();
williequesada 0:a1ce6cdc3045 3224 Alarmas[4]=ParkingMeter.AlarmDoor2();
williequesada 0:a1ce6cdc3045 3225 Alarmas[5]=ParkingMeter.AlarmBattery();
williequesada 0:a1ce6cdc3045 3226 Slave.Command(HOSTING_STEP8);
williequesada 0:a1ce6cdc3045 3227 Slave.Send_Hosting(Parquimetro,Municipio,Alarmas);
williequesada 0:a1ce6cdc3045 3228 Computer.printf("Parquimetro: %s\n",Parquimetro);
williequesada 0:a1ce6cdc3045 3229 Computer.printf("Municipio: %s\n",Municipio);
williequesada 0:a1ce6cdc3045 3230 Computer.printf("Alarmas: %s\n",Alarmas);
williequesada 0:a1ce6cdc3045 3231 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3232 Progreso[1]='8';
williequesada 0:a1ce6cdc3045 3233 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3234 break;
williequesada 0:a1ce6cdc3045 3235 case 9:
williequesada 0:a1ce6cdc3045 3236 Slave.Command(HOSTING_STEP9);
williequesada 0:a1ce6cdc3045 3237 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3238 Progreso[1]='9';
williequesada 0:a1ce6cdc3045 3239 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3240 break;
williequesada 0:a1ce6cdc3045 3241 case 10:
williequesada 0:a1ce6cdc3045 3242 Slave.Command(HOSTING_STEP10);
williequesada 0:a1ce6cdc3045 3243 Progreso[0]='1';
williequesada 0:a1ce6cdc3045 3244 Progreso[1]='0';
williequesada 0:a1ce6cdc3045 3245 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3246 break;
williequesada 0:a1ce6cdc3045 3247 case 11:
williequesada 0:a1ce6cdc3045 3248 Slave.Command(HOSTING_STEP11);
williequesada 0:a1ce6cdc3045 3249 Progreso[0]='1';
williequesada 0:a1ce6cdc3045 3250 Progreso[1]='0';
williequesada 0:a1ce6cdc3045 3251 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3252 break;
williequesada 0:a1ce6cdc3045 3253 }
williequesada 0:a1ce6cdc3045 3254 }
williequesada 0:a1ce6cdc3045 3255
williequesada 0:a1ce6cdc3045 3256 void Hosting()
williequesada 0:a1ce6cdc3045 3257 {
williequesada 0:a1ce6cdc3045 3258 Host.detach();
williequesada 0:a1ce6cdc3045 3259 ParkingMeter.LedHosting(1);
williequesada 0:a1ce6cdc3045 3260 uint8_t PasoHostingNum=1;
williequesada 0:a1ce6cdc3045 3261 H_EnviarPaso(PasoHostingNum);
williequesada 0:a1ce6cdc3045 3262 Computer.printf("Hosting iniciando\n");
williequesada 0:a1ce6cdc3045 3263 Computer.printf("Paso %i\n", PasoHostingNum);
williequesada 0:a1ce6cdc3045 3264 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3265 BaseClock.start();
williequesada 0:a1ce6cdc3045 3266 while(true) {
williequesada 0:a1ce6cdc3045 3267 if(PasoHostingNum>10) {
williequesada 0:a1ce6cdc3045 3268 Computer.printf("Paso final\n");
williequesada 0:a1ce6cdc3045 3269 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3270 while(true) {
williequesada 0:a1ce6cdc3045 3271 if(Slave.Message()) {
williequesada 0:a1ce6cdc3045 3272 wait_ms(75);
williequesada 0:a1ce6cdc3045 3273 break;
williequesada 0:a1ce6cdc3045 3274 }
williequesada 0:a1ce6cdc3045 3275 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3276 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3277 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3278 break;
williequesada 0:a1ce6cdc3045 3279 }
williequesada 0:a1ce6cdc3045 3280 }
williequesada 0:a1ce6cdc3045 3281 char HostingRespuesta[7];
williequesada 0:a1ce6cdc3045 3282 HoraRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3283 HoraRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3284 HoraRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3285 HoraRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3286 HoraRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3287 HoraRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3288 HoraRespuesta[5]='\0';
williequesada 0:a1ce6cdc3045 3289 HostingRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3290 HostingRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3291 HostingRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3292 HostingRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3293 HostingRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3294 HostingRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3295
williequesada 0:a1ce6cdc3045 3296 Computer.printf("Respuesta: %s\n",HostingRespuesta);
williequesada 0:a1ce6cdc3045 3297 Computer.printf("Hora:%s\n",HoraRespuesta);
williequesada 0:a1ce6cdc3045 3298 if(HoraRespuesta[2]==':'){
williequesada 0:a1ce6cdc3045 3299 Screen.LightSet(HoraRespuesta);
williequesada 0:a1ce6cdc3045 3300 }
williequesada 0:a1ce6cdc3045 3301 if((HostingRespuesta[0]=='O')&&(HostingRespuesta[1]=='K')&&(HostingRespuesta[2]=='+')){
williequesada 0:a1ce6cdc3045 3302 Precio = ((uint8_t)HostingRespuesta[3]-48)*100 +((uint8_t)HostingRespuesta[4]-48)*10 +((uint8_t)HostingRespuesta[5]-48);
williequesada 0:a1ce6cdc3045 3303 Computer.printf("Precio: %i\n",Precio) ;
williequesada 0:a1ce6cdc3045 3304 }
williequesada 0:a1ce6cdc3045 3305 //ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 3306 //ImprimirHosting();
williequesada 0:a1ce6cdc3045 3307 //ParkingMeter.Max232(0);
williequesada 0:a1ce6cdc3045 3308 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3309 while(true) {
williequesada 0:a1ce6cdc3045 3310 if(Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3311 wait_ms(50);
williequesada 0:a1ce6cdc3045 3312 break;
williequesada 0:a1ce6cdc3045 3313 }
williequesada 0:a1ce6cdc3045 3314 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3315 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3316 if(Transcurrido>15000) {
williequesada 0:a1ce6cdc3045 3317 break;
williequesada 0:a1ce6cdc3045 3318 }
williequesada 0:a1ce6cdc3045 3319 }
williequesada 0:a1ce6cdc3045 3320 if((HostingRespuesta[0]=='O')&&(HostingRespuesta[1]=='K')) {
williequesada 0:a1ce6cdc3045 3321 Computer.printf("Alarmas aprobada\n");
williequesada 0:a1ce6cdc3045 3322 ParkingMeter.HostingOk();
williequesada 0:a1ce6cdc3045 3323 break;
williequesada 0:a1ce6cdc3045 3324 } else {
williequesada 0:a1ce6cdc3045 3325 Computer.printf("Alarmas fallo\n");
williequesada 0:a1ce6cdc3045 3326 break;
williequesada 0:a1ce6cdc3045 3327 }
williequesada 0:a1ce6cdc3045 3328 }
williequesada 0:a1ce6cdc3045 3329
williequesada 0:a1ce6cdc3045 3330 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 3331 if(Tecla!=NO_KEY) {
williequesada 0:a1ce6cdc3045 3332 Screen.On();
williequesada 0:a1ce6cdc3045 3333 wait_ms(20);
williequesada 0:a1ce6cdc3045 3334 Screen.Init();
williequesada 0:a1ce6cdc3045 3335 if(PasoHostingNum==1) {
williequesada 0:a1ce6cdc3045 3336 Computer.printf("Teclado encender Paso==1\n");
williequesada 0:a1ce6cdc3045 3337 Usuario(USER_INIT);
williequesada 0:a1ce6cdc3045 3338 break;
williequesada 0:a1ce6cdc3045 3339 }
williequesada 0:a1ce6cdc3045 3340 if(PasoHostingNum<3) {
williequesada 0:a1ce6cdc3045 3341 Computer.printf("Teclado Paso<3\n");
williequesada 0:a1ce6cdc3045 3342 Usuario(USER_INIT2);
williequesada 0:a1ce6cdc3045 3343 break;
williequesada 0:a1ce6cdc3045 3344 }
williequesada 0:a1ce6cdc3045 3345 if(PasoHostingNum<6) {
williequesada 0:a1ce6cdc3045 3346 Computer.printf("Teclado Paso<6\n");
williequesada 0:a1ce6cdc3045 3347 Usuario(USER_INIT3);
williequesada 0:a1ce6cdc3045 3348 break;
williequesada 0:a1ce6cdc3045 3349 }
williequesada 0:a1ce6cdc3045 3350 if(PasoHostingNum==6) {
williequesada 0:a1ce6cdc3045 3351 Computer.printf("Teclado Paso==6\n");
williequesada 0:a1ce6cdc3045 3352 Usuario(USER_INIT4);
williequesada 0:a1ce6cdc3045 3353 break;
williequesada 0:a1ce6cdc3045 3354 }
williequesada 0:a1ce6cdc3045 3355 if(PasoHostingNum<=8) {
williequesada 0:a1ce6cdc3045 3356 Computer.printf("Teclado Paso<=8\n");
williequesada 0:a1ce6cdc3045 3357 Usuario(USER_INIT5);
williequesada 0:a1ce6cdc3045 3358 break;
williequesada 0:a1ce6cdc3045 3359 }
williequesada 0:a1ce6cdc3045 3360 if(PasoHostingNum<=10) {
williequesada 0:a1ce6cdc3045 3361 Computer.printf("Teclado Paso<=10\n");
williequesada 0:a1ce6cdc3045 3362 Usuario(USER_INIT5);
williequesada 0:a1ce6cdc3045 3363 break;
williequesada 0:a1ce6cdc3045 3364 }
williequesada 0:a1ce6cdc3045 3365 if(PasoHostingNum<=11) {
williequesada 0:a1ce6cdc3045 3366 Computer.printf("Teclado Paso<=11\n");
williequesada 0:a1ce6cdc3045 3367 PantallaInicio();
williequesada 0:a1ce6cdc3045 3368 Usuario(USER_INIT5);
williequesada 0:a1ce6cdc3045 3369 }
williequesada 0:a1ce6cdc3045 3370 }
williequesada 0:a1ce6cdc3045 3371
williequesada 0:a1ce6cdc3045 3372 if (Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3373 PasoHostingNum++;
williequesada 0:a1ce6cdc3045 3374 Computer.printf("Paso %i\n", PasoHostingNum);
williequesada 0:a1ce6cdc3045 3375 H_EnviarPaso(PasoHostingNum);
williequesada 0:a1ce6cdc3045 3376 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3377 }
williequesada 0:a1ce6cdc3045 3378 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3379 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3380 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3381 Computer.printf("Hosting tiempo\n");
williequesada 0:a1ce6cdc3045 3382 break;
williequesada 0:a1ce6cdc3045 3383 }
williequesada 0:a1ce6cdc3045 3384 }
williequesada 0:a1ce6cdc3045 3385 Slave.Command(COMMAND_OFF);
williequesada 0:a1ce6cdc3045 3386 EsperarSim900(5000);
williequesada 0:a1ce6cdc3045 3387 ParkingMeter.LedHosting(0);
williequesada 0:a1ce6cdc3045 3388 Host.attach(&Interrupt_Host,5);//1800 30 minutos
williequesada 0:a1ce6cdc3045 3389 }
williequesada 0:a1ce6cdc3045 3390
williequesada 0:a1ce6cdc3045 3391 void M_PruebaHosting()
williequesada 0:a1ce6cdc3045 3392 {
williequesada 0:a1ce6cdc3045 3393 int Paso=1;
williequesada 0:a1ce6cdc3045 3394 int PasoSiguiente=1;
williequesada 0:a1ce6cdc3045 3395
williequesada 0:a1ce6cdc3045 3396 while(true) {
williequesada 0:a1ce6cdc3045 3397 if (Paso==PasoSiguiente) {
williequesada 0:a1ce6cdc3045 3398 Computer.printf("Paso %i\n",Paso);
williequesada 0:a1ce6cdc3045 3399 H_EnviarPaso(Paso);
williequesada 0:a1ce6cdc3045 3400 Paso=Paso+1;
williequesada 0:a1ce6cdc3045 3401 if(Paso>11) {
williequesada 0:a1ce6cdc3045 3402 Computer.printf("Paso %i final\n",Paso);
williequesada 0:a1ce6cdc3045 3403 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3404 while(true) {
williequesada 0:a1ce6cdc3045 3405 if(Slave.Message()) {
williequesada 0:a1ce6cdc3045 3406 wait_ms(75);
williequesada 0:a1ce6cdc3045 3407 break;
williequesada 0:a1ce6cdc3045 3408 }
williequesada 0:a1ce6cdc3045 3409 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3410 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3411 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3412 break;
williequesada 0:a1ce6cdc3045 3413 }
williequesada 0:a1ce6cdc3045 3414 }
williequesada 0:a1ce6cdc3045 3415
williequesada 0:a1ce6cdc3045 3416 char HostingRespuesta[7];
williequesada 0:a1ce6cdc3045 3417 HoraRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3418 HoraRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3419 HoraRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3420 HoraRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3421 HoraRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3422 HoraRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3423 HostingRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3424 HostingRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3425 HostingRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3426 HostingRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3427 HostingRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3428 HostingRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3429
williequesada 0:a1ce6cdc3045 3430 Computer.printf("Respuesta: %s\n",HostingRespuesta);
williequesada 0:a1ce6cdc3045 3431 Computer.printf("Hora: %s\n",HoraRespuesta);
williequesada 0:a1ce6cdc3045 3432 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3433 while(true) {
williequesada 0:a1ce6cdc3045 3434 if(Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3435 wait_ms(50);
williequesada 0:a1ce6cdc3045 3436 break;
williequesada 0:a1ce6cdc3045 3437 }
williequesada 0:a1ce6cdc3045 3438 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3439 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3440 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3441 break;
williequesada 0:a1ce6cdc3045 3442 }
williequesada 0:a1ce6cdc3045 3443 }
williequesada 0:a1ce6cdc3045 3444 if((HostingRespuesta[0]=='O')&&(HostingRespuesta[1]=='K')) {
williequesada 0:a1ce6cdc3045 3445 Computer.printf("Alarmas aprobada\n");
williequesada 0:a1ce6cdc3045 3446 Screen.PutString(15,12,"Prueba hosting");
williequesada 0:a1ce6cdc3045 3447 Screen.PutString(15,34,"Aprobada.");
williequesada 0:a1ce6cdc3045 3448 Screen.Limits();
williequesada 0:a1ce6cdc3045 3449 Screen.Show();
williequesada 0:a1ce6cdc3045 3450 wait_ms(2000);
williequesada 0:a1ce6cdc3045 3451 ParkingMeter.HostingOk();
williequesada 0:a1ce6cdc3045 3452 break;
williequesada 0:a1ce6cdc3045 3453 } else {
williequesada 0:a1ce6cdc3045 3454 Computer.printf("Alarmas fallo\n");
williequesada 0:a1ce6cdc3045 3455 Screen.PutString(15,12,"Prueba hosting");
williequesada 0:a1ce6cdc3045 3456 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 3457 Screen.Limits();
williequesada 0:a1ce6cdc3045 3458 Screen.Show();
williequesada 0:a1ce6cdc3045 3459 wait_ms(2000);
williequesada 0:a1ce6cdc3045 3460 break;
williequesada 0:a1ce6cdc3045 3461 }
williequesada 0:a1ce6cdc3045 3462 }
williequesada 0:a1ce6cdc3045 3463 Screen.PutString(15,12,"Prueba hosting");
williequesada 0:a1ce6cdc3045 3464 Screen.PutString(15,34,"Progreso:");
williequesada 0:a1ce6cdc3045 3465 Screen.PutChar(105,34,Progreso[0]);
williequesada 0:a1ce6cdc3045 3466 Screen.PutChar(115,34,Progreso[1]);
williequesada 0:a1ce6cdc3045 3467 Screen.PutChar(125,34,Progreso[2]);
williequesada 0:a1ce6cdc3045 3468 Screen.PutChar(135,34,'%');
williequesada 0:a1ce6cdc3045 3469 Screen.Limits();
williequesada 0:a1ce6cdc3045 3470 Screen.Show();
williequesada 0:a1ce6cdc3045 3471 }
williequesada 0:a1ce6cdc3045 3472 if (Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3473 PasoSiguiente=PasoSiguiente+1;
williequesada 0:a1ce6cdc3045 3474 Computer.printf("Next\n");
williequesada 0:a1ce6cdc3045 3475 }
williequesada 0:a1ce6cdc3045 3476 }
williequesada 0:a1ce6cdc3045 3477 }
williequesada 0:a1ce6cdc3045 3478
williequesada 0:a1ce6cdc3045 3479 void Mantenimiento()
williequesada 0:a1ce6cdc3045 3480 {
williequesada 0:a1ce6cdc3045 3481 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 3482 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 3483 ParkingMeter.LedMantenimiento(1);
williequesada 0:a1ce6cdc3045 3484 Screen.On();
williequesada 0:a1ce6cdc3045 3485 Screen.Init();
williequesada 0:a1ce6cdc3045 3486 BaseClock.start();
williequesada 0:a1ce6cdc3045 3487 M_PantallaConfiguracion();
williequesada 0:a1ce6cdc3045 3488 bool ClaveAceptada=M_ClaveIngreso(5000);
williequesada 0:a1ce6cdc3045 3489 while(ClaveAceptada) {
williequesada 0:a1ce6cdc3045 3490 Comando=M_MenuConfiguracion(30000);
williequesada 0:a1ce6cdc3045 3491 switch(Comando) {
williequesada 0:a1ce6cdc3045 3492 case M_SISTEMA:
williequesada 0:a1ce6cdc3045 3493 Computer.printf("--> Sistema\n");
williequesada 0:a1ce6cdc3045 3494 Comando=M_MenuSistema(30000);
williequesada 0:a1ce6cdc3045 3495 if(Comando==M_PARQUIMETRO) {
williequesada 0:a1ce6cdc3045 3496 Computer.printf("--> Id parquimetro\n");
williequesada 0:a1ce6cdc3045 3497 M_Parquimetro(30000);
williequesada 0:a1ce6cdc3045 3498 }
williequesada 0:a1ce6cdc3045 3499 if(Comando==M_MUNICIPIO) {
williequesada 0:a1ce6cdc3045 3500 Computer.printf("--> Id municipalidad\n");
williequesada 0:a1ce6cdc3045 3501 M_Municipio(30000);
williequesada 0:a1ce6cdc3045 3502 }
williequesada 0:a1ce6cdc3045 3503 if(Comando==M_PRECIO) {
williequesada 0:a1ce6cdc3045 3504 Computer.printf("--> Precio 10mins\n");
williequesada 0:a1ce6cdc3045 3505 M_Precio(30000);
williequesada 0:a1ce6cdc3045 3506 }
williequesada 0:a1ce6cdc3045 3507 break;
williequesada 0:a1ce6cdc3045 3508
williequesada 0:a1ce6cdc3045 3509 case M_RED:
williequesada 0:a1ce6cdc3045 3510 Computer.printf("--> Red\n");
williequesada 0:a1ce6cdc3045 3511 Comando=M_MenuConexion(30000);
williequesada 0:a1ce6cdc3045 3512 if(Comando==M_SENAL) {
williequesada 0:a1ce6cdc3045 3513 Computer.printf("--> Intensidad senal\n");
williequesada 0:a1ce6cdc3045 3514 M_IntensidadSenal();
williequesada 0:a1ce6cdc3045 3515 }
williequesada 0:a1ce6cdc3045 3516 if(Comando==M_HOSTING) {
williequesada 0:a1ce6cdc3045 3517 Computer.printf("--> Prueba hosting\n");
williequesada 0:a1ce6cdc3045 3518 M_PruebaHosting();
williequesada 0:a1ce6cdc3045 3519 }
williequesada 0:a1ce6cdc3045 3520 if(Comando==M_CONEXION_SIM) {
williequesada 0:a1ce6cdc3045 3521 Computer.printf("--> Conexion modulo\n");
williequesada 0:a1ce6cdc3045 3522 M_ConexionSim900();
williequesada 0:a1ce6cdc3045 3523 }
williequesada 0:a1ce6cdc3045 3524 break;
williequesada 0:a1ce6cdc3045 3525
williequesada 0:a1ce6cdc3045 3526 case M_IMPRESORA:
williequesada 0:a1ce6cdc3045 3527 Computer.printf("--> Impresora\n");
williequesada 0:a1ce6cdc3045 3528 Comando=M_MenuImpresora(30000);
williequesada 0:a1ce6cdc3045 3529 if(Comando==M_PAPEL) {
williequesada 0:a1ce6cdc3045 3530 Computer.printf("--> Cambio de papel\n");
williequesada 0:a1ce6cdc3045 3531 M_CambioPapel(30000);
williequesada 0:a1ce6cdc3045 3532 }
williequesada 0:a1ce6cdc3045 3533 if(Comando==M_IMPRESION) {
williequesada 0:a1ce6cdc3045 3534 Computer.printf("--> Tiquete de prueba\n");
williequesada 0:a1ce6cdc3045 3535 M_PruebaTiquete();
williequesada 0:a1ce6cdc3045 3536 }
williequesada 0:a1ce6cdc3045 3537 if(Comando==M_CONEXION_IMP) {
williequesada 0:a1ce6cdc3045 3538 Computer.printf("--> Conexion impresora\n");
williequesada 0:a1ce6cdc3045 3539 M_ConexionImpresora();
williequesada 0:a1ce6cdc3045 3540 }
williequesada 0:a1ce6cdc3045 3541 break;
williequesada 0:a1ce6cdc3045 3542
williequesada 0:a1ce6cdc3045 3543 case M_TECLADO:
williequesada 0:a1ce6cdc3045 3544 Computer.printf("--> Teclado\n");
williequesada 0:a1ce6cdc3045 3545 Comando=M_MenuTeclado(30000);
williequesada 0:a1ce6cdc3045 3546 if(Comando==M_PRUEBA_TECLA) {
williequesada 0:a1ce6cdc3045 3547 Computer.printf("--> Prueba de teclado\n");
williequesada 0:a1ce6cdc3045 3548 M_PruebaTeclado(2000);
williequesada 0:a1ce6cdc3045 3549 }
williequesada 0:a1ce6cdc3045 3550 break;
williequesada 0:a1ce6cdc3045 3551
williequesada 0:a1ce6cdc3045 3552 case M_LECTORA:
williequesada 0:a1ce6cdc3045 3553 Computer.printf("--> Lectora\n");
williequesada 0:a1ce6cdc3045 3554 Comando=M_MenuLectora(30000);
williequesada 0:a1ce6cdc3045 3555 if(Comando==M_LECTURA) {
williequesada 0:a1ce6cdc3045 3556 Computer.printf("--> Prueba de lectura\n");
williequesada 0:a1ce6cdc3045 3557 M_PruebaLectora();
williequesada 0:a1ce6cdc3045 3558 }
williequesada 0:a1ce6cdc3045 3559 if(Comando==M_CONEXION_LEC) {
williequesada 0:a1ce6cdc3045 3560 Computer.printf("--> Conexion lectora\n");
williequesada 0:a1ce6cdc3045 3561 M_ConexionLectora();
williequesada 0:a1ce6cdc3045 3562 }
williequesada 0:a1ce6cdc3045 3563 break;
williequesada 0:a1ce6cdc3045 3564
williequesada 0:a1ce6cdc3045 3565 case M_INFORMACION:
williequesada 0:a1ce6cdc3045 3566 Comando=M_MenuInformacion();
williequesada 0:a1ce6cdc3045 3567 if(Comando==M_INFORMACION) {
williequesada 0:a1ce6cdc3045 3568 Computer.printf("--> Informacion\n");
williequesada 0:a1ce6cdc3045 3569 M_Informacion();
williequesada 0:a1ce6cdc3045 3570 }
williequesada 0:a1ce6cdc3045 3571 break;
williequesada 0:a1ce6cdc3045 3572
williequesada 0:a1ce6cdc3045 3573 default:
williequesada 0:a1ce6cdc3045 3574 Comando=M_OFF;
williequesada 0:a1ce6cdc3045 3575 }
williequesada 0:a1ce6cdc3045 3576
williequesada 0:a1ce6cdc3045 3577 if(Comando==M_OFF) {
williequesada 0:a1ce6cdc3045 3578 Computer.printf("Cerrando modo configuracion\n");
williequesada 0:a1ce6cdc3045 3579 break;
williequesada 0:a1ce6cdc3045 3580 }
williequesada 0:a1ce6cdc3045 3581 }
williequesada 0:a1ce6cdc3045 3582 MantenimientoInterruption=0;
williequesada 0:a1ce6cdc3045 3583 ParkingMeter.LedMantenimiento(0);
williequesada 0:a1ce6cdc3045 3584 ParkingMeter.Max232(0);
williequesada 0:a1ce6cdc3045 3585 Impresora.PowerMax(0);
williequesada 0:a1ce6cdc3045 3586 BaseClock.stop();
williequesada 0:a1ce6cdc3045 3587 Screen.Clean();
williequesada 0:a1ce6cdc3045 3588 Screen.Off();
williequesada 0:a1ce6cdc3045 3589 }
williequesada 0:a1ce6cdc3045 3590
pabloandres2906 1:4cdf726a3497 3591 void InitSistema(){//iniciar el sistema
williequesada 0:a1ce6cdc3045 3592 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3593 wait_ms(50);
pabloandres2906 1:4cdf726a3497 3594 Screen.On();//encender, iniciar y limpiar pantalla
williequesada 0:a1ce6cdc3045 3595 Screen.Init();
williequesada 0:a1ce6cdc3045 3596 Screen.Clean();
pabloandres2906 1:4cdf726a3497 3597 Keypad_C1.rise(&KeyPad_InterruptDisable);//desactivando interrupciones para el teclado
williequesada 0:a1ce6cdc3045 3598 Keypad_C2.rise(&KeyPad_InterruptDisable);
williequesada 0:a1ce6cdc3045 3599 Keypad_C3.rise(&KeyPad_InterruptDisable);
williequesada 0:a1ce6cdc3045 3600 Keypad_C4.rise(&KeyPad_InterruptDisable);
pabloandres2906 1:4cdf726a3497 3601 Configuracion.rise(&Interrupt_Mantenimiento);//activando interrupcion para el modo de configuracion
pabloandres2906 1:4cdf726a3497 3602 CardReader.attach(&Interrupt_CardReader);//activando interrupcion para el lector de tarjeta
pabloandres2906 1:4cdf726a3497 3603 Host.attach(&Interrupt_Host,5);//1800 30 minutos interrupcion hosting
williequesada 0:a1ce6cdc3045 3604 Computer.printf("Prototipo Completo 4\n");
williequesada 0:a1ce6cdc3045 3605 Screen.Off();
williequesada 0:a1ce6cdc3045 3606 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3607 }
williequesada 0:a1ce6cdc3045 3608
williequesada 0:a1ce6cdc3045 3609 int main()
williequesada 0:a1ce6cdc3045 3610 {
pabloandres2906 1:4cdf726a3497 3611 InitSistema(); //iniciar el sistema
williequesada 0:a1ce6cdc3045 3612 while(1) {
pabloandres2906 1:4cdf726a3497 3613 KeyPad_InterruptEnable(); //activando interrupciones para el teclado
pabloandres2906 1:4cdf726a3497 3614 Doors.InterruptEnable(); //activando interrupciones para los switches de las puertas
williequesada 0:a1ce6cdc3045 3615
pabloandres2906 1:4cdf726a3497 3616 hal_sleep(); //en cada ciclo se manda la placa a dormir esperando las interrupciones
williequesada 0:a1ce6cdc3045 3617
pabloandres2906 1:4cdf726a3497 3618 if(KeyPad_Read() != NO_KEY) { //si se detecta alguna tecla presionada
williequesada 0:a1ce6cdc3045 3619 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3620 wait_ms(50);
pabloandres2906 1:4cdf726a3497 3621 ParkingMeter.LedUsuario(1); //activa LED3 (rojo) indicando operacion de usuario
pabloandres2906 1:4cdf726a3497 3622 Usuario(USER_INIT); //empieza operacion de usuario
williequesada 0:a1ce6cdc3045 3623 EsperarSim900(5000);
williequesada 0:a1ce6cdc3045 3624 Host.attach(&Interrupt_Host,5);
williequesada 0:a1ce6cdc3045 3625 ParkingMeter.LedUsuario(0);
williequesada 0:a1ce6cdc3045 3626 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3627 }
williequesada 0:a1ce6cdc3045 3628 if(MantenimientoInterruption) {
williequesada 0:a1ce6cdc3045 3629 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3630 wait_ms(50);
williequesada 0:a1ce6cdc3045 3631 Mantenimiento();
williequesada 0:a1ce6cdc3045 3632 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3633 }
williequesada 0:a1ce6cdc3045 3634 if(ParkingMeter.AlarmState()) {
williequesada 0:a1ce6cdc3045 3635 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3636 wait_ms(50);
williequesada 0:a1ce6cdc3045 3637 Hosting();
williequesada 0:a1ce6cdc3045 3638 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3639 }
williequesada 0:a1ce6cdc3045 3640 }
williequesada 0:a1ce6cdc3045 3641 }