Add image printing.

Fork of AS289R2 by Toyomasa Watarai

Committer:
takehiro
Date:
Mon Feb 27 04:29:23 2017 +0000
Revision:
7:39c683fde12c
Parent:
4:a2e0373a9cd1
Update Method : printBitmapImage

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:982a7efb3ef0 1 /* AS289R2 Library, for a Thermal Printer Shield AS-289R2
MACRUM 4:a2e0373a9cd1 2 * Copyright (c) 2016, Toyomasa Watarai
MACRUM 0:982a7efb3ef0 3 *
MACRUM 0:982a7efb3ef0 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
MACRUM 0:982a7efb3ef0 5 * of this software and associated documentation files (the "Software"), to deal
MACRUM 0:982a7efb3ef0 6 * in the Software without restriction, including without limitation the rights
MACRUM 0:982a7efb3ef0 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
MACRUM 0:982a7efb3ef0 8 * copies of the Software, and to permit persons to whom the Software is
MACRUM 0:982a7efb3ef0 9 * furnished to do so, subject to the following conditions:
MACRUM 0:982a7efb3ef0 10 *
MACRUM 0:982a7efb3ef0 11 * The above copyright notice and this permission notice shall be included in
MACRUM 0:982a7efb3ef0 12 * all copies or substantial portions of the Software.
MACRUM 0:982a7efb3ef0 13 *
MACRUM 0:982a7efb3ef0 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
MACRUM 0:982a7efb3ef0 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
MACRUM 0:982a7efb3ef0 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
MACRUM 0:982a7efb3ef0 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
MACRUM 0:982a7efb3ef0 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
MACRUM 0:982a7efb3ef0 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
MACRUM 0:982a7efb3ef0 20 * THE SOFTWARE.
MACRUM 0:982a7efb3ef0 21 */
MACRUM 0:982a7efb3ef0 22
MACRUM 0:982a7efb3ef0 23 #include "mbed.h"
MACRUM 0:982a7efb3ef0 24 #include "AS289R2.h"
MACRUM 0:982a7efb3ef0 25
MACRUM 0:982a7efb3ef0 26 AS289R2::AS289R2(PinName tx, uint32_t baud)
MACRUM 0:982a7efb3ef0 27 :
MACRUM 0:982a7efb3ef0 28 _serial_p(new Serial(tx, NC)),
MACRUM 0:982a7efb3ef0 29 _serial(*_serial_p)
MACRUM 0:982a7efb3ef0 30 {
MACRUM 0:982a7efb3ef0 31 _serial.baud(baud);
MACRUM 0:982a7efb3ef0 32 initialize();
MACRUM 0:982a7efb3ef0 33 }
MACRUM 0:982a7efb3ef0 34
MACRUM 0:982a7efb3ef0 35 AS289R2::AS289R2(Serial &serial_obj, uint32_t baud)
MACRUM 0:982a7efb3ef0 36 :
MACRUM 0:982a7efb3ef0 37 _serial_p(NULL),
MACRUM 0:982a7efb3ef0 38 _serial(serial_obj)
MACRUM 0:982a7efb3ef0 39 {
MACRUM 1:ee311b8f969b 40 _serial.baud(baud);
MACRUM 0:982a7efb3ef0 41 initialize();
MACRUM 0:982a7efb3ef0 42 }
MACRUM 0:982a7efb3ef0 43
MACRUM 0:982a7efb3ef0 44 AS289R2::~AS289R2()
MACRUM 0:982a7efb3ef0 45 {
MACRUM 0:982a7efb3ef0 46 }
MACRUM 0:982a7efb3ef0 47
MACRUM 0:982a7efb3ef0 48 void AS289R2::initialize(void)
MACRUM 0:982a7efb3ef0 49 {
MACRUM 0:982a7efb3ef0 50 _serial.putc(0x1B);
MACRUM 0:982a7efb3ef0 51 _serial.putc(0x40);
MACRUM 0:982a7efb3ef0 52 }
MACRUM 0:982a7efb3ef0 53
MACRUM 0:982a7efb3ef0 54 void AS289R2::putLineFeed(uint32_t lines)
MACRUM 0:982a7efb3ef0 55 {
MACRUM 0:982a7efb3ef0 56 for(uint32_t i = 0; i < lines; i++) {
MACRUM 0:982a7efb3ef0 57 _serial.putc('\r');
MACRUM 0:982a7efb3ef0 58 }
MACRUM 0:982a7efb3ef0 59 }
MACRUM 0:982a7efb3ef0 60
MACRUM 0:982a7efb3ef0 61 void AS289R2::clearBuffer(void)
MACRUM 0:982a7efb3ef0 62 {
MACRUM 0:982a7efb3ef0 63 _serial.putc(0x18);
MACRUM 0:982a7efb3ef0 64 }
MACRUM 0:982a7efb3ef0 65
MACRUM 0:982a7efb3ef0 66 void AS289R2::setDoubleSizeHeight(void)
MACRUM 0:982a7efb3ef0 67 {
MACRUM 0:982a7efb3ef0 68 _serial.printf("\x1B\x4E\x31");
MACRUM 0:982a7efb3ef0 69 }
MACRUM 0:982a7efb3ef0 70
MACRUM 0:982a7efb3ef0 71 void AS289R2::clearDoubleSizeHeight(void)
MACRUM 0:982a7efb3ef0 72 {
MACRUM 0:982a7efb3ef0 73 _serial.printf("\x1B\x4E\x30");
MACRUM 0:982a7efb3ef0 74 }
MACRUM 0:982a7efb3ef0 75
MACRUM 0:982a7efb3ef0 76 void AS289R2::setDoubleSizeWidth(void)
MACRUM 0:982a7efb3ef0 77 {
MACRUM 0:982a7efb3ef0 78 _serial.printf("\x1B\x57\x31");
MACRUM 0:982a7efb3ef0 79 }
MACRUM 0:982a7efb3ef0 80
MACRUM 0:982a7efb3ef0 81 void AS289R2::clearDoubleSizeWidth(void)
MACRUM 0:982a7efb3ef0 82 {
MACRUM 0:982a7efb3ef0 83 _serial.printf("\x1B\x57\x30");
MACRUM 0:982a7efb3ef0 84 }
MACRUM 0:982a7efb3ef0 85
MACRUM 0:982a7efb3ef0 86 void AS289R2::setLargeFont(void)
MACRUM 0:982a7efb3ef0 87 {
MACRUM 0:982a7efb3ef0 88 _serial.printf("\x1B\x4C\x31");
MACRUM 0:982a7efb3ef0 89 }
MACRUM 0:982a7efb3ef0 90
MACRUM 0:982a7efb3ef0 91 void AS289R2::clearLargeFont()
MACRUM 0:982a7efb3ef0 92 {
MACRUM 0:982a7efb3ef0 93 _serial.printf("\x1B\x4C\x30");
MACRUM 0:982a7efb3ef0 94 }
MACRUM 0:982a7efb3ef0 95
MACRUM 0:982a7efb3ef0 96 void AS289R2::setANKFont(uint32_t font)
MACRUM 0:982a7efb3ef0 97 {
MACRUM 0:982a7efb3ef0 98 _serial.putc(0x1B);
MACRUM 0:982a7efb3ef0 99 _serial.putc(0x68);
MACRUM 0:982a7efb3ef0 100 _serial.putc(font);
MACRUM 0:982a7efb3ef0 101 }
MACRUM 0:982a7efb3ef0 102
MACRUM 0:982a7efb3ef0 103 void AS289R2::setKanjiFont(uint32_t font)
MACRUM 0:982a7efb3ef0 104 {
MACRUM 0:982a7efb3ef0 105 _serial.putc(0x12);
MACRUM 0:982a7efb3ef0 106 _serial.putc(0x53);
MACRUM 0:982a7efb3ef0 107 _serial.putc(font);
MACRUM 0:982a7efb3ef0 108 }
MACRUM 0:982a7efb3ef0 109
MACRUM 2:ce25d0949cbd 110 void AS289R2::printQRCode(uint32_t err, const char* param)
MACRUM 0:982a7efb3ef0 111 {
MACRUM 0:982a7efb3ef0 112 uint32_t len = strlen(param);
MACRUM 0:982a7efb3ef0 113 char buf[4] = {0x1D, 0x78};
MACRUM 0:982a7efb3ef0 114 buf[2] = err;
MACRUM 0:982a7efb3ef0 115 buf[3] = len;
MACRUM 0:982a7efb3ef0 116 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:982a7efb3ef0 117 _serial.putc(buf[i]);
MACRUM 0:982a7efb3ef0 118 }
MACRUM 0:982a7efb3ef0 119 for (uint32_t i = 0; i < len; i++) {
MACRUM 0:982a7efb3ef0 120 _serial.putc(param[i]);
MACRUM 0:982a7efb3ef0 121 }
MACRUM 0:982a7efb3ef0 122 }
MACRUM 0:982a7efb3ef0 123
MACRUM 2:ce25d0949cbd 124 void AS289R2::printBarCode(uint32_t code, const char* param)
MACRUM 0:982a7efb3ef0 125 {
MACRUM 0:982a7efb3ef0 126 char buf[3] = {0x1D, 0x6B};
MACRUM 0:982a7efb3ef0 127 buf[2] = code;
MACRUM 0:982a7efb3ef0 128 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:982a7efb3ef0 129 _serial.putc(buf[i]);
MACRUM 0:982a7efb3ef0 130 }
MACRUM 0:982a7efb3ef0 131 for (uint32_t i = 0; i < strlen(param); i++) {
MACRUM 0:982a7efb3ef0 132 _serial.putc(param[i]);
MACRUM 0:982a7efb3ef0 133 }
MACRUM 0:982a7efb3ef0 134 _serial.putc('\0');
MACRUM 0:982a7efb3ef0 135 }
MACRUM 0:982a7efb3ef0 136
takehiro 7:39c683fde12c 137 void AS289R2::printBitmapImage(uint32_t mode, uint16_t lines, const unsigned char * image)
MACRUM 0:982a7efb3ef0 138 {
MACRUM 0:982a7efb3ef0 139 char buf[3] = {0x1C, 0x2A};
MACRUM 0:982a7efb3ef0 140 buf[2] = mode;
MACRUM 0:982a7efb3ef0 141 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:982a7efb3ef0 142 _serial.putc(buf[i]);
MACRUM 0:982a7efb3ef0 143 }
MACRUM 0:982a7efb3ef0 144 _serial.putc((lines >> 8) & 0xFF); // n1
MACRUM 0:982a7efb3ef0 145 _serial.putc((lines >> 0) & 0xFF); // n2
MACRUM 0:982a7efb3ef0 146
MACRUM 0:982a7efb3ef0 147 if (mode == 0x61) {
MACRUM 0:982a7efb3ef0 148 return;
MACRUM 0:982a7efb3ef0 149 }
MACRUM 0:982a7efb3ef0 150
MACRUM 0:982a7efb3ef0 151 for (uint32_t i = 0; i < (48 * lines); i++) {
MACRUM 0:982a7efb3ef0 152 _serial.putc(image[i]);
MACRUM 0:982a7efb3ef0 153 }
MACRUM 0:982a7efb3ef0 154 }
MACRUM 0:982a7efb3ef0 155
MACRUM 4:a2e0373a9cd1 156 void AS289R2::setLineSpaceing(uint32_t space)
MACRUM 4:a2e0373a9cd1 157 {
MACRUM 4:a2e0373a9cd1 158 _serial.putc(0x1B);
MACRUM 4:a2e0373a9cd1 159 _serial.putc(0x33);
MACRUM 4:a2e0373a9cd1 160 _serial.putc(space);
MACRUM 4:a2e0373a9cd1 161 }
MACRUM 4:a2e0373a9cd1 162
MACRUM 4:a2e0373a9cd1 163 void AS289R2::defaultLineSpaceing()
MACRUM 4:a2e0373a9cd1 164 {
MACRUM 4:a2e0373a9cd1 165 _serial.printf("\x1B\x33\x04");
MACRUM 4:a2e0373a9cd1 166 }
MACRUM 4:a2e0373a9cd1 167
MACRUM 4:a2e0373a9cd1 168 void AS289R2::setPrintDirection(uint32_t direction)
MACRUM 4:a2e0373a9cd1 169 {
MACRUM 4:a2e0373a9cd1 170 _serial.putc(0x1B);
MACRUM 4:a2e0373a9cd1 171 _serial.putc(0x49);
MACRUM 4:a2e0373a9cd1 172 _serial.putc(direction);
MACRUM 4:a2e0373a9cd1 173 }
MACRUM 4:a2e0373a9cd1 174
MACRUM 4:a2e0373a9cd1 175 void AS289R2::putPaperFeed(uint32_t space)
MACRUM 4:a2e0373a9cd1 176 {
MACRUM 4:a2e0373a9cd1 177 _serial.putc(0x1B);
MACRUM 4:a2e0373a9cd1 178 _serial.putc(0x4A);
MACRUM 4:a2e0373a9cd1 179 _serial.putc(space);
MACRUM 4:a2e0373a9cd1 180 }
MACRUM 4:a2e0373a9cd1 181
MACRUM 4:a2e0373a9cd1 182 void AS289R2::setInterCharacterSpace(uint32_t space)
MACRUM 4:a2e0373a9cd1 183 {
MACRUM 4:a2e0373a9cd1 184 _serial.putc(0x1B);
MACRUM 4:a2e0373a9cd1 185 _serial.putc(0x20);
MACRUM 4:a2e0373a9cd1 186 _serial.putc(space);
MACRUM 4:a2e0373a9cd1 187 }
MACRUM 4:a2e0373a9cd1 188
MACRUM 4:a2e0373a9cd1 189 void AS289R2::defaultInterCharacterSpace()
MACRUM 4:a2e0373a9cd1 190 {
MACRUM 4:a2e0373a9cd1 191 _serial.printf("\x1B\x20\x01");
MACRUM 4:a2e0373a9cd1 192 }
MACRUM 4:a2e0373a9cd1 193
MACRUM 4:a2e0373a9cd1 194 void AS289R2::putPrintPosition(uint32_t position)
MACRUM 4:a2e0373a9cd1 195 {
MACRUM 4:a2e0373a9cd1 196 _serial.putc(0x1B);
MACRUM 4:a2e0373a9cd1 197 _serial.putc(0x6c);
MACRUM 4:a2e0373a9cd1 198 _serial.putc(position);
MACRUM 4:a2e0373a9cd1 199 }
MACRUM 4:a2e0373a9cd1 200
MACRUM 4:a2e0373a9cd1 201 void AS289R2::setScript(uint32_t script)
MACRUM 4:a2e0373a9cd1 202 {
MACRUM 4:a2e0373a9cd1 203 _serial.putc(0x1B);
MACRUM 4:a2e0373a9cd1 204 _serial.putc(0x73);
MACRUM 4:a2e0373a9cd1 205 _serial.putc(script);
MACRUM 4:a2e0373a9cd1 206 }
MACRUM 4:a2e0373a9cd1 207
MACRUM 4:a2e0373a9cd1 208 void AS289R2::clearScript()
MACRUM 4:a2e0373a9cd1 209 {
MACRUM 4:a2e0373a9cd1 210 _serial.printf("\x1B\x73\x30");
MACRUM 4:a2e0373a9cd1 211 }
MACRUM 4:a2e0373a9cd1 212
MACRUM 4:a2e0373a9cd1 213 void AS289R2::setQuadrupleSize()
MACRUM 4:a2e0373a9cd1 214 {
MACRUM 4:a2e0373a9cd1 215 _serial.printf("\x1C\x57\x31");
MACRUM 4:a2e0373a9cd1 216 }
MACRUM 4:a2e0373a9cd1 217
MACRUM 4:a2e0373a9cd1 218 void AS289R2::clearQuadrupleSize()
MACRUM 4:a2e0373a9cd1 219 {
MACRUM 4:a2e0373a9cd1 220 _serial.printf("\x1C\x57\x30");
MACRUM 4:a2e0373a9cd1 221 }
MACRUM 4:a2e0373a9cd1 222
MACRUM 4:a2e0373a9cd1 223 void AS289R2::setEnlargement(uint32_t width, uint32_t height)
MACRUM 4:a2e0373a9cd1 224 {
MACRUM 4:a2e0373a9cd1 225 _serial.putc(0x1C);
MACRUM 4:a2e0373a9cd1 226 _serial.putc(0x65);
MACRUM 4:a2e0373a9cd1 227 _serial.putc(width);
MACRUM 4:a2e0373a9cd1 228 _serial.putc(height);
MACRUM 4:a2e0373a9cd1 229 }
MACRUM 4:a2e0373a9cd1 230
MACRUM 4:a2e0373a9cd1 231 void AS289R2::clearEnlargement()
MACRUM 4:a2e0373a9cd1 232 {
MACRUM 4:a2e0373a9cd1 233 _serial.printf("\x1C\x65\x31\x31");
MACRUM 4:a2e0373a9cd1 234 }
MACRUM 4:a2e0373a9cd1 235
MACRUM 4:a2e0373a9cd1 236 void AS289R2::setBarCodeHeight(uint32_t height)
MACRUM 4:a2e0373a9cd1 237 {
MACRUM 4:a2e0373a9cd1 238 _serial.putc(0x1D);
MACRUM 4:a2e0373a9cd1 239 _serial.putc(0x68);
MACRUM 4:a2e0373a9cd1 240 _serial.putc(height);
MACRUM 4:a2e0373a9cd1 241 }
MACRUM 4:a2e0373a9cd1 242
MACRUM 4:a2e0373a9cd1 243 void AS289R2::defaultBarCodeHeight()
MACRUM 4:a2e0373a9cd1 244 {
MACRUM 4:a2e0373a9cd1 245 _serial.printf("\x1D\x68\x50");
MACRUM 4:a2e0373a9cd1 246 }
MACRUM 4:a2e0373a9cd1 247
MACRUM 4:a2e0373a9cd1 248 void AS289R2::setBarCodeBarSize(uint32_t narrowbar, uint32_t widebar)
MACRUM 4:a2e0373a9cd1 249 {
MACRUM 4:a2e0373a9cd1 250 _serial.putc(0x1D);
MACRUM 4:a2e0373a9cd1 251 _serial.putc(0x77);
MACRUM 4:a2e0373a9cd1 252 _serial.putc(narrowbar);
MACRUM 4:a2e0373a9cd1 253 _serial.putc(widebar);
MACRUM 4:a2e0373a9cd1 254 }
MACRUM 4:a2e0373a9cd1 255
MACRUM 4:a2e0373a9cd1 256 void AS289R2::defaultBarCodeBarSize()
MACRUM 4:a2e0373a9cd1 257 {
MACRUM 4:a2e0373a9cd1 258 _serial.printf("\x1D\x77\x02\x05");
MACRUM 4:a2e0373a9cd1 259 }
MACRUM 4:a2e0373a9cd1 260
MACRUM 0:982a7efb3ef0 261 int AS289R2::_putc(int value)
MACRUM 0:982a7efb3ef0 262 {
MACRUM 0:982a7efb3ef0 263 _serial.putc(value);
MACRUM 0:982a7efb3ef0 264 return value;
MACRUM 0:982a7efb3ef0 265 }
MACRUM 0:982a7efb3ef0 266
MACRUM 0:982a7efb3ef0 267 int AS289R2::_getc()
MACRUM 0:982a7efb3ef0 268 {
MACRUM 0:982a7efb3ef0 269 return -1;
MACRUM 0:982a7efb3ef0 270 }