ThermalPrinter
ThermalPrinter.cpp@0:c6a99e05245f, 2019-06-04 (annotated)
- Committer:
- williequesada
- Date:
- Tue Jun 04 17:00:38 2019 +0000
- Revision:
- 0:c6a99e05245f
pablo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
williequesada | 0:c6a99e05245f | 1 | #include "ThermalPrinter.h" |
williequesada | 0:c6a99e05245f | 2 | #include "mbed.h" |
williequesada | 0:c6a99e05245f | 3 | #include "stdio.h" |
williequesada | 0:c6a99e05245f | 4 | |
williequesada | 0:c6a99e05245f | 5 | const char HORIZONTAL_TAB=9; |
williequesada | 0:c6a99e05245f | 6 | const char NEXT_POSITION=10; |
williequesada | 0:c6a99e05245f | 7 | const char ESC=27; |
williequesada | 0:c6a99e05245f | 8 | const char SPECIAL_CHARACTER=82; |
williequesada | 0:c6a99e05245f | 9 | const char SPANISH=11; |
williequesada | 0:c6a99e05245f | 10 | const char U_TILDE=126; |
williequesada | 0:c6a99e05245f | 11 | const char A_TILDE=64; |
williequesada | 0:c6a99e05245f | 12 | const char INICIAR=64; |
williequesada | 0:c6a99e05245f | 13 | const char TAMANO=33; |
williequesada | 0:c6a99e05245f | 14 | const char LETRA_12X24_DOBLE=49; |
williequesada | 0:c6a99e05245f | 15 | const char LETRA_16X16_DOBLE=34; |
williequesada | 0:c6a99e05245f | 16 | const char XON=17;//0x11 |
williequesada | 0:c6a99e05245f | 17 | const char XOFF=19;//0x13 |
williequesada | 0:c6a99e05245f | 18 | const char POWER_DOWN=18; |
williequesada | 0:c6a99e05245f | 19 | const char GS=29; |
williequesada | 0:c6a99e05245f | 20 | const char CUTTING=86; |
williequesada | 0:c6a99e05245f | 21 | const char PARTIAL=49; |
williequesada | 0:c6a99e05245f | 22 | const char FULL=48; |
williequesada | 0:c6a99e05245f | 23 | |
williequesada | 0:c6a99e05245f | 24 | char ThermalPrinter_Buffer[255]; |
williequesada | 0:c6a99e05245f | 25 | int ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 26 | int Tiquete=0; |
williequesada | 0:c6a99e05245f | 27 | |
williequesada | 0:c6a99e05245f | 28 | PRINTER::PRINTER(PinName TX, PinName RX,PinName PAPER, PinName SELECT,PinName RESET,PinName POWER) : ThermalPrinter(TX,RX),_PAPER(PAPER),_SELECT(SELECT),_RESET(RESET),_POWER(POWER) |
williequesada | 0:c6a99e05245f | 29 | { |
williequesada | 0:c6a99e05245f | 30 | _PAPER=0; // AFT |
williequesada | 0:c6a99e05245f | 31 | _SELECT=0; // SLCTIN |
williequesada | 0:c6a99e05245f | 32 | _RESET=0; // INPRM |
williequesada | 0:c6a99e05245f | 33 | _POWER=0; // RELE |
williequesada | 0:c6a99e05245f | 34 | ThermalPrinter.attach(this,&PRINTER::ThermalPrinterInterruption); |
williequesada | 0:c6a99e05245f | 35 | } |
williequesada | 0:c6a99e05245f | 36 | |
williequesada | 0:c6a99e05245f | 37 | |
williequesada | 0:c6a99e05245f | 38 | void PRINTER::ThermalPrinterInterruption() |
williequesada | 0:c6a99e05245f | 39 | { |
williequesada | 0:c6a99e05245f | 40 | if(ThermalPrinter.readable()) { |
williequesada | 0:c6a99e05245f | 41 | ThermalPrinter_Buffer[ThermalPrinter_Counter]=ThermalPrinter.getc(); |
williequesada | 0:c6a99e05245f | 42 | ThermalPrinter_Counter++; |
williequesada | 0:c6a99e05245f | 43 | } |
williequesada | 0:c6a99e05245f | 44 | } |
williequesada | 0:c6a99e05245f | 45 | |
williequesada | 0:c6a99e05245f | 46 | uint8_t PRINTER::Reset() |
williequesada | 0:c6a99e05245f | 47 | { |
williequesada | 0:c6a99e05245f | 48 | ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 49 | _RESET = 1; |
williequesada | 0:c6a99e05245f | 50 | wait_ms(500); |
williequesada | 0:c6a99e05245f | 51 | _RESET = 0; |
williequesada | 0:c6a99e05245f | 52 | int Error=2; |
williequesada | 0:c6a99e05245f | 53 | wait_ms(1300); |
williequesada | 0:c6a99e05245f | 54 | int Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 55 | |
williequesada | 0:c6a99e05245f | 56 | while(Counter>0){ |
williequesada | 0:c6a99e05245f | 57 | Counter--; |
williequesada | 0:c6a99e05245f | 58 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 59 | Error=1; |
williequesada | 0:c6a99e05245f | 60 | } |
williequesada | 0:c6a99e05245f | 61 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 62 | Error=0; |
williequesada | 0:c6a99e05245f | 63 | break; |
williequesada | 0:c6a99e05245f | 64 | } |
williequesada | 0:c6a99e05245f | 65 | } |
williequesada | 0:c6a99e05245f | 66 | return Error; |
williequesada | 0:c6a99e05245f | 67 | } |
williequesada | 0:c6a99e05245f | 68 | |
williequesada | 0:c6a99e05245f | 69 | uint8_t PRINTER::Output(char Date[],char Hour_Start[],char Hour_Finish[],char Place[],char Time[],char Ticket[],char Money[]) |
williequesada | 0:c6a99e05245f | 70 | { |
williequesada | 0:c6a99e05245f | 71 | ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 72 | int Counter; |
williequesada | 0:c6a99e05245f | 73 | bool Error=1; |
williequesada | 0:c6a99e05245f | 74 | |
williequesada | 0:c6a99e05245f | 75 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 76 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 77 | ThermalPrinter.putc(INICIAR); |
williequesada | 0:c6a99e05245f | 78 | wait_ms(15); |
williequesada | 0:c6a99e05245f | 79 | } |
williequesada | 0:c6a99e05245f | 80 | |
williequesada | 0:c6a99e05245f | 81 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 82 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 83 | Counter--; |
williequesada | 0:c6a99e05245f | 84 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 85 | Error=1; |
williequesada | 0:c6a99e05245f | 86 | } |
williequesada | 0:c6a99e05245f | 87 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 88 | Error=0; |
williequesada | 0:c6a99e05245f | 89 | return Error; |
williequesada | 0:c6a99e05245f | 90 | } |
williequesada | 0:c6a99e05245f | 91 | } |
williequesada | 0:c6a99e05245f | 92 | |
williequesada | 0:c6a99e05245f | 93 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 94 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 95 | ThermalPrinter.putc(TAMANO); |
williequesada | 0:c6a99e05245f | 96 | ThermalPrinter.putc(LETRA_12X24_DOBLE); |
williequesada | 0:c6a99e05245f | 97 | ThermalPrinter.printf(" Municipalidad"); |
williequesada | 0:c6a99e05245f | 98 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 99 | } |
williequesada | 0:c6a99e05245f | 100 | |
williequesada | 0:c6a99e05245f | 101 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 102 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 103 | Counter--; |
williequesada | 0:c6a99e05245f | 104 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 105 | Error=1; |
williequesada | 0:c6a99e05245f | 106 | } |
williequesada | 0:c6a99e05245f | 107 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 108 | Error=0; |
williequesada | 0:c6a99e05245f | 109 | return Error; |
williequesada | 0:c6a99e05245f | 110 | } |
williequesada | 0:c6a99e05245f | 111 | } |
williequesada | 0:c6a99e05245f | 112 | |
williequesada | 0:c6a99e05245f | 113 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 114 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 115 | ThermalPrinter.printf(" de Santa Ana"); |
williequesada | 0:c6a99e05245f | 116 | wait_ms(400); |
williequesada | 0:c6a99e05245f | 117 | } |
williequesada | 0:c6a99e05245f | 118 | |
williequesada | 0:c6a99e05245f | 119 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 120 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 121 | Counter--; |
williequesada | 0:c6a99e05245f | 122 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 123 | Error=1; |
williequesada | 0:c6a99e05245f | 124 | } |
williequesada | 0:c6a99e05245f | 125 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 126 | Error=0; |
williequesada | 0:c6a99e05245f | 127 | return Error; |
williequesada | 0:c6a99e05245f | 128 | } |
williequesada | 0:c6a99e05245f | 129 | } |
williequesada | 0:c6a99e05245f | 130 | |
williequesada | 0:c6a99e05245f | 131 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 132 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 133 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 134 | ThermalPrinter.printf("Setex Costa Rica"); |
williequesada | 0:c6a99e05245f | 135 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 136 | } |
williequesada | 0:c6a99e05245f | 137 | |
williequesada | 0:c6a99e05245f | 138 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 139 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 140 | Counter--; |
williequesada | 0:c6a99e05245f | 141 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 142 | Error=1; |
williequesada | 0:c6a99e05245f | 143 | } |
williequesada | 0:c6a99e05245f | 144 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 145 | Error=0; |
williequesada | 0:c6a99e05245f | 146 | return Error; |
williequesada | 0:c6a99e05245f | 147 | } |
williequesada | 0:c6a99e05245f | 148 | } |
williequesada | 0:c6a99e05245f | 149 | |
williequesada | 0:c6a99e05245f | 150 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 151 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 152 | ThermalPrinter.printf("- - - - - - - -"); |
williequesada | 0:c6a99e05245f | 153 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 154 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 155 | } |
williequesada | 0:c6a99e05245f | 156 | |
williequesada | 0:c6a99e05245f | 157 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 158 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 159 | Counter--; |
williequesada | 0:c6a99e05245f | 160 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 161 | Error=1; |
williequesada | 0:c6a99e05245f | 162 | } |
williequesada | 0:c6a99e05245f | 163 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 164 | Error=0; |
williequesada | 0:c6a99e05245f | 165 | return Error; |
williequesada | 0:c6a99e05245f | 166 | } |
williequesada | 0:c6a99e05245f | 167 | } |
williequesada | 0:c6a99e05245f | 168 | |
williequesada | 0:c6a99e05245f | 169 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 170 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 171 | ThermalPrinter.putc(TAMANO); |
williequesada | 0:c6a99e05245f | 172 | ThermalPrinter.putc(LETRA_16X16_DOBLE); |
williequesada | 0:c6a99e05245f | 173 | ThermalPrinter.printf("Fin de estacionamiento:"); |
williequesada | 0:c6a99e05245f | 174 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 175 | wait_ms(100); |
williequesada | 0:c6a99e05245f | 176 | ThermalPrinter.putc(HORIZONTAL_TAB); |
williequesada | 0:c6a99e05245f | 177 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 178 | ThermalPrinter.putc(TAMANO); |
williequesada | 0:c6a99e05245f | 179 | ThermalPrinter.putc(LETRA_12X24_DOBLE); |
williequesada | 0:c6a99e05245f | 180 | ThermalPrinter.printf(" %s",Hour_Finish); |
williequesada | 0:c6a99e05245f | 181 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 182 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 183 | } |
williequesada | 0:c6a99e05245f | 184 | |
williequesada | 0:c6a99e05245f | 185 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 186 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 187 | Counter--; |
williequesada | 0:c6a99e05245f | 188 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 189 | Error=1; |
williequesada | 0:c6a99e05245f | 190 | } |
williequesada | 0:c6a99e05245f | 191 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 192 | Error=0; |
williequesada | 0:c6a99e05245f | 193 | return Error; |
williequesada | 0:c6a99e05245f | 194 | } |
williequesada | 0:c6a99e05245f | 195 | } |
williequesada | 0:c6a99e05245f | 196 | |
williequesada | 0:c6a99e05245f | 197 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 198 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 199 | ThermalPrinter.putc(TAMANO); |
williequesada | 0:c6a99e05245f | 200 | ThermalPrinter.putc(LETRA_16X16_DOBLE); |
williequesada | 0:c6a99e05245f | 201 | |
williequesada | 0:c6a99e05245f | 202 | ThermalPrinter.printf("N"); |
williequesada | 0:c6a99e05245f | 203 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 204 | ThermalPrinter.putc(SPECIAL_CHARACTER); |
williequesada | 0:c6a99e05245f | 205 | ThermalPrinter.putc(SPANISH); |
williequesada | 0:c6a99e05245f | 206 | ThermalPrinter.putc(U_TILDE); |
williequesada | 0:c6a99e05245f | 207 | ThermalPrinter.printf("mero ticket:"); |
williequesada | 0:c6a99e05245f | 208 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 209 | wait_ms(50); |
williequesada | 0:c6a99e05245f | 210 | } |
williequesada | 0:c6a99e05245f | 211 | |
williequesada | 0:c6a99e05245f | 212 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 213 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 214 | Counter--; |
williequesada | 0:c6a99e05245f | 215 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 216 | Error=1; |
williequesada | 0:c6a99e05245f | 217 | } |
williequesada | 0:c6a99e05245f | 218 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 219 | Error=0; |
williequesada | 0:c6a99e05245f | 220 | return Error; |
williequesada | 0:c6a99e05245f | 221 | } |
williequesada | 0:c6a99e05245f | 222 | } |
williequesada | 0:c6a99e05245f | 223 | |
williequesada | 0:c6a99e05245f | 224 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 225 | ThermalPrinter.printf(" "); |
williequesada | 0:c6a99e05245f | 226 | ThermalPrinter.printf("%s",Ticket); |
williequesada | 0:c6a99e05245f | 227 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 228 | Tiquete=Tiquete+1; |
williequesada | 0:c6a99e05245f | 229 | wait_ms(150); |
williequesada | 0:c6a99e05245f | 230 | } |
williequesada | 0:c6a99e05245f | 231 | |
williequesada | 0:c6a99e05245f | 232 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 233 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 234 | Counter--; |
williequesada | 0:c6a99e05245f | 235 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 236 | Error=1; |
williequesada | 0:c6a99e05245f | 237 | } |
williequesada | 0:c6a99e05245f | 238 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 239 | Error=0; |
williequesada | 0:c6a99e05245f | 240 | return Error; |
williequesada | 0:c6a99e05245f | 241 | } |
williequesada | 0:c6a99e05245f | 242 | } |
williequesada | 0:c6a99e05245f | 243 | |
williequesada | 0:c6a99e05245f | 244 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 245 | ThermalPrinter.printf("Espacio:"); |
williequesada | 0:c6a99e05245f | 246 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 247 | wait_ms(50); |
williequesada | 0:c6a99e05245f | 248 | } |
williequesada | 0:c6a99e05245f | 249 | |
williequesada | 0:c6a99e05245f | 250 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 251 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 252 | Counter--; |
williequesada | 0:c6a99e05245f | 253 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 254 | Error=1; |
williequesada | 0:c6a99e05245f | 255 | } |
williequesada | 0:c6a99e05245f | 256 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 257 | Error=0; |
williequesada | 0:c6a99e05245f | 258 | return Error; |
williequesada | 0:c6a99e05245f | 259 | } |
williequesada | 0:c6a99e05245f | 260 | } |
williequesada | 0:c6a99e05245f | 261 | |
williequesada | 0:c6a99e05245f | 262 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 263 | ThermalPrinter.printf(" %s",Place); |
williequesada | 0:c6a99e05245f | 264 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 265 | wait_ms(150); |
williequesada | 0:c6a99e05245f | 266 | } |
williequesada | 0:c6a99e05245f | 267 | |
williequesada | 0:c6a99e05245f | 268 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 269 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 270 | Counter--; |
williequesada | 0:c6a99e05245f | 271 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 272 | Error=1; |
williequesada | 0:c6a99e05245f | 273 | } |
williequesada | 0:c6a99e05245f | 274 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 275 | Error=0; |
williequesada | 0:c6a99e05245f | 276 | return Error; |
williequesada | 0:c6a99e05245f | 277 | } |
williequesada | 0:c6a99e05245f | 278 | } |
williequesada | 0:c6a99e05245f | 279 | |
williequesada | 0:c6a99e05245f | 280 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 281 | ThermalPrinter.printf("Importe:"); |
williequesada | 0:c6a99e05245f | 282 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 283 | ThermalPrinter.printf(" %s",Money); |
williequesada | 0:c6a99e05245f | 284 | ThermalPrinter.printf(" CRC"); |
williequesada | 0:c6a99e05245f | 285 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 286 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 287 | } |
williequesada | 0:c6a99e05245f | 288 | |
williequesada | 0:c6a99e05245f | 289 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 290 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 291 | Counter--; |
williequesada | 0:c6a99e05245f | 292 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 293 | Error=1; |
williequesada | 0:c6a99e05245f | 294 | } |
williequesada | 0:c6a99e05245f | 295 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 296 | Error=0; |
williequesada | 0:c6a99e05245f | 297 | return Error; |
williequesada | 0:c6a99e05245f | 298 | } |
williequesada | 0:c6a99e05245f | 299 | } |
williequesada | 0:c6a99e05245f | 300 | |
williequesada | 0:c6a99e05245f | 301 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 302 | ThermalPrinter.printf("Tiempo pagado:"); |
williequesada | 0:c6a99e05245f | 303 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 304 | ThermalPrinter.printf(" %s",Time); |
williequesada | 0:c6a99e05245f | 305 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 306 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 307 | } |
williequesada | 0:c6a99e05245f | 308 | |
williequesada | 0:c6a99e05245f | 309 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 310 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 311 | Counter--; |
williequesada | 0:c6a99e05245f | 312 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 313 | Error=1; |
williequesada | 0:c6a99e05245f | 314 | } |
williequesada | 0:c6a99e05245f | 315 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 316 | Error=0; |
williequesada | 0:c6a99e05245f | 317 | return Error; |
williequesada | 0:c6a99e05245f | 318 | } |
williequesada | 0:c6a99e05245f | 319 | } |
williequesada | 0:c6a99e05245f | 320 | |
williequesada | 0:c6a99e05245f | 321 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 322 | ThermalPrinter.printf("Hora y fecha de pago:"); |
williequesada | 0:c6a99e05245f | 323 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 324 | } |
williequesada | 0:c6a99e05245f | 325 | |
williequesada | 0:c6a99e05245f | 326 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 327 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 328 | Counter--; |
williequesada | 0:c6a99e05245f | 329 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 330 | Error=1; |
williequesada | 0:c6a99e05245f | 331 | } |
williequesada | 0:c6a99e05245f | 332 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 333 | Error=0; |
williequesada | 0:c6a99e05245f | 334 | return Error; |
williequesada | 0:c6a99e05245f | 335 | } |
williequesada | 0:c6a99e05245f | 336 | } |
williequesada | 0:c6a99e05245f | 337 | |
williequesada | 0:c6a99e05245f | 338 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 339 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 340 | ThermalPrinter.printf(" %s",Hour_Start); |
williequesada | 0:c6a99e05245f | 341 | ThermalPrinter.putc(HORIZONTAL_TAB); |
williequesada | 0:c6a99e05245f | 342 | ThermalPrinter.printf("%s",Date); |
williequesada | 0:c6a99e05245f | 343 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 344 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 345 | } |
williequesada | 0:c6a99e05245f | 346 | |
williequesada | 0:c6a99e05245f | 347 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 348 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 349 | Counter--; |
williequesada | 0:c6a99e05245f | 350 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 351 | Error=1; |
williequesada | 0:c6a99e05245f | 352 | } |
williequesada | 0:c6a99e05245f | 353 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 354 | Error=0; |
williequesada | 0:c6a99e05245f | 355 | return Error; |
williequesada | 0:c6a99e05245f | 356 | } |
williequesada | 0:c6a99e05245f | 357 | } |
williequesada | 0:c6a99e05245f | 358 | |
williequesada | 0:c6a99e05245f | 359 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 360 | ThermalPrinter.putc(ESC); |
williequesada | 0:c6a99e05245f | 361 | ThermalPrinter.putc(TAMANO); |
williequesada | 0:c6a99e05245f | 362 | ThermalPrinter.putc(LETRA_12X24_DOBLE); |
williequesada | 0:c6a99e05245f | 363 | ThermalPrinter.printf("- - - - - - - -"); |
williequesada | 0:c6a99e05245f | 364 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 365 | ThermalPrinter.printf("Pague su parqueo"); |
williequesada | 0:c6a99e05245f | 366 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 367 | ThermalPrinter.printf(" con el APP"); |
williequesada | 0:c6a99e05245f | 368 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 369 | wait_ms(250); |
williequesada | 0:c6a99e05245f | 370 | } |
williequesada | 0:c6a99e05245f | 371 | |
williequesada | 0:c6a99e05245f | 372 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 373 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 374 | Counter--; |
williequesada | 0:c6a99e05245f | 375 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 376 | Error=1; |
williequesada | 0:c6a99e05245f | 377 | } |
williequesada | 0:c6a99e05245f | 378 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 379 | Error=0; |
williequesada | 0:c6a99e05245f | 380 | return Error; |
williequesada | 0:c6a99e05245f | 381 | } |
williequesada | 0:c6a99e05245f | 382 | } |
williequesada | 0:c6a99e05245f | 383 | |
williequesada | 0:c6a99e05245f | 384 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 385 | ThermalPrinter.printf(" epark CR"); |
williequesada | 0:c6a99e05245f | 386 | ThermalPrinter.putc(NEXT_POSITION); |
williequesada | 0:c6a99e05245f | 387 | wait_ms(200); |
williequesada | 0:c6a99e05245f | 388 | } |
williequesada | 0:c6a99e05245f | 389 | |
williequesada | 0:c6a99e05245f | 390 | Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 391 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 392 | Counter--; |
williequesada | 0:c6a99e05245f | 393 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 394 | Error=1; |
williequesada | 0:c6a99e05245f | 395 | } |
williequesada | 0:c6a99e05245f | 396 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 397 | Error=0; |
williequesada | 0:c6a99e05245f | 398 | return Error; |
williequesada | 0:c6a99e05245f | 399 | } |
williequesada | 0:c6a99e05245f | 400 | } |
williequesada | 0:c6a99e05245f | 401 | |
williequesada | 0:c6a99e05245f | 402 | |
williequesada | 0:c6a99e05245f | 403 | return Error; |
williequesada | 0:c6a99e05245f | 404 | } |
williequesada | 0:c6a99e05245f | 405 | |
williequesada | 0:c6a99e05245f | 406 | uint8_t PRINTER::Cutter(bool Type) |
williequesada | 0:c6a99e05245f | 407 | { |
williequesada | 0:c6a99e05245f | 408 | ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 409 | |
williequesada | 0:c6a99e05245f | 410 | if(Type==1) { |
williequesada | 0:c6a99e05245f | 411 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 412 | ThermalPrinter.putc(GS); |
williequesada | 0:c6a99e05245f | 413 | ThermalPrinter.putc(CUTTING); |
williequesada | 0:c6a99e05245f | 414 | ThermalPrinter.putc(FULL); |
williequesada | 0:c6a99e05245f | 415 | wait_ms(2000); |
williequesada | 0:c6a99e05245f | 416 | } |
williequesada | 0:c6a99e05245f | 417 | } |
williequesada | 0:c6a99e05245f | 418 | if(Type==0) { |
williequesada | 0:c6a99e05245f | 419 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 420 | ThermalPrinter.putc(GS); |
williequesada | 0:c6a99e05245f | 421 | ThermalPrinter.putc(CUTTING); |
williequesada | 0:c6a99e05245f | 422 | ThermalPrinter.putc(PARTIAL); |
williequesada | 0:c6a99e05245f | 423 | wait_ms(2000); |
williequesada | 0:c6a99e05245f | 424 | } |
williequesada | 0:c6a99e05245f | 425 | } |
williequesada | 0:c6a99e05245f | 426 | |
williequesada | 0:c6a99e05245f | 427 | int Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 428 | bool Error=1; |
williequesada | 0:c6a99e05245f | 429 | |
williequesada | 0:c6a99e05245f | 430 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 431 | Counter--; |
williequesada | 0:c6a99e05245f | 432 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 433 | Error=1; |
williequesada | 0:c6a99e05245f | 434 | } |
williequesada | 0:c6a99e05245f | 435 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 436 | Error=0; |
williequesada | 0:c6a99e05245f | 437 | } |
williequesada | 0:c6a99e05245f | 438 | } |
williequesada | 0:c6a99e05245f | 439 | return Error; |
williequesada | 0:c6a99e05245f | 440 | }; |
williequesada | 0:c6a99e05245f | 441 | |
williequesada | 0:c6a99e05245f | 442 | uint8_t PRINTER::Power(bool Turn) |
williequesada | 0:c6a99e05245f | 443 | { |
williequesada | 0:c6a99e05245f | 444 | ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 445 | if (Turn==1) { |
williequesada | 0:c6a99e05245f | 446 | _POWER=1; |
williequesada | 0:c6a99e05245f | 447 | } else { |
williequesada | 0:c6a99e05245f | 448 | _POWER=0; |
williequesada | 0:c6a99e05245f | 449 | } |
williequesada | 0:c6a99e05245f | 450 | wait_ms(1500); |
williequesada | 0:c6a99e05245f | 451 | |
williequesada | 0:c6a99e05245f | 452 | bool Error=1; |
williequesada | 0:c6a99e05245f | 453 | int Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 454 | |
williequesada | 0:c6a99e05245f | 455 | while(Counter>0){ |
williequesada | 0:c6a99e05245f | 456 | Counter--; |
williequesada | 0:c6a99e05245f | 457 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 458 | Error=1; |
williequesada | 0:c6a99e05245f | 459 | } |
williequesada | 0:c6a99e05245f | 460 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 461 | Error=0; |
williequesada | 0:c6a99e05245f | 462 | break; |
williequesada | 0:c6a99e05245f | 463 | } |
williequesada | 0:c6a99e05245f | 464 | } |
williequesada | 0:c6a99e05245f | 465 | return Error; |
williequesada | 0:c6a99e05245f | 466 | } |
williequesada | 0:c6a99e05245f | 467 | |
williequesada | 0:c6a99e05245f | 468 | uint8_t PRINTER::Paper(uint32_t Duration) |
williequesada | 0:c6a99e05245f | 469 | { |
williequesada | 0:c6a99e05245f | 470 | ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 471 | _PAPER=1; |
williequesada | 0:c6a99e05245f | 472 | wait_ms(Duration); |
williequesada | 0:c6a99e05245f | 473 | _PAPER=0; |
williequesada | 0:c6a99e05245f | 474 | wait_ms(500); |
williequesada | 0:c6a99e05245f | 475 | |
williequesada | 0:c6a99e05245f | 476 | bool Error=1; |
williequesada | 0:c6a99e05245f | 477 | int Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 478 | |
williequesada | 0:c6a99e05245f | 479 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 480 | Counter--; |
williequesada | 0:c6a99e05245f | 481 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 482 | Error=1; |
williequesada | 0:c6a99e05245f | 483 | } |
williequesada | 0:c6a99e05245f | 484 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 485 | Error=0; |
williequesada | 0:c6a99e05245f | 486 | } |
williequesada | 0:c6a99e05245f | 487 | } |
williequesada | 0:c6a99e05245f | 488 | return Error; |
williequesada | 0:c6a99e05245f | 489 | }; |
williequesada | 0:c6a99e05245f | 490 | |
williequesada | 0:c6a99e05245f | 491 | uint8_t PRINTER::End() |
williequesada | 0:c6a99e05245f | 492 | { |
williequesada | 0:c6a99e05245f | 493 | ThermalPrinter_Counter=0; |
williequesada | 0:c6a99e05245f | 494 | if(ThermalPrinter.writeable()) { |
williequesada | 0:c6a99e05245f | 495 | ThermalPrinter.putc(POWER_DOWN); |
williequesada | 0:c6a99e05245f | 496 | } |
williequesada | 0:c6a99e05245f | 497 | |
williequesada | 0:c6a99e05245f | 498 | wait(1); |
williequesada | 0:c6a99e05245f | 499 | bool Error=0; |
williequesada | 0:c6a99e05245f | 500 | int Counter = ThermalPrinter_Counter; |
williequesada | 0:c6a99e05245f | 501 | |
williequesada | 0:c6a99e05245f | 502 | if(Counter>0){ |
williequesada | 0:c6a99e05245f | 503 | Counter--; |
williequesada | 0:c6a99e05245f | 504 | if(ThermalPrinter_Buffer[Counter]==XON) { |
williequesada | 0:c6a99e05245f | 505 | Error=0; |
williequesada | 0:c6a99e05245f | 506 | } |
williequesada | 0:c6a99e05245f | 507 | if(ThermalPrinter_Buffer[Counter]==XOFF) { |
williequesada | 0:c6a99e05245f | 508 | Error=1; |
williequesada | 0:c6a99e05245f | 509 | } |
williequesada | 0:c6a99e05245f | 510 | } |
williequesada | 0:c6a99e05245f | 511 | return Error; |
williequesada | 0:c6a99e05245f | 512 | }; |
williequesada | 0:c6a99e05245f | 513 | |
williequesada | 0:c6a99e05245f | 514 | uint8_t PRINTER::Ticket(bool Instruction) |
williequesada | 0:c6a99e05245f | 515 | { |
williequesada | 0:c6a99e05245f | 516 | if (Instruction==0) { |
williequesada | 0:c6a99e05245f | 517 | Tiquete=0; |
williequesada | 0:c6a99e05245f | 518 | return 0; |
williequesada | 0:c6a99e05245f | 519 | } else { |
williequesada | 0:c6a99e05245f | 520 | return Tiquete; |
williequesada | 0:c6a99e05245f | 521 | } |
williequesada | 0:c6a99e05245f | 522 | }; |
williequesada | 0:c6a99e05245f | 523 | |
williequesada | 0:c6a99e05245f | 524 | char PRINTER::Entrada() |
williequesada | 0:c6a99e05245f | 525 | { |
williequesada | 0:c6a99e05245f | 526 | if(ThermalPrinter_Counter>0){ |
williequesada | 0:c6a99e05245f | 527 | ThermalPrinter_Counter--; |
williequesada | 0:c6a99e05245f | 528 | return ThermalPrinter_Buffer[ThermalPrinter_Counter]; |
williequesada | 0:c6a99e05245f | 529 | } else { |
williequesada | 0:c6a99e05245f | 530 | return 0x00; |
williequesada | 0:c6a99e05245f | 531 | } |
williequesada | 0:c6a99e05245f | 532 | }; |