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