AS-289R2 Thermal Printer shield control library
Dependents: AS-289R2_Hello-World AS-289R2_Hello-World-mbed-OS hybrid_image_as289r2 microbit_AS-289R2 ... more
AS289R2.cpp
00001 /** 00002 ****************************************************************************** 00003 * @file AS289R2.cpp 00004 * @author Toyomasa Watarai 00005 * @version V1.1.0 00006 * @date 20 January 2020 00007 * @brief AS289R2 class implementation 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * Permission is hereby granted, free of charge, to any person obtaining a copy 00012 * of this software and associated documentation files (the "Software"), to deal 00013 * in the Software without restriction, including without limitation the rights 00014 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00015 * copies of the Software, and to permit persons to whom the Software is 00016 * furnished to do so, subject to the following conditions: 00017 * 00018 * The above copyright notice and this permission notice shall be included in 00019 * all copies or substantial portions of the Software. 00020 * 00021 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00022 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00023 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00024 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00025 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00026 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00027 * THE SOFTWARE. 00028 */ 00029 00030 #include "mbed.h" 00031 #include "AS289R2.h" 00032 00033 AS289R2::AS289R2(PinName tx, PinName rx, uint32_t baud) 00034 : 00035 _serial_p(new RawSerial(tx, rx)), 00036 _serial(*_serial_p) 00037 { 00038 _serial.baud(baud); 00039 initialize(); 00040 } 00041 00042 AS289R2::AS289R2(RawSerial &serial_obj, uint32_t baud) 00043 : 00044 _serial_p(NULL), 00045 _serial(serial_obj) 00046 { 00047 _serial.baud(baud); 00048 initialize(); 00049 } 00050 00051 AS289R2::~AS289R2() 00052 { 00053 } 00054 00055 void AS289R2::initialize(void) 00056 { 00057 _serial.putc(0x1B); 00058 _serial.putc(0x40); 00059 } 00060 00061 void AS289R2::putLineFeed(uint32_t lines) 00062 { 00063 for(uint32_t i = 0; i < lines; i++) { 00064 _serial.putc('\r'); 00065 } 00066 } 00067 00068 void AS289R2::clearBuffer(void) 00069 { 00070 _serial.putc(0x18); 00071 } 00072 00073 void AS289R2::setDoubleSizeHeight(void) 00074 { 00075 _serial.printf("\x1B\x4E\x31"); 00076 } 00077 00078 void AS289R2::clearDoubleSizeHeight(void) 00079 { 00080 _serial.printf("\x1B\x4E\x30"); 00081 } 00082 00083 void AS289R2::setDoubleSizeWidth(void) 00084 { 00085 _serial.printf("\x1B\x57\x31"); 00086 } 00087 00088 void AS289R2::clearDoubleSizeWidth(void) 00089 { 00090 _serial.printf("\x1B\x57\x30"); 00091 } 00092 00093 void AS289R2::setLargeFont(void) 00094 { 00095 _serial.printf("\x1B\x4C\x31"); 00096 } 00097 00098 void AS289R2::clearLargeFont() 00099 { 00100 _serial.printf("\x1B\x4C\x30"); 00101 } 00102 00103 void AS289R2::setANKFont(uint32_t font) 00104 { 00105 _serial.putc(0x1B); 00106 _serial.putc(0x68); 00107 _serial.putc(font); 00108 } 00109 00110 void AS289R2::setKanjiFont(uint32_t font) 00111 { 00112 _serial.putc(0x12); 00113 _serial.putc(0x53); 00114 _serial.putc(font); 00115 } 00116 00117 void AS289R2::printQRCode(uint32_t err, const char* param) 00118 { 00119 uint32_t len = strlen(param); 00120 char buf[4] = {0x1D, 0x78}; 00121 buf[2] = err; 00122 buf[3] = len; 00123 for (uint32_t i = 0; i < sizeof(buf); i++) { 00124 _serial.putc(buf[i]); 00125 } 00126 for (uint32_t i = 0; i < len; i++) { 00127 _serial.putc(param[i]); 00128 } 00129 } 00130 00131 void AS289R2::printBarCode(uint32_t code, const char* param) 00132 { 00133 char buf[4] = {0x1D, 0x6B}; 00134 buf[2] = code; 00135 buf[3] = (code & 0x0F); 00136 for (uint32_t i = 0; i < sizeof(buf); i++) { 00137 _serial.putc(buf[i]); 00138 } 00139 for (uint32_t i = 0; i < strlen(param); i++) { 00140 _serial.putc(param[i]); 00141 } 00142 _serial.putc('\0'); 00143 } 00144 00145 void AS289R2::printBitmapImage(uint32_t mode, uint16_t lines, const uint8_t * image) 00146 { 00147 char buf[3] = {0x1C, 0x2A}; 00148 buf[2] = mode; 00149 for (uint32_t i = 0; i < sizeof(buf); i++) { 00150 _serial.putc(buf[i]); 00151 } 00152 _serial.putc((lines >> 8) & 0xFF); // n1 00153 _serial.putc((lines >> 0) & 0xFF); // n2 00154 00155 if (mode == 0x61) { 00156 return; 00157 } 00158 00159 for (uint32_t i = 0; i < (48 * lines); i++) { 00160 _serial.putc(image[i]); 00161 } 00162 } 00163 00164 void AS289R2::setLineSpaceing(uint32_t space) 00165 { 00166 _serial.putc(0x1B); 00167 _serial.putc(0x33); 00168 _serial.putc(space); 00169 } 00170 00171 void AS289R2::defaultLineSpaceing() 00172 { 00173 _serial.printf("\x1B\x33\x04"); 00174 } 00175 00176 void AS289R2::setPrintDirection(uint32_t direction) 00177 { 00178 _serial.putc(0x1B); 00179 _serial.putc(0x49); 00180 _serial.putc(direction); 00181 } 00182 00183 void AS289R2::putPaperFeed(uint32_t space) 00184 { 00185 _serial.putc(0x1B); 00186 _serial.putc(0x4A); 00187 _serial.putc(space); 00188 } 00189 00190 void AS289R2::setInterCharacterSpace(uint32_t space) 00191 { 00192 _serial.putc(0x1B); 00193 _serial.putc(0x20); 00194 _serial.putc(space); 00195 } 00196 00197 void AS289R2::defaultInterCharacterSpace() 00198 { 00199 _serial.printf("\x1B\x20\x01"); 00200 } 00201 00202 void AS289R2::putPrintPosition(uint32_t position) 00203 { 00204 _serial.putc(0x1B); 00205 _serial.putc(0x6c); 00206 _serial.putc(position); 00207 } 00208 00209 void AS289R2::setScript(script_mode script) 00210 { 00211 _serial.putc(0x1B); 00212 _serial.putc(0x73); 00213 _serial.putc(script); 00214 } 00215 00216 void AS289R2::clearScript() 00217 { 00218 _serial.printf("\x1B\x73\x30"); 00219 } 00220 00221 void AS289R2::setQuadrupleSize() 00222 { 00223 _serial.printf("\x1C\x57\x31"); 00224 } 00225 00226 void AS289R2::clearQuadrupleSize() 00227 { 00228 _serial.printf("\x1C\x57\x30"); 00229 } 00230 00231 void AS289R2::setEnlargement(uint32_t width, uint32_t height) 00232 { 00233 _serial.putc(0x1C); 00234 _serial.putc(0x65); 00235 _serial.putc(width); 00236 _serial.putc(height); 00237 } 00238 00239 void AS289R2::clearEnlargement() 00240 { 00241 _serial.printf("\x1C\x65\x31\x31"); 00242 } 00243 00244 void AS289R2::setBarCodeHeight(uint32_t height) 00245 { 00246 _serial.putc(0x1D); 00247 _serial.putc(0x68); 00248 _serial.putc(height); 00249 } 00250 00251 void AS289R2::defaultBarCodeHeight() 00252 { 00253 _serial.printf("\x1D\x68\x50"); 00254 } 00255 00256 void AS289R2::setBarCodeBarSize(uint32_t narrowbar, uint32_t widebar) 00257 { 00258 _serial.putc(0x1D); 00259 _serial.putc(0x77); 00260 _serial.putc(narrowbar); 00261 _serial.putc(widebar); 00262 } 00263 00264 void AS289R2::defaultBarCodeBarSize() 00265 { 00266 _serial.printf("\x1D\x77\x02\x05"); 00267 } 00268 00269 int AS289R2::_putc(int value) 00270 { 00271 _serial.putc(value); 00272 return value; 00273 } 00274 00275 int AS289R2::_getc() 00276 { 00277 return -1; 00278 }
Generated on Thu Jul 14 2022 19:12:05 by 1.7.2