Thermal Printer Basic Print Operations

Dependents:   Thermal_Printer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers APSEPM207LV.cpp Source File

APSEPM207LV.cpp

00001 
00002 
00003 #include "mbed.h"
00004 #include "APSEPM207LV.h"
00005 
00006 APSEPM207LV::APSEPM207LV(PinName tx, PinName rx,uint32_t baud)
00007     :
00008     _serial_p(new Serial(tx, rx)),
00009     _serial(*_serial_p)
00010 {
00011     _serial.baud(baud);
00012     initialize();
00013 }
00014 
00015 APSEPM207LV::APSEPM207LV(Serial &serial_obj, uint32_t baud)
00016     :
00017     _serial_p(NULL),
00018     _serial(serial_obj)
00019 {
00020     _serial.baud(baud);
00021     initialize();
00022 }
00023 
00024 APSEPM207LV::~APSEPM207LV()
00025 {
00026 }
00027 
00028 
00029 void APSEPM207LV::initialize(void)
00030 {
00031     _serial.putc(0x1B);
00032     _serial.putc(0x40);
00033 }
00034 
00035 void APSEPM207LV::printTest(void)
00036 {
00037     _serial.putc(0x1D);
00038     _serial.putc(0x28);
00039     _serial.putc(0x41);
00040 }
00041 
00042 
00043 void APSEPM207LV::lineFeed(void)
00044 {
00045     _serial.putc(0x0A);
00046   
00047 }
00048 
00049 
00050 void APSEPM207LV::carriageReturn(void)
00051 {
00052     _serial.putc(0x0D);
00053 }
00054 
00055 
00056 
00057 void APSEPM207LV::putLineFeed(uint8_t lines)
00058 {
00059     for(uint32_t i = 0; i < lines; i++) {
00060         _serial.putc('\r');
00061     }
00062 }
00063 
00064 void APSEPM207LV::printnputLineFeed(uint8_t lines)
00065 {
00066    _serial.putc(0x1B);
00067    _serial.putc(0x64);
00068   _serial.putc(lines);
00069   
00070   }
00071 
00072 void APSEPM207LV::setdefaultLinespacing(void)
00073 {
00074    _serial.putc(0x1B);
00075    _serial.putc(0x32);
00076   _serial.putc(0x32);
00077   
00078   }
00079   
00080 void APSEPM207LV::setLinespacing(uint8_t lines)
00081 {
00082   uint8_t num=32;
00083   if(lines==1)
00084   num=32;
00085   else if(lines==2)
00086   num=64;
00087   else if(lines==3)
00088   num=96;
00089   
00090   
00091    _serial.putc(0x1B);
00092    _serial.putc(0x33);
00093   _serial.putc(num);
00094   
00095   }
00096 
00097   void APSEPM207LV::setleftMargin(uint8_t n1, uint8_t n2)
00098   {
00099    _serial.putc(0x1D);
00100    _serial.putc(0x4C);
00101   _serial.putc(n1);
00102   _serial.putc(n2);
00103   }
00104 
00105  void APSEPM207LV::absoluteprintPosition(uint8_t n1, uint8_t n2)
00106   {
00107    _serial.putc(0x1B);
00108    _serial.putc(0x24);
00109   _serial.putc(n1);
00110   _serial.putc(n2);
00111   }
00112 
00113 void APSEPM207LV::whiteblack(uint8_t n1)
00114   {
00115    _serial.putc(0x1D);
00116    _serial.putc(0x42);
00117   _serial.putc(n1);// n1=0   for OFF n1=1 for ON
00118  
00119   }
00120 
00121   void APSEPM207LV::papersensorstatus(void)
00122   {
00123   _serial.putc(0x1B);
00124    _serial.putc(0x76);
00125 
00126   // Poll Rx pin of printer Here
00127   //0x00 Paper Present
00128   //0x20 Paper Absent
00129   }
00130   
00131 void APSEPM207LV::printModes(uint8_t n)     
00132 {
00133     _serial.putc(0x1B);
00134     _serial.putc(0x21);
00135     _serial.putc(n);
00136     
00137 
00138 
00139 //Possible values for n    
00140 //00 = 32 Char Normal                                        08 = 32 Char BOLD
00141 //01 = 24 Char Normal                                        09 = 24 Char BOLD
00142 //11 = 24 Char Double Height                                 19 = 24 Char Double Height & BOLD
00143 //21 = 24 Char Double Width                                  29 = 24 Char Double Width & BOLD
00144 //31 = 24 Char Double Height & Double Width                  39 = 24 Char Double Height & Double Width & BOLD
00145 //10 = 32 Char Double Height                                 18 = 32 Char Double Height & BOLD
00146 //20 = 32 Char Double Width                                  28 = 32 Char Double Width & BOLD
00147 //30 = 32 Char Double Height & Double Width                  38 = 32 Char Double Height & Double Width & BOLD
00148     
00149 }
00150   
00151 void APSEPM207LV::clearBuffer(void)
00152 {
00153     _serial.putc(0x18);
00154 }
00155 
00156 void APSEPM207LV::putHorizontaltab(void)
00157 {
00158     _serial.putc(0x09);
00159 }
00160 
00161 void APSEPM207LV::setDoubleSizeHeight(void)
00162 {
00163     _serial.printf("\x1D\x21\x01");
00164 }
00165 
00166 void APSEPM207LV::clearDoubleSizeHeight(void)
00167 {
00168     _serial.printf("\x1D\x21\x00");
00169 }
00170 
00171 void APSEPM207LV::setDoubleSizeWidth(void)
00172 {
00173     _serial.printf("\x1D\x21\x10");
00174 }
00175 
00176 void APSEPM207LV::clearDoubleSizeWidth(void)
00177 {
00178         _serial.printf("\x1D\x21\x00");
00179 }
00180 
00181 void APSEPM207LV::setLargeFont(void)
00182 {
00183     _serial.printf("\x1D\x21\x11");
00184 }
00185 
00186 void APSEPM207LV::clearLargeFont()
00187 {
00188     _serial.printf("\x1D\x21\x00");
00189 }
00190 
00191 void APSEPM207LV::setANKFont(uint32_t font)
00192 {
00193     _serial.putc(0x1B);
00194     _serial.putc(0x68);
00195     _serial.putc(font);
00196 }
00197 
00198 void APSEPM207LV::setKanjiFont(uint32_t font)
00199 {
00200     _serial.putc(0x12);
00201     _serial.putc(0x53);
00202     _serial.putc(font);
00203 }
00204 
00205 void APSEPM207LV::printQRCode(uint32_t err, const char* param)
00206 {
00207     uint32_t len = strlen(param);
00208     char buf[4] = {0x1D, 0x78};
00209     buf[2] = err;
00210     buf[3] = len;
00211     for (uint32_t i = 0; i < sizeof(buf); i++) {
00212         _serial.putc(buf[i]);
00213     }
00214     for (uint32_t i = 0; i < len; i++) {
00215         _serial.putc(param[i]);
00216     }
00217 }
00218 
00219 void APSEPM207LV::printBarCode(uint32_t code, const char* param)
00220 {
00221     char buf[3] = {0x1D, 0x6B};
00222     buf[2] = code;
00223     for (uint32_t i = 0; i < sizeof(buf); i++) {
00224         _serial.putc(buf[i]);
00225     }
00226     for (uint32_t i = 0; i < strlen(param); i++) {
00227         _serial.putc(param[i]);
00228     }
00229     _serial.putc('\0');
00230 }
00231 
00232 void APSEPM207LV::printBitmapImage(uint32_t mode, uint16_t lines, const uint8_t * image)
00233 {
00234     char buf[3] = {0x1C, 0x2A};
00235     buf[2] = mode;
00236     for (uint32_t i = 0; i < sizeof(buf); i++) {
00237         _serial.putc(buf[i]);
00238     }
00239     _serial.putc((lines >> 8) & 0xFF); // n1
00240     _serial.putc((lines >> 0) & 0xFF); // n2
00241 
00242     if (mode == 0x61) {
00243         return;
00244     }
00245 
00246     for (uint32_t i = 0; i < (48 * lines); i++) {
00247         _serial.putc(image[i]);
00248     }
00249 }
00250 
00251 void APSEPM207LV::setLineSpaceing(uint32_t space)
00252 {
00253     _serial.putc(0x1B);
00254     _serial.putc(0x33);
00255     _serial.putc(space);
00256 }
00257 
00258 void APSEPM207LV::defaultLineSpaceing()
00259 {
00260     _serial.printf("\x1B\x33\x04");
00261 }
00262 
00263 void APSEPM207LV::setPrintDirection(uint32_t direction)
00264 {
00265     _serial.putc(0x1B);
00266     _serial.putc(0x49);
00267     _serial.putc(direction);
00268 }
00269 
00270 void APSEPM207LV::putPaperFeed(uint32_t space)
00271 {
00272     _serial.putc(0x1B);
00273     _serial.putc(0x4A);
00274     _serial.putc(space);
00275 }
00276 
00277 void APSEPM207LV::setInterCharacterSpace(uint32_t space)
00278 {
00279     _serial.putc(0x1B);
00280     _serial.putc(0x20);
00281     _serial.putc(space);
00282 }
00283 
00284 void APSEPM207LV::defaultInterCharacterSpace()
00285 {
00286     _serial.printf("\x1B\x20\x01");
00287 }
00288 
00289 void APSEPM207LV::putPrintPosition(uint32_t position)
00290 {
00291     _serial.putc(0x1B);
00292     _serial.putc(0x6c);
00293     _serial.putc(position);
00294 }
00295 
00296 void APSEPM207LV::setScript(script_mode script)
00297 {
00298     _serial.putc(0x1B);
00299     _serial.putc(0x73);
00300     _serial.putc(script);
00301 }
00302 
00303 
00304 
00305 void APSEPM207LV::clearScript()
00306 {
00307     _serial.printf("\x1B\x73\x30");
00308 }
00309 
00310 void APSEPM207LV::setQuadrupleSize()
00311 {
00312     _serial.printf("\x1C\x57\x31");
00313 }
00314 
00315 void APSEPM207LV::clearQuadrupleSize()
00316 {
00317     _serial.printf("\x1C\x57\x30");
00318 }
00319 
00320 void APSEPM207LV::setEnlargement(uint32_t width, uint32_t height)
00321 {
00322     _serial.putc(0x1C);
00323     _serial.putc(0x65);
00324     _serial.putc(width);
00325     _serial.putc(height);
00326 }
00327 
00328 void APSEPM207LV::clearEnlargement()
00329 {
00330     _serial.printf("\x1C\x65\x31\x31");
00331 }
00332 
00333 void APSEPM207LV::setBarCodeHeight(uint32_t height)
00334 {
00335     _serial.putc(0x1D);
00336     _serial.putc(0x68);
00337     _serial.putc(height);
00338 }
00339 
00340 void APSEPM207LV::defaultBarCodeHeight()
00341 {
00342     _serial.printf("\x1D\x68\x50");
00343 }
00344 
00345 void APSEPM207LV::setBarCodeBarSize(uint32_t narrowbar, uint32_t widebar)
00346 {
00347     _serial.putc(0x1D);
00348     _serial.putc(0x77);
00349     _serial.putc(narrowbar);
00350     _serial.putc(widebar);
00351 }
00352 
00353 void APSEPM207LV::defaultBarCodeBarSize()
00354 {
00355     _serial.printf("\x1D\x77\x02\x05");
00356 }
00357 
00358 int APSEPM207LV::_putc(int value)
00359 {
00360     _serial.putc(value);
00361     return value;
00362 }
00363 
00364 int APSEPM207LV::_getc()
00365 {
00366     return -1;
00367 }
00368 
00369 
00370