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

Committer:
MACRUM
Date:
Sun Sep 04 02:27:12 2016 +0000
Revision:
0:982a7efb3ef0
Child:
2:ce25d0949cbd
Initial commit

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 0:982a7efb3ef0 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 #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 0:982a7efb3ef0 28 // To avoid "invalid multibyte character sequence" warning
MACRUM 0:982a7efb3ef0 29 #pragma diag_suppress 870
MACRUM 0:982a7efb3ef0 30
MACRUM 0:982a7efb3ef0 31 /** A thermal printer interface for driving AS-289R2 thermal printer shield
MACRUM 0:982a7efb3ef0 32 *
MACRUM 0:982a7efb3ef0 33 * @code
MACRUM 0:982a7efb3ef0 34 * #include "mbed.h"
MACRUM 0:982a7efb3ef0 35 * #include "AS829R2.h"
MACRUM 0:982a7efb3ef0 36 *
MACRUM 0:982a7efb3ef0 37 * AS829R2 tp(D1); // tx, 9600bps
MACRUM 0:982a7efb3ef0 38 *
MACRUM 0:982a7efb3ef0 39 * int main() {
MACRUM 0:982a7efb3ef0 40 * tp.printf("Hello World!\r");
MACRUM 0:982a7efb3ef0 41 * }
MACRUM 0:982a7efb3ef0 42 * @endcode
MACRUM 0:982a7efb3ef0 43 */
MACRUM 0:982a7efb3ef0 44 class AS289R2 : public Stream
MACRUM 0:982a7efb3ef0 45 {
MACRUM 0:982a7efb3ef0 46 public:
MACRUM 0:982a7efb3ef0 47
MACRUM 0:982a7efb3ef0 48 enum Kanji_font_size {
MACRUM 0:982a7efb3ef0 49 KANJI_24x24 = 0x30,
MACRUM 0:982a7efb3ef0 50 KANJI_16x16,
MACRUM 0:982a7efb3ef0 51 KANJI_DEFAULT = KANJI_24x24
MACRUM 0:982a7efb3ef0 52 };
MACRUM 0:982a7efb3ef0 53
MACRUM 0:982a7efb3ef0 54 enum ANK_font_size {
MACRUM 0:982a7efb3ef0 55 ANK_8x16 = 0x30,
MACRUM 0:982a7efb3ef0 56 ANK_12x24,
MACRUM 0:982a7efb3ef0 57 ANK_16x16,
MACRUM 0:982a7efb3ef0 58 ANK_24x24,
MACRUM 0:982a7efb3ef0 59 ANK_DEFAULT = ANK_12x24
MACRUM 0:982a7efb3ef0 60 };
MACRUM 0:982a7efb3ef0 61
MACRUM 0:982a7efb3ef0 62 enum QRcode_error_level {
MACRUM 0:982a7efb3ef0 63 QR_ERR_LVL_L = 0x4C,
MACRUM 0:982a7efb3ef0 64 QR_ERR_LVL_M = 0x4D,
MACRUM 0:982a7efb3ef0 65 QR_ERR_LVL_Q = 0x51,
MACRUM 0:982a7efb3ef0 66 QR_ERR_LVL_H = 0x48
MACRUM 0:982a7efb3ef0 67 };
MACRUM 0:982a7efb3ef0 68
MACRUM 0:982a7efb3ef0 69 enum Barcode_mode {
MACRUM 0:982a7efb3ef0 70 BCODE_UPC_A = 0x30,
MACRUM 0:982a7efb3ef0 71 _UNUSED_,
MACRUM 0:982a7efb3ef0 72 BCODE_JAN13,
MACRUM 0:982a7efb3ef0 73 BCODE_JAN8,
MACRUM 0:982a7efb3ef0 74 BCODE_CODE39,
MACRUM 0:982a7efb3ef0 75 BCODE_ITF,
MACRUM 0:982a7efb3ef0 76 BCODE_CODABAR
MACRUM 0:982a7efb3ef0 77 };
MACRUM 0:982a7efb3ef0 78
MACRUM 0:982a7efb3ef0 79 /** Create a AS289R2 instance
MACRUM 0:982a7efb3ef0 80 * which is connected to specified Serial pin with specified baud rate
MACRUM 0:982a7efb3ef0 81 *
MACRUM 0:982a7efb3ef0 82 * @param tx Serial TX pin
MACRUM 0:982a7efb3ef0 83 * @param baud (option) serial baud rate (default: 9600bps)
MACRUM 0:982a7efb3ef0 84 */
MACRUM 0:982a7efb3ef0 85 AS289R2(PinName tx, uint32_t baud = 9600);
MACRUM 0:982a7efb3ef0 86
MACRUM 0:982a7efb3ef0 87 /** Create a AS289R2 instance
MACRUM 0:982a7efb3ef0 88 * which is connected to specified Serial instance with specified baud rate
MACRUM 0:982a7efb3ef0 89 *
MACRUM 0:982a7efb3ef0 90 * @param serial_obj Serial object (instance)
MACRUM 0:982a7efb3ef0 91 * @param baud (option) serial baud rate (default: 9600bps)
MACRUM 0:982a7efb3ef0 92 */
MACRUM 0:982a7efb3ef0 93 AS289R2(Serial &serial_obj, uint32_t baud = 9600);
MACRUM 0:982a7efb3ef0 94
MACRUM 0:982a7efb3ef0 95 /** Destructor of AS289R2
MACRUM 0:982a7efb3ef0 96 */
MACRUM 0:982a7efb3ef0 97 virtual ~AS289R2();
MACRUM 0:982a7efb3ef0 98
MACRUM 0:982a7efb3ef0 99 /** Initializa AS289R2
MACRUM 0:982a7efb3ef0 100 *
MACRUM 0:982a7efb3ef0 101 * Issues initialize command for AS-289R2
MACRUM 0:982a7efb3ef0 102 *
MACRUM 0:982a7efb3ef0 103 */
MACRUM 0:982a7efb3ef0 104 void initialize(void);
MACRUM 0:982a7efb3ef0 105
MACRUM 0:982a7efb3ef0 106 /** Send line feed code
MACRUM 0:982a7efb3ef0 107 * which is connected to specified Serial pin with specified baud rate
MACRUM 0:982a7efb3ef0 108 *
MACRUM 0:982a7efb3ef0 109 * @param lines Number of line feed
MACRUM 0:982a7efb3ef0 110 */
MACRUM 0:982a7efb3ef0 111 void putLineFeed(uint32_t lines);
MACRUM 0:982a7efb3ef0 112
MACRUM 0:982a7efb3ef0 113 /** Clear image buffer of the AS-289R2
MACRUM 0:982a7efb3ef0 114 *
MACRUM 0:982a7efb3ef0 115 */
MACRUM 0:982a7efb3ef0 116 void clearBuffer(void);
MACRUM 0:982a7efb3ef0 117
MACRUM 0:982a7efb3ef0 118 /** Set double height size font
MACRUM 0:982a7efb3ef0 119 *
MACRUM 0:982a7efb3ef0 120 */
MACRUM 0:982a7efb3ef0 121 void setDoubleSizeHeight(void);
MACRUM 0:982a7efb3ef0 122
MACRUM 0:982a7efb3ef0 123 /** Set normal height size font
MACRUM 0:982a7efb3ef0 124 *
MACRUM 0:982a7efb3ef0 125 */
MACRUM 0:982a7efb3ef0 126 void clearDoubleSizeHeight(void);
MACRUM 0:982a7efb3ef0 127
MACRUM 0:982a7efb3ef0 128 /** Set double width size font
MACRUM 0:982a7efb3ef0 129 *
MACRUM 0:982a7efb3ef0 130 */
MACRUM 0:982a7efb3ef0 131 void setDoubleSizeWidth(void);
MACRUM 0:982a7efb3ef0 132
MACRUM 0:982a7efb3ef0 133 /** Set normal width size font
MACRUM 0:982a7efb3ef0 134 *
MACRUM 0:982a7efb3ef0 135 */
MACRUM 0:982a7efb3ef0 136 void clearDoubleSizeWidth(void);
MACRUM 0:982a7efb3ef0 137
MACRUM 0:982a7efb3ef0 138 /** Set large size font (48x96)
MACRUM 0:982a7efb3ef0 139 *
MACRUM 0:982a7efb3ef0 140 */
MACRUM 0:982a7efb3ef0 141 void setLargeFont(void);
MACRUM 0:982a7efb3ef0 142
MACRUM 0:982a7efb3ef0 143 /** Set normal size font
MACRUM 0:982a7efb3ef0 144 *
MACRUM 0:982a7efb3ef0 145 */
MACRUM 0:982a7efb3ef0 146 void clearLargeFont(void);
MACRUM 0:982a7efb3ef0 147
MACRUM 0:982a7efb3ef0 148 /** Set ANK font
MACRUM 0:982a7efb3ef0 149 *
MACRUM 0:982a7efb3ef0 150 * @param font ANK font e.g. AS289R2::ANK_8x16
MACRUM 0:982a7efb3ef0 151 */
MACRUM 0:982a7efb3ef0 152 void setANKFont(uint32_t font);
MACRUM 0:982a7efb3ef0 153
MACRUM 0:982a7efb3ef0 154 /** Set Kanji font size
MACRUM 0:982a7efb3ef0 155 *
MACRUM 0:982a7efb3ef0 156 * @param font Kanji font e.g. AS289R2::KANJI_16x16
MACRUM 0:982a7efb3ef0 157 */
MACRUM 0:982a7efb3ef0 158 void setKanjiFont(uint32_t font);
MACRUM 0:982a7efb3ef0 159
MACRUM 0:982a7efb3ef0 160 /** Print QR code
MACRUM 0:982a7efb3ef0 161 *
MACRUM 0:982a7efb3ef0 162 * @param err QR code error correction level e.g. AS289R2::QR_ERR_LVL_M
MACRUM 0:982a7efb3ef0 163 * @param buf Data to be printed
MACRUM 0:982a7efb3ef0 164 */
MACRUM 0:982a7efb3ef0 165 void printQRCode(uint32_t err, char* buf);
MACRUM 0:982a7efb3ef0 166
MACRUM 0:982a7efb3ef0 167 /** Print Bar code
MACRUM 0:982a7efb3ef0 168 *
MACRUM 0:982a7efb3ef0 169 * @param code Type of Bar code e.g. AS289R2::JAN13
MACRUM 0:982a7efb3ef0 170 * @param buf Data to be printed
MACRUM 0:982a7efb3ef0 171 */
MACRUM 0:982a7efb3ef0 172 void printBarCode(uint32_t code, char* param);
MACRUM 0:982a7efb3ef0 173
MACRUM 0:982a7efb3ef0 174 /** Print bitmap image
MACRUM 0:982a7efb3ef0 175 *
MACRUM 0:982a7efb3ef0 176 * @param cmd Type of operation mode e.g. 0x61
MACRUM 0:982a7efb3ef0 177 * @param lines Number of print line
MACRUM 0:982a7efb3ef0 178 * @param image Data to be printed
MACRUM 0:982a7efb3ef0 179 */
MACRUM 0:982a7efb3ef0 180 void printBitmapImage(uint32_t cmd, uint16_t lines, char * image);
MACRUM 0:982a7efb3ef0 181
MACRUM 0:982a7efb3ef0 182 private:
MACRUM 0:982a7efb3ef0 183 Serial *_serial_p;
MACRUM 0:982a7efb3ef0 184 Serial &_serial;
MACRUM 0:982a7efb3ef0 185
MACRUM 0:982a7efb3ef0 186 protected:
MACRUM 0:982a7efb3ef0 187 // Stream implementation functions
MACRUM 0:982a7efb3ef0 188 virtual int _putc(int value);
MACRUM 0:982a7efb3ef0 189 virtual int _getc();
MACRUM 0:982a7efb3ef0 190 };
MACRUM 0:982a7efb3ef0 191
MACRUM 0:982a7efb3ef0 192 #endif