EPSON Thermal Printer RS232 Interface Model --TM-T82II
Embed:
(wiki syntax)
Show/hide line numbers
EPSON.cpp
00001 #include "mbed.h" 00002 #include "EPSON.h" 00003 00004 EPSON::EPSON(PinName tx, PinName rx,uint32_t baud) 00005 : 00006 _serial_p(new Serial(tx, rx)), 00007 _serial(*_serial_p) 00008 { 00009 _serial.baud(baud); 00010 initialize(); 00011 } 00012 00013 EPSON::EPSON(Serial &serial_obj, uint32_t baud) 00014 : 00015 _serial_p(NULL), 00016 _serial(serial_obj) 00017 { 00018 _serial.baud(baud); 00019 initialize(); 00020 } 00021 00022 EPSON::~EPSON() 00023 { 00024 } 00025 00026 00027 void EPSON::initialize(void) 00028 { 00029 _serial.putc(0x1B); 00030 _serial.putc(0x40); 00031 _serial.putc(0x1C); 00032 } 00033 00034 00035 void EPSON::printLeft(void) 00036 { 00037 _serial.putc(0x1B); 00038 _serial.putc(0x40); 00039 _serial.putc(0x30); 00040 } 00041 00042 void EPSON::printRight(void) 00043 { 00044 _serial.putc(0x1B); 00045 _serial.putc(0x40); 00046 _serial.putc(0x32); 00047 } 00048 00049 00050 00051 void EPSON::printCenter(void) 00052 { 00053 _serial.putc(0x1B); 00054 _serial.putc(0x40); 00055 _serial.putc(0x31); 00056 } 00057 00058 void EPSON::font_Zero(void) 00059 { 00060 _serial.putc(0x1D); 00061 _serial.putc(0x21); 00062 _serial.putc(0x00); 00063 } 00064 00065 void EPSON::font_OneZero(void) 00066 { 00067 _serial.putc(0x1D); 00068 _serial.putc(0x21); 00069 _serial.putc(0x10); 00070 } 00071 00072 void EPSON::font_ZeroOne(void) 00073 { 00074 _serial.putc(0x1D); 00075 _serial.putc(0x21); 00076 _serial.putc(0x01); 00077 } 00078 00079 int EPSON:: PrintBarCode(char *data,int ilen) 00080 { 00081 char str_pdata[100]; 00082 char header[] = {0x1D, 0x48, 0x02, 0x1D, 0x66, 0x00, 0x1D, 0x68, 0x51, 0x1D, 0x77, 0x02, 0x1D, 0x6B, 0x49}; 00083 int idata_len, raw_data_len; 00084 00085 memset(str_pdata, 0x00, sizeof(str_pdata)); 00086 00087 memcpy(str_pdata,header, 15); 00088 idata_len = 15; 00089 00090 raw_data_len = ilen + 2; 00091 str_pdata[idata_len] = raw_data_len; 00092 00093 idata_len++; 00094 memcpy(str_pdata+idata_len, "{A", 2); 00095 idata_len += 2; 00096 memcpy(str_pdata+idata_len, data, ilen); 00097 idata_len += ilen; 00098 00099 _serial.printf("%s",str_pdata ); 00100 00101 return 1; 00102 00103 } 00104 00105 00106 void EPSON::printTest(void) 00107 { 00108 _serial.putc(0x1D); 00109 _serial.putc(0x28); 00110 _serial.putc(0x41); 00111 } 00112 00113 00114 void EPSON::lineFeed(void) 00115 { 00116 _serial.putc(0x0A); 00117 00118 } 00119 00120 00121 void EPSON::carriageReturn(void) 00122 { 00123 _serial.putc(0x0D); 00124 } 00125 00126 00127 00128 void EPSON::putLineFeed(uint8_t lines) 00129 { 00130 for(uint32_t i = 0; i < lines; i++) { 00131 _serial.putc('\r'); 00132 } 00133 } 00134 00135 void EPSON::printnputLineFeed(uint8_t lines) 00136 { 00137 _serial.putc(0x1B); 00138 _serial.putc(0x64); 00139 _serial.putc(lines); 00140 00141 } 00142 00143 void EPSON::setdefaultLinespacing(void) 00144 { 00145 _serial.putc(0x1B); 00146 _serial.putc(0x32); 00147 _serial.putc(0x32); 00148 00149 } 00150 00151 void EPSON::setLinespacing(uint8_t lines) 00152 { 00153 uint8_t num=32; 00154 if(lines==1) 00155 num=32; 00156 else if(lines==2) 00157 num=64; 00158 else if(lines==3) 00159 num=96; 00160 00161 00162 _serial.putc(0x1B); 00163 _serial.putc(0x33); 00164 _serial.putc(num); 00165 00166 } 00167 00168 void EPSON::setleftMargin(uint8_t n1, uint8_t n2) 00169 { 00170 _serial.putc(0x1D); 00171 _serial.putc(0x4C); 00172 _serial.putc(n1); 00173 _serial.putc(n2); 00174 } 00175 00176 void EPSON::absoluteprintPosition(uint8_t n1, uint8_t n2) 00177 { 00178 _serial.putc(0x1B); 00179 _serial.putc(0x24); 00180 _serial.putc(n1); 00181 _serial.putc(n2); 00182 } 00183 00184 void EPSON::whiteblack(uint8_t n1) 00185 { 00186 _serial.putc(0x1D); 00187 _serial.putc(0x42); 00188 _serial.putc(n1);// n1=0 for OFF n1=1 for ON 00189 00190 } 00191 00192 void EPSON::papersensorstatus(void) 00193 { 00194 _serial.putc(0x1B); 00195 _serial.putc(0x76); 00196 00197 // Poll Rx pin of printer Here 00198 //0x00 Paper Present 00199 //0x20 Paper Absent 00200 } 00201 00202 void EPSON::printModes(uint8_t n) 00203 { 00204 _serial.putc(0x1B); 00205 _serial.putc(0x21); 00206 _serial.putc(n); 00207 00208 00209 00210 //Possible values for n 00211 //00 = 32 Char Normal 08 = 32 Char BOLD 00212 //01 = 24 Char Normal 09 = 24 Char BOLD 00213 //11 = 24 Char Double Height 19 = 24 Char Double Height & BOLD 00214 //21 = 24 Char Double Width 29 = 24 Char Double Width & BOLD 00215 //31 = 24 Char Double Height & Double Width 39 = 24 Char Double Height & Double Width & BOLD 00216 //10 = 32 Char Double Height 18 = 32 Char Double Height & BOLD 00217 //20 = 32 Char Double Width 28 = 32 Char Double Width & BOLD 00218 //30 = 32 Char Double Height & Double Width 38 = 32 Char Double Height & Double Width & BOLD 00219 00220 } 00221 00222 void EPSON::clearBuffer(void) 00223 { 00224 _serial.putc(0x18); 00225 00226 00227 // 00228 //[Name] Clear buffer(s) 00229 //[Format] 00230 //ASCII DLE DC4 fn d1 d2 d3 d4 d5 d6 d7 00231 //Hex 10 14 08 01 03 14 01 06 02 08 00232 //Decimal 16 20 8 1 3 20 1 6 2 8 00233 00234 00235 _serial.putc(0x10); 00236 _serial.putc(0x14); 00237 _serial.putc(0x08); 00238 _serial.putc(0x01); 00239 _serial.putc(0x03); 00240 _serial.putc(0x14); 00241 _serial.putc(0x01); 00242 _serial.putc(0x06); 00243 _serial.putc(0x02); 00244 _serial.putc(0x08); 00245 00246 } 00247 00248 void EPSON::putHorizontaltab(void) 00249 { 00250 _serial.putc(0x09); 00251 } 00252 00253 void EPSON::setDoubleSizeHeight(void) 00254 { 00255 _serial.printf("\x1D\x21\x01"); 00256 } 00257 00258 void EPSON::clearDoubleSizeHeight(void) 00259 { 00260 _serial.printf("\x1D\x21\x00"); 00261 } 00262 00263 void EPSON::setDoubleSizeWidth(void) 00264 { 00265 _serial.printf("\x1D\x21\x10"); 00266 } 00267 00268 void EPSON::clearDoubleSizeWidth(void) 00269 { 00270 _serial.printf("\x1D\x21\x00"); 00271 } 00272 00273 void EPSON::setLargeFont(void) 00274 { 00275 _serial.printf("\x1D\x21\x11"); 00276 } 00277 00278 void EPSON::clearLargeFont() 00279 { 00280 _serial.printf("\x1D\x21\x00"); 00281 } 00282 00283 void EPSON::setANKFont(uint32_t font) 00284 { 00285 _serial.putc(0x1B); 00286 _serial.putc(0x68); 00287 _serial.putc(font); 00288 } 00289 00290 void EPSON::setKanjiFont(uint32_t font) 00291 { 00292 _serial.putc(0x12); 00293 _serial.putc(0x53); 00294 _serial.putc(font); 00295 } 00296 00297 void EPSON::printQRCode(uint32_t err, const char* param) 00298 { 00299 uint32_t len = strlen(param); 00300 char buf[4] = {0x1D, 0x78}; 00301 buf[2] = err; 00302 buf[3] = len; 00303 for (uint32_t i = 0; i < sizeof(buf); i++) { 00304 _serial.putc(buf[i]); 00305 } 00306 for (uint32_t i = 0; i < len; i++) { 00307 _serial.putc(param[i]); 00308 } 00309 } 00310 00311 void EPSON::printBarCode(uint32_t code, const char* param) 00312 { 00313 char buf[3] = {0x1D, 0x6B}; 00314 buf[2] = code; 00315 for (uint32_t i = 0; i < sizeof(buf); i++) { 00316 _serial.putc(buf[i]); 00317 } 00318 for (uint32_t i = 0; i < strlen(param); i++) { 00319 _serial.putc(param[i]); 00320 } 00321 _serial.putc('\0'); 00322 } 00323 00324 void EPSON::printBitmapImage(uint32_t mode, uint16_t lines, const uint8_t * image) 00325 { 00326 char buf[3] = {0x1C, 0x2A}; 00327 buf[2] = mode; 00328 for (uint32_t i = 0; i < sizeof(buf); i++) { 00329 _serial.putc(buf[i]); 00330 } 00331 _serial.putc((lines >> 8) & 0xFF); // n1 00332 _serial.putc((lines >> 0) & 0xFF); // n2 00333 00334 if (mode == 0x61) { 00335 return; 00336 } 00337 00338 for (uint32_t i = 0; i < (48 * lines); i++) { 00339 _serial.putc(image[i]); 00340 } 00341 } 00342 00343 void EPSON::setLineSpaceing(uint32_t space) 00344 { 00345 _serial.putc(0x1B); 00346 _serial.putc(0x33); 00347 _serial.putc(space); 00348 } 00349 00350 void EPSON::defaultLineSpaceing() 00351 { 00352 _serial.printf("\x1B\x33\x04"); 00353 } 00354 00355 void EPSON::setPrintDirection(uint32_t direction) 00356 { 00357 _serial.putc(0x1B); 00358 _serial.putc(0x49); 00359 _serial.putc(direction); 00360 } 00361 00362 void EPSON::putPaperFeed(uint32_t space) 00363 { 00364 _serial.putc(0x1B); 00365 _serial.putc(0x4A); 00366 _serial.putc(space); 00367 } 00368 00369 void EPSON::setInterCharacterSpace(uint32_t space) 00370 { 00371 _serial.putc(0x1B); 00372 _serial.putc(0x20); 00373 _serial.putc(space); 00374 } 00375 00376 void EPSON::defaultInterCharacterSpace() 00377 { 00378 _serial.printf("\x1B\x20\x01"); 00379 } 00380 00381 void EPSON::putPrintPosition(uint32_t position) 00382 { 00383 _serial.putc(0x1B); 00384 _serial.putc(0x6c); 00385 _serial.putc(position); 00386 } 00387 00388 void EPSON::setScript(script_mode script) 00389 { 00390 _serial.putc(0x1B); 00391 _serial.putc(0x73); 00392 _serial.putc(script); 00393 } 00394 00395 00396 00397 void EPSON::clearScript() 00398 { 00399 _serial.printf("\x1B\x73\x30"); 00400 } 00401 00402 void EPSON::setQuadrupleSize() 00403 { 00404 _serial.printf("\x1C\x57\x31"); 00405 } 00406 00407 void EPSON::clearQuadrupleSize() 00408 { 00409 _serial.printf("\x1C\x57\x30"); 00410 } 00411 00412 void EPSON::setEnlargement(uint32_t width, uint32_t height) 00413 { 00414 _serial.putc(0x1C); 00415 _serial.putc(0x65); 00416 _serial.putc(width); 00417 _serial.putc(height); 00418 } 00419 00420 void EPSON::clearEnlargement() 00421 { 00422 _serial.printf("\x1C\x65\x31\x31"); 00423 } 00424 00425 void EPSON::setBarCodeHeight(uint32_t height) 00426 { 00427 _serial.putc(0x1D); 00428 _serial.putc(0x68); 00429 _serial.putc(height); 00430 } 00431 00432 void EPSON::defaultBarCodeHeight() 00433 { 00434 _serial.printf("\x1D\x68\x50"); 00435 } 00436 00437 00438 00439 void EPSON::setBarCodeBarSize(uint32_t narrowbar, uint32_t widebar) 00440 { 00441 _serial.putc(0x1D); 00442 _serial.putc(0x77); 00443 _serial.putc(narrowbar); 00444 _serial.putc(widebar); 00445 } 00446 00447 00448 void EPSON::defaultBarCodeBarSize() 00449 { 00450 _serial.printf("\x1D\x77\x02\x05"); 00451 } 00452 00453 int EPSON::_putc(int value) 00454 { 00455 _serial.putc(value); 00456 return value; 00457 } 00458 00459 int EPSON::_getc() 00460 { 00461 return -1; 00462 }
Generated on Sat Jul 16 2022 02:27:43 by
1.7.2