ThermalPrinter

Committer:
williequesada
Date:
Tue Jun 04 17:00:38 2019 +0000
Revision:
0:c6a99e05245f
pablo

Who changed what in which revision?

UserRevisionLine numberNew 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 };