Depot Pertamina / Printer
Committer:
irsanjul
Date:
Fri Jul 05 10:32:31 2019 +0000
Revision:
0:7f3d28e53383
Child:
1:f257e2e4e026
hhhh;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:7f3d28e53383 1 #include "mbed.h"
irsanjul 0:7f3d28e53383 2 #include "Printer.h"
irsanjul 0:7f3d28e53383 3
irsanjul 0:7f3d28e53383 4 extern Serial dbg;
irsanjul 0:7f3d28e53383 5 const char * const WDAY[] = {"Minggu", "Senin", "Selasa", "Rabu",
irsanjul 0:7f3d28e53383 6 "Kamis", "Jumat", "Sabtu"};
irsanjul 0:7f3d28e53383 7 const char * const MONT[] = {"Januari", "Februari", "Maret", "April",
irsanjul 0:7f3d28e53383 8 "Mei", "Juni", "Juli", "Agustus", "September",
irsanjul 0:7f3d28e53383 9 "Oktober", "November", "Desember"};
irsanjul 0:7f3d28e53383 10
irsanjul 0:7f3d28e53383 11 Printer::Printer(PinName tx_, PinName rx_, int baud_) : Tm(tx_, rx_)
irsanjul 0:7f3d28e53383 12 {
irsanjul 0:7f3d28e53383 13 }
irsanjul 0:7f3d28e53383 14
irsanjul 0:7f3d28e53383 15 Printer::~Printer()
irsanjul 0:7f3d28e53383 16 {
irsanjul 0:7f3d28e53383 17 }
irsanjul 0:7f3d28e53383 18
irsanjul 0:7f3d28e53383 19 void Printer::init(const PrinterFormat &pf)
irsanjul 0:7f3d28e53383 20 {
irsanjul 0:7f3d28e53383 21 Pf = pf;
irsanjul 0:7f3d28e53383 22 Tm.initialize();
irsanjul 0:7f3d28e53383 23 }
irsanjul 0:7f3d28e53383 24
irsanjul 0:7f3d28e53383 25 void Printer::create_header()
irsanjul 0:7f3d28e53383 26 {
irsanjul 0:7f3d28e53383 27 // create header
irsanjul 0:7f3d28e53383 28 Tm.lineFeed();wait_ms(10);
irsanjul 0:7f3d28e53383 29 Tm.printModes(0x28);wait_ms(10);
irsanjul 0:7f3d28e53383 30 Tm.printf("SPBU %s", Pf.spbu.c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 31 Tm.printModes(0x01);wait_ms(10);
irsanjul 0:7f3d28e53383 32 Tm.printf("\n");wait_ms(10);
irsanjul 0:7f3d28e53383 33
irsanjul 0:7f3d28e53383 34 for(int i=0; i<Pf.alamat.size(); i++)
irsanjul 0:7f3d28e53383 35 {
irsanjul 0:7f3d28e53383 36 Tm.printf("%s\n", Pf.alamat[i].c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 37 }
irsanjul 0:7f3d28e53383 38 Tm.printf("Telp. %s\n", Pf.telp.c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 39 }
irsanjul 0:7f3d28e53383 40
irsanjul 0:7f3d28e53383 41 // Private Fuction
irsanjul 0:7f3d28e53383 42 string Printer::get_product(const uint8_t code)
irsanjul 0:7f3d28e53383 43 {
irsanjul 0:7f3d28e53383 44 string ret;
irsanjul 0:7f3d28e53383 45 switch(code)
irsanjul 0:7f3d28e53383 46 {
irsanjul 0:7f3d28e53383 47 case 1: ret = "Premium";break;
irsanjul 0:7f3d28e53383 48 case 2: ret = "Pertalite";break;
irsanjul 0:7f3d28e53383 49 case 3: ret = "Pertamax";break;
irsanjul 0:7f3d28e53383 50 case 4: ret = "Bio Solar";break;
irsanjul 0:7f3d28e53383 51 case 5: ret = "Pertamina Dex";break;
irsanjul 0:7f3d28e53383 52 }
irsanjul 0:7f3d28e53383 53 return ret;
irsanjul 0:7f3d28e53383 54 }
irsanjul 0:7f3d28e53383 55
irsanjul 0:7f3d28e53383 56 void Printer::TestPrint(const std::time_t &now)
irsanjul 0:7f3d28e53383 57 {
irsanjul 0:7f3d28e53383 58 std::tm * ptm = std::localtime(&now);
irsanjul 0:7f3d28e53383 59 char times[64];
irsanjul 0:7f3d28e53383 60 strftime (times,64,"%Y %H:%M:%S",ptm);
irsanjul 0:7f3d28e53383 61
irsanjul 0:7f3d28e53383 62 Tm.printf("%s, %02d %s %s\n", WDAY[ptm->tm_wday], ptm->tm_mday, MONT[ptm->tm_mon], times);
irsanjul 0:7f3d28e53383 63 Tm.printf("__________________________________\n");
irsanjul 0:7f3d28e53383 64 Tm.printf("Nomor Printer: %d\n", Pf.id);
irsanjul 0:7f3d28e53383 65 Tm.printf("Nomor Selang : 2\n");
irsanjul 0:7f3d28e53383 66 Tm.printf("Nomor Nota : 1\n");
irsanjul 0:7f3d28e53383 67 Tm.printf("Jenis BBM : SOLAR\n");
irsanjul 0:7f3d28e53383 68 Tm.printf("Liter : 5.00\n");
irsanjul 0:7f3d28e53383 69 Tm.printf("Harga/Liter : Rp 10.000\n");
irsanjul 0:7f3d28e53383 70 Tm.printModes(0x19);
irsanjul 0:7f3d28e53383 71 Tm.printf("Total : Rp 50.000\n");
irsanjul 0:7f3d28e53383 72 Tm.printModes(0x01);
irsanjul 0:7f3d28e53383 73 Tm.printf("_________________________________\n");
irsanjul 0:7f3d28e53383 74 for(int i=0; i<Pf.footer.size(); i++)
irsanjul 0:7f3d28e53383 75 {
irsanjul 0:7f3d28e53383 76 Tm.printf("%s\r\n", Pf.footer[i].c_str());
irsanjul 0:7f3d28e53383 77 }
irsanjul 0:7f3d28e53383 78 Tm.printf("\n");
irsanjul 0:7f3d28e53383 79 Tm.printf("\n");
irsanjul 0:7f3d28e53383 80 Tm.printf("\n");
irsanjul 0:7f3d28e53383 81 Tm.printf("\n");
irsanjul 0:7f3d28e53383 82 Tm.printf("\n");
irsanjul 0:7f3d28e53383 83
irsanjul 0:7f3d28e53383 84 create_header();
irsanjul 0:7f3d28e53383 85 }
irsanjul 0:7f3d28e53383 86 string intwcurrency(const int &val)
irsanjul 0:7f3d28e53383 87 {
irsanjul 0:7f3d28e53383 88 char str[20];
irsanjul 0:7f3d28e53383 89
irsanjul 0:7f3d28e53383 90 sprintf(str,"%6d", val);
irsanjul 0:7f3d28e53383 91 string input;
irsanjul 0:7f3d28e53383 92 input += str;
irsanjul 0:7f3d28e53383 93 if(val>999)
irsanjul 0:7f3d28e53383 94 {
irsanjul 0:7f3d28e53383 95 for( int i = input.size() - 3; i > 0; i -= 3 )
irsanjul 0:7f3d28e53383 96 {
irsanjul 0:7f3d28e53383 97 input.insert( input.begin() + i, '.' );
irsanjul 0:7f3d28e53383 98 }
irsanjul 0:7f3d28e53383 99 }
irsanjul 0:7f3d28e53383 100 else
irsanjul 0:7f3d28e53383 101 {
irsanjul 0:7f3d28e53383 102 for( int i = input.size() - 3; i > 0; i -= 3 )
irsanjul 0:7f3d28e53383 103 {
irsanjul 0:7f3d28e53383 104 input.insert( input.begin() + i, ' ' );
irsanjul 0:7f3d28e53383 105 }
irsanjul 0:7f3d28e53383 106 }
irsanjul 0:7f3d28e53383 107 return input;
irsanjul 0:7f3d28e53383 108 }
irsanjul 0:7f3d28e53383 109
irsanjul 0:7f3d28e53383 110 void Printer::PrintStruk(const std::time_t &now, const char *datain, const unsigned int &no_nota, const uint8_t &nozz,
irsanjul 0:7f3d28e53383 111 const uint8_t pipa, const string &Nopol, const string &Odo)
irsanjul 0:7f3d28e53383 112 {
irsanjul 0:7f3d28e53383 113 float liter=0;
irsanjul 0:7f3d28e53383 114 unsigned int harga=0;
irsanjul 0:7f3d28e53383 115 unsigned long int total=0;
irsanjul 0:7f3d28e53383 116 char times[64];
irsanjul 0:7f3d28e53383 117
irsanjul 0:7f3d28e53383 118
irsanjul 0:7f3d28e53383 119 liter =((datain[1]-0x30)*100) + ((datain[2]-0x30)*10) + ((datain[3]-0x30)*1) + ((datain[4]-0x30)*0.1) + ((datain[5]-0x30)* 0.01);
irsanjul 0:7f3d28e53383 120
irsanjul 0:7f3d28e53383 121 harga = ((datain[7]-0x30)*1000) + ((datain[8]-0x30)*100) + ((datain[9]-0x30)*10) + ((datain[10]-0x30)*1);
irsanjul 0:7f3d28e53383 122 total = ((datain[11]-0x30)*100000) + ((datain[12]-0x30)*10000) + ((datain[13]-0x30)*1000) + ((datain[14]-0x30)*100) + ((datain[15]-0x30)*10)+((datain[16]-0x30)*1);
irsanjul 0:7f3d28e53383 123
irsanjul 0:7f3d28e53383 124 std::tm * ptm = std::localtime(&now);
irsanjul 0:7f3d28e53383 125 strftime (times,64,"%Y %H:%M:%S",ptm);
irsanjul 0:7f3d28e53383 126 wait_ms(100);
irsanjul 0:7f3d28e53383 127
irsanjul 0:7f3d28e53383 128 Tm.printf("%s, %02d %s %s\n", WDAY[ptm->tm_wday], ptm->tm_mday, MONT[ptm->tm_mon], times);wait_ms(10);
irsanjul 0:7f3d28e53383 129 Tm.printf("__________________________________\n");wait_ms(10);
irsanjul 0:7f3d28e53383 130 Tm.printf("Nomor Printer: %d\n", Pf.id);wait_ms(10);
irsanjul 0:7f3d28e53383 131 Tm.printf("Nomor Selang : %d\n", pipa);wait_ms(10);
irsanjul 0:7f3d28e53383 132 Tm.printf("Nomor Nota : %d\n", no_nota);wait_ms(10);
irsanjul 0:7f3d28e53383 133 Tm.printf("Jenis BBM : %s\n", get_product(nozz).c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 134 Tm.printf("Liter : %3.2f\n",liter);wait_ms(10);
irsanjul 0:7f3d28e53383 135 Tm.printf("Harga/Liter : Rp. %s\n",intwcurrency(harga).c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 136 Tm.printModes(0x19);wait_ms(10);
irsanjul 0:7f3d28e53383 137 Tm.printf("Total : Rp. %s\n",intwcurrency(total).c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 138 wait_ms(10);
irsanjul 0:7f3d28e53383 139 Tm.printModes(0x01);wait_ms(10);
irsanjul 0:7f3d28e53383 140 Tm.printf("_________________________________\n");wait_ms(10);
irsanjul 0:7f3d28e53383 141
irsanjul 0:7f3d28e53383 142 if(Nopol.size()>0)Tm.printf("Nopol : %s\n",Nopol.c_str());
irsanjul 0:7f3d28e53383 143 if(Odo.size()>0) Tm.printf("Odometer : %s\n",Odo.c_str());
irsanjul 0:7f3d28e53383 144
irsanjul 0:7f3d28e53383 145 wait_ms(50);
irsanjul 0:7f3d28e53383 146 for(int i=0; i<Pf.footer.size(); i++)
irsanjul 0:7f3d28e53383 147 {
irsanjul 0:7f3d28e53383 148 Tm.printf("%s\r\n", Pf.footer[i].c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 149 }
irsanjul 0:7f3d28e53383 150 Tm.printf("\n\n\n\n");wait_ms(10);
irsanjul 0:7f3d28e53383 151 // tm.printf("\n");
irsanjul 0:7f3d28e53383 152 // tm.printf("\n");
irsanjul 0:7f3d28e53383 153 // tm.printf("\n");
irsanjul 0:7f3d28e53383 154 // tm.printf("\n");
irsanjul 0:7f3d28e53383 155 // tm.printf("\n");
irsanjul 0:7f3d28e53383 156 wait_ms(50);
irsanjul 0:7f3d28e53383 157 create_header();
irsanjul 0:7f3d28e53383 158 // tm.cutPaper();
irsanjul 0:7f3d28e53383 159 }
irsanjul 0:7f3d28e53383 160
irsanjul 0:7f3d28e53383 161 void Printer::PrintStruk(const std::time_t &now, const ResultParsing &res, const unsigned int &no_nota,
irsanjul 0:7f3d28e53383 162 const string &Nopol, const string &Odo)
irsanjul 0:7f3d28e53383 163 {
irsanjul 0:7f3d28e53383 164 float liter=0;
irsanjul 0:7f3d28e53383 165 unsigned int harga=0;
irsanjul 0:7f3d28e53383 166 unsigned long int total=0;
irsanjul 0:7f3d28e53383 167 char times[64];
irsanjul 0:7f3d28e53383 168
irsanjul 0:7f3d28e53383 169 liter = res.volume;
irsanjul 0:7f3d28e53383 170 harga = res.ppu;
irsanjul 0:7f3d28e53383 171 total = res.money;
irsanjul 0:7f3d28e53383 172
irsanjul 0:7f3d28e53383 173 std::tm * ptm = std::localtime(&now);
irsanjul 0:7f3d28e53383 174 strftime (times,64,"%Y %H:%M:%S",ptm);
irsanjul 0:7f3d28e53383 175 wait_ms(100);
irsanjul 0:7f3d28e53383 176
irsanjul 0:7f3d28e53383 177 Tm.printf("%s, %02d %s %s\n", WDAY[ptm->tm_wday], ptm->tm_mday, MONT[ptm->tm_mon], times);wait_ms(10);
irsanjul 0:7f3d28e53383 178 Tm.printf("__________________________________\n");wait_ms(10);
irsanjul 0:7f3d28e53383 179 Tm.printf("Nomor Printer: %d\n", Pf.id);wait_ms(10);
irsanjul 0:7f3d28e53383 180 Tm.printf("Nomor Selang : %d\n", res.id);wait_ms(10);
irsanjul 0:7f3d28e53383 181 Tm.printf("Nomor Nota : %d\n", no_nota);wait_ms(10);
irsanjul 0:7f3d28e53383 182 Tm.printf("Jenis BBM : %s\n", res.product.c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 183 Tm.printf("Liter : %3.2f\n",liter);wait_ms(10);
irsanjul 0:7f3d28e53383 184 Tm.printf("Harga/Liter : Rp. %s\n",intwcurrency(harga).c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 185 Tm.printModes(0x19);wait_ms(10);
irsanjul 0:7f3d28e53383 186 Tm.printf("Total : Rp. %s\n",intwcurrency(total).c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 187 wait_ms(10);
irsanjul 0:7f3d28e53383 188 Tm.printModes(0x01);wait_ms(10);
irsanjul 0:7f3d28e53383 189 Tm.printf("_________________________________\n");wait_ms(10);
irsanjul 0:7f3d28e53383 190
irsanjul 0:7f3d28e53383 191 if(Nopol.size()>0)Tm.printf("Nopol : %s\n",Nopol.c_str());
irsanjul 0:7f3d28e53383 192 if(Odo.size()>0) Tm.printf("Odometer : %s\n",Odo.c_str());
irsanjul 0:7f3d28e53383 193
irsanjul 0:7f3d28e53383 194 wait_ms(50);
irsanjul 0:7f3d28e53383 195 for(int i=0; i<Pf.footer.size(); i++)
irsanjul 0:7f3d28e53383 196 {
irsanjul 0:7f3d28e53383 197 Tm.printf("%s\r\n", Pf.footer[i].c_str());wait_ms(10);
irsanjul 0:7f3d28e53383 198 }
irsanjul 0:7f3d28e53383 199 Tm.printf("\n\n\n\n");wait_ms(10);
irsanjul 0:7f3d28e53383 200 wait_ms(50);
irsanjul 0:7f3d28e53383 201 create_header();wait_ms(10);
irsanjul 0:7f3d28e53383 202 Tm.cutPaper();
irsanjul 0:7f3d28e53383 203 }
irsanjul 0:7f3d28e53383 204
irsanjul 0:7f3d28e53383 205 void Printer::DebugStruk(const std::time_t &now, const ResultParsing &res, const unsigned int &no_nota,
irsanjul 0:7f3d28e53383 206 const string &Nopol, const string &Odo)
irsanjul 0:7f3d28e53383 207 {
irsanjul 0:7f3d28e53383 208 float liter=0;
irsanjul 0:7f3d28e53383 209 unsigned int harga=0;
irsanjul 0:7f3d28e53383 210 unsigned long int total=0;
irsanjul 0:7f3d28e53383 211 char times[64];
irsanjul 0:7f3d28e53383 212
irsanjul 0:7f3d28e53383 213 liter = res.volume;
irsanjul 0:7f3d28e53383 214 harga = res.ppu;
irsanjul 0:7f3d28e53383 215 total = res.money;
irsanjul 0:7f3d28e53383 216
irsanjul 0:7f3d28e53383 217 std::tm * ptm = std::localtime(&now);
irsanjul 0:7f3d28e53383 218 strftime (times,64,"%Y %H:%M:%S",ptm);
irsanjul 0:7f3d28e53383 219 wait_ms(100);
irsanjul 0:7f3d28e53383 220
irsanjul 0:7f3d28e53383 221 dbg.printf("%s, %02d %s %s\n\r", WDAY[ptm->tm_wday], ptm->tm_mday, MONT[ptm->tm_mon], times);
irsanjul 0:7f3d28e53383 222 dbg.printf("__________________________________\n\r");
irsanjul 0:7f3d28e53383 223 dbg.printf("Nomor Printer: %d\n\r", Pf.id);
irsanjul 0:7f3d28e53383 224 dbg.printf("Nomor Selang : %d\n\r", res.id);
irsanjul 0:7f3d28e53383 225 dbg.printf("Nomor Nota : %d\n\r", no_nota);
irsanjul 0:7f3d28e53383 226 dbg.printf("Jenis BBM : %s\n\r", res.product.c_str());
irsanjul 0:7f3d28e53383 227 dbg.printf("Liter : %3.2f\n\r",liter);
irsanjul 0:7f3d28e53383 228 dbg.printf("Harga/Liter : Rp. %s\n\r",intwcurrency(harga).c_str());
irsanjul 0:7f3d28e53383 229 dbg.printf("Total : Rp. %s\n\r",intwcurrency(total).c_str());
irsanjul 0:7f3d28e53383 230 dbg.printf("_________________________________\n\r");
irsanjul 0:7f3d28e53383 231
irsanjul 0:7f3d28e53383 232 if(Nopol.size()>0)dbg.printf("Nopol : %s\n\r",Nopol.c_str());
irsanjul 0:7f3d28e53383 233 if(Odo.size()>0) dbg.printf("Odometer : %s\n\r",Odo.c_str());
irsanjul 0:7f3d28e53383 234
irsanjul 0:7f3d28e53383 235 wait_ms(50);
irsanjul 0:7f3d28e53383 236 for(int i=0; i<Pf.footer.size(); i++)
irsanjul 0:7f3d28e53383 237 {
irsanjul 0:7f3d28e53383 238 dbg.printf("%s\r\n", Pf.footer[i].c_str());
irsanjul 0:7f3d28e53383 239 }
irsanjul 0:7f3d28e53383 240 dbg.printf("\n\n\r");
irsanjul 0:7f3d28e53383 241 }
irsanjul 0:7f3d28e53383 242
irsanjul 0:7f3d28e53383 243 void Printer::TestPrint2()
irsanjul 0:7f3d28e53383 244 {
irsanjul 0:7f3d28e53383 245 create_header();
irsanjul 0:7f3d28e53383 246 Tm.printf("_________________________________\n");
irsanjul 0:7f3d28e53383 247 for(int i=0; i<Pf.prodak.size();i++)
irsanjul 0:7f3d28e53383 248 {
irsanjul 0:7f3d28e53383 249 Tm.printf("Produk %d : %s\r\n",i+1, Pf.prodak[i].c_str());
irsanjul 0:7f3d28e53383 250 }
irsanjul 0:7f3d28e53383 251 Tm.printf("_________________________________\n\n\n\n\n\n\n\n");
irsanjul 0:7f3d28e53383 252 Tm.cutPaper();
irsanjul 0:7f3d28e53383 253 }