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:
Mon Sep 19 13:52:42 2016 +0000
Revision:
3:f3dfeb7ccb22
Parent:
2:ce25d0949cbd
Child:
4:a2e0373a9cd1
pragma diag_suppress now only works for armcc

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