Programa Prototipo Setex

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

Committer:
williequesada
Date:
Tue Jun 04 19:53:44 2019 +0000
Revision:
0:a1ce6cdc3045
Child:
1:4cdf726a3497
pablo

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
williequesada 0:a1ce6cdc3045 227 char Parquimetro[5]="1069";
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];
williequesada 0:a1ce6cdc3045 240 int Precio=300;
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
williequesada 0:a1ce6cdc3045 545 sprintf(Espacio,"_ ");
williequesada 0:a1ce6cdc3045 546
williequesada 0:a1ce6cdc3045 547 Screen.Limits();
williequesada 0:a1ce6cdc3045 548 Screen.PutString(15,12,"Numero de espacio:");
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();
williequesada 0:a1ce6cdc3045 557 Keypad_Init();
williequesada 0:a1ce6cdc3045 558 while(true) {
williequesada 0:a1ce6cdc3045 559 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 560 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 561 if(Transcurrido>TimeOut) {
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();
williequesada 0:a1ce6cdc3045 567 if (Tecla!=NO_KEY) { // Se valida que se ingrese una tecla valida
williequesada 0:a1ce6cdc3045 568 Inicio=BaseClock.read_ms();
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]=' ';
williequesada 0:a1ce6cdc3045 574 Espacio[5]='\0';
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 }
williequesada 0:a1ce6cdc3045 583 if (Tecla=='C') { //Cancelar operacion
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
williequesada 0:a1ce6cdc3045 1459 void Usuario(uint8_t Entrada)
williequesada 0:a1ce6cdc3045 1460 {
williequesada 0:a1ce6cdc3045 1461 int PrinterState;
williequesada 0:a1ce6cdc3045 1462 uint8_t Comando=Entrada;
williequesada 0:a1ce6cdc3045 1463 if(Comando==USER_INIT) {
williequesada 0:a1ce6cdc3045 1464 Host.detach();//1800 30 minutosHost.attach(&Interrupt_Host,5);//1800 30 minutos
williequesada 0:a1ce6cdc3045 1465 Computer.printf("Usuario iniciar 1\n");
williequesada 0:a1ce6cdc3045 1466 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1467 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1468 Screen.On();
williequesada 0:a1ce6cdc3045 1469 Screen.Init();
williequesada 0:a1ce6cdc3045 1470 Slave.Awake();
williequesada 0:a1ce6cdc3045 1471 Slave.Command(COMMAND_ON);
williequesada 0:a1ce6cdc3045 1472 BaseClock.start();
williequesada 0:a1ce6cdc3045 1473 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1474 Comando=USER_PLACE;
williequesada 0:a1ce6cdc3045 1475 }
williequesada 0:a1ce6cdc3045 1476
williequesada 0:a1ce6cdc3045 1477 if(Comando==USER_INIT2) {
williequesada 0:a1ce6cdc3045 1478 Computer.printf("Usuario iniciar 2\n");
williequesada 0:a1ce6cdc3045 1479 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1480 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1481 BaseClock.start();
williequesada 0:a1ce6cdc3045 1482 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1483 Comando=USER_PLACE;
williequesada 0:a1ce6cdc3045 1484 }
williequesada 0:a1ce6cdc3045 1485
williequesada 0:a1ce6cdc3045 1486 if(Comando==USER_INIT3) {
williequesada 0:a1ce6cdc3045 1487 Computer.printf("Usuario iniciar 3\n");
williequesada 0:a1ce6cdc3045 1488 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1489 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1490 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1491 BaseClock.start();
williequesada 0:a1ce6cdc3045 1492 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1493 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1494 Comando=GetPlace(USER_CARD,15000);
williequesada 0:a1ce6cdc3045 1495 }
williequesada 0:a1ce6cdc3045 1496
williequesada 0:a1ce6cdc3045 1497 if(Comando==USER_INIT4) {
williequesada 0:a1ce6cdc3045 1498 Computer.printf("Usuario iniciar 4\n");
williequesada 0:a1ce6cdc3045 1499 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1500 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1501 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1502 BaseClock.start();
williequesada 0:a1ce6cdc3045 1503 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1504 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1505 Comando=GetPlace(USER_CARD2,15000);
williequesada 0:a1ce6cdc3045 1506 }
williequesada 0:a1ce6cdc3045 1507
williequesada 0:a1ce6cdc3045 1508 if(Comando==USER_INIT5) {
williequesada 0:a1ce6cdc3045 1509 Computer.printf("Usuario iniciar 5\n");
williequesada 0:a1ce6cdc3045 1510 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 1511 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 1512 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1513 BaseClock.start();
williequesada 0:a1ce6cdc3045 1514 BaseClock.reset();
williequesada 0:a1ce6cdc3045 1515 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1516 Comando=GetPlace(USER_CARD2,15000);
williequesada 0:a1ce6cdc3045 1517 if(Comando==USER_CARD2) {
williequesada 0:a1ce6cdc3045 1518 Slave.Command(HOSTING_OFF);
williequesada 0:a1ce6cdc3045 1519 }
williequesada 0:a1ce6cdc3045 1520 }
williequesada 0:a1ce6cdc3045 1521
williequesada 0:a1ce6cdc3045 1522 if(Comando==USER_PLACE) {
williequesada 0:a1ce6cdc3045 1523 Computer.printf("Usuario espacio\n");
williequesada 0:a1ce6cdc3045 1524 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 1525 Comando=GetPlace(USER_CARD,15000);
williequesada 0:a1ce6cdc3045 1526 if(Comando==USER_CARD) {
williequesada 0:a1ce6cdc3045 1527 Slave.Command(COMMAND_INIT);
williequesada 0:a1ce6cdc3045 1528 }
williequesada 0:a1ce6cdc3045 1529 }
williequesada 0:a1ce6cdc3045 1530
williequesada 0:a1ce6cdc3045 1531 if(Comando==USER_CARD) {
williequesada 0:a1ce6cdc3045 1532 Computer.printf("Usuario tarjeta\n");
williequesada 0:a1ce6cdc3045 1533 Comando=GetCard(USER_TIME,20000,5000);
williequesada 0:a1ce6cdc3045 1534 if(Comando==USER_TIME) {
williequesada 0:a1ce6cdc3045 1535 Slave.Command(COMMAND_GPRS);
williequesada 0:a1ce6cdc3045 1536 }
williequesada 0:a1ce6cdc3045 1537 }
williequesada 0:a1ce6cdc3045 1538
williequesada 0:a1ce6cdc3045 1539 if(Comando==USER_CARD2) {
williequesada 0:a1ce6cdc3045 1540 Computer.printf("Usuario tarjeta 2\n");
williequesada 0:a1ce6cdc3045 1541 Comando=GetCard(USER_TIME,20000,5000);
williequesada 0:a1ce6cdc3045 1542 }
williequesada 0:a1ce6cdc3045 1543
williequesada 0:a1ce6cdc3045 1544 if(Comando==USER_TIME) {
williequesada 0:a1ce6cdc3045 1545 Computer.printf("Usuario tiempo\n");
williequesada 0:a1ce6cdc3045 1546 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 1547 Comando=GetTime(USER_DATA,15000);
williequesada 0:a1ce6cdc3045 1548 if (Comando==USER_FINISH){
williequesada 0:a1ce6cdc3045 1549 Slave.Command(COMMAND_END);
williequesada 0:a1ce6cdc3045 1550 }
williequesada 0:a1ce6cdc3045 1551 Comando=Continuar(Comando,8000);
williequesada 0:a1ce6cdc3045 1552 }
williequesada 0:a1ce6cdc3045 1553
williequesada 0:a1ce6cdc3045 1554 if(Comando==USER_DATA) {
williequesada 0:a1ce6cdc3045 1555 Computer.printf("Usuario datos\n");
williequesada 0:a1ce6cdc3045 1556 Slave.Command(COMMAND_DATA);
williequesada 0:a1ce6cdc3045 1557 Slave.Encryption_Data(Parquimetro,Municipio,TiempoMinutos,Espacio,Track2);
williequesada 0:a1ce6cdc3045 1558 Slave.Encryption_Execute();
williequesada 0:a1ce6cdc3045 1559 Slave.Encryption_Send();
williequesada 0:a1ce6cdc3045 1560 Computer.printf("Tiempo: %i\n",TiempoMinutos);
williequesada 0:a1ce6cdc3045 1561 Computer.printf("Parquimetro: %s\n",Parquimetro);
williequesada 0:a1ce6cdc3045 1562 Computer.printf("Municipio: %s\n",Municipio);
williequesada 0:a1ce6cdc3045 1563 Computer.printf("Espacio: %s\n",Espacio);
williequesada 0:a1ce6cdc3045 1564 Computer.printf("Track2: %s\n",Track2);
williequesada 0:a1ce6cdc3045 1565 Comando=Continuar(USER_POST,20000);
williequesada 0:a1ce6cdc3045 1566 if (Comando==USER_FINISH){
williequesada 0:a1ce6cdc3045 1567 Slave.Command(COMMAND_END);
williequesada 0:a1ce6cdc3045 1568 }
williequesada 0:a1ce6cdc3045 1569 }
williequesada 0:a1ce6cdc3045 1570
williequesada 0:a1ce6cdc3045 1571 if(Comando==USER_POST) {
williequesada 0:a1ce6cdc3045 1572 Computer.printf("Usuario operacion\n");
williequesada 0:a1ce6cdc3045 1573 Slave.Command(COMMAND_POST);
williequesada 0:a1ce6cdc3045 1574 Slave.Encryption_Print();
williequesada 0:a1ce6cdc3045 1575 Comando=Respuesta1(USER_ANSWER,50);
williequesada 0:a1ce6cdc3045 1576 }
williequesada 0:a1ce6cdc3045 1577
williequesada 0:a1ce6cdc3045 1578 if(Comando==USER_ANSWER) {
williequesada 0:a1ce6cdc3045 1579 Computer.printf("Usuario respuesta\n");
williequesada 0:a1ce6cdc3045 1580 Slave.Command(COMMAND_ANSWER);
williequesada 0:a1ce6cdc3045 1581 PrinterState = ImpresoraIniciar();
williequesada 0:a1ce6cdc3045 1582 Comando=Respuesta2(USER_PRINT,50000);
williequesada 0:a1ce6cdc3045 1583 }
williequesada 0:a1ce6cdc3045 1584
williequesada 0:a1ce6cdc3045 1585 if(Comando==USER_PRINT) {
williequesada 0:a1ce6cdc3045 1586 Computer.printf("Usuario imprimiendo\n");
williequesada 0:a1ce6cdc3045 1587 Comando=Imprimir(USER_FINISH,PrinterState);
williequesada 0:a1ce6cdc3045 1588 }
williequesada 0:a1ce6cdc3045 1589
williequesada 0:a1ce6cdc3045 1590 if(Comando==USER_FINISH) {
williequesada 0:a1ce6cdc3045 1591 Computer.printf("Usuario finalizar\n");
williequesada 0:a1ce6cdc3045 1592 Impresora.End();
williequesada 0:a1ce6cdc3045 1593 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 1594 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 1595 Screen.Clean();
williequesada 0:a1ce6cdc3045 1596 Screen.Off();
williequesada 0:a1ce6cdc3045 1597 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1598 Keypad_Init();
williequesada 0:a1ce6cdc3045 1599 while(true) {
williequesada 0:a1ce6cdc3045 1600 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1601 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1602 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 1603 break;
williequesada 0:a1ce6cdc3045 1604 }
williequesada 0:a1ce6cdc3045 1605 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 1606 if (Tecla!=NO_KEY) {
williequesada 0:a1ce6cdc3045 1607 Usuario_OperacionConsecutiva();
williequesada 0:a1ce6cdc3045 1608 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1609 }
williequesada 0:a1ce6cdc3045 1610 }
williequesada 0:a1ce6cdc3045 1611 Slave.Command(COMMAND_OFF);
williequesada 0:a1ce6cdc3045 1612 }
williequesada 0:a1ce6cdc3045 1613 }
williequesada 0:a1ce6cdc3045 1614
williequesada 0:a1ce6cdc3045 1615 void EsperarSim900(int TimeOut)
williequesada 0:a1ce6cdc3045 1616 {
williequesada 0:a1ce6cdc3045 1617 Computer.printf("Espera sim900\n");
williequesada 0:a1ce6cdc3045 1618 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1619 Keypad_Init();
williequesada 0:a1ce6cdc3045 1620 while(true) {
williequesada 0:a1ce6cdc3045 1621 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1622 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1623 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 1624 Computer.printf("Espera sim900 salir\n");
williequesada 0:a1ce6cdc3045 1625 BaseClock.stop();
williequesada 0:a1ce6cdc3045 1626 ParkingMeter.Max232(0);
williequesada 0:a1ce6cdc3045 1627 break;
williequesada 0:a1ce6cdc3045 1628 }
williequesada 0:a1ce6cdc3045 1629 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 1630 if (Tecla!=NO_KEY) {
williequesada 0:a1ce6cdc3045 1631 Computer.printf("Espera sim900 teclado\n");
williequesada 0:a1ce6cdc3045 1632 Screen.On();
williequesada 0:a1ce6cdc3045 1633 Screen.Init();
williequesada 0:a1ce6cdc3045 1634 PantallaInicio();
williequesada 0:a1ce6cdc3045 1635 Usuario(USER_INIT);
williequesada 0:a1ce6cdc3045 1636 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1637 }
williequesada 0:a1ce6cdc3045 1638 }
williequesada 0:a1ce6cdc3045 1639 }
williequesada 0:a1ce6cdc3045 1640
williequesada 0:a1ce6cdc3045 1641 //-----------------------------------------------------------------------------------------------------------------------------------------------------
williequesada 0:a1ce6cdc3045 1642
williequesada 0:a1ce6cdc3045 1643 void Interrupt_Mantenimiento()
williequesada 0:a1ce6cdc3045 1644 {
williequesada 0:a1ce6cdc3045 1645 MantenimientoInterruption=1;
williequesada 0:a1ce6cdc3045 1646 }
williequesada 0:a1ce6cdc3045 1647
williequesada 0:a1ce6cdc3045 1648 void M_PantallaConfiguracion()
williequesada 0:a1ce6cdc3045 1649 {
williequesada 0:a1ce6cdc3045 1650 Computer.printf("Pantala modo configuracion\n");
williequesada 0:a1ce6cdc3045 1651 Screen.Limits();
williequesada 0:a1ce6cdc3045 1652 Screen.PutString(35,19,"Modo Configuracion");
williequesada 0:a1ce6cdc3045 1653 Screen.Show();
williequesada 0:a1ce6cdc3045 1654 wait_ms(1000);
williequesada 0:a1ce6cdc3045 1655 }
williequesada 0:a1ce6cdc3045 1656
williequesada 0:a1ce6cdc3045 1657 uint8_t M_MenuConfiguracion(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1658 {
williequesada 0:a1ce6cdc3045 1659 int Selection=1;
williequesada 0:a1ce6cdc3045 1660 uint8_t Salida=M_SISTEMA;
williequesada 0:a1ce6cdc3045 1661 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1662 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1663
williequesada 0:a1ce6cdc3045 1664 Screen.Limits();
williequesada 0:a1ce6cdc3045 1665 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1666 Screen.PutString(15,4,"Sistema");
williequesada 0:a1ce6cdc3045 1667 Screen.PutString(15,23,"Red");
williequesada 0:a1ce6cdc3045 1668 Screen.PutString(15,42,"Impresora");
williequesada 0:a1ce6cdc3045 1669 Screen.PutString(135,4,"Teclado");
williequesada 0:a1ce6cdc3045 1670 Screen.PutString(135,23,"Lectora");
williequesada 0:a1ce6cdc3045 1671 Screen.PutString(135,42,"Informacion");
williequesada 0:a1ce6cdc3045 1672 Screen.Show();
williequesada 0:a1ce6cdc3045 1673
williequesada 0:a1ce6cdc3045 1674 Computer.printf("Sistema\n");
williequesada 0:a1ce6cdc3045 1675
williequesada 0:a1ce6cdc3045 1676 while(true) {
williequesada 0:a1ce6cdc3045 1677 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1678 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1679 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1680 return M_OFF;
williequesada 0:a1ce6cdc3045 1681 }
williequesada 0:a1ce6cdc3045 1682 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1683 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1684 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1685 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1686 Selection++;
williequesada 0:a1ce6cdc3045 1687 if(Selection==7) {
williequesada 0:a1ce6cdc3045 1688 Selection=1;
williequesada 0:a1ce6cdc3045 1689 }
williequesada 0:a1ce6cdc3045 1690 }
williequesada 0:a1ce6cdc3045 1691 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1692 Selection--;
williequesada 0:a1ce6cdc3045 1693 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1694 Selection=6;
williequesada 0:a1ce6cdc3045 1695 }
williequesada 0:a1ce6cdc3045 1696 }
williequesada 0:a1ce6cdc3045 1697 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1698 return M_OFF;
williequesada 0:a1ce6cdc3045 1699 }
williequesada 0:a1ce6cdc3045 1700 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1701 return Salida;
williequesada 0:a1ce6cdc3045 1702 }
williequesada 0:a1ce6cdc3045 1703 switch (Selection) {
williequesada 0:a1ce6cdc3045 1704 case 1:
williequesada 0:a1ce6cdc3045 1705 SelectionBox[0]=4;
williequesada 0:a1ce6cdc3045 1706 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1707 Computer.printf("Sistema\n");
williequesada 0:a1ce6cdc3045 1708 Salida=M_SISTEMA;
williequesada 0:a1ce6cdc3045 1709 break;
williequesada 0:a1ce6cdc3045 1710 case 2:
williequesada 0:a1ce6cdc3045 1711 SelectionBox[0]=4;
williequesada 0:a1ce6cdc3045 1712 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1713 Computer.printf("Red\n");
williequesada 0:a1ce6cdc3045 1714 Salida=M_RED;
williequesada 0:a1ce6cdc3045 1715 break;
williequesada 0:a1ce6cdc3045 1716 case 3:
williequesada 0:a1ce6cdc3045 1717 SelectionBox[0]=4;
williequesada 0:a1ce6cdc3045 1718 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1719 Computer.printf("Impresora\n");
williequesada 0:a1ce6cdc3045 1720 Salida=M_IMPRESORA;
williequesada 0:a1ce6cdc3045 1721 break;
williequesada 0:a1ce6cdc3045 1722 case 4:
williequesada 0:a1ce6cdc3045 1723 SelectionBox[0]=124;
williequesada 0:a1ce6cdc3045 1724 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1725 Computer.printf("Teclado\n");
williequesada 0:a1ce6cdc3045 1726 Salida=M_TECLADO;
williequesada 0:a1ce6cdc3045 1727 break;
williequesada 0:a1ce6cdc3045 1728 case 5:
williequesada 0:a1ce6cdc3045 1729 SelectionBox[0]=124;
williequesada 0:a1ce6cdc3045 1730 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1731 Computer.printf("Lectora\n");
williequesada 0:a1ce6cdc3045 1732 Salida=M_LECTORA;
williequesada 0:a1ce6cdc3045 1733 break;
williequesada 0:a1ce6cdc3045 1734 case 6:
williequesada 0:a1ce6cdc3045 1735 SelectionBox[0]=124;
williequesada 0:a1ce6cdc3045 1736 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1737 Computer.printf("Informacion\n");
williequesada 0:a1ce6cdc3045 1738 Salida=M_INFORMACION;
williequesada 0:a1ce6cdc3045 1739 break;
williequesada 0:a1ce6cdc3045 1740 }
williequesada 0:a1ce6cdc3045 1741
williequesada 0:a1ce6cdc3045 1742 Screen.Limits();
williequesada 0:a1ce6cdc3045 1743 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1744 Screen.PutString(15,4,"Sistema");
williequesada 0:a1ce6cdc3045 1745 Screen.PutString(15,23,"Red");
williequesada 0:a1ce6cdc3045 1746 Screen.PutString(15,42,"Impresora");
williequesada 0:a1ce6cdc3045 1747 Screen.PutString(135,4,"Teclado");
williequesada 0:a1ce6cdc3045 1748 Screen.PutString(135,23,"Lectora");
williequesada 0:a1ce6cdc3045 1749 Screen.PutString(135,42,"Informacion");
williequesada 0:a1ce6cdc3045 1750 Screen.Show();
williequesada 0:a1ce6cdc3045 1751 }
williequesada 0:a1ce6cdc3045 1752 }
williequesada 0:a1ce6cdc3045 1753 }
williequesada 0:a1ce6cdc3045 1754
williequesada 0:a1ce6cdc3045 1755 uint8_t M_MenuSistema(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1756 {
williequesada 0:a1ce6cdc3045 1757 uint8_t Salida=M_PARQUIMETRO;
williequesada 0:a1ce6cdc3045 1758 int Selection=1;
williequesada 0:a1ce6cdc3045 1759 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1760 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1761
williequesada 0:a1ce6cdc3045 1762 Screen.Limits();
williequesada 0:a1ce6cdc3045 1763 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1764 Screen.PutString(15,4,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 1765 Screen.PutString(15,23,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 1766 Screen.PutString(15,42,"Precio 30 mins");
williequesada 0:a1ce6cdc3045 1767 Screen.Show();
williequesada 0:a1ce6cdc3045 1768 Computer.printf("Id parquimetro\n");
williequesada 0:a1ce6cdc3045 1769
williequesada 0:a1ce6cdc3045 1770 while(true) {
williequesada 0:a1ce6cdc3045 1771 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1772 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1773 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1774 return M_OFF;
williequesada 0:a1ce6cdc3045 1775 }
williequesada 0:a1ce6cdc3045 1776 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1777 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1778 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1779 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1780 Selection++;
williequesada 0:a1ce6cdc3045 1781 if(Selection==4) {
williequesada 0:a1ce6cdc3045 1782 Selection=1;
williequesada 0:a1ce6cdc3045 1783 }
williequesada 0:a1ce6cdc3045 1784 }
williequesada 0:a1ce6cdc3045 1785 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1786 Selection--;
williequesada 0:a1ce6cdc3045 1787 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1788 Selection=3;
williequesada 0:a1ce6cdc3045 1789 }
williequesada 0:a1ce6cdc3045 1790 }
williequesada 0:a1ce6cdc3045 1791 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1792 return M_OFF;
williequesada 0:a1ce6cdc3045 1793 }
williequesada 0:a1ce6cdc3045 1794 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 1795 return M_ATRAS;
williequesada 0:a1ce6cdc3045 1796 }
williequesada 0:a1ce6cdc3045 1797 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1798 return Salida;
williequesada 0:a1ce6cdc3045 1799 }
williequesada 0:a1ce6cdc3045 1800 switch (Selection) {
williequesada 0:a1ce6cdc3045 1801 case 1:
williequesada 0:a1ce6cdc3045 1802 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1803 Computer.printf("Id Parquimetro\n");
williequesada 0:a1ce6cdc3045 1804 Salida=M_PARQUIMETRO;
williequesada 0:a1ce6cdc3045 1805 break;
williequesada 0:a1ce6cdc3045 1806 case 2:
williequesada 0:a1ce6cdc3045 1807 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1808 Computer.printf("Id Municipalidad\n");
williequesada 0:a1ce6cdc3045 1809 Salida=M_MUNICIPIO;
williequesada 0:a1ce6cdc3045 1810 break;
williequesada 0:a1ce6cdc3045 1811 case 3:
williequesada 0:a1ce6cdc3045 1812 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1813 Computer.printf("Precio 30mins\n");
williequesada 0:a1ce6cdc3045 1814 Salida=M_PRECIO;
williequesada 0:a1ce6cdc3045 1815 break;
williequesada 0:a1ce6cdc3045 1816 }
williequesada 0:a1ce6cdc3045 1817 Screen.Limits();
williequesada 0:a1ce6cdc3045 1818 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1819 Screen.PutString(15,4,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 1820 Screen.PutString(15,23,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 1821 Screen.PutString(15,42,"Precio 30 mins");
williequesada 0:a1ce6cdc3045 1822 Screen.Show();
williequesada 0:a1ce6cdc3045 1823 }
williequesada 0:a1ce6cdc3045 1824 }
williequesada 0:a1ce6cdc3045 1825 }
williequesada 0:a1ce6cdc3045 1826
williequesada 0:a1ce6cdc3045 1827 uint8_t M_MenuConexion(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1828 {
williequesada 0:a1ce6cdc3045 1829 uint8_t Salida=M_SENAL;
williequesada 0:a1ce6cdc3045 1830 int Selection=1;
williequesada 0:a1ce6cdc3045 1831 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1832 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1833
williequesada 0:a1ce6cdc3045 1834 Screen.Limits();
williequesada 0:a1ce6cdc3045 1835 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1836 Screen.Rectangle(129,6,5,0);
williequesada 0:a1ce6cdc3045 1837 Screen.PutString(15,4,"Intensidad senal");
williequesada 0:a1ce6cdc3045 1838 Screen.PutString(15,23,"Prueba hosting");
williequesada 0:a1ce6cdc3045 1839 Screen.PutString(15,42,"Conexion red");
williequesada 0:a1ce6cdc3045 1840 Screen.Show();
williequesada 0:a1ce6cdc3045 1841
williequesada 0:a1ce6cdc3045 1842 Computer.printf("Intensidad senal\n");
williequesada 0:a1ce6cdc3045 1843
williequesada 0:a1ce6cdc3045 1844 while(true) {
williequesada 0:a1ce6cdc3045 1845 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1846 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1847 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1848 return M_OFF;
williequesada 0:a1ce6cdc3045 1849 }
williequesada 0:a1ce6cdc3045 1850 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1851 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1852 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1853 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1854 Selection++;
williequesada 0:a1ce6cdc3045 1855 if(Selection==4) {
williequesada 0:a1ce6cdc3045 1856 Selection=1;
williequesada 0:a1ce6cdc3045 1857 }
williequesada 0:a1ce6cdc3045 1858 }
williequesada 0:a1ce6cdc3045 1859 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1860 Selection--;
williequesada 0:a1ce6cdc3045 1861 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1862 Selection=3;
williequesada 0:a1ce6cdc3045 1863 }
williequesada 0:a1ce6cdc3045 1864 }
williequesada 0:a1ce6cdc3045 1865 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 1866 return M_ATRAS;
williequesada 0:a1ce6cdc3045 1867 }
williequesada 0:a1ce6cdc3045 1868 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1869 return M_OFF;
williequesada 0:a1ce6cdc3045 1870 }
williequesada 0:a1ce6cdc3045 1871 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1872 return Salida;
williequesada 0:a1ce6cdc3045 1873 }
williequesada 0:a1ce6cdc3045 1874 switch (Selection) {
williequesada 0:a1ce6cdc3045 1875 case 1:
williequesada 0:a1ce6cdc3045 1876 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1877 Computer.printf("Intensidad senal\n");
williequesada 0:a1ce6cdc3045 1878 Salida=M_SENAL;
williequesada 0:a1ce6cdc3045 1879 break;
williequesada 0:a1ce6cdc3045 1880 case 2:
williequesada 0:a1ce6cdc3045 1881 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1882 Computer.printf("Prueba hosting\n");
williequesada 0:a1ce6cdc3045 1883 Salida=M_HOSTING;
williequesada 0:a1ce6cdc3045 1884 break;
williequesada 0:a1ce6cdc3045 1885 case 3:
williequesada 0:a1ce6cdc3045 1886 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1887 Computer.printf("Conexion red\n");
williequesada 0:a1ce6cdc3045 1888 Salida=M_CONEXION_SIM ;
williequesada 0:a1ce6cdc3045 1889 break;
williequesada 0:a1ce6cdc3045 1890 }
williequesada 0:a1ce6cdc3045 1891 Screen.Limits();
williequesada 0:a1ce6cdc3045 1892 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1893 Screen.Rectangle(129,6,5,0);
williequesada 0:a1ce6cdc3045 1894 Screen.PutString(15,4,"Intensidad senal");
williequesada 0:a1ce6cdc3045 1895 Screen.PutString(15,23,"Prueba hosting");
williequesada 0:a1ce6cdc3045 1896 Screen.PutString(15,42,"Conexion red");
williequesada 0:a1ce6cdc3045 1897 Screen.Show();
williequesada 0:a1ce6cdc3045 1898 }
williequesada 0:a1ce6cdc3045 1899 }
williequesada 0:a1ce6cdc3045 1900 }
williequesada 0:a1ce6cdc3045 1901
williequesada 0:a1ce6cdc3045 1902 uint8_t M_MenuImpresora(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1903 {
williequesada 0:a1ce6cdc3045 1904 uint8_t Salida=M_PAPEL;
williequesada 0:a1ce6cdc3045 1905 int Selection=1;
williequesada 0:a1ce6cdc3045 1906 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1907 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1908
williequesada 0:a1ce6cdc3045 1909 Screen.Limits();
williequesada 0:a1ce6cdc3045 1910 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1911 Screen.PutString(15,4,"Cambio de papel");
williequesada 0:a1ce6cdc3045 1912 Screen.PutString(15,23,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 1913 Screen.PutString(15,42,"Conexion impresora");
williequesada 0:a1ce6cdc3045 1914 Screen.Show();
williequesada 0:a1ce6cdc3045 1915
williequesada 0:a1ce6cdc3045 1916 Computer.printf("Cambio de papel\n");
williequesada 0:a1ce6cdc3045 1917
williequesada 0:a1ce6cdc3045 1918 while(true) {
williequesada 0:a1ce6cdc3045 1919 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1920 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1921 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1922 return M_OFF;
williequesada 0:a1ce6cdc3045 1923 }
williequesada 0:a1ce6cdc3045 1924 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1925 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1926 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1927 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 1928 Selection++;
williequesada 0:a1ce6cdc3045 1929 if(Selection==4) {
williequesada 0:a1ce6cdc3045 1930 Selection=1;
williequesada 0:a1ce6cdc3045 1931 }
williequesada 0:a1ce6cdc3045 1932 }
williequesada 0:a1ce6cdc3045 1933 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 1934 Selection--;
williequesada 0:a1ce6cdc3045 1935 if(Selection==0) {
williequesada 0:a1ce6cdc3045 1936 Selection=3;
williequesada 0:a1ce6cdc3045 1937 }
williequesada 0:a1ce6cdc3045 1938 }
williequesada 0:a1ce6cdc3045 1939 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 1940 return M_OFF;
williequesada 0:a1ce6cdc3045 1941 }
williequesada 0:a1ce6cdc3045 1942 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 1943 return M_ATRAS;
williequesada 0:a1ce6cdc3045 1944 }
williequesada 0:a1ce6cdc3045 1945 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 1946 return Salida;
williequesada 0:a1ce6cdc3045 1947 }
williequesada 0:a1ce6cdc3045 1948 switch (Selection) {
williequesada 0:a1ce6cdc3045 1949 case 1:
williequesada 0:a1ce6cdc3045 1950 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 1951 Computer.printf("Cambio de papel\n");
williequesada 0:a1ce6cdc3045 1952 Salida=M_PAPEL;
williequesada 0:a1ce6cdc3045 1953 break;
williequesada 0:a1ce6cdc3045 1954 case 2:
williequesada 0:a1ce6cdc3045 1955 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 1956 Computer.printf("Tiquete de prueba\n");
williequesada 0:a1ce6cdc3045 1957 Salida=M_IMPRESION;
williequesada 0:a1ce6cdc3045 1958 break;
williequesada 0:a1ce6cdc3045 1959 case 3:
williequesada 0:a1ce6cdc3045 1960 SelectionBox[1]=45;
williequesada 0:a1ce6cdc3045 1961 Computer.printf("Conexion impresora\n");
williequesada 0:a1ce6cdc3045 1962 Salida=M_CONEXION_IMP;
williequesada 0:a1ce6cdc3045 1963 break;
williequesada 0:a1ce6cdc3045 1964 }
williequesada 0:a1ce6cdc3045 1965 Screen.Limits();
williequesada 0:a1ce6cdc3045 1966 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1967 Screen.PutString(15,4,"Cambio de papel");
williequesada 0:a1ce6cdc3045 1968 Screen.PutString(15,23,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 1969 Screen.PutString(15,42,"Conexion impresora");
williequesada 0:a1ce6cdc3045 1970 Screen.Show();
williequesada 0:a1ce6cdc3045 1971 }
williequesada 0:a1ce6cdc3045 1972 }
williequesada 0:a1ce6cdc3045 1973 }
williequesada 0:a1ce6cdc3045 1974
williequesada 0:a1ce6cdc3045 1975 uint8_t M_MenuLectora(uint32_t Delay)
williequesada 0:a1ce6cdc3045 1976 {
williequesada 0:a1ce6cdc3045 1977 uint8_t Salida=M_LECTURA;
williequesada 0:a1ce6cdc3045 1978 int Selection=1;
williequesada 0:a1ce6cdc3045 1979 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 1980 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1981
williequesada 0:a1ce6cdc3045 1982 Screen.Limits();
williequesada 0:a1ce6cdc3045 1983 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 1984 Screen.PutString(15,4,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 1985 Screen.PutString(15,23,"Conexion lectora");
williequesada 0:a1ce6cdc3045 1986 Screen.Show();
williequesada 0:a1ce6cdc3045 1987
williequesada 0:a1ce6cdc3045 1988 Computer.printf("Prueba de lectura\n");
williequesada 0:a1ce6cdc3045 1989
williequesada 0:a1ce6cdc3045 1990 while(true) {
williequesada 0:a1ce6cdc3045 1991 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1992 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 1993 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 1994 return M_OFF;
williequesada 0:a1ce6cdc3045 1995 }
williequesada 0:a1ce6cdc3045 1996 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 1997 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 1998 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 1999 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 2000 Selection++;
williequesada 0:a1ce6cdc3045 2001 if(Selection==3) {
williequesada 0:a1ce6cdc3045 2002 Selection=1;
williequesada 0:a1ce6cdc3045 2003 }
williequesada 0:a1ce6cdc3045 2004 }
williequesada 0:a1ce6cdc3045 2005 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2006 Selection--;
williequesada 0:a1ce6cdc3045 2007 if(Selection==0) {
williequesada 0:a1ce6cdc3045 2008 Selection=2;
williequesada 0:a1ce6cdc3045 2009 }
williequesada 0:a1ce6cdc3045 2010 }
williequesada 0:a1ce6cdc3045 2011 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2012 return M_OFF;
williequesada 0:a1ce6cdc3045 2013 }
williequesada 0:a1ce6cdc3045 2014 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2015 return M_ATRAS;
williequesada 0:a1ce6cdc3045 2016 }
williequesada 0:a1ce6cdc3045 2017 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2018 return Salida;
williequesada 0:a1ce6cdc3045 2019 }
williequesada 0:a1ce6cdc3045 2020 switch (Selection) {
williequesada 0:a1ce6cdc3045 2021 case 1:
williequesada 0:a1ce6cdc3045 2022 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 2023 Computer.printf("Prueba de lectura\n");
williequesada 0:a1ce6cdc3045 2024 Salida=M_LECTURA;
williequesada 0:a1ce6cdc3045 2025 break;
williequesada 0:a1ce6cdc3045 2026 case 2:
williequesada 0:a1ce6cdc3045 2027 SelectionBox[1]=26;
williequesada 0:a1ce6cdc3045 2028 Computer.printf("Conexion lectora\n");
williequesada 0:a1ce6cdc3045 2029 Salida=M_CONEXION_LEC;
williequesada 0:a1ce6cdc3045 2030 break;
williequesada 0:a1ce6cdc3045 2031 }
williequesada 0:a1ce6cdc3045 2032 Screen.Limits();
williequesada 0:a1ce6cdc3045 2033 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 2034 Screen.PutString(15,4,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2035 Screen.PutString(15,23,"Conexion lectora");
williequesada 0:a1ce6cdc3045 2036 Screen.Show();
williequesada 0:a1ce6cdc3045 2037 }
williequesada 0:a1ce6cdc3045 2038 }
williequesada 0:a1ce6cdc3045 2039 }
williequesada 0:a1ce6cdc3045 2040
williequesada 0:a1ce6cdc3045 2041 uint8_t M_MenuTeclado(long Delay)
williequesada 0:a1ce6cdc3045 2042 {
williequesada 0:a1ce6cdc3045 2043 uint8_t Salida=M_PRUEBA_TECLA;
williequesada 0:a1ce6cdc3045 2044 int Selection=1;
williequesada 0:a1ce6cdc3045 2045 int SelectionBox[2]= {4,7};
williequesada 0:a1ce6cdc3045 2046 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2047
williequesada 0:a1ce6cdc3045 2048 Screen.Limits();
williequesada 0:a1ce6cdc3045 2049 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 2050 Screen.PutString(15,4,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2051 Screen.Show();
williequesada 0:a1ce6cdc3045 2052 Computer.printf("Prueba de teclado\n");
williequesada 0:a1ce6cdc3045 2053
williequesada 0:a1ce6cdc3045 2054 while(true) {
williequesada 0:a1ce6cdc3045 2055 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2056 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2057 if(Transcurrido>Delay) {
williequesada 0:a1ce6cdc3045 2058 return M_OFF;
williequesada 0:a1ce6cdc3045 2059 }
williequesada 0:a1ce6cdc3045 2060 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 2061 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2062 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2063 if (Tecla=='F') { //Subir puntero
williequesada 0:a1ce6cdc3045 2064 Selection++;
williequesada 0:a1ce6cdc3045 2065 if(Selection==2) {
williequesada 0:a1ce6cdc3045 2066 Selection=1;
williequesada 0:a1ce6cdc3045 2067 }
williequesada 0:a1ce6cdc3045 2068 }
williequesada 0:a1ce6cdc3045 2069 if (Tecla=='E') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2070 Selection--;
williequesada 0:a1ce6cdc3045 2071 if(Selection==0) {
williequesada 0:a1ce6cdc3045 2072 Selection=1;
williequesada 0:a1ce6cdc3045 2073 }
williequesada 0:a1ce6cdc3045 2074 }
williequesada 0:a1ce6cdc3045 2075 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2076 return M_OFF;
williequesada 0:a1ce6cdc3045 2077 }
williequesada 0:a1ce6cdc3045 2078 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2079 return M_ATRAS;
williequesada 0:a1ce6cdc3045 2080 }
williequesada 0:a1ce6cdc3045 2081 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2082 return Salida;
williequesada 0:a1ce6cdc3045 2083 }
williequesada 0:a1ce6cdc3045 2084 switch (Selection) {
williequesada 0:a1ce6cdc3045 2085 case 1:
williequesada 0:a1ce6cdc3045 2086 SelectionBox[1]=7;
williequesada 0:a1ce6cdc3045 2087 Computer.printf("Prueba de teclado\n");
williequesada 0:a1ce6cdc3045 2088 Salida=M_PRUEBA_TECLA;
williequesada 0:a1ce6cdc3045 2089 break;
williequesada 0:a1ce6cdc3045 2090 }
williequesada 0:a1ce6cdc3045 2091 Screen.Limits();
williequesada 0:a1ce6cdc3045 2092 Screen.Rectangle(SelectionBox[0],SelectionBox[1],8,8);
williequesada 0:a1ce6cdc3045 2093 Screen.PutString(15,4,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2094 Screen.Show();
williequesada 0:a1ce6cdc3045 2095 }
williequesada 0:a1ce6cdc3045 2096 }
williequesada 0:a1ce6cdc3045 2097 }
williequesada 0:a1ce6cdc3045 2098
williequesada 0:a1ce6cdc3045 2099 uint8_t M_MenuInformacion()
williequesada 0:a1ce6cdc3045 2100 {
williequesada 0:a1ce6cdc3045 2101 return M_INFORMACION;
williequesada 0:a1ce6cdc3045 2102 }
williequesada 0:a1ce6cdc3045 2103
williequesada 0:a1ce6cdc3045 2104 bool M_ClaveIngreso(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2105 {
williequesada 0:a1ce6cdc3045 2106 char Clave_Actual[5]="))))";
williequesada 0:a1ce6cdc3045 2107 int SelectionLine=99;
williequesada 0:a1ce6cdc3045 2108 int Line=1;
williequesada 0:a1ce6cdc3045 2109 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2110
williequesada 0:a1ce6cdc3045 2111 Screen.Rectangle(SelectionLine,32,8,0);
williequesada 0:a1ce6cdc3045 2112 Screen.Rectangle(SelectionLine,50,8,0);
williequesada 0:a1ce6cdc3045 2113 Screen.PutString(15,12,"Ingrese password");
williequesada 0:a1ce6cdc3045 2114 Screen.PutChar(100,34,Clave_Actual[0]);
williequesada 0:a1ce6cdc3045 2115 Screen.PutChar(110,34,Clave_Actual[1]);
williequesada 0:a1ce6cdc3045 2116 Screen.PutChar(120,34,Clave_Actual[2]);
williequesada 0:a1ce6cdc3045 2117 Screen.PutChar(130,34,Clave_Actual[3]);
williequesada 0:a1ce6cdc3045 2118 Screen.Limits();
williequesada 0:a1ce6cdc3045 2119 Screen.Show();
williequesada 0:a1ce6cdc3045 2120 Computer.printf("Ingrese password\n");
williequesada 0:a1ce6cdc3045 2121 Computer.printf("%s\n",Clave);
williequesada 0:a1ce6cdc3045 2122
williequesada 0:a1ce6cdc3045 2123 while(true) {
williequesada 0:a1ce6cdc3045 2124 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2125 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2126 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2127 return 0;
williequesada 0:a1ce6cdc3045 2128 }
williequesada 0:a1ce6cdc3045 2129 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2130 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2131 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2132 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 2133 Clave_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2134 Line++;
williequesada 0:a1ce6cdc3045 2135 Screen.Rectangle(SelectionLine,32,8,0);
williequesada 0:a1ce6cdc3045 2136 Screen.Rectangle(SelectionLine,50,8,0);
williequesada 0:a1ce6cdc3045 2137 Screen.PutString(15,12,"Ingrese password");
williequesada 0:a1ce6cdc3045 2138 Screen.PutChar(100,34,Clave_Actual[0]);
williequesada 0:a1ce6cdc3045 2139 Screen.PutChar(111,34,Clave_Actual[1]);
williequesada 0:a1ce6cdc3045 2140 Screen.PutChar(122,34,Clave_Actual[2]);
williequesada 0:a1ce6cdc3045 2141 Screen.PutChar(133,34,Clave_Actual[3]);
williequesada 0:a1ce6cdc3045 2142 Screen.Limits();
williequesada 0:a1ce6cdc3045 2143 Screen.Show();
williequesada 0:a1ce6cdc3045 2144 if(Line==5) {
williequesada 0:a1ce6cdc3045 2145 Line=1;
williequesada 0:a1ce6cdc3045 2146 }
williequesada 0:a1ce6cdc3045 2147 if(Line==0) {
williequesada 0:a1ce6cdc3045 2148 Line=4;
williequesada 0:a1ce6cdc3045 2149 }
williequesada 0:a1ce6cdc3045 2150 wait_ms(100);
williequesada 0:a1ce6cdc3045 2151 }
williequesada 0:a1ce6cdc3045 2152 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2153 Line++;
williequesada 0:a1ce6cdc3045 2154 if(Line==5) {
williequesada 0:a1ce6cdc3045 2155 Line=1;
williequesada 0:a1ce6cdc3045 2156 }
williequesada 0:a1ce6cdc3045 2157 }
williequesada 0:a1ce6cdc3045 2158 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2159 Line--;
williequesada 0:a1ce6cdc3045 2160 if(Line==0) {
williequesada 0:a1ce6cdc3045 2161 Line=4;
williequesada 0:a1ce6cdc3045 2162 }
williequesada 0:a1ce6cdc3045 2163 }
williequesada 0:a1ce6cdc3045 2164 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2165 return 0;
williequesada 0:a1ce6cdc3045 2166 }
williequesada 0:a1ce6cdc3045 2167 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2168 return 0;
williequesada 0:a1ce6cdc3045 2169 }
williequesada 0:a1ce6cdc3045 2170 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2171 if((Clave_Actual[0]==Clave[0])&&(Clave_Actual[1]==Clave[1])&&(Clave_Actual[2]==Clave[2])&&(Clave_Actual[3]==Clave[3])) {
williequesada 0:a1ce6cdc3045 2172 return 1;
williequesada 0:a1ce6cdc3045 2173 } else {
williequesada 0:a1ce6cdc3045 2174 return 0;
williequesada 0:a1ce6cdc3045 2175 }
williequesada 0:a1ce6cdc3045 2176 }
williequesada 0:a1ce6cdc3045 2177 switch (Line) {
williequesada 0:a1ce6cdc3045 2178 case 1:
williequesada 0:a1ce6cdc3045 2179 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2180 break;
williequesada 0:a1ce6cdc3045 2181 case 2:
williequesada 0:a1ce6cdc3045 2182 SelectionLine=110;
williequesada 0:a1ce6cdc3045 2183 break;
williequesada 0:a1ce6cdc3045 2184 case 3:
williequesada 0:a1ce6cdc3045 2185 SelectionLine=121;
williequesada 0:a1ce6cdc3045 2186 break;
williequesada 0:a1ce6cdc3045 2187 case 4:
williequesada 0:a1ce6cdc3045 2188 SelectionLine=132;
williequesada 0:a1ce6cdc3045 2189 break;
williequesada 0:a1ce6cdc3045 2190 }
williequesada 0:a1ce6cdc3045 2191 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2192 Screen.Rectangle(SelectionLine,32,8,0);
williequesada 0:a1ce6cdc3045 2193 Screen.Rectangle(SelectionLine,50,8,0);
williequesada 0:a1ce6cdc3045 2194 Screen.PutString(15,12,"Ingrese password");
williequesada 0:a1ce6cdc3045 2195 Screen.PutChar(100,34,')');
williequesada 0:a1ce6cdc3045 2196 Screen.PutChar(111,34,')');
williequesada 0:a1ce6cdc3045 2197 Screen.PutChar(122,34,')');
williequesada 0:a1ce6cdc3045 2198 Screen.PutChar(133,34,')');
williequesada 0:a1ce6cdc3045 2199 Screen.Limits();
williequesada 0:a1ce6cdc3045 2200 Screen.Show();
williequesada 0:a1ce6cdc3045 2201 Computer.printf("%s\n",Clave);
williequesada 0:a1ce6cdc3045 2202 }
williequesada 0:a1ce6cdc3045 2203 }
williequesada 0:a1ce6cdc3045 2204 }
williequesada 0:a1ce6cdc3045 2205
williequesada 0:a1ce6cdc3045 2206 void M_Parquimetro(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2207 {
williequesada 0:a1ce6cdc3045 2208 char ID_Actual[5]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2209 sprintf(ID_Actual,"%s",Parquimetro);
williequesada 0:a1ce6cdc3045 2210 int SelectionLine = 99;
williequesada 0:a1ce6cdc3045 2211 int Line=1;
williequesada 0:a1ce6cdc3045 2212
williequesada 0:a1ce6cdc3045 2213 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2214
williequesada 0:a1ce6cdc3045 2215 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2216 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2217 Screen.PutString(15,12,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 2218 Screen.PutChar(100,34,ID_Actual[0]);
williequesada 0:a1ce6cdc3045 2219 Screen.PutChar(110,34,ID_Actual[1]);
williequesada 0:a1ce6cdc3045 2220 Screen.PutChar(120,34,ID_Actual[2]);
williequesada 0:a1ce6cdc3045 2221 Screen.PutChar(130,34,ID_Actual[3]);
williequesada 0:a1ce6cdc3045 2222 Screen.Limits();
williequesada 0:a1ce6cdc3045 2223 Screen.Show();
williequesada 0:a1ce6cdc3045 2224 Computer.printf("Id Parquimetro\n");
williequesada 0:a1ce6cdc3045 2225 Computer.printf("%s\n",ID_Actual);
williequesada 0:a1ce6cdc3045 2226
williequesada 0:a1ce6cdc3045 2227 while(true) {
williequesada 0:a1ce6cdc3045 2228 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2229 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2230 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2231 break;
williequesada 0:a1ce6cdc3045 2232 }
williequesada 0:a1ce6cdc3045 2233 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2234 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2235 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2236 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 2237 if((Tecla=='0')&&(Line==1)) {
williequesada 0:a1ce6cdc3045 2238 ID_Actual[Line-1]='1';
williequesada 0:a1ce6cdc3045 2239 } else {
williequesada 0:a1ce6cdc3045 2240 ID_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2241 }
williequesada 0:a1ce6cdc3045 2242 Line++;
williequesada 0:a1ce6cdc3045 2243 if(Line==5) {
williequesada 0:a1ce6cdc3045 2244 Line=1;
williequesada 0:a1ce6cdc3045 2245 }
williequesada 0:a1ce6cdc3045 2246 if(Line==0) {
williequesada 0:a1ce6cdc3045 2247 Line=4;
williequesada 0:a1ce6cdc3045 2248 }
williequesada 0:a1ce6cdc3045 2249 }
williequesada 0:a1ce6cdc3045 2250 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2251 Line++;
williequesada 0:a1ce6cdc3045 2252 if(Line==5) {
williequesada 0:a1ce6cdc3045 2253 Line=1;
williequesada 0:a1ce6cdc3045 2254 }
williequesada 0:a1ce6cdc3045 2255 }
williequesada 0:a1ce6cdc3045 2256 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2257 Line--;
williequesada 0:a1ce6cdc3045 2258 if(Line==0) {
williequesada 0:a1ce6cdc3045 2259 Line=4;
williequesada 0:a1ce6cdc3045 2260 }
williequesada 0:a1ce6cdc3045 2261 }
williequesada 0:a1ce6cdc3045 2262 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2263 break;
williequesada 0:a1ce6cdc3045 2264 }
williequesada 0:a1ce6cdc3045 2265 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2266 break;
williequesada 0:a1ce6cdc3045 2267 }
williequesada 0:a1ce6cdc3045 2268 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2269 sprintf(Parquimetro,"%s",ID_Actual);
williequesada 0:a1ce6cdc3045 2270 break;
williequesada 0:a1ce6cdc3045 2271 }
williequesada 0:a1ce6cdc3045 2272 switch (Line) {
williequesada 0:a1ce6cdc3045 2273 case 1:
williequesada 0:a1ce6cdc3045 2274 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2275 break;
williequesada 0:a1ce6cdc3045 2276 case 2:
williequesada 0:a1ce6cdc3045 2277 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2278 break;
williequesada 0:a1ce6cdc3045 2279 case 3:
williequesada 0:a1ce6cdc3045 2280 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2281 break;
williequesada 0:a1ce6cdc3045 2282 case 4:
williequesada 0:a1ce6cdc3045 2283 SelectionLine=129;
williequesada 0:a1ce6cdc3045 2284 break;
williequesada 0:a1ce6cdc3045 2285 }
williequesada 0:a1ce6cdc3045 2286 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2287 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2288 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2289 Screen.PutString(15,12,"Id Parquimetro");
williequesada 0:a1ce6cdc3045 2290 Screen.PutChar(100,34,ID_Actual[0]);
williequesada 0:a1ce6cdc3045 2291 Screen.PutChar(110,34,ID_Actual[1]);
williequesada 0:a1ce6cdc3045 2292 Screen.PutChar(120,34,ID_Actual[2]);
williequesada 0:a1ce6cdc3045 2293 Screen.PutChar(130,34,ID_Actual[3]);
williequesada 0:a1ce6cdc3045 2294 Screen.Limits();
williequesada 0:a1ce6cdc3045 2295 Screen.Show();
williequesada 0:a1ce6cdc3045 2296 Computer.printf("%s\n",ID_Actual);
williequesada 0:a1ce6cdc3045 2297 }
williequesada 0:a1ce6cdc3045 2298 }
williequesada 0:a1ce6cdc3045 2299 }
williequesada 0:a1ce6cdc3045 2300
williequesada 0:a1ce6cdc3045 2301 void M_Municipio(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2302 {
williequesada 0:a1ce6cdc3045 2303 char CodigoMunicipio_Actual[3]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2304 sprintf(CodigoMunicipio_Actual,"%s",CodigoMunicipio);
williequesada 0:a1ce6cdc3045 2305
williequesada 0:a1ce6cdc3045 2306 int SelectionLine=109;
williequesada 0:a1ce6cdc3045 2307 int Line=1;
williequesada 0:a1ce6cdc3045 2308
williequesada 0:a1ce6cdc3045 2309 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2310
williequesada 0:a1ce6cdc3045 2311 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2312 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2313 Screen.PutString(15,12,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 2314 Screen.PutChar(110,34,CodigoMunicipio_Actual[0]);
williequesada 0:a1ce6cdc3045 2315 Screen.PutChar(120,34,CodigoMunicipio_Actual[1]);
williequesada 0:a1ce6cdc3045 2316 Screen.Limits();
williequesada 0:a1ce6cdc3045 2317 Screen.Show();
williequesada 0:a1ce6cdc3045 2318 Computer.printf("Id Municipalidad\n");
williequesada 0:a1ce6cdc3045 2319 Computer.printf("%s\n",CodigoMunicipio_Actual);
williequesada 0:a1ce6cdc3045 2320
williequesada 0:a1ce6cdc3045 2321 while(true) {
williequesada 0:a1ce6cdc3045 2322 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2323 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2324 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2325 break;
williequesada 0:a1ce6cdc3045 2326 }
williequesada 0:a1ce6cdc3045 2327 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2328 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2329 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2330 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 2331 CodigoMunicipio_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2332 Line++;
williequesada 0:a1ce6cdc3045 2333 if(Line==3) {
williequesada 0:a1ce6cdc3045 2334 Line=1;
williequesada 0:a1ce6cdc3045 2335 }
williequesada 0:a1ce6cdc3045 2336 if(Line==0) {
williequesada 0:a1ce6cdc3045 2337 Line=2;
williequesada 0:a1ce6cdc3045 2338 }
williequesada 0:a1ce6cdc3045 2339 }
williequesada 0:a1ce6cdc3045 2340 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2341 Line++;
williequesada 0:a1ce6cdc3045 2342 if(Line==3) {
williequesada 0:a1ce6cdc3045 2343 Line=1;
williequesada 0:a1ce6cdc3045 2344 }
williequesada 0:a1ce6cdc3045 2345 }
williequesada 0:a1ce6cdc3045 2346 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2347 Line--;
williequesada 0:a1ce6cdc3045 2348 if(Line==0) {
williequesada 0:a1ce6cdc3045 2349 Line=2;
williequesada 0:a1ce6cdc3045 2350 }
williequesada 0:a1ce6cdc3045 2351 }
williequesada 0:a1ce6cdc3045 2352 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2353 break;
williequesada 0:a1ce6cdc3045 2354 }
williequesada 0:a1ce6cdc3045 2355 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2356 break;
williequesada 0:a1ce6cdc3045 2357 }
williequesada 0:a1ce6cdc3045 2358 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2359 sprintf(CodigoMunicipio,"%s",CodigoMunicipio_Actual);
williequesada 0:a1ce6cdc3045 2360 if((CodigoMunicipio[0]=='0')&&(CodigoMunicipio[1]=='1')) {
williequesada 0:a1ce6cdc3045 2361 sprintf(Municipio,"San Jose ");
williequesada 0:a1ce6cdc3045 2362 Computer.printf("San Jose\n");
williequesada 0:a1ce6cdc3045 2363 }
williequesada 0:a1ce6cdc3045 2364 if((CodigoMunicipio[0]=='0')&&(CodigoMunicipio[1]=='2')) {
williequesada 0:a1ce6cdc3045 2365 sprintf(Municipio,"Tibas ");
williequesada 0:a1ce6cdc3045 2366 Computer.printf("Tibas\n");
williequesada 0:a1ce6cdc3045 2367 }
williequesada 0:a1ce6cdc3045 2368 if((CodigoMunicipio[0]=='0')&&(CodigoMunicipio[1]=='3')) {
williequesada 0:a1ce6cdc3045 2369 sprintf(Municipio,"Santa Ana");
williequesada 0:a1ce6cdc3045 2370 Computer.printf("Santa Ana\n");
williequesada 0:a1ce6cdc3045 2371 }
williequesada 0:a1ce6cdc3045 2372 break;
williequesada 0:a1ce6cdc3045 2373 }
williequesada 0:a1ce6cdc3045 2374 switch (Line) {
williequesada 0:a1ce6cdc3045 2375 case 1:
williequesada 0:a1ce6cdc3045 2376 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2377 break;
williequesada 0:a1ce6cdc3045 2378 case 2:
williequesada 0:a1ce6cdc3045 2379 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2380 break;
williequesada 0:a1ce6cdc3045 2381 }
williequesada 0:a1ce6cdc3045 2382 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2383 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2384 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2385 Screen.PutString(15,12,"Id Municipalidad");
williequesada 0:a1ce6cdc3045 2386 Screen.PutChar(110,34,CodigoMunicipio_Actual[0]);
williequesada 0:a1ce6cdc3045 2387 Screen.PutChar(120,34,CodigoMunicipio_Actual[1]);
williequesada 0:a1ce6cdc3045 2388 Screen.Limits();
williequesada 0:a1ce6cdc3045 2389 Screen.Show();
williequesada 0:a1ce6cdc3045 2390 Computer.printf("%s\n",CodigoMunicipio_Actual);
williequesada 0:a1ce6cdc3045 2391 }
williequesada 0:a1ce6cdc3045 2392 }
williequesada 0:a1ce6cdc3045 2393 }
williequesada 0:a1ce6cdc3045 2394
williequesada 0:a1ce6cdc3045 2395 void M_Precio(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2396 {
williequesada 0:a1ce6cdc3045 2397 char Precio_Actual[5]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2398 if(Precio>999) {
williequesada 0:a1ce6cdc3045 2399 sprintf(Precio_Actual,"%i",Precio);
williequesada 0:a1ce6cdc3045 2400 }
williequesada 0:a1ce6cdc3045 2401 if(Precio<1000) {
williequesada 0:a1ce6cdc3045 2402 sprintf(Precio_Actual,"0%i",Precio);
williequesada 0:a1ce6cdc3045 2403 }
williequesada 0:a1ce6cdc3045 2404 if(Precio<100) {
williequesada 0:a1ce6cdc3045 2405 sprintf(Precio_Actual,"00%i",Precio);
williequesada 0:a1ce6cdc3045 2406 }
williequesada 0:a1ce6cdc3045 2407 if(Precio<10) {
williequesada 0:a1ce6cdc3045 2408 sprintf(Precio_Actual,"000%i",Precio);
williequesada 0:a1ce6cdc3045 2409 }
williequesada 0:a1ce6cdc3045 2410
williequesada 0:a1ce6cdc3045 2411 int SelectionLine=99;
williequesada 0:a1ce6cdc3045 2412 int Line=1;
williequesada 0:a1ce6cdc3045 2413 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2414
williequesada 0:a1ce6cdc3045 2415 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2416 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2417 Screen.PutString(15,12,"Precio establecido");
williequesada 0:a1ce6cdc3045 2418 Screen.PutChar(100,34,Precio_Actual[0]);
williequesada 0:a1ce6cdc3045 2419 Screen.PutChar(110,34,Precio_Actual[1]);
williequesada 0:a1ce6cdc3045 2420 Screen.PutChar(120,34,Precio_Actual[2]);
williequesada 0:a1ce6cdc3045 2421 Screen.PutChar(130,34,Precio_Actual[3]);
williequesada 0:a1ce6cdc3045 2422 Screen.PutChar(140,34,'*');
williequesada 0:a1ce6cdc3045 2423 Screen.Limits();
williequesada 0:a1ce6cdc3045 2424 Screen.Show();
williequesada 0:a1ce6cdc3045 2425 Computer.printf("Precio establecido\n");
williequesada 0:a1ce6cdc3045 2426 Computer.printf("%s\n",Precio_Actual);
williequesada 0:a1ce6cdc3045 2427
williequesada 0:a1ce6cdc3045 2428 while(true) {
williequesada 0:a1ce6cdc3045 2429 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2430 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2431 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2432 break;
williequesada 0:a1ce6cdc3045 2433 }
williequesada 0:a1ce6cdc3045 2434 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2435 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2436 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2437
williequesada 0:a1ce6cdc3045 2438 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 2439 Precio_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2440 Line++;
williequesada 0:a1ce6cdc3045 2441 if(Line==5) {
williequesada 0:a1ce6cdc3045 2442 Line=1;
williequesada 0:a1ce6cdc3045 2443 }
williequesada 0:a1ce6cdc3045 2444 if(Line==0) {
williequesada 0:a1ce6cdc3045 2445 Line=4;
williequesada 0:a1ce6cdc3045 2446 }
williequesada 0:a1ce6cdc3045 2447 }
williequesada 0:a1ce6cdc3045 2448 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2449 Line++;
williequesada 0:a1ce6cdc3045 2450 if(Line==5) {
williequesada 0:a1ce6cdc3045 2451 Line=1;
williequesada 0:a1ce6cdc3045 2452 }
williequesada 0:a1ce6cdc3045 2453 }
williequesada 0:a1ce6cdc3045 2454 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2455 Line--;
williequesada 0:a1ce6cdc3045 2456 if(Line==0) {
williequesada 0:a1ce6cdc3045 2457 Line=4;
williequesada 0:a1ce6cdc3045 2458 }
williequesada 0:a1ce6cdc3045 2459 }
williequesada 0:a1ce6cdc3045 2460 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2461 break;
williequesada 0:a1ce6cdc3045 2462 }
williequesada 0:a1ce6cdc3045 2463 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2464 break;
williequesada 0:a1ce6cdc3045 2465 }
williequesada 0:a1ce6cdc3045 2466 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2467 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 2468 break;
williequesada 0:a1ce6cdc3045 2469 }
williequesada 0:a1ce6cdc3045 2470 switch (Line) {
williequesada 0:a1ce6cdc3045 2471 case 1:
williequesada 0:a1ce6cdc3045 2472 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2473 break;
williequesada 0:a1ce6cdc3045 2474 case 2:
williequesada 0:a1ce6cdc3045 2475 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2476 break;
williequesada 0:a1ce6cdc3045 2477 case 3:
williequesada 0:a1ce6cdc3045 2478 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2479 break;
williequesada 0:a1ce6cdc3045 2480 case 4:
williequesada 0:a1ce6cdc3045 2481 SelectionLine=129;
williequesada 0:a1ce6cdc3045 2482 break;
williequesada 0:a1ce6cdc3045 2483 }
williequesada 0:a1ce6cdc3045 2484 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2485 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2486 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2487 Screen.PutString(15,12,"Precio establecido");
williequesada 0:a1ce6cdc3045 2488 Screen.PutChar(100,34,Precio_Actual[0]);
williequesada 0:a1ce6cdc3045 2489 Screen.PutChar(110,34,Precio_Actual[1]);
williequesada 0:a1ce6cdc3045 2490 Screen.PutChar(120,34,Precio_Actual[2]);
williequesada 0:a1ce6cdc3045 2491 Screen.PutChar(130,34,Precio_Actual[3]);
williequesada 0:a1ce6cdc3045 2492 Screen.PutChar(140,34,'*');
williequesada 0:a1ce6cdc3045 2493 Screen.Limits();
williequesada 0:a1ce6cdc3045 2494 Screen.Show();
williequesada 0:a1ce6cdc3045 2495 Computer.printf("%s\n",Precio_Actual);
williequesada 0:a1ce6cdc3045 2496 }
williequesada 0:a1ce6cdc3045 2497 }
williequesada 0:a1ce6cdc3045 2498 }
williequesada 0:a1ce6cdc3045 2499
williequesada 0:a1ce6cdc3045 2500 void M_IntensidadSenal()
williequesada 0:a1ce6cdc3045 2501 {
williequesada 0:a1ce6cdc3045 2502 char Senal[]="000";
williequesada 0:a1ce6cdc3045 2503 Slave.Command(COMMAND_SIGNAL);
williequesada 0:a1ce6cdc3045 2504 Screen.Rectangle(129,14,5,0);
williequesada 0:a1ce6cdc3045 2505 Screen.PutString(15,12,"Intensidad senal");
williequesada 0:a1ce6cdc3045 2506 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2507 Screen.Limits();
williequesada 0:a1ce6cdc3045 2508 Screen.Show();
williequesada 0:a1ce6cdc3045 2509 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2510 wait(3);
williequesada 0:a1ce6cdc3045 2511
williequesada 0:a1ce6cdc3045 2512 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2513 while(true) {
williequesada 0:a1ce6cdc3045 2514 if(Slave.Available()) {
williequesada 0:a1ce6cdc3045 2515 Computer.putc('A');
williequesada 0:a1ce6cdc3045 2516 wait_ms(100);
williequesada 0:a1ce6cdc3045 2517 break;
williequesada 0:a1ce6cdc3045 2518 }
williequesada 0:a1ce6cdc3045 2519 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2520 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2521 if(Transcurrido>20000) {
williequesada 0:a1ce6cdc3045 2522 Computer.putc('E');
williequesada 0:a1ce6cdc3045 2523 break;
williequesada 0:a1ce6cdc3045 2524 }
williequesada 0:a1ce6cdc3045 2525 }
williequesada 0:a1ce6cdc3045 2526 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2527 if(InByte=='A') {
williequesada 0:a1ce6cdc3045 2528 Senal[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2529 Senal[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2530 Senal[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2531 Screen.Rectangle(129,14,5,0);
williequesada 0:a1ce6cdc3045 2532 Screen.PutString(15,12,"Intensidad senal");
williequesada 0:a1ce6cdc3045 2533 Screen.PutString(15,34,"CSQ:");
williequesada 0:a1ce6cdc3045 2534 Screen.PutChar(70,34,Senal[0]);
williequesada 0:a1ce6cdc3045 2535 Screen.PutChar(80,34,Senal[1]);
williequesada 0:a1ce6cdc3045 2536 Screen.PutChar(92,34,'.');
williequesada 0:a1ce6cdc3045 2537 Screen.PutChar(96,34,Senal[2]);
williequesada 0:a1ce6cdc3045 2538 Screen.Limits();
williequesada 0:a1ce6cdc3045 2539 Screen.Show();
williequesada 0:a1ce6cdc3045 2540 Computer.printf("CSQ: %s\n",Senal);
williequesada 0:a1ce6cdc3045 2541 wait(3);
williequesada 0:a1ce6cdc3045 2542 } else {
williequesada 0:a1ce6cdc3045 2543 Screen.Rectangle(129,14,5,0);
williequesada 0:a1ce6cdc3045 2544 Screen.PutString(15,12,"Intensidad senal");
williequesada 0:a1ce6cdc3045 2545 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2546 Screen.Limits();
williequesada 0:a1ce6cdc3045 2547 Screen.Show();
williequesada 0:a1ce6cdc3045 2548 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2549 wait(3);
williequesada 0:a1ce6cdc3045 2550 }
williequesada 0:a1ce6cdc3045 2551 }
williequesada 0:a1ce6cdc3045 2552
williequesada 0:a1ce6cdc3045 2553 void M_ConexionSim900()
williequesada 0:a1ce6cdc3045 2554 {
williequesada 0:a1ce6cdc3045 2555 Screen.PutString(15,12,"Conexion red");
williequesada 0:a1ce6cdc3045 2556 Screen.PutString(15,34,"Conetando...");
williequesada 0:a1ce6cdc3045 2557 Screen.Limits();
williequesada 0:a1ce6cdc3045 2558 Screen.Show();
williequesada 0:a1ce6cdc3045 2559 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2560
williequesada 0:a1ce6cdc3045 2561 Slave.Command(COMMAND_CONNECT);
williequesada 0:a1ce6cdc3045 2562 while(true) {
williequesada 0:a1ce6cdc3045 2563 if(Slave.Available()) {
williequesada 0:a1ce6cdc3045 2564 wait_ms(200);
williequesada 0:a1ce6cdc3045 2565 break;
williequesada 0:a1ce6cdc3045 2566 }
williequesada 0:a1ce6cdc3045 2567 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2568 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2569 if(Transcurrido>20000) {
williequesada 0:a1ce6cdc3045 2570 Computer.putc('E');
williequesada 0:a1ce6cdc3045 2571 break;
williequesada 0:a1ce6cdc3045 2572 }
williequesada 0:a1ce6cdc3045 2573 }
williequesada 0:a1ce6cdc3045 2574 InByte=Slave.Recibe();
williequesada 0:a1ce6cdc3045 2575 if(InByte=='A') {
williequesada 0:a1ce6cdc3045 2576 Screen.PutString(15,12,"Conexion red");
williequesada 0:a1ce6cdc3045 2577 Screen.PutString(15,34,"Conectado.");
williequesada 0:a1ce6cdc3045 2578 Screen.Limits();
williequesada 0:a1ce6cdc3045 2579 Screen.Show();
williequesada 0:a1ce6cdc3045 2580 wait(3);
williequesada 0:a1ce6cdc3045 2581 } else {
williequesada 0:a1ce6cdc3045 2582 Screen.PutString(15,12,"Conexion red");
williequesada 0:a1ce6cdc3045 2583 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2584 Screen.Limits();
williequesada 0:a1ce6cdc3045 2585 Screen.Show();
williequesada 0:a1ce6cdc3045 2586 wait(3);
williequesada 0:a1ce6cdc3045 2587 }
williequesada 0:a1ce6cdc3045 2588 }
williequesada 0:a1ce6cdc3045 2589
williequesada 0:a1ce6cdc3045 2590 void M_PruebaTiquete()
williequesada 0:a1ce6cdc3045 2591 {
williequesada 0:a1ce6cdc3045 2592 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2593 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2594 Screen.Limits();
williequesada 0:a1ce6cdc3045 2595 Screen.Show();
williequesada 0:a1ce6cdc3045 2596 wait(1);
williequesada 0:a1ce6cdc3045 2597 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2598
williequesada 0:a1ce6cdc3045 2599 Impresora.Power(1);
williequesada 0:a1ce6cdc3045 2600 wait_ms(1000);
williequesada 0:a1ce6cdc3045 2601 Comando=Impresora.Reset();
williequesada 0:a1ce6cdc3045 2602
williequesada 0:a1ce6cdc3045 2603 if(Comando==2) {
williequesada 0:a1ce6cdc3045 2604 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2605 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2606 Screen.Limits();
williequesada 0:a1ce6cdc3045 2607 Screen.Show();
williequesada 0:a1ce6cdc3045 2608 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2609
williequesada 0:a1ce6cdc3045 2610 Impresora.End();
williequesada 0:a1ce6cdc3045 2611 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2612 wait(3);
williequesada 0:a1ce6cdc3045 2613 }
williequesada 0:a1ce6cdc3045 2614 if(Comando==1) {
williequesada 0:a1ce6cdc3045 2615 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2616 Screen.PutString(15,34,"Imprimiendo...");
williequesada 0:a1ce6cdc3045 2617 Screen.Limits();
williequesada 0:a1ce6cdc3045 2618 Screen.Show();
williequesada 0:a1ce6cdc3045 2619 Computer.printf("Imprimiendo...\n");
williequesada 0:a1ce6cdc3045 2620
williequesada 0:a1ce6cdc3045 2621 Comando=Impresora.Output(FechaRespuesta,"00:00","00:00","0000","00:00","000000","0000*");
williequesada 0:a1ce6cdc3045 2622 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2623 Computer.printf("Alarma Output\n");
williequesada 0:a1ce6cdc3045 2624 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2625 } else {
williequesada 0:a1ce6cdc3045 2626 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2627 }
williequesada 0:a1ce6cdc3045 2628
williequesada 0:a1ce6cdc3045 2629 Comando=Impresora.Paper(600);
williequesada 0:a1ce6cdc3045 2630 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2631 Computer.printf("Alarma Papel\n");
williequesada 0:a1ce6cdc3045 2632 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2633 } else {
williequesada 0:a1ce6cdc3045 2634 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2635 }
williequesada 0:a1ce6cdc3045 2636
williequesada 0:a1ce6cdc3045 2637 Comando=Impresora.Cutter(1);
williequesada 0:a1ce6cdc3045 2638 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2639 Computer.printf("Alarma Cutter\n");
williequesada 0:a1ce6cdc3045 2640 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2641 } else {
williequesada 0:a1ce6cdc3045 2642 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2643 }
williequesada 0:a1ce6cdc3045 2644
williequesada 0:a1ce6cdc3045 2645 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2646 Screen.PutString(15,34,"Retire.");
williequesada 0:a1ce6cdc3045 2647 Screen.Limits();
williequesada 0:a1ce6cdc3045 2648 Screen.Show();
williequesada 0:a1ce6cdc3045 2649 Computer.printf("Retire\n");
williequesada 0:a1ce6cdc3045 2650 wait(1);
williequesada 0:a1ce6cdc3045 2651 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2652 wait(2);
williequesada 0:a1ce6cdc3045 2653 }
williequesada 0:a1ce6cdc3045 2654 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2655 Screen.PutString(15,12,"Tiquete de prueba");
williequesada 0:a1ce6cdc3045 2656 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2657 Screen.Limits();
williequesada 0:a1ce6cdc3045 2658 Screen.Show();
williequesada 0:a1ce6cdc3045 2659 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2660 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2661 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2662 wait(3);
williequesada 0:a1ce6cdc3045 2663 }
williequesada 0:a1ce6cdc3045 2664 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 2665
williequesada 0:a1ce6cdc3045 2666 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 2667 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 2668 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2669 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 2670 } else {
williequesada 0:a1ce6cdc3045 2671 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2672 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 2673 }
williequesada 0:a1ce6cdc3045 2674 }
williequesada 0:a1ce6cdc3045 2675
williequesada 0:a1ce6cdc3045 2676 void M_ConexionImpresora()
williequesada 0:a1ce6cdc3045 2677 {
williequesada 0:a1ce6cdc3045 2678 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2679 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2680 Screen.Limits();
williequesada 0:a1ce6cdc3045 2681 Screen.Show();
williequesada 0:a1ce6cdc3045 2682 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 2683
williequesada 0:a1ce6cdc3045 2684 Impresora.Power(1);
williequesada 0:a1ce6cdc3045 2685 wait_ms(1000);
williequesada 0:a1ce6cdc3045 2686 Comando=Impresora.Reset();
williequesada 0:a1ce6cdc3045 2687
williequesada 0:a1ce6cdc3045 2688 if(Comando==2) {
williequesada 0:a1ce6cdc3045 2689 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2690 Screen.PutString(15,34,"Desconectada.");
williequesada 0:a1ce6cdc3045 2691 Screen.Limits();
williequesada 0:a1ce6cdc3045 2692 Screen.Show();
williequesada 0:a1ce6cdc3045 2693 Computer.printf("Desconectada\n");
williequesada 0:a1ce6cdc3045 2694 Impresora.End();
williequesada 0:a1ce6cdc3045 2695 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2696 wait(3);
williequesada 0:a1ce6cdc3045 2697 }
williequesada 0:a1ce6cdc3045 2698 if(Comando==1) {
williequesada 0:a1ce6cdc3045 2699 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2700 Screen.PutString(15,34,"Conectada.");
williequesada 0:a1ce6cdc3045 2701 Screen.Limits();
williequesada 0:a1ce6cdc3045 2702 Screen.Show();
williequesada 0:a1ce6cdc3045 2703 Computer.printf("Conectada\n");
williequesada 0:a1ce6cdc3045 2704 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2705 ParkingMeter.AlarmCall(2,'A');
williequesada 0:a1ce6cdc3045 2706 wait(3);
williequesada 0:a1ce6cdc3045 2707 }
williequesada 0:a1ce6cdc3045 2708 if(Comando==0) {
williequesada 0:a1ce6cdc3045 2709 Screen.PutString(15,12,"Conexion impresora");
williequesada 0:a1ce6cdc3045 2710 Screen.PutString(15,34,"Conectada error.");
williequesada 0:a1ce6cdc3045 2711 Screen.Limits();
williequesada 0:a1ce6cdc3045 2712 Screen.Show();
williequesada 0:a1ce6cdc3045 2713 Computer.printf("Error\n");
williequesada 0:a1ce6cdc3045 2714 Comando=Impresora.End();
williequesada 0:a1ce6cdc3045 2715 ParkingMeter.AlarmCall(2,'E');
williequesada 0:a1ce6cdc3045 2716 wait(3);
williequesada 0:a1ce6cdc3045 2717 }
williequesada 0:a1ce6cdc3045 2718 Impresora.Power(0);
williequesada 0:a1ce6cdc3045 2719 }
williequesada 0:a1ce6cdc3045 2720
williequesada 0:a1ce6cdc3045 2721 void M_CambioPapel(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2722 {
williequesada 0:a1ce6cdc3045 2723 char Papel_Actual[5]; //Lectura de valor en memoria
williequesada 0:a1ce6cdc3045 2724 if(Papel>999) {
williequesada 0:a1ce6cdc3045 2725 sprintf(Papel_Actual,"%i",Papel);
williequesada 0:a1ce6cdc3045 2726 }
williequesada 0:a1ce6cdc3045 2727 if(Papel<1000) {
williequesada 0:a1ce6cdc3045 2728 sprintf(Papel_Actual,"0%i",Papel);
williequesada 0:a1ce6cdc3045 2729 }
williequesada 0:a1ce6cdc3045 2730 if(Papel<100) {
williequesada 0:a1ce6cdc3045 2731 sprintf(Papel_Actual,"00%i",Papel);
williequesada 0:a1ce6cdc3045 2732 }
williequesada 0:a1ce6cdc3045 2733 if(Papel<10) {
williequesada 0:a1ce6cdc3045 2734 sprintf(Papel_Actual,"000%i",Papel);
williequesada 0:a1ce6cdc3045 2735 }
williequesada 0:a1ce6cdc3045 2736
williequesada 0:a1ce6cdc3045 2737 int SelectionLine= 99;
williequesada 0:a1ce6cdc3045 2738 int Line=1;
williequesada 0:a1ce6cdc3045 2739
williequesada 0:a1ce6cdc3045 2740 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2741
williequesada 0:a1ce6cdc3045 2742 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2743 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2744 Screen.PutString(15,12,"Cambio de papel");
williequesada 0:a1ce6cdc3045 2745 Screen.PutChar(100,34,Papel_Actual[0]);
williequesada 0:a1ce6cdc3045 2746 Screen.PutChar(110,34,Papel_Actual[1]);
williequesada 0:a1ce6cdc3045 2747 Screen.PutChar(120,34,Papel_Actual[2]);
williequesada 0:a1ce6cdc3045 2748 Screen.PutChar(130,34,Papel_Actual[3]);
williequesada 0:a1ce6cdc3045 2749 Screen.Limits();
williequesada 0:a1ce6cdc3045 2750 Screen.Show();
williequesada 0:a1ce6cdc3045 2751 Computer.printf("Cambio de papel\n");
williequesada 0:a1ce6cdc3045 2752 Computer.printf("%s\n",Papel_Actual);
williequesada 0:a1ce6cdc3045 2753
williequesada 0:a1ce6cdc3045 2754 while(true) {
williequesada 0:a1ce6cdc3045 2755 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2756 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2757 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2758 break;
williequesada 0:a1ce6cdc3045 2759 }
williequesada 0:a1ce6cdc3045 2760 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 2761 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2762 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2763 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 2764 Papel_Actual[Line-1]=Tecla;
williequesada 0:a1ce6cdc3045 2765 Line++;
williequesada 0:a1ce6cdc3045 2766 if(Line==5) {
williequesada 0:a1ce6cdc3045 2767 Line=1;
williequesada 0:a1ce6cdc3045 2768 }
williequesada 0:a1ce6cdc3045 2769 if(Line==0) {
williequesada 0:a1ce6cdc3045 2770 Line=4;
williequesada 0:a1ce6cdc3045 2771 }
williequesada 0:a1ce6cdc3045 2772 }
williequesada 0:a1ce6cdc3045 2773 if (Tecla=='E') { //Subir puntero
williequesada 0:a1ce6cdc3045 2774 Line++;
williequesada 0:a1ce6cdc3045 2775 if(Line==5) {
williequesada 0:a1ce6cdc3045 2776 Line=1;
williequesada 0:a1ce6cdc3045 2777 }
williequesada 0:a1ce6cdc3045 2778 }
williequesada 0:a1ce6cdc3045 2779 if (Tecla=='F') { //Bajar puntero
williequesada 0:a1ce6cdc3045 2780 Line--;
williequesada 0:a1ce6cdc3045 2781 if(Line==0) {
williequesada 0:a1ce6cdc3045 2782 Line=4;
williequesada 0:a1ce6cdc3045 2783 }
williequesada 0:a1ce6cdc3045 2784 }
williequesada 0:a1ce6cdc3045 2785 if (Tecla=='C') { //Cancelar Operacion
williequesada 0:a1ce6cdc3045 2786 break;
williequesada 0:a1ce6cdc3045 2787 }
williequesada 0:a1ce6cdc3045 2788 if (Tecla=='B') { //Atras en menu
williequesada 0:a1ce6cdc3045 2789 break;
williequesada 0:a1ce6cdc3045 2790 }
williequesada 0:a1ce6cdc3045 2791 if (Tecla=='D') { //En caso de confirmacion
williequesada 0:a1ce6cdc3045 2792 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 2793 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 2794 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 2795 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2796 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 2797 } else {
williequesada 0:a1ce6cdc3045 2798 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 2799 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 2800 }
williequesada 0:a1ce6cdc3045 2801 break;
williequesada 0:a1ce6cdc3045 2802 }
williequesada 0:a1ce6cdc3045 2803 switch (Line) {
williequesada 0:a1ce6cdc3045 2804 case 1:
williequesada 0:a1ce6cdc3045 2805 SelectionLine=99;
williequesada 0:a1ce6cdc3045 2806 break;
williequesada 0:a1ce6cdc3045 2807 case 2:
williequesada 0:a1ce6cdc3045 2808 SelectionLine=109;
williequesada 0:a1ce6cdc3045 2809 break;
williequesada 0:a1ce6cdc3045 2810 case 3:
williequesada 0:a1ce6cdc3045 2811 SelectionLine=119;
williequesada 0:a1ce6cdc3045 2812 break;
williequesada 0:a1ce6cdc3045 2813 case 4:
williequesada 0:a1ce6cdc3045 2814 SelectionLine=129;
williequesada 0:a1ce6cdc3045 2815 break;
williequesada 0:a1ce6cdc3045 2816 }
williequesada 0:a1ce6cdc3045 2817 //-------Mostrar en Patalla-------
williequesada 0:a1ce6cdc3045 2818 Screen.Rectangle(SelectionLine,32,9,0);
williequesada 0:a1ce6cdc3045 2819 Screen.Rectangle(SelectionLine,50,9,0);
williequesada 0:a1ce6cdc3045 2820 Screen.PutString(15,12,"Cambio de papel");
williequesada 0:a1ce6cdc3045 2821 Screen.PutChar(100,34,Papel_Actual[0]);
williequesada 0:a1ce6cdc3045 2822 Screen.PutChar(110,34,Papel_Actual[1]);
williequesada 0:a1ce6cdc3045 2823 Screen.PutChar(120,34,Papel_Actual[2]);
williequesada 0:a1ce6cdc3045 2824 Screen.PutChar(130,34,Papel_Actual[3]);
williequesada 0:a1ce6cdc3045 2825 Screen.Limits();
williequesada 0:a1ce6cdc3045 2826 Screen.Show();
williequesada 0:a1ce6cdc3045 2827 Computer.printf("%s\n",Papel_Actual);
williequesada 0:a1ce6cdc3045 2828 }
williequesada 0:a1ce6cdc3045 2829 }
williequesada 0:a1ce6cdc3045 2830 }
williequesada 0:a1ce6cdc3045 2831 void M_PruebaTeclado(uint32_t TimeOut)
williequesada 0:a1ce6cdc3045 2832 {
williequesada 0:a1ce6cdc3045 2833 bool Numero;
williequesada 0:a1ce6cdc3045 2834 int Line=0;
williequesada 0:a1ce6cdc3045 2835 char Secuencia[16]= {'1','2','3','A','4','5','6','B','7','8','9','C','F','0','E','D'};
williequesada 0:a1ce6cdc3045 2836 char SecuenciaSelect[2];
williequesada 0:a1ce6cdc3045 2837 SecuenciaSelect[0]='1';
williequesada 0:a1ce6cdc3045 2838 SecuenciaSelect[1]='\0';
williequesada 0:a1ce6cdc3045 2839 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2840
williequesada 0:a1ce6cdc3045 2841 Screen.Limits();
williequesada 0:a1ce6cdc3045 2842 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2843 Screen.PutString(15,34,"> <");
williequesada 0:a1ce6cdc3045 2844 Screen.PutString(33,34,SecuenciaSelect);
williequesada 0:a1ce6cdc3045 2845 Screen.Show();
williequesada 0:a1ce6cdc3045 2846 Computer.putc(SecuenciaSelect[0]);
williequesada 0:a1ce6cdc3045 2847
williequesada 0:a1ce6cdc3045 2848 while(true) {
williequesada 0:a1ce6cdc3045 2849 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2850 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2851 if(Transcurrido>TimeOut) {
williequesada 0:a1ce6cdc3045 2852 Screen.Limits();
williequesada 0:a1ce6cdc3045 2853 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2854 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2855 Screen.Show();
williequesada 0:a1ce6cdc3045 2856 Computer.printf("\nError\n");
williequesada 0:a1ce6cdc3045 2857 wait(2);
williequesada 0:a1ce6cdc3045 2858 break;
williequesada 0:a1ce6cdc3045 2859 }
williequesada 0:a1ce6cdc3045 2860 Tecla = KeyPad_Read();
williequesada 0:a1ce6cdc3045 2861 if (Tecla!=NO_KEY) { // Se valida que se ingrese algo en el teclado
williequesada 0:a1ce6cdc3045 2862 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2863
williequesada 0:a1ce6cdc3045 2864 Numero=(Tecla==Secuencia[Line]);
williequesada 0:a1ce6cdc3045 2865 if (Numero) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2866 Line++;
williequesada 0:a1ce6cdc3045 2867 SecuenciaSelect[0]=Secuencia[Line];
williequesada 0:a1ce6cdc3045 2868 }
williequesada 0:a1ce6cdc3045 2869
williequesada 0:a1ce6cdc3045 2870 if (Line>15) { //Cambiar numero
williequesada 0:a1ce6cdc3045 2871 Screen.Limits();
williequesada 0:a1ce6cdc3045 2872 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2873 Screen.PutString(15,34,"Aprobada.");
williequesada 0:a1ce6cdc3045 2874 Screen.Show();
williequesada 0:a1ce6cdc3045 2875 Computer.printf("\nAprobada\n");
williequesada 0:a1ce6cdc3045 2876 wait(3);
williequesada 0:a1ce6cdc3045 2877 break;
williequesada 0:a1ce6cdc3045 2878 }
williequesada 0:a1ce6cdc3045 2879
williequesada 0:a1ce6cdc3045 2880 Screen.Limits();
williequesada 0:a1ce6cdc3045 2881 Screen.PutString(15,12,"Prueba de teclado");
williequesada 0:a1ce6cdc3045 2882 Screen.PutString(15,34,"> <");
williequesada 0:a1ce6cdc3045 2883 Screen.PutString(33,34,SecuenciaSelect);
williequesada 0:a1ce6cdc3045 2884 Screen.Show();
williequesada 0:a1ce6cdc3045 2885 Computer.putc(SecuenciaSelect[0]);
williequesada 0:a1ce6cdc3045 2886 }
williequesada 0:a1ce6cdc3045 2887 }
williequesada 0:a1ce6cdc3045 2888
williequesada 0:a1ce6cdc3045 2889 }
williequesada 0:a1ce6cdc3045 2890 int M_RetiroTarjeta(uint32_t TiempoFuera)
williequesada 0:a1ce6cdc3045 2891 {
williequesada 0:a1ce6cdc3045 2892 Computer.printf("Retiro tarjeta\n");
williequesada 0:a1ce6cdc3045 2893 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2894 while(true) {
williequesada 0:a1ce6cdc3045 2895 if(PositionCard()==0) {
williequesada 0:a1ce6cdc3045 2896 return 1;
williequesada 0:a1ce6cdc3045 2897 } else {
williequesada 0:a1ce6cdc3045 2898 Screen.Limits(); // Se pide al usuario por pantalla el retiro de la tarjeta
williequesada 0:a1ce6cdc3045 2899 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2900 Screen.PutString(15,34,"Retire tarjeta.");
williequesada 0:a1ce6cdc3045 2901 Screen.Show();
williequesada 0:a1ce6cdc3045 2902 }
williequesada 0:a1ce6cdc3045 2903 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 2904 Transcurrido=Fin-Inicio;
williequesada 0:a1ce6cdc3045 2905 if(Transcurrido>TiempoFuera) {
williequesada 0:a1ce6cdc3045 2906 StateReader[1]='T';
williequesada 0:a1ce6cdc3045 2907 return 0;
williequesada 0:a1ce6cdc3045 2908 }
williequesada 0:a1ce6cdc3045 2909 }
williequesada 0:a1ce6cdc3045 2910 }
williequesada 0:a1ce6cdc3045 2911
williequesada 0:a1ce6cdc3045 2912 void M_PruebaLectora()
williequesada 0:a1ce6cdc3045 2913 {
williequesada 0:a1ce6cdc3045 2914 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 2915 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 2916 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2917 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 2918 Screen.Limits(); // Se inicia el lector de tarjetas
williequesada 0:a1ce6cdc3045 2919 Screen.Show();
williequesada 0:a1ce6cdc3045 2920 wait(2);
williequesada 0:a1ce6cdc3045 2921
williequesada 0:a1ce6cdc3045 2922
williequesada 0:a1ce6cdc3045 2923 if(ResetCard()==1) {
williequesada 0:a1ce6cdc3045 2924
williequesada 0:a1ce6cdc3045 2925 Screen.Limits(); // Se pide al usuario por pantalla la intrduccion de la tarjeta
williequesada 0:a1ce6cdc3045 2926 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2927 Screen.PutString(15,34,"Introduzca tarjeta.");
williequesada 0:a1ce6cdc3045 2928 Screen.Show();
williequesada 0:a1ce6cdc3045 2929
williequesada 0:a1ce6cdc3045 2930 while(true) {
williequesada 0:a1ce6cdc3045 2931
williequesada 0:a1ce6cdc3045 2932 uint8_t RespuestaIngresoTarjeta = IngresoTarjeta(10000);
williequesada 0:a1ce6cdc3045 2933 if(RespuestaIngresoTarjeta==1) {
williequesada 0:a1ce6cdc3045 2934 Screen.Limits();
williequesada 0:a1ce6cdc3045 2935 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2936 Screen.PutString(15,34,"Retire tarjeta.");
williequesada 0:a1ce6cdc3045 2937 Screen.Show();
williequesada 0:a1ce6cdc3045 2938 }
williequesada 0:a1ce6cdc3045 2939 if(RespuestaIngresoTarjeta==0) {
williequesada 0:a1ce6cdc3045 2940 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2941 Screen.PutString(15,34,"Sin deteccion.");
williequesada 0:a1ce6cdc3045 2942 Screen.Limits();
williequesada 0:a1ce6cdc3045 2943 Screen.Show();
williequesada 0:a1ce6cdc3045 2944 wait(3);
williequesada 0:a1ce6cdc3045 2945 Screen.Clean();
williequesada 0:a1ce6cdc3045 2946 break;
williequesada 0:a1ce6cdc3045 2947 }
williequesada 0:a1ce6cdc3045 2948 if(RespuestaIngresoTarjeta==2) {
williequesada 0:a1ce6cdc3045 2949 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2950 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2951 Screen.Limits();
williequesada 0:a1ce6cdc3045 2952 Screen.Show();
williequesada 0:a1ce6cdc3045 2953 wait(3);
williequesada 0:a1ce6cdc3045 2954 break;
williequesada 0:a1ce6cdc3045 2955 }
williequesada 0:a1ce6cdc3045 2956
williequesada 0:a1ce6cdc3045 2957 uint8_t RespuestaReadCard=ReadCard(5000);
williequesada 0:a1ce6cdc3045 2958 if(RespuestaReadCard==2) {
williequesada 0:a1ce6cdc3045 2959 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2960 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2961 Screen.Limits();
williequesada 0:a1ce6cdc3045 2962 Screen.Show();
williequesada 0:a1ce6cdc3045 2963 wait(3);
williequesada 0:a1ce6cdc3045 2964 break;
williequesada 0:a1ce6cdc3045 2965 }
williequesada 0:a1ce6cdc3045 2966
williequesada 0:a1ce6cdc3045 2967
williequesada 0:a1ce6cdc3045 2968 // Se le la tarjeta al retirarse
williequesada 0:a1ce6cdc3045 2969 int DataResult=RecibeDataCard(); // Se corrobora que la informacion de la tajeta es la corre
williequesada 0:a1ce6cdc3045 2970 if(DataResult==0) {
williequesada 0:a1ce6cdc3045 2971 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2972 Screen.PutString(15,34,"ilegible.");
williequesada 0:a1ce6cdc3045 2973 Screen.Limits();
williequesada 0:a1ce6cdc3045 2974 Screen.Show();
williequesada 0:a1ce6cdc3045 2975 wait(2);
williequesada 0:a1ce6cdc3045 2976 if(M_RetiroTarjeta(7000)) {
williequesada 0:a1ce6cdc3045 2977 Screen.Limits();
williequesada 0:a1ce6cdc3045 2978 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2979 Screen.PutString(15,34,"Introduzca tarjeta.");
williequesada 0:a1ce6cdc3045 2980 Screen.Show();
williequesada 0:a1ce6cdc3045 2981 } else {
williequesada 0:a1ce6cdc3045 2982 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2983 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 2984 Screen.Limits();
williequesada 0:a1ce6cdc3045 2985 Screen.Show();
williequesada 0:a1ce6cdc3045 2986 wait(3);
williequesada 0:a1ce6cdc3045 2987 break;
williequesada 0:a1ce6cdc3045 2988 }
williequesada 0:a1ce6cdc3045 2989 }
williequesada 0:a1ce6cdc3045 2990 if(DataResult==1) {
williequesada 0:a1ce6cdc3045 2991 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 2992 Screen.PutString(15,34,"Aprobada.");
williequesada 0:a1ce6cdc3045 2993 Screen.Limits();
williequesada 0:a1ce6cdc3045 2994 Screen.Show();
williequesada 0:a1ce6cdc3045 2995 Computer.printf("\nAprobada\n");
williequesada 0:a1ce6cdc3045 2996 wait(3);
williequesada 0:a1ce6cdc3045 2997 break;
williequesada 0:a1ce6cdc3045 2998 }
williequesada 0:a1ce6cdc3045 2999 if(DataResult==2) {
williequesada 0:a1ce6cdc3045 3000 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3001 Screen.PutString(15,34,"ilegible.");
williequesada 0:a1ce6cdc3045 3002 Screen.Limits();
williequesada 0:a1ce6cdc3045 3003 Screen.Show();
williequesada 0:a1ce6cdc3045 3004 wait(2);
williequesada 0:a1ce6cdc3045 3005 if(M_RetiroTarjeta(7000)) {
williequesada 0:a1ce6cdc3045 3006 Screen.Limits();
williequesada 0:a1ce6cdc3045 3007 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3008 Screen.PutString(15,34,"Introduzca tarjeta.");
williequesada 0:a1ce6cdc3045 3009 Screen.Show();
williequesada 0:a1ce6cdc3045 3010 } else {
williequesada 0:a1ce6cdc3045 3011 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3012 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 3013 Screen.Limits();
williequesada 0:a1ce6cdc3045 3014 Screen.Show();
williequesada 0:a1ce6cdc3045 3015 wait(3);
williequesada 0:a1ce6cdc3045 3016 break;
williequesada 0:a1ce6cdc3045 3017 }
williequesada 0:a1ce6cdc3045 3018 }
williequesada 0:a1ce6cdc3045 3019 }
williequesada 0:a1ce6cdc3045 3020 } else {
williequesada 0:a1ce6cdc3045 3021 Screen.PutString(15,12,"Prueba de lectura");
williequesada 0:a1ce6cdc3045 3022 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 3023 Screen.Limits();
williequesada 0:a1ce6cdc3045 3024 Screen.Show();
williequesada 0:a1ce6cdc3045 3025 wait(3);
williequesada 0:a1ce6cdc3045 3026 }
williequesada 0:a1ce6cdc3045 3027 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 3028 Impresora.PowerMax(0);
williequesada 0:a1ce6cdc3045 3029 }
williequesada 0:a1ce6cdc3045 3030
williequesada 0:a1ce6cdc3045 3031 void M_ConexionLectora()
williequesada 0:a1ce6cdc3045 3032 {
williequesada 0:a1ce6cdc3045 3033 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 3034 CardReaderPower=1;
williequesada 0:a1ce6cdc3045 3035 Screen.Limits();
williequesada 0:a1ce6cdc3045 3036 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3037 Screen.PutString(15,34,"Conectando...");
williequesada 0:a1ce6cdc3045 3038 Screen.Show();
williequesada 0:a1ce6cdc3045 3039 Computer.printf("Conectando...\n");
williequesada 0:a1ce6cdc3045 3040 wait(2);
williequesada 0:a1ce6cdc3045 3041 int RespuestaConexion=ResetCard();
williequesada 0:a1ce6cdc3045 3042
williequesada 0:a1ce6cdc3045 3043 if(RespuestaConexion==2) {
williequesada 0:a1ce6cdc3045 3044 Screen.Limits();
williequesada 0:a1ce6cdc3045 3045 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3046 Screen.PutString(15,34,"Desconectada.");
williequesada 0:a1ce6cdc3045 3047 Screen.Show();
williequesada 0:a1ce6cdc3045 3048 Computer.printf("Desconectada\n");
williequesada 0:a1ce6cdc3045 3049 wait(3);
williequesada 0:a1ce6cdc3045 3050 }
williequesada 0:a1ce6cdc3045 3051 if(RespuestaConexion==1) {
williequesada 0:a1ce6cdc3045 3052 Screen.Limits();
williequesada 0:a1ce6cdc3045 3053 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3054 Screen.PutString(15,34,"Conectada.");
williequesada 0:a1ce6cdc3045 3055 Screen.Show();
williequesada 0:a1ce6cdc3045 3056 Computer.printf("Conectada\n");
williequesada 0:a1ce6cdc3045 3057 wait(3);
williequesada 0:a1ce6cdc3045 3058 }
williequesada 0:a1ce6cdc3045 3059 if(RespuestaConexion==0) {
williequesada 0:a1ce6cdc3045 3060 Screen.Limits();
williequesada 0:a1ce6cdc3045 3061 Screen.PutString(15,12,"Conexion lectora");
williequesada 0:a1ce6cdc3045 3062 Screen.PutString(15,34,"Conectada error.");
williequesada 0:a1ce6cdc3045 3063 Screen.Show();
williequesada 0:a1ce6cdc3045 3064 Computer.printf("Conectada error\n");
williequesada 0:a1ce6cdc3045 3065 wait(3);
williequesada 0:a1ce6cdc3045 3066 }
williequesada 0:a1ce6cdc3045 3067 CardReaderPower=0;
williequesada 0:a1ce6cdc3045 3068 Impresora.PowerMax(0);
williequesada 0:a1ce6cdc3045 3069 }
williequesada 0:a1ce6cdc3045 3070
williequesada 0:a1ce6cdc3045 3071 void M_Informacion()
williequesada 0:a1ce6cdc3045 3072 {
williequesada 0:a1ce6cdc3045 3073 int TiquetesDisponibles=Papel-Impresora.Ticket(1);
williequesada 0:a1ce6cdc3045 3074 if(TiquetesDisponibles<200) {
williequesada 0:a1ce6cdc3045 3075 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 3076 ParkingMeter.AlarmCall(3,'E');
williequesada 0:a1ce6cdc3045 3077 } else {
williequesada 0:a1ce6cdc3045 3078 sprintf(PapelDisponible,"%i",TiquetesDisponibles);
williequesada 0:a1ce6cdc3045 3079 ParkingMeter.AlarmCall(3,'A');
williequesada 0:a1ce6cdc3045 3080 }
williequesada 0:a1ce6cdc3045 3081
williequesada 0:a1ce6cdc3045 3082 char Alarmas[7]="AAAAAA";
williequesada 0:a1ce6cdc3045 3083 Alarmas[0]=ParkingMeter.AlarmReader();
williequesada 0:a1ce6cdc3045 3084 Alarmas[1]=ParkingMeter.AlarmPrinter();
williequesada 0:a1ce6cdc3045 3085 Alarmas[2]=ParkingMeter.AlarmPaper();
williequesada 0:a1ce6cdc3045 3086 Alarmas[3]=ParkingMeter.AlarmDoor1();
williequesada 0:a1ce6cdc3045 3087 Alarmas[4]=ParkingMeter.AlarmDoor2();
williequesada 0:a1ce6cdc3045 3088 Alarmas[5]=ParkingMeter.AlarmBattery();
williequesada 0:a1ce6cdc3045 3089
williequesada 0:a1ce6cdc3045 3090 Screen.PutString(15,4,"Transaccion:");
williequesada 0:a1ce6cdc3045 3091 Screen.PutString(129,4,FechaRespuesta);
williequesada 0:a1ce6cdc3045 3092 Screen.PutString(15,23,"Papel:");
williequesada 0:a1ce6cdc3045 3093 Screen.PutString(129,23,PapelDisponible);
williequesada 0:a1ce6cdc3045 3094 Screen.PutString(15,42,"Estado:");
williequesada 0:a1ce6cdc3045 3095 Screen.PutString(129,42,Alarmas);
williequesada 0:a1ce6cdc3045 3096 Screen.Limits();
williequesada 0:a1ce6cdc3045 3097 Screen.Show();
williequesada 0:a1ce6cdc3045 3098 wait(5);
williequesada 0:a1ce6cdc3045 3099 }
williequesada 0:a1ce6cdc3045 3100
williequesada 0:a1ce6cdc3045 3101
williequesada 0:a1ce6cdc3045 3102 uint8_t ImprimirHosting()
williequesada 0:a1ce6cdc3045 3103 {
williequesada 0:a1ce6cdc3045 3104 int PrinterState;
williequesada 0:a1ce6cdc3045 3105 wait(2);
williequesada 0:a1ce6cdc3045 3106 PrinterState = Impresora.Power(1);
williequesada 0:a1ce6cdc3045 3107 if(PrinterState){
williequesada 0:a1ce6cdc3045 3108 PrinterState=Impresora.Reset();
williequesada 0:a1ce6cdc3045 3109 }
williequesada 0:a1ce6cdc3045 3110
williequesada 0:a1ce6cdc3045 3111 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3112 wait(2);
williequesada 0:a1ce6cdc3045 3113 Computer.printf("Error.\n");
williequesada 0:a1ce6cdc3045 3114 Impresora.End();
williequesada 0:a1ce6cdc3045 3115 wait(4);
williequesada 0:a1ce6cdc3045 3116 }
williequesada 0:a1ce6cdc3045 3117 if(PrinterState==2) {
williequesada 0:a1ce6cdc3045 3118 wait(2);
williequesada 0:a1ce6cdc3045 3119 Computer.printf("Error.\n");
williequesada 0:a1ce6cdc3045 3120 Impresora.End();
williequesada 0:a1ce6cdc3045 3121 wait(4);
williequesada 0:a1ce6cdc3045 3122 }
williequesada 0:a1ce6cdc3045 3123 if(PrinterState==1) {
williequesada 0:a1ce6cdc3045 3124 PrinterState=Impresora.Output(FechaRespuesta,"00:00",HoraRespuesta,"0000","00:00","000000","0000*");
williequesada 0:a1ce6cdc3045 3125 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3126 Computer.printf("Alarma Output\n");
williequesada 0:a1ce6cdc3045 3127 return 0;
williequesada 0:a1ce6cdc3045 3128 }
williequesada 0:a1ce6cdc3045 3129 PrinterState=Impresora.Paper(250);
williequesada 0:a1ce6cdc3045 3130 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3131 Computer.printf("Alarma Papel\n");
williequesada 0:a1ce6cdc3045 3132 return 0;
williequesada 0:a1ce6cdc3045 3133 }
williequesada 0:a1ce6cdc3045 3134
williequesada 0:a1ce6cdc3045 3135 PrinterState=Impresora.Cutter(1);
williequesada 0:a1ce6cdc3045 3136 if(PrinterState==0) {
williequesada 0:a1ce6cdc3045 3137 Computer.printf("Alarma Cutter\n");
williequesada 0:a1ce6cdc3045 3138 return 0;
williequesada 0:a1ce6cdc3045 3139 }
williequesada 0:a1ce6cdc3045 3140 wait(1);
williequesada 0:a1ce6cdc3045 3141 PrinterState=Impresora.End();
williequesada 0:a1ce6cdc3045 3142 wait(1);
williequesada 0:a1ce6cdc3045 3143 }
williequesada 0:a1ce6cdc3045 3144
williequesada 0:a1ce6cdc3045 3145 PrinterState=Impresora.Power(0);
williequesada 0:a1ce6cdc3045 3146 return 1;
williequesada 0:a1ce6cdc3045 3147 }
williequesada 0:a1ce6cdc3045 3148
williequesada 0:a1ce6cdc3045 3149 //------------------------------------------------------------------------------------------------------------------------------------------------------
williequesada 0:a1ce6cdc3045 3150 void Interrupt_Host()
williequesada 0:a1ce6cdc3045 3151 {
williequesada 0:a1ce6cdc3045 3152 ParkingMeter.Hosting();
williequesada 0:a1ce6cdc3045 3153 Screen.Light();
williequesada 0:a1ce6cdc3045 3154
williequesada 0:a1ce6cdc3045 3155 if(Doors.Read()>0) {
williequesada 0:a1ce6cdc3045 3156 Computer.printf("Alarma puertas\n");
williequesada 0:a1ce6cdc3045 3157 ParkingMeter.AlarmCall((3+Doors.Read()),'E');
williequesada 0:a1ce6cdc3045 3158 } else {
williequesada 0:a1ce6cdc3045 3159 ParkingMeter.AlarmCall(4,'A');
williequesada 0:a1ce6cdc3045 3160 ParkingMeter.AlarmCall(5,'A');
williequesada 0:a1ce6cdc3045 3161 }
williequesada 0:a1ce6cdc3045 3162
williequesada 0:a1ce6cdc3045 3163 if(Charger.Control()>0){
williequesada 0:a1ce6cdc3045 3164 ParkingMeter.AlarmCall(6,'A');
williequesada 0:a1ce6cdc3045 3165 Computer.printf("Bateria ok\n");
williequesada 0:a1ce6cdc3045 3166 Computer.printf("B:%.2f P:%.2f\n",Charger.BatteryRead(),Charger.PanelRead());
williequesada 0:a1ce6cdc3045 3167 } else {
williequesada 0:a1ce6cdc3045 3168 ParkingMeter.AlarmCall(6,'E');
williequesada 0:a1ce6cdc3045 3169 Computer.printf("Bateria baja\n");
williequesada 0:a1ce6cdc3045 3170 }
williequesada 0:a1ce6cdc3045 3171 }
williequesada 0:a1ce6cdc3045 3172
williequesada 0:a1ce6cdc3045 3173 void H_EnviarPaso(uint8_t Entrada_Comando)
williequesada 0:a1ce6cdc3045 3174 {
williequesada 0:a1ce6cdc3045 3175 switch (Entrada_Comando) {
williequesada 0:a1ce6cdc3045 3176 case 1:
williequesada 0:a1ce6cdc3045 3177 Slave.Command(HOSTING_STEP1);
williequesada 0:a1ce6cdc3045 3178 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3179 Progreso[1]='1';
williequesada 0:a1ce6cdc3045 3180 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3181 break;
williequesada 0:a1ce6cdc3045 3182 case 2:
williequesada 0:a1ce6cdc3045 3183 Slave.Command(HOSTING_STEP2);
williequesada 0:a1ce6cdc3045 3184 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3185 Progreso[1]='2';
williequesada 0:a1ce6cdc3045 3186 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3187 break;
williequesada 0:a1ce6cdc3045 3188 case 3:
williequesada 0:a1ce6cdc3045 3189 Slave.Command(HOSTING_STEP3);
williequesada 0:a1ce6cdc3045 3190 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3191 Progreso[1]='3';
williequesada 0:a1ce6cdc3045 3192 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3193 break;
williequesada 0:a1ce6cdc3045 3194 case 4:
williequesada 0:a1ce6cdc3045 3195 Slave.Command(HOSTING_STEP4);
williequesada 0:a1ce6cdc3045 3196 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3197 Progreso[1]='4';
williequesada 0:a1ce6cdc3045 3198 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3199 break;
williequesada 0:a1ce6cdc3045 3200 case 5:
williequesada 0:a1ce6cdc3045 3201 Slave.Command(HOSTING_STEP5);
williequesada 0:a1ce6cdc3045 3202 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3203 Progreso[1]='5';
williequesada 0:a1ce6cdc3045 3204 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3205 break;
williequesada 0:a1ce6cdc3045 3206 case 6:
williequesada 0:a1ce6cdc3045 3207 Slave.Command(HOSTING_STEP6);
williequesada 0:a1ce6cdc3045 3208 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3209 Progreso[1]='6';
williequesada 0:a1ce6cdc3045 3210 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3211 break;
williequesada 0:a1ce6cdc3045 3212 case 7:
williequesada 0:a1ce6cdc3045 3213 Slave.Command(HOSTING_STEP7);
williequesada 0:a1ce6cdc3045 3214 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3215 Progreso[1]='7';
williequesada 0:a1ce6cdc3045 3216 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3217 break;
williequesada 0:a1ce6cdc3045 3218 case 8:
williequesada 0:a1ce6cdc3045 3219 Alarmas[0]=ParkingMeter.AlarmReader();
williequesada 0:a1ce6cdc3045 3220 Alarmas[1]=ParkingMeter.AlarmPrinter();
williequesada 0:a1ce6cdc3045 3221 Alarmas[2]=ParkingMeter.AlarmPaper();
williequesada 0:a1ce6cdc3045 3222 Alarmas[3]=ParkingMeter.AlarmDoor1();
williequesada 0:a1ce6cdc3045 3223 Alarmas[4]=ParkingMeter.AlarmDoor2();
williequesada 0:a1ce6cdc3045 3224 Alarmas[5]=ParkingMeter.AlarmBattery();
williequesada 0:a1ce6cdc3045 3225 Slave.Command(HOSTING_STEP8);
williequesada 0:a1ce6cdc3045 3226 Slave.Send_Hosting(Parquimetro,Municipio,Alarmas);
williequesada 0:a1ce6cdc3045 3227 Computer.printf("Parquimetro: %s\n",Parquimetro);
williequesada 0:a1ce6cdc3045 3228 Computer.printf("Municipio: %s\n",Municipio);
williequesada 0:a1ce6cdc3045 3229 Computer.printf("Alarmas: %s\n",Alarmas);
williequesada 0:a1ce6cdc3045 3230 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3231 Progreso[1]='8';
williequesada 0:a1ce6cdc3045 3232 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3233 break;
williequesada 0:a1ce6cdc3045 3234 case 9:
williequesada 0:a1ce6cdc3045 3235 Slave.Command(HOSTING_STEP9);
williequesada 0:a1ce6cdc3045 3236 Progreso[0]=' ';
williequesada 0:a1ce6cdc3045 3237 Progreso[1]='9';
williequesada 0:a1ce6cdc3045 3238 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3239 break;
williequesada 0:a1ce6cdc3045 3240 case 10:
williequesada 0:a1ce6cdc3045 3241 Slave.Command(HOSTING_STEP10);
williequesada 0:a1ce6cdc3045 3242 Progreso[0]='1';
williequesada 0:a1ce6cdc3045 3243 Progreso[1]='0';
williequesada 0:a1ce6cdc3045 3244 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3245 break;
williequesada 0:a1ce6cdc3045 3246 case 11:
williequesada 0:a1ce6cdc3045 3247 Slave.Command(HOSTING_STEP11);
williequesada 0:a1ce6cdc3045 3248 Progreso[0]='1';
williequesada 0:a1ce6cdc3045 3249 Progreso[1]='0';
williequesada 0:a1ce6cdc3045 3250 Progreso[2]='0';
williequesada 0:a1ce6cdc3045 3251 break;
williequesada 0:a1ce6cdc3045 3252 }
williequesada 0:a1ce6cdc3045 3253 }
williequesada 0:a1ce6cdc3045 3254
williequesada 0:a1ce6cdc3045 3255 void Hosting()
williequesada 0:a1ce6cdc3045 3256 {
williequesada 0:a1ce6cdc3045 3257 Host.detach();
williequesada 0:a1ce6cdc3045 3258 ParkingMeter.LedHosting(1);
williequesada 0:a1ce6cdc3045 3259 uint8_t PasoHostingNum=1;
williequesada 0:a1ce6cdc3045 3260 H_EnviarPaso(PasoHostingNum);
williequesada 0:a1ce6cdc3045 3261 Computer.printf("Hosting iniciando\n");
williequesada 0:a1ce6cdc3045 3262 Computer.printf("Paso %i\n", PasoHostingNum);
williequesada 0:a1ce6cdc3045 3263 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3264 BaseClock.start();
williequesada 0:a1ce6cdc3045 3265 while(true) {
williequesada 0:a1ce6cdc3045 3266 if(PasoHostingNum>10) {
williequesada 0:a1ce6cdc3045 3267 Computer.printf("Paso final\n");
williequesada 0:a1ce6cdc3045 3268 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3269 while(true) {
williequesada 0:a1ce6cdc3045 3270 if(Slave.Message()) {
williequesada 0:a1ce6cdc3045 3271 wait_ms(75);
williequesada 0:a1ce6cdc3045 3272 break;
williequesada 0:a1ce6cdc3045 3273 }
williequesada 0:a1ce6cdc3045 3274 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3275 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3276 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3277 break;
williequesada 0:a1ce6cdc3045 3278 }
williequesada 0:a1ce6cdc3045 3279 }
williequesada 0:a1ce6cdc3045 3280 char HostingRespuesta[7];
williequesada 0:a1ce6cdc3045 3281 HoraRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3282 HoraRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3283 HoraRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3284 HoraRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3285 HoraRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3286 HoraRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3287 HoraRespuesta[5]='\0';
williequesada 0:a1ce6cdc3045 3288 HostingRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3289 HostingRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3290 HostingRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3291 HostingRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3292 HostingRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3293 HostingRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3294
williequesada 0:a1ce6cdc3045 3295 Computer.printf("Respuesta: %s\n",HostingRespuesta);
williequesada 0:a1ce6cdc3045 3296 Computer.printf("Hora:%s\n",HoraRespuesta);
williequesada 0:a1ce6cdc3045 3297 if(HoraRespuesta[2]==':'){
williequesada 0:a1ce6cdc3045 3298 Screen.LightSet(HoraRespuesta);
williequesada 0:a1ce6cdc3045 3299 }
williequesada 0:a1ce6cdc3045 3300 if((HostingRespuesta[0]=='O')&&(HostingRespuesta[1]=='K')&&(HostingRespuesta[2]=='+')){
williequesada 0:a1ce6cdc3045 3301 Precio = ((uint8_t)HostingRespuesta[3]-48)*100 +((uint8_t)HostingRespuesta[4]-48)*10 +((uint8_t)HostingRespuesta[5]-48);
williequesada 0:a1ce6cdc3045 3302 Computer.printf("Precio: %i\n",Precio) ;
williequesada 0:a1ce6cdc3045 3303 }
williequesada 0:a1ce6cdc3045 3304 //ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 3305 //ImprimirHosting();
williequesada 0:a1ce6cdc3045 3306 //ParkingMeter.Max232(0);
williequesada 0:a1ce6cdc3045 3307 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3308 while(true) {
williequesada 0:a1ce6cdc3045 3309 if(Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3310 wait_ms(50);
williequesada 0:a1ce6cdc3045 3311 break;
williequesada 0:a1ce6cdc3045 3312 }
williequesada 0:a1ce6cdc3045 3313 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3314 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3315 if(Transcurrido>15000) {
williequesada 0:a1ce6cdc3045 3316 break;
williequesada 0:a1ce6cdc3045 3317 }
williequesada 0:a1ce6cdc3045 3318 }
williequesada 0:a1ce6cdc3045 3319 if((HostingRespuesta[0]=='O')&&(HostingRespuesta[1]=='K')) {
williequesada 0:a1ce6cdc3045 3320 Computer.printf("Alarmas aprobada\n");
williequesada 0:a1ce6cdc3045 3321 ParkingMeter.HostingOk();
williequesada 0:a1ce6cdc3045 3322 break;
williequesada 0:a1ce6cdc3045 3323 } else {
williequesada 0:a1ce6cdc3045 3324 Computer.printf("Alarmas fallo\n");
williequesada 0:a1ce6cdc3045 3325 break;
williequesada 0:a1ce6cdc3045 3326 }
williequesada 0:a1ce6cdc3045 3327 }
williequesada 0:a1ce6cdc3045 3328
williequesada 0:a1ce6cdc3045 3329 Tecla=KeyPad_Read();
williequesada 0:a1ce6cdc3045 3330 if(Tecla!=NO_KEY) {
williequesada 0:a1ce6cdc3045 3331 Screen.On();
williequesada 0:a1ce6cdc3045 3332 wait_ms(20);
williequesada 0:a1ce6cdc3045 3333 Screen.Init();
williequesada 0:a1ce6cdc3045 3334 if(PasoHostingNum==1) {
williequesada 0:a1ce6cdc3045 3335 Computer.printf("Teclado encender Paso==1\n");
williequesada 0:a1ce6cdc3045 3336 Usuario(USER_INIT);
williequesada 0:a1ce6cdc3045 3337 break;
williequesada 0:a1ce6cdc3045 3338 }
williequesada 0:a1ce6cdc3045 3339 if(PasoHostingNum<3) {
williequesada 0:a1ce6cdc3045 3340 Computer.printf("Teclado Paso<3\n");
williequesada 0:a1ce6cdc3045 3341 Usuario(USER_INIT2);
williequesada 0:a1ce6cdc3045 3342 break;
williequesada 0:a1ce6cdc3045 3343 }
williequesada 0:a1ce6cdc3045 3344 if(PasoHostingNum<6) {
williequesada 0:a1ce6cdc3045 3345 Computer.printf("Teclado Paso<6\n");
williequesada 0:a1ce6cdc3045 3346 Usuario(USER_INIT3);
williequesada 0:a1ce6cdc3045 3347 break;
williequesada 0:a1ce6cdc3045 3348 }
williequesada 0:a1ce6cdc3045 3349 if(PasoHostingNum==6) {
williequesada 0:a1ce6cdc3045 3350 Computer.printf("Teclado Paso==6\n");
williequesada 0:a1ce6cdc3045 3351 Usuario(USER_INIT4);
williequesada 0:a1ce6cdc3045 3352 break;
williequesada 0:a1ce6cdc3045 3353 }
williequesada 0:a1ce6cdc3045 3354 if(PasoHostingNum<=8) {
williequesada 0:a1ce6cdc3045 3355 Computer.printf("Teclado Paso<=8\n");
williequesada 0:a1ce6cdc3045 3356 Usuario(USER_INIT5);
williequesada 0:a1ce6cdc3045 3357 break;
williequesada 0:a1ce6cdc3045 3358 }
williequesada 0:a1ce6cdc3045 3359 if(PasoHostingNum<=10) {
williequesada 0:a1ce6cdc3045 3360 Computer.printf("Teclado Paso<=10\n");
williequesada 0:a1ce6cdc3045 3361 Usuario(USER_INIT5);
williequesada 0:a1ce6cdc3045 3362 break;
williequesada 0:a1ce6cdc3045 3363 }
williequesada 0:a1ce6cdc3045 3364 if(PasoHostingNum<=11) {
williequesada 0:a1ce6cdc3045 3365 Computer.printf("Teclado Paso<=11\n");
williequesada 0:a1ce6cdc3045 3366 PantallaInicio();
williequesada 0:a1ce6cdc3045 3367 Usuario(USER_INIT5);
williequesada 0:a1ce6cdc3045 3368 }
williequesada 0:a1ce6cdc3045 3369 }
williequesada 0:a1ce6cdc3045 3370
williequesada 0:a1ce6cdc3045 3371 if (Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3372 PasoHostingNum++;
williequesada 0:a1ce6cdc3045 3373 Computer.printf("Paso %i\n", PasoHostingNum);
williequesada 0:a1ce6cdc3045 3374 H_EnviarPaso(PasoHostingNum);
williequesada 0:a1ce6cdc3045 3375 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3376 }
williequesada 0:a1ce6cdc3045 3377 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3378 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3379 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3380 Computer.printf("Hosting tiempo\n");
williequesada 0:a1ce6cdc3045 3381 break;
williequesada 0:a1ce6cdc3045 3382 }
williequesada 0:a1ce6cdc3045 3383 }
williequesada 0:a1ce6cdc3045 3384 Slave.Command(COMMAND_OFF);
williequesada 0:a1ce6cdc3045 3385 EsperarSim900(5000);
williequesada 0:a1ce6cdc3045 3386 ParkingMeter.LedHosting(0);
williequesada 0:a1ce6cdc3045 3387 Host.attach(&Interrupt_Host,5);//1800 30 minutos
williequesada 0:a1ce6cdc3045 3388 }
williequesada 0:a1ce6cdc3045 3389
williequesada 0:a1ce6cdc3045 3390 void M_PruebaHosting()
williequesada 0:a1ce6cdc3045 3391 {
williequesada 0:a1ce6cdc3045 3392 int Paso=1;
williequesada 0:a1ce6cdc3045 3393 int PasoSiguiente=1;
williequesada 0:a1ce6cdc3045 3394
williequesada 0:a1ce6cdc3045 3395 while(true) {
williequesada 0:a1ce6cdc3045 3396 if (Paso==PasoSiguiente) {
williequesada 0:a1ce6cdc3045 3397 Computer.printf("Paso %i\n",Paso);
williequesada 0:a1ce6cdc3045 3398 H_EnviarPaso(Paso);
williequesada 0:a1ce6cdc3045 3399 Paso=Paso+1;
williequesada 0:a1ce6cdc3045 3400 if(Paso>11) {
williequesada 0:a1ce6cdc3045 3401 Computer.printf("Paso %i final\n",Paso);
williequesada 0:a1ce6cdc3045 3402 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3403 while(true) {
williequesada 0:a1ce6cdc3045 3404 if(Slave.Message()) {
williequesada 0:a1ce6cdc3045 3405 wait_ms(75);
williequesada 0:a1ce6cdc3045 3406 break;
williequesada 0:a1ce6cdc3045 3407 }
williequesada 0:a1ce6cdc3045 3408 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3409 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3410 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3411 break;
williequesada 0:a1ce6cdc3045 3412 }
williequesada 0:a1ce6cdc3045 3413 }
williequesada 0:a1ce6cdc3045 3414
williequesada 0:a1ce6cdc3045 3415 char HostingRespuesta[7];
williequesada 0:a1ce6cdc3045 3416 HoraRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3417 HoraRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3418 HoraRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3419 HoraRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3420 HoraRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3421 HoraRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3422 HostingRespuesta[5]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3423 HostingRespuesta[4]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3424 HostingRespuesta[3]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3425 HostingRespuesta[2]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3426 HostingRespuesta[1]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3427 HostingRespuesta[0]=Slave.Recibe();
williequesada 0:a1ce6cdc3045 3428
williequesada 0:a1ce6cdc3045 3429 Computer.printf("Respuesta: %s\n",HostingRespuesta);
williequesada 0:a1ce6cdc3045 3430 Computer.printf("Hora: %s\n",HoraRespuesta);
williequesada 0:a1ce6cdc3045 3431 Inicio=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3432 while(true) {
williequesada 0:a1ce6cdc3045 3433 if(Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3434 wait_ms(50);
williequesada 0:a1ce6cdc3045 3435 break;
williequesada 0:a1ce6cdc3045 3436 }
williequesada 0:a1ce6cdc3045 3437 Fin=BaseClock.read_ms();
williequesada 0:a1ce6cdc3045 3438 Transcurrido=Fin-Inicio;//49
williequesada 0:a1ce6cdc3045 3439 if(Transcurrido>10000) {
williequesada 0:a1ce6cdc3045 3440 break;
williequesada 0:a1ce6cdc3045 3441 }
williequesada 0:a1ce6cdc3045 3442 }
williequesada 0:a1ce6cdc3045 3443 if((HostingRespuesta[0]=='O')&&(HostingRespuesta[1]=='K')) {
williequesada 0:a1ce6cdc3045 3444 Computer.printf("Alarmas aprobada\n");
williequesada 0:a1ce6cdc3045 3445 Screen.PutString(15,12,"Prueba hosting");
williequesada 0:a1ce6cdc3045 3446 Screen.PutString(15,34,"Aprobada.");
williequesada 0:a1ce6cdc3045 3447 Screen.Limits();
williequesada 0:a1ce6cdc3045 3448 Screen.Show();
williequesada 0:a1ce6cdc3045 3449 wait_ms(2000);
williequesada 0:a1ce6cdc3045 3450 ParkingMeter.HostingOk();
williequesada 0:a1ce6cdc3045 3451 break;
williequesada 0:a1ce6cdc3045 3452 } else {
williequesada 0:a1ce6cdc3045 3453 Computer.printf("Alarmas fallo\n");
williequesada 0:a1ce6cdc3045 3454 Screen.PutString(15,12,"Prueba hosting");
williequesada 0:a1ce6cdc3045 3455 Screen.PutString(15,34,"Error.");
williequesada 0:a1ce6cdc3045 3456 Screen.Limits();
williequesada 0:a1ce6cdc3045 3457 Screen.Show();
williequesada 0:a1ce6cdc3045 3458 wait_ms(2000);
williequesada 0:a1ce6cdc3045 3459 break;
williequesada 0:a1ce6cdc3045 3460 }
williequesada 0:a1ce6cdc3045 3461 }
williequesada 0:a1ce6cdc3045 3462 Screen.PutString(15,12,"Prueba hosting");
williequesada 0:a1ce6cdc3045 3463 Screen.PutString(15,34,"Progreso:");
williequesada 0:a1ce6cdc3045 3464 Screen.PutChar(105,34,Progreso[0]);
williequesada 0:a1ce6cdc3045 3465 Screen.PutChar(115,34,Progreso[1]);
williequesada 0:a1ce6cdc3045 3466 Screen.PutChar(125,34,Progreso[2]);
williequesada 0:a1ce6cdc3045 3467 Screen.PutChar(135,34,'%');
williequesada 0:a1ce6cdc3045 3468 Screen.Limits();
williequesada 0:a1ce6cdc3045 3469 Screen.Show();
williequesada 0:a1ce6cdc3045 3470 }
williequesada 0:a1ce6cdc3045 3471 if (Slave.Answer()) {
williequesada 0:a1ce6cdc3045 3472 PasoSiguiente=PasoSiguiente+1;
williequesada 0:a1ce6cdc3045 3473 Computer.printf("Next\n");
williequesada 0:a1ce6cdc3045 3474 }
williequesada 0:a1ce6cdc3045 3475 }
williequesada 0:a1ce6cdc3045 3476 }
williequesada 0:a1ce6cdc3045 3477
williequesada 0:a1ce6cdc3045 3478 void Mantenimiento()
williequesada 0:a1ce6cdc3045 3479 {
williequesada 0:a1ce6cdc3045 3480 ParkingMeter.Max232(1);
williequesada 0:a1ce6cdc3045 3481 Impresora.PowerMax(1);
williequesada 0:a1ce6cdc3045 3482 ParkingMeter.LedMantenimiento(1);
williequesada 0:a1ce6cdc3045 3483 Screen.On();
williequesada 0:a1ce6cdc3045 3484 Screen.Init();
williequesada 0:a1ce6cdc3045 3485 BaseClock.start();
williequesada 0:a1ce6cdc3045 3486 M_PantallaConfiguracion();
williequesada 0:a1ce6cdc3045 3487 bool ClaveAceptada=M_ClaveIngreso(5000);
williequesada 0:a1ce6cdc3045 3488 while(ClaveAceptada) {
williequesada 0:a1ce6cdc3045 3489 Comando=M_MenuConfiguracion(30000);
williequesada 0:a1ce6cdc3045 3490 switch(Comando) {
williequesada 0:a1ce6cdc3045 3491 case M_SISTEMA:
williequesada 0:a1ce6cdc3045 3492 Computer.printf("--> Sistema\n");
williequesada 0:a1ce6cdc3045 3493 Comando=M_MenuSistema(30000);
williequesada 0:a1ce6cdc3045 3494 if(Comando==M_PARQUIMETRO) {
williequesada 0:a1ce6cdc3045 3495 Computer.printf("--> Id parquimetro\n");
williequesada 0:a1ce6cdc3045 3496 M_Parquimetro(30000);
williequesada 0:a1ce6cdc3045 3497 }
williequesada 0:a1ce6cdc3045 3498 if(Comando==M_MUNICIPIO) {
williequesada 0:a1ce6cdc3045 3499 Computer.printf("--> Id municipalidad\n");
williequesada 0:a1ce6cdc3045 3500 M_Municipio(30000);
williequesada 0:a1ce6cdc3045 3501 }
williequesada 0:a1ce6cdc3045 3502 if(Comando==M_PRECIO) {
williequesada 0:a1ce6cdc3045 3503 Computer.printf("--> Precio 10mins\n");
williequesada 0:a1ce6cdc3045 3504 M_Precio(30000);
williequesada 0:a1ce6cdc3045 3505 }
williequesada 0:a1ce6cdc3045 3506 break;
williequesada 0:a1ce6cdc3045 3507
williequesada 0:a1ce6cdc3045 3508 case M_RED:
williequesada 0:a1ce6cdc3045 3509 Computer.printf("--> Red\n");
williequesada 0:a1ce6cdc3045 3510 Comando=M_MenuConexion(30000);
williequesada 0:a1ce6cdc3045 3511 if(Comando==M_SENAL) {
williequesada 0:a1ce6cdc3045 3512 Computer.printf("--> Intensidad senal\n");
williequesada 0:a1ce6cdc3045 3513 M_IntensidadSenal();
williequesada 0:a1ce6cdc3045 3514 }
williequesada 0:a1ce6cdc3045 3515 if(Comando==M_HOSTING) {
williequesada 0:a1ce6cdc3045 3516 Computer.printf("--> Prueba hosting\n");
williequesada 0:a1ce6cdc3045 3517 M_PruebaHosting();
williequesada 0:a1ce6cdc3045 3518 }
williequesada 0:a1ce6cdc3045 3519 if(Comando==M_CONEXION_SIM) {
williequesada 0:a1ce6cdc3045 3520 Computer.printf("--> Conexion modulo\n");
williequesada 0:a1ce6cdc3045 3521 M_ConexionSim900();
williequesada 0:a1ce6cdc3045 3522 }
williequesada 0:a1ce6cdc3045 3523 break;
williequesada 0:a1ce6cdc3045 3524
williequesada 0:a1ce6cdc3045 3525 case M_IMPRESORA:
williequesada 0:a1ce6cdc3045 3526 Computer.printf("--> Impresora\n");
williequesada 0:a1ce6cdc3045 3527 Comando=M_MenuImpresora(30000);
williequesada 0:a1ce6cdc3045 3528 if(Comando==M_PAPEL) {
williequesada 0:a1ce6cdc3045 3529 Computer.printf("--> Cambio de papel\n");
williequesada 0:a1ce6cdc3045 3530 M_CambioPapel(30000);
williequesada 0:a1ce6cdc3045 3531 }
williequesada 0:a1ce6cdc3045 3532 if(Comando==M_IMPRESION) {
williequesada 0:a1ce6cdc3045 3533 Computer.printf("--> Tiquete de prueba\n");
williequesada 0:a1ce6cdc3045 3534 M_PruebaTiquete();
williequesada 0:a1ce6cdc3045 3535 }
williequesada 0:a1ce6cdc3045 3536 if(Comando==M_CONEXION_IMP) {
williequesada 0:a1ce6cdc3045 3537 Computer.printf("--> Conexion impresora\n");
williequesada 0:a1ce6cdc3045 3538 M_ConexionImpresora();
williequesada 0:a1ce6cdc3045 3539 }
williequesada 0:a1ce6cdc3045 3540 break;
williequesada 0:a1ce6cdc3045 3541
williequesada 0:a1ce6cdc3045 3542 case M_TECLADO:
williequesada 0:a1ce6cdc3045 3543 Computer.printf("--> Teclado\n");
williequesada 0:a1ce6cdc3045 3544 Comando=M_MenuTeclado(30000);
williequesada 0:a1ce6cdc3045 3545 if(Comando==M_PRUEBA_TECLA) {
williequesada 0:a1ce6cdc3045 3546 Computer.printf("--> Prueba de teclado\n");
williequesada 0:a1ce6cdc3045 3547 M_PruebaTeclado(2000);
williequesada 0:a1ce6cdc3045 3548 }
williequesada 0:a1ce6cdc3045 3549 break;
williequesada 0:a1ce6cdc3045 3550
williequesada 0:a1ce6cdc3045 3551 case M_LECTORA:
williequesada 0:a1ce6cdc3045 3552 Computer.printf("--> Lectora\n");
williequesada 0:a1ce6cdc3045 3553 Comando=M_MenuLectora(30000);
williequesada 0:a1ce6cdc3045 3554 if(Comando==M_LECTURA) {
williequesada 0:a1ce6cdc3045 3555 Computer.printf("--> Prueba de lectura\n");
williequesada 0:a1ce6cdc3045 3556 M_PruebaLectora();
williequesada 0:a1ce6cdc3045 3557 }
williequesada 0:a1ce6cdc3045 3558 if(Comando==M_CONEXION_LEC) {
williequesada 0:a1ce6cdc3045 3559 Computer.printf("--> Conexion lectora\n");
williequesada 0:a1ce6cdc3045 3560 M_ConexionLectora();
williequesada 0:a1ce6cdc3045 3561 }
williequesada 0:a1ce6cdc3045 3562 break;
williequesada 0:a1ce6cdc3045 3563
williequesada 0:a1ce6cdc3045 3564 case M_INFORMACION:
williequesada 0:a1ce6cdc3045 3565 Comando=M_MenuInformacion();
williequesada 0:a1ce6cdc3045 3566 if(Comando==M_INFORMACION) {
williequesada 0:a1ce6cdc3045 3567 Computer.printf("--> Informacion\n");
williequesada 0:a1ce6cdc3045 3568 M_Informacion();
williequesada 0:a1ce6cdc3045 3569 }
williequesada 0:a1ce6cdc3045 3570 break;
williequesada 0:a1ce6cdc3045 3571
williequesada 0:a1ce6cdc3045 3572 default:
williequesada 0:a1ce6cdc3045 3573 Comando=M_OFF;
williequesada 0:a1ce6cdc3045 3574 }
williequesada 0:a1ce6cdc3045 3575
williequesada 0:a1ce6cdc3045 3576 if(Comando==M_OFF) {
williequesada 0:a1ce6cdc3045 3577 Computer.printf("Cerrando modo configuracion\n");
williequesada 0:a1ce6cdc3045 3578 break;
williequesada 0:a1ce6cdc3045 3579 }
williequesada 0:a1ce6cdc3045 3580 }
williequesada 0:a1ce6cdc3045 3581 MantenimientoInterruption=0;
williequesada 0:a1ce6cdc3045 3582 ParkingMeter.LedMantenimiento(0);
williequesada 0:a1ce6cdc3045 3583 ParkingMeter.Max232(0);
williequesada 0:a1ce6cdc3045 3584 Impresora.PowerMax(0);
williequesada 0:a1ce6cdc3045 3585 BaseClock.stop();
williequesada 0:a1ce6cdc3045 3586 Screen.Clean();
williequesada 0:a1ce6cdc3045 3587 Screen.Off();
williequesada 0:a1ce6cdc3045 3588 }
williequesada 0:a1ce6cdc3045 3589
williequesada 0:a1ce6cdc3045 3590 void InitSistema(){
williequesada 0:a1ce6cdc3045 3591 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3592 wait_ms(50);
williequesada 0:a1ce6cdc3045 3593 Screen.On();
williequesada 0:a1ce6cdc3045 3594 Screen.Init();
williequesada 0:a1ce6cdc3045 3595 Screen.Clean();
williequesada 0:a1ce6cdc3045 3596 Keypad_C1.rise(&KeyPad_InterruptDisable);
williequesada 0:a1ce6cdc3045 3597 Keypad_C2.rise(&KeyPad_InterruptDisable);
williequesada 0:a1ce6cdc3045 3598 Keypad_C3.rise(&KeyPad_InterruptDisable);
williequesada 0:a1ce6cdc3045 3599 Keypad_C4.rise(&KeyPad_InterruptDisable);
williequesada 0:a1ce6cdc3045 3600 Configuracion.rise(&Interrupt_Mantenimiento);
williequesada 0:a1ce6cdc3045 3601 CardReader.attach(&Interrupt_CardReader);
williequesada 0:a1ce6cdc3045 3602 Host.attach(&Interrupt_Host,5);//1800 30 minutos
williequesada 0:a1ce6cdc3045 3603 Computer.printf("Prototipo Completo 4\n");
williequesada 0:a1ce6cdc3045 3604 Screen.Off();
williequesada 0:a1ce6cdc3045 3605 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3606 }
williequesada 0:a1ce6cdc3045 3607
williequesada 0:a1ce6cdc3045 3608 int main()
williequesada 0:a1ce6cdc3045 3609 {
williequesada 0:a1ce6cdc3045 3610 InitSistema();
williequesada 0:a1ce6cdc3045 3611 while(1) {
williequesada 0:a1ce6cdc3045 3612 KeyPad_InterruptEnable();
williequesada 0:a1ce6cdc3045 3613 Doors.InterruptEnable();
williequesada 0:a1ce6cdc3045 3614
williequesada 0:a1ce6cdc3045 3615 hal_sleep();
williequesada 0:a1ce6cdc3045 3616
williequesada 0:a1ce6cdc3045 3617 if(KeyPad_Read() != NO_KEY) {
williequesada 0:a1ce6cdc3045 3618 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3619 wait_ms(50);
williequesada 0:a1ce6cdc3045 3620 ParkingMeter.LedUsuario(1);
williequesada 0:a1ce6cdc3045 3621 Usuario(USER_INIT);
williequesada 0:a1ce6cdc3045 3622 EsperarSim900(5000);
williequesada 0:a1ce6cdc3045 3623 Host.attach(&Interrupt_Host,5);
williequesada 0:a1ce6cdc3045 3624 ParkingMeter.LedUsuario(0);
williequesada 0:a1ce6cdc3045 3625 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3626 }
williequesada 0:a1ce6cdc3045 3627 if(MantenimientoInterruption) {
williequesada 0:a1ce6cdc3045 3628 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3629 wait_ms(50);
williequesada 0:a1ce6cdc3045 3630 Mantenimiento();
williequesada 0:a1ce6cdc3045 3631 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3632 }
williequesada 0:a1ce6cdc3045 3633 if(ParkingMeter.AlarmState()) {
williequesada 0:a1ce6cdc3045 3634 Regulator5V=1;
williequesada 0:a1ce6cdc3045 3635 wait_ms(50);
williequesada 0:a1ce6cdc3045 3636 Hosting();
williequesada 0:a1ce6cdc3045 3637 Regulator5V=0;
williequesada 0:a1ce6cdc3045 3638 }
williequesada 0:a1ce6cdc3045 3639 }
williequesada 0:a1ce6cdc3045 3640 }