EPSON Thermal Printer RS232 Interface Model --TM-T82II

Dependents:   EPSON_Printer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers EPSON.cpp Source File

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 }