Add image printing.

Fork of AS289R2 by Toyomasa Watarai

Committer:
takehiro
Date:
Mon Feb 27 04:29:23 2017 +0000
Revision:
7:39c683fde12c
Parent:
6:6aac36a293c7
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 4:a2e0373a9cd1 22
MACRUM 0:982a7efb3ef0 23 #ifndef MBED_AS289R2_H
MACRUM 0:982a7efb3ef0 24 #define MBED_AS289R2_H
MACRUM 0:982a7efb3ef0 25
MACRUM 0:982a7efb3ef0 26 #include "mbed.h"
MACRUM 0:982a7efb3ef0 27
MACRUM 3:f3dfeb7ccb22 28 #if defined(__CC_ARM)
MACRUM 0:982a7efb3ef0 29 // To avoid "invalid multibyte character sequence" warning
MACRUM 0:982a7efb3ef0 30 #pragma diag_suppress 870
MACRUM 3:f3dfeb7ccb22 31 #endif
MACRUM 0:982a7efb3ef0 32
MACRUM 0:982a7efb3ef0 33 /** A thermal printer interface for driving AS-289R2 thermal printer shield
MACRUM 0:982a7efb3ef0 34 *
MACRUM 0:982a7efb3ef0 35 * @code
MACRUM 0:982a7efb3ef0 36 * #include "mbed.h"
MACRUM 0:982a7efb3ef0 37 * #include "AS829R2.h"
MACRUM 4:a2e0373a9cd1 38 *
MACRUM 5:fa3d63a975d9 39 * Serial pc(USBTX, USBRX);
MACRUM 0:982a7efb3ef0 40 * AS829R2 tp(D1); // tx, 9600bps
MACRUM 4:a2e0373a9cd1 41 *
MACRUM 6:6aac36a293c7 42 * int main()
MACRUM 6:6aac36a293c7 43 * {
MACRUM 6:6aac36a293c7 44 * tp.initialize();
MACRUM 6:6aac36a293c7 45 * tp.putLineFeed(2);
MACRUM 5:fa3d63a975d9 46 *
MACRUM 6:6aac36a293c7 47 * tp.printf("** Thermal Printer Shield **\r\r");
MACRUM 5:fa3d63a975d9 48 *
MACRUM 6:6aac36a293c7 49 * tp.setDoubleSizeWidth();
MACRUM 6:6aac36a293c7 50 * tp.printf(" AS-289R2\r\r");
MACRUM 6:6aac36a293c7 51 * tp.clearDoubleSizeWidth();
MACRUM 5:fa3d63a975d9 52 *
MACRUM 6:6aac36a293c7 53 * tp.printf("日本語文字列の印字テスト:24x24\r");
MACRUM 6:6aac36a293c7 54 * tp.setKanjiFont(AS289R2::KANJI_16x16);
MACRUM 6:6aac36a293c7 55 * tp.setANKFont(AS289R2::ANK_8x16);
MACRUM 6:6aac36a293c7 56 * tp.printf("日本語文字列の印字テスト:16x16\r\r");
MACRUM 5:fa3d63a975d9 57 *
MACRUM 6:6aac36a293c7 58 * tp.setKanjiFont(AS289R2::KANJI_DEFAULT);
MACRUM 6:6aac36a293c7 59 * tp.setANKFont(AS289R2::ANK_DEFAULT);
MACRUM 6:6aac36a293c7 60 * tp.setDoubleSizeWidth();
MACRUM 6:6aac36a293c7 61 * tp.printf("ABCDEFG 0123456789\r");
MACRUM 6:6aac36a293c7 62 * tp.clearDoubleSizeWidth();
MACRUM 5:fa3d63a975d9 63 *
MACRUM 6:6aac36a293c7 64 * tp.setDoubleSizeHeight();
MACRUM 6:6aac36a293c7 65 * tp.printf("ABCDEFG 0123456789\r");
MACRUM 6:6aac36a293c7 66 * tp.clearDoubleSizeHeight();
MACRUM 5:fa3d63a975d9 67 *
MACRUM 6:6aac36a293c7 68 * pc.printf("AS-289R2 thermal printer shield test\n\n");
MACRUM 6:6aac36a293c7 69 * while(1) {
MACRUM 6:6aac36a293c7 70 * if (pc.readable()) {
MACRUM 6:6aac36a293c7 71 * int c = pc.getc();
MACRUM 6:6aac36a293c7 72 * pc.putc(c);
MACRUM 6:6aac36a293c7 73 * tp.putc(c);
MACRUM 6:6aac36a293c7 74 * }
MACRUM 6:6aac36a293c7 75 * }
MACRUM 6:6aac36a293c7 76 * }
MACRUM 6:6aac36a293c7 77 *
MACRUM 0:982a7efb3ef0 78 * @endcode
MACRUM 0:982a7efb3ef0 79 */
MACRUM 0:982a7efb3ef0 80 class AS289R2 : public Stream
MACRUM 0:982a7efb3ef0 81 {
MACRUM 0:982a7efb3ef0 82 public:
MACRUM 0:982a7efb3ef0 83
MACRUM 0:982a7efb3ef0 84 enum Kanji_font_size {
MACRUM 0:982a7efb3ef0 85 KANJI_24x24 = 0x30,
MACRUM 0:982a7efb3ef0 86 KANJI_16x16,
MACRUM 0:982a7efb3ef0 87 KANJI_DEFAULT = KANJI_24x24
MACRUM 0:982a7efb3ef0 88 };
MACRUM 0:982a7efb3ef0 89
MACRUM 0:982a7efb3ef0 90 enum ANK_font_size {
MACRUM 0:982a7efb3ef0 91 ANK_8x16 = 0x30,
MACRUM 0:982a7efb3ef0 92 ANK_12x24,
MACRUM 0:982a7efb3ef0 93 ANK_16x16,
MACRUM 0:982a7efb3ef0 94 ANK_24x24,
MACRUM 0:982a7efb3ef0 95 ANK_DEFAULT = ANK_12x24
MACRUM 0:982a7efb3ef0 96 };
MACRUM 0:982a7efb3ef0 97
MACRUM 0:982a7efb3ef0 98 enum QRcode_error_level {
MACRUM 0:982a7efb3ef0 99 QR_ERR_LVL_L = 0x4C,
MACRUM 0:982a7efb3ef0 100 QR_ERR_LVL_M = 0x4D,
MACRUM 0:982a7efb3ef0 101 QR_ERR_LVL_Q = 0x51,
MACRUM 0:982a7efb3ef0 102 QR_ERR_LVL_H = 0x48
MACRUM 0:982a7efb3ef0 103 };
MACRUM 0:982a7efb3ef0 104
MACRUM 0:982a7efb3ef0 105 enum Barcode_mode {
MACRUM 0:982a7efb3ef0 106 BCODE_UPC_A = 0x30,
MACRUM 0:982a7efb3ef0 107 _UNUSED_,
MACRUM 0:982a7efb3ef0 108 BCODE_JAN13,
MACRUM 0:982a7efb3ef0 109 BCODE_JAN8,
MACRUM 0:982a7efb3ef0 110 BCODE_CODE39,
MACRUM 0:982a7efb3ef0 111 BCODE_ITF,
MACRUM 0:982a7efb3ef0 112 BCODE_CODABAR
MACRUM 0:982a7efb3ef0 113 };
MACRUM 0:982a7efb3ef0 114
MACRUM 0:982a7efb3ef0 115 /** Create a AS289R2 instance
MACRUM 0:982a7efb3ef0 116 * which is connected to specified Serial pin with specified baud rate
MACRUM 0:982a7efb3ef0 117 *
MACRUM 0:982a7efb3ef0 118 * @param tx Serial TX pin
MACRUM 0:982a7efb3ef0 119 * @param baud (option) serial baud rate (default: 9600bps)
MACRUM 0:982a7efb3ef0 120 */
MACRUM 0:982a7efb3ef0 121 AS289R2(PinName tx, uint32_t baud = 9600);
MACRUM 0:982a7efb3ef0 122
MACRUM 0:982a7efb3ef0 123 /** Create a AS289R2 instance
MACRUM 0:982a7efb3ef0 124 * which is connected to specified Serial instance with specified baud rate
MACRUM 0:982a7efb3ef0 125 *
MACRUM 0:982a7efb3ef0 126 * @param serial_obj Serial object (instance)
MACRUM 0:982a7efb3ef0 127 * @param baud (option) serial baud rate (default: 9600bps)
MACRUM 0:982a7efb3ef0 128 */
MACRUM 0:982a7efb3ef0 129 AS289R2(Serial &serial_obj, uint32_t baud = 9600);
MACRUM 0:982a7efb3ef0 130
MACRUM 0:982a7efb3ef0 131 /** Destructor of AS289R2
MACRUM 0:982a7efb3ef0 132 */
MACRUM 0:982a7efb3ef0 133 virtual ~AS289R2();
MACRUM 0:982a7efb3ef0 134
MACRUM 0:982a7efb3ef0 135 /** Initializa AS289R2
MACRUM 0:982a7efb3ef0 136 *
MACRUM 0:982a7efb3ef0 137 * Issues initialize command for AS-289R2
MACRUM 0:982a7efb3ef0 138 *
MACRUM 0:982a7efb3ef0 139 */
MACRUM 0:982a7efb3ef0 140 void initialize(void);
MACRUM 0:982a7efb3ef0 141
MACRUM 0:982a7efb3ef0 142 /** Send line feed code
MACRUM 0:982a7efb3ef0 143 * which is connected to specified Serial pin with specified baud rate
MACRUM 0:982a7efb3ef0 144 *
MACRUM 0:982a7efb3ef0 145 * @param lines Number of line feed
MACRUM 0:982a7efb3ef0 146 */
MACRUM 0:982a7efb3ef0 147 void putLineFeed(uint32_t lines);
MACRUM 0:982a7efb3ef0 148
MACRUM 0:982a7efb3ef0 149 /** Clear image buffer of the AS-289R2
MACRUM 0:982a7efb3ef0 150 *
MACRUM 0:982a7efb3ef0 151 */
MACRUM 0:982a7efb3ef0 152 void clearBuffer(void);
MACRUM 4:a2e0373a9cd1 153
MACRUM 0:982a7efb3ef0 154 /** Set double height size font
MACRUM 0:982a7efb3ef0 155 *
MACRUM 0:982a7efb3ef0 156 */
MACRUM 0:982a7efb3ef0 157 void setDoubleSizeHeight(void);
MACRUM 0:982a7efb3ef0 158
MACRUM 0:982a7efb3ef0 159 /** Set normal height size font
MACRUM 0:982a7efb3ef0 160 *
MACRUM 0:982a7efb3ef0 161 */
MACRUM 0:982a7efb3ef0 162 void clearDoubleSizeHeight(void);
MACRUM 0:982a7efb3ef0 163
MACRUM 0:982a7efb3ef0 164 /** Set double width size font
MACRUM 0:982a7efb3ef0 165 *
MACRUM 0:982a7efb3ef0 166 */
MACRUM 0:982a7efb3ef0 167 void setDoubleSizeWidth(void);
MACRUM 0:982a7efb3ef0 168
MACRUM 0:982a7efb3ef0 169 /** Set normal width size font
MACRUM 0:982a7efb3ef0 170 *
MACRUM 0:982a7efb3ef0 171 */
MACRUM 0:982a7efb3ef0 172 void clearDoubleSizeWidth(void);
MACRUM 0:982a7efb3ef0 173
MACRUM 0:982a7efb3ef0 174 /** Set large size font (48x96)
MACRUM 0:982a7efb3ef0 175 *
MACRUM 0:982a7efb3ef0 176 */
MACRUM 0:982a7efb3ef0 177 void setLargeFont(void);
MACRUM 0:982a7efb3ef0 178
MACRUM 0:982a7efb3ef0 179 /** Set normal size font
MACRUM 0:982a7efb3ef0 180 *
MACRUM 0:982a7efb3ef0 181 */
MACRUM 0:982a7efb3ef0 182 void clearLargeFont(void);
MACRUM 0:982a7efb3ef0 183
MACRUM 0:982a7efb3ef0 184 /** Set ANK font
MACRUM 0:982a7efb3ef0 185 *
MACRUM 0:982a7efb3ef0 186 * @param font ANK font e.g. AS289R2::ANK_8x16
MACRUM 0:982a7efb3ef0 187 */
MACRUM 0:982a7efb3ef0 188 void setANKFont(uint32_t font);
MACRUM 0:982a7efb3ef0 189
MACRUM 0:982a7efb3ef0 190 /** Set Kanji font size
MACRUM 0:982a7efb3ef0 191 *
MACRUM 0:982a7efb3ef0 192 * @param font Kanji font e.g. AS289R2::KANJI_16x16
MACRUM 0:982a7efb3ef0 193 */
MACRUM 0:982a7efb3ef0 194 void setKanjiFont(uint32_t font);
MACRUM 0:982a7efb3ef0 195
MACRUM 0:982a7efb3ef0 196 /** Print QR code
MACRUM 0:982a7efb3ef0 197 *
MACRUM 0:982a7efb3ef0 198 * @param err QR code error correction level e.g. AS289R2::QR_ERR_LVL_M
MACRUM 0:982a7efb3ef0 199 * @param buf Data to be printed
MACRUM 0:982a7efb3ef0 200 */
MACRUM 2:ce25d0949cbd 201 void printQRCode(uint32_t err, const char* buf);
MACRUM 0:982a7efb3ef0 202
MACRUM 0:982a7efb3ef0 203 /** Print Bar code
MACRUM 0:982a7efb3ef0 204 *
MACRUM 0:982a7efb3ef0 205 * @param code Type of Bar code e.g. AS289R2::JAN13
MACRUM 0:982a7efb3ef0 206 * @param buf Data to be printed
MACRUM 0:982a7efb3ef0 207 */
MACRUM 2:ce25d0949cbd 208 void printBarCode(uint32_t code, const char* param);
MACRUM 0:982a7efb3ef0 209
MACRUM 0:982a7efb3ef0 210 /** Print bitmap image
MACRUM 0:982a7efb3ef0 211 *
MACRUM 0:982a7efb3ef0 212 * @param cmd Type of operation mode e.g. 0x61
MACRUM 0:982a7efb3ef0 213 * @param lines Number of print line
MACRUM 0:982a7efb3ef0 214 * @param image Data to be printed
MACRUM 0:982a7efb3ef0 215 */
takehiro 7:39c683fde12c 216 void printBitmapImage(uint32_t cmd, uint16_t lines, const unsigned char * image);
MACRUM 0:982a7efb3ef0 217
MACRUM 4:a2e0373a9cd1 218 /** Set Line Spaceing
MACRUM 4:a2e0373a9cd1 219 *
MACRUM 4:a2e0373a9cd1 220 * @param space line spacing
MACRUM 4:a2e0373a9cd1 221 */
MACRUM 4:a2e0373a9cd1 222 void setLineSpaceing(uint32_t space);
MACRUM 4:a2e0373a9cd1 223
MACRUM 4:a2e0373a9cd1 224 /** Set as default Line Spaceing
MACRUM 4:a2e0373a9cd1 225 *
MACRUM 4:a2e0373a9cd1 226 */
MACRUM 4:a2e0373a9cd1 227 void defaultLineSpaceing(void);
MACRUM 4:a2e0373a9cd1 228
MACRUM 4:a2e0373a9cd1 229 /** Set Print Direction
MACRUM 4:a2e0373a9cd1 230 *
MACRUM 4:a2e0373a9cd1 231 * @param direction Print direction
MACRUM 4:a2e0373a9cd1 232 */
MACRUM 4:a2e0373a9cd1 233 void setPrintDirection(uint32_t direction);
MACRUM 4:a2e0373a9cd1 234
MACRUM 4:a2e0373a9cd1 235 /** Send feed code
MACRUM 4:a2e0373a9cd1 236 *
MACRUM 4:a2e0373a9cd1 237 * @param space Paper feed
MACRUM 4:a2e0373a9cd1 238 */
MACRUM 4:a2e0373a9cd1 239 void putPaperFeed(uint32_t space);
MACRUM 4:a2e0373a9cd1 240
MACRUM 4:a2e0373a9cd1 241 /** Set Inter Character Space
MACRUM 4:a2e0373a9cd1 242 *
MACRUM 4:a2e0373a9cd1 243 * @param space inter-character space
MACRUM 4:a2e0373a9cd1 244 */
MACRUM 4:a2e0373a9cd1 245 void setInterCharacterSpace(uint32_t space);
MACRUM 4:a2e0373a9cd1 246
MACRUM 4:a2e0373a9cd1 247 /** Set as default Inter Character Space
MACRUM 4:a2e0373a9cd1 248 *
MACRUM 4:a2e0373a9cd1 249 */
MACRUM 4:a2e0373a9cd1 250 void defaultInterCharacterSpace(void);
MACRUM 4:a2e0373a9cd1 251
MACRUM 4:a2e0373a9cd1 252 /** Send Print Position
MACRUM 4:a2e0373a9cd1 253 *
MACRUM 4:a2e0373a9cd1 254 * @param position Print position
MACRUM 4:a2e0373a9cd1 255 */
MACRUM 4:a2e0373a9cd1 256 void putPrintPosition(uint32_t position);
MACRUM 4:a2e0373a9cd1 257
MACRUM 4:a2e0373a9cd1 258 /** Set Script
MACRUM 4:a2e0373a9cd1 259 *
MACRUM 4:a2e0373a9cd1 260 * @param script Superscript and Subsprict
MACRUM 4:a2e0373a9cd1 261 */
MACRUM 4:a2e0373a9cd1 262 void setScript(uint32_t script);
MACRUM 4:a2e0373a9cd1 263
MACRUM 4:a2e0373a9cd1 264 /** Clear Script
MACRUM 4:a2e0373a9cd1 265 *
MACRUM 4:a2e0373a9cd1 266 */
MACRUM 4:a2e0373a9cd1 267 void clearScript(void);
MACRUM 4:a2e0373a9cd1 268
MACRUM 4:a2e0373a9cd1 269 /** Set Quadruple size
MACRUM 4:a2e0373a9cd1 270 *
MACRUM 4:a2e0373a9cd1 271 */
MACRUM 4:a2e0373a9cd1 272 void setQuadrupleSize(void);
MACRUM 4:a2e0373a9cd1 273
MACRUM 4:a2e0373a9cd1 274 /** Clear Quadruple size
MACRUM 4:a2e0373a9cd1 275 *
MACRUM 4:a2e0373a9cd1 276 */
MACRUM 4:a2e0373a9cd1 277 void clearQuadrupleSize(void);
MACRUM 4:a2e0373a9cd1 278
MACRUM 4:a2e0373a9cd1 279 /** Set Enlargement size
MACRUM 4:a2e0373a9cd1 280 *
MACRUM 4:a2e0373a9cd1 281 * @param width enlargement
MACRUM 4:a2e0373a9cd1 282 * @param height enlargement
MACRUM 4:a2e0373a9cd1 283 */
MACRUM 4:a2e0373a9cd1 284 void setEnlargement(uint32_t width, uint32_t height);
MACRUM 4:a2e0373a9cd1 285
MACRUM 4:a2e0373a9cd1 286 /** Clear Enlargement size
MACRUM 4:a2e0373a9cd1 287 *
MACRUM 4:a2e0373a9cd1 288 */
MACRUM 4:a2e0373a9cd1 289 void clearEnlargement(void);
MACRUM 4:a2e0373a9cd1 290
MACRUM 4:a2e0373a9cd1 291 /** Set BarCode Height size
MACRUM 4:a2e0373a9cd1 292 *
MACRUM 4:a2e0373a9cd1 293 * @param height Bar height
MACRUM 4:a2e0373a9cd1 294 */
MACRUM 4:a2e0373a9cd1 295 void setBarCodeHeight(uint32_t height);
MACRUM 4:a2e0373a9cd1 296
MACRUM 4:a2e0373a9cd1 297 /** Set as default BarCode Height size
MACRUM 4:a2e0373a9cd1 298 *
MACRUM 4:a2e0373a9cd1 299 */
MACRUM 4:a2e0373a9cd1 300 void defaultBarCodeHeight(void);
MACRUM 4:a2e0373a9cd1 301
MACRUM 4:a2e0373a9cd1 302 /** Set BarCode Bar size
MACRUM 4:a2e0373a9cd1 303 *
MACRUM 4:a2e0373a9cd1 304 * @param narrowbar narrow bars size
MACRUM 4:a2e0373a9cd1 305 * @param widebar wide bars size
MACRUM 4:a2e0373a9cd1 306 */
MACRUM 4:a2e0373a9cd1 307 void setBarCodeBarSize(uint32_t narrowbar, uint32_t widebar);
MACRUM 4:a2e0373a9cd1 308
MACRUM 4:a2e0373a9cd1 309 /** Set as default BarCode Bar size
MACRUM 4:a2e0373a9cd1 310 *
takehiro 7:39c683fde12c 311 * @brief Reset narrow-bar and wide-bar to its default value
MACRUM 4:a2e0373a9cd1 312 */
MACRUM 4:a2e0373a9cd1 313 void defaultBarCodeBarSize(void);
MACRUM 4:a2e0373a9cd1 314
MACRUM 0:982a7efb3ef0 315 private:
MACRUM 0:982a7efb3ef0 316 Serial *_serial_p;
MACRUM 0:982a7efb3ef0 317 Serial &_serial;
MACRUM 0:982a7efb3ef0 318
MACRUM 0:982a7efb3ef0 319 protected:
MACRUM 0:982a7efb3ef0 320 // Stream implementation functions
MACRUM 0:982a7efb3ef0 321 virtual int _putc(int value);
MACRUM 0:982a7efb3ef0 322 virtual int _getc();
MACRUM 0:982a7efb3ef0 323 };
MACRUM 0:982a7efb3ef0 324
MACRUM 0:982a7efb3ef0 325 #endif