AS-289R2 library test code for mbed 2 (classic)

Dependencies:   AS289R2 mbed

Committer:
MACRUM
Date:
Sat Sep 03 05:22:24 2016 +0000
Revision:
1:3a6d4c7a3a73
Parent:
0:c407b8539f80
Child:
2:89363d1cba42
Create AS289R2 class library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:c407b8539f80 1
MACRUM 0:c407b8539f80 2
MACRUM 0:c407b8539f80 3 #include "mbed.h"
MACRUM 0:c407b8539f80 4
MACRUM 0:c407b8539f80 5
MACRUM 0:c407b8539f80 6 #define AS289_FNC_ENABLE 0x31
MACRUM 0:c407b8539f80 7 #define AS289_FNC_DISABLE 0x30
MACRUM 0:c407b8539f80 8
MACRUM 0:c407b8539f80 9 #define AS289_KANJI_24x24 0x30
MACRUM 0:c407b8539f80 10 #define AS289_KANJI_16x16 0x31
MACRUM 0:c407b8539f80 11
MACRUM 0:c407b8539f80 12 #define AS289_ANK_8x16 0x30
MACRUM 0:c407b8539f80 13 #define AS289_ANK_12x16 0x31
MACRUM 0:c407b8539f80 14 #define AS289_ANK_16x16 0x32
MACRUM 0:c407b8539f80 15 #define AS289_ANK_24x24 0x33
MACRUM 0:c407b8539f80 16 #define AS289_ANK_DEFAULT 0x31
MACRUM 0:c407b8539f80 17
MACRUM 0:c407b8539f80 18 #define AS289_QR_ERR_LVL_L 0x4C
MACRUM 0:c407b8539f80 19 #define AS289_QR_ERR_LVL_M 0x4D
MACRUM 0:c407b8539f80 20 #define AS289_QR_ERR_LVL_Q 0x51
MACRUM 0:c407b8539f80 21 #define AS289_QR_ERR_LVL_H 0x48
MACRUM 0:c407b8539f80 22
MACRUM 0:c407b8539f80 23 #define AS289_BCODE_UPC_A 0x30
MACRUM 0:c407b8539f80 24 #define AS289_BCODE_JAN13 0x32
MACRUM 0:c407b8539f80 25 #define AS289_BCODE_JAN8 0x33
MACRUM 0:c407b8539f80 26 #define AS289_BCODE_CODE39 0x34
MACRUM 0:c407b8539f80 27 #define AS289_BCODE_ITF 0x35
MACRUM 0:c407b8539f80 28 #define AS289_BCODE_CODABAR 0x36
MACRUM 0:c407b8539f80 29
MACRUM 0:c407b8539f80 30
MACRUM 1:3a6d4c7a3a73 31 class AS289R2 : public Stream {
MACRUM 1:3a6d4c7a3a73 32 public:
MACRUM 1:3a6d4c7a3a73 33
MACRUM 1:3a6d4c7a3a73 34 /** Create a AS289R2 instance
MACRUM 1:3a6d4c7a3a73 35 * which is connected to specified I2C pins with specified address
MACRUM 1:3a6d4c7a3a73 36 *
MACRUM 1:3a6d4c7a3a73 37 * @param tx I2C-bus SDA pin
MACRUM 1:3a6d4c7a3a73 38 * @param rx I2C-bus SCL pin
MACRUM 1:3a6d4c7a3a73 39 * @param baud (option) I2C-bus address (default: 0x76)
MACRUM 1:3a6d4c7a3a73 40 */
MACRUM 1:3a6d4c7a3a73 41 AS289R2(PinName tx, PinName rx, uint32_t baud = 9600);
MACRUM 1:3a6d4c7a3a73 42
MACRUM 1:3a6d4c7a3a73 43 /** Create a BME280 instance
MACRUM 1:3a6d4c7a3a73 44 * which is connected to specified I2C pins with specified address
MACRUM 1:3a6d4c7a3a73 45 *
MACRUM 1:3a6d4c7a3a73 46 * @param i2c_obj I2C object (instance)
MACRUM 1:3a6d4c7a3a73 47 * @param slave_adr (option) I2C-bus address (default: 0x76)
MACRUM 1:3a6d4c7a3a73 48 */
MACRUM 1:3a6d4c7a3a73 49 AS289R2(Serial &serial_obj, uint32_t baud = 9600);
MACRUM 1:3a6d4c7a3a73 50
MACRUM 1:3a6d4c7a3a73 51 /** Destructor of BME280
MACRUM 1:3a6d4c7a3a73 52 */
MACRUM 1:3a6d4c7a3a73 53 virtual ~AS289R2();
MACRUM 1:3a6d4c7a3a73 54
MACRUM 1:3a6d4c7a3a73 55 /** Initializa BME280 sensor
MACRUM 1:3a6d4c7a3a73 56 *
MACRUM 1:3a6d4c7a3a73 57 * Configure sensor setting and read parameters for calibration
MACRUM 1:3a6d4c7a3a73 58 *
MACRUM 1:3a6d4c7a3a73 59 */
MACRUM 1:3a6d4c7a3a73 60 void initialize(void);
MACRUM 1:3a6d4c7a3a73 61 void putLineFeed(uint32_t lines);
MACRUM 1:3a6d4c7a3a73 62 void clearBuffer(void);
MACRUM 1:3a6d4c7a3a73 63 void DoubleSizeHeight(uint32_t param);
MACRUM 1:3a6d4c7a3a73 64 void DoubleSizeWidth(uint32_t param);
MACRUM 1:3a6d4c7a3a73 65 void setLargeFont(uint32_t param);
MACRUM 1:3a6d4c7a3a73 66 void printQRCode(uint32_t err, char* buf);
MACRUM 1:3a6d4c7a3a73 67 void printBarCode(uint32_t code, char* param);
MACRUM 1:3a6d4c7a3a73 68 void setANKFont(uint32_t font);
MACRUM 1:3a6d4c7a3a73 69 void printBitmapImage(uint32_t cmd, uint16_t lines, char * image);
MACRUM 1:3a6d4c7a3a73 70
MACRUM 1:3a6d4c7a3a73 71 private:
MACRUM 1:3a6d4c7a3a73 72 Serial *_serial_p;
MACRUM 1:3a6d4c7a3a73 73 Serial &_serial;
MACRUM 1:3a6d4c7a3a73 74
MACRUM 1:3a6d4c7a3a73 75 protected:
MACRUM 1:3a6d4c7a3a73 76 // Stream implementation functions
MACRUM 1:3a6d4c7a3a73 77 virtual int _putc(int value);
MACRUM 1:3a6d4c7a3a73 78 virtual int _getc();
MACRUM 1:3a6d4c7a3a73 79 };
MACRUM 1:3a6d4c7a3a73 80
MACRUM 1:3a6d4c7a3a73 81 AS289R2::AS289R2(PinName tx, PinName rx, uint32_t baud)
MACRUM 1:3a6d4c7a3a73 82 :
MACRUM 1:3a6d4c7a3a73 83 _serial_p(new Serial(tx, tx)),
MACRUM 1:3a6d4c7a3a73 84 _serial(*_serial_p)
MACRUM 1:3a6d4c7a3a73 85 {
MACRUM 1:3a6d4c7a3a73 86 _serial.baud(baud);
MACRUM 1:3a6d4c7a3a73 87 initialize();
MACRUM 1:3a6d4c7a3a73 88 }
MACRUM 1:3a6d4c7a3a73 89
MACRUM 1:3a6d4c7a3a73 90 AS289R2::AS289R2(Serial &serial_obj, uint32_t baud)
MACRUM 1:3a6d4c7a3a73 91 :
MACRUM 1:3a6d4c7a3a73 92 _serial_p(NULL),
MACRUM 1:3a6d4c7a3a73 93 _serial(serial_obj)
MACRUM 1:3a6d4c7a3a73 94 {
MACRUM 1:3a6d4c7a3a73 95 _serial.baud(9600);
MACRUM 1:3a6d4c7a3a73 96 initialize();
MACRUM 1:3a6d4c7a3a73 97 }
MACRUM 1:3a6d4c7a3a73 98
MACRUM 1:3a6d4c7a3a73 99 AS289R2::~AS289R2()
MACRUM 1:3a6d4c7a3a73 100 {
MACRUM 1:3a6d4c7a3a73 101 }
MACRUM 1:3a6d4c7a3a73 102
MACRUM 1:3a6d4c7a3a73 103 void AS289R2::initialize(void)
MACRUM 1:3a6d4c7a3a73 104 {
MACRUM 1:3a6d4c7a3a73 105 _serial.printf("\x1B\x40");
MACRUM 1:3a6d4c7a3a73 106 }
MACRUM 1:3a6d4c7a3a73 107
MACRUM 1:3a6d4c7a3a73 108
MACRUM 1:3a6d4c7a3a73 109
MACRUM 1:3a6d4c7a3a73 110 void AS289R2::putLineFeed(uint32_t lines)
MACRUM 0:c407b8539f80 111 {
MACRUM 0:c407b8539f80 112 for(uint32_t i = 0; i < lines; i++) {
MACRUM 0:c407b8539f80 113 _serial.putc('\r');
MACRUM 0:c407b8539f80 114 }
MACRUM 0:c407b8539f80 115 }
MACRUM 0:c407b8539f80 116
MACRUM 1:3a6d4c7a3a73 117 void AS289R2::clearBuffer(void)
MACRUM 0:c407b8539f80 118 {
MACRUM 0:c407b8539f80 119 _serial.putc(0x18);
MACRUM 0:c407b8539f80 120 }
MACRUM 0:c407b8539f80 121
MACRUM 1:3a6d4c7a3a73 122 void AS289R2::DoubleSizeHeight(uint32_t param)
MACRUM 0:c407b8539f80 123 {
MACRUM 0:c407b8539f80 124 char buf[3] = {0x1B, 0x4E};
MACRUM 0:c407b8539f80 125 buf[2] = param;
MACRUM 0:c407b8539f80 126 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 127 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 128 }
MACRUM 0:c407b8539f80 129 }
MACRUM 0:c407b8539f80 130
MACRUM 1:3a6d4c7a3a73 131 void AS289R2::DoubleSizeWidth(uint32_t param)
MACRUM 0:c407b8539f80 132 {
MACRUM 0:c407b8539f80 133 char buf[3] = {0x1B, 0x57};
MACRUM 0:c407b8539f80 134 buf[2] = param;
MACRUM 0:c407b8539f80 135 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 136 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 137 }
MACRUM 0:c407b8539f80 138 }
MACRUM 0:c407b8539f80 139
MACRUM 1:3a6d4c7a3a73 140 void AS289R2::setLargeFont(uint32_t param)
MACRUM 0:c407b8539f80 141 {
MACRUM 0:c407b8539f80 142 char buf[3] = {0x1B, 0x4C};
MACRUM 0:c407b8539f80 143 buf[2] = param;
MACRUM 0:c407b8539f80 144 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 145 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 146 }
MACRUM 0:c407b8539f80 147 }
MACRUM 0:c407b8539f80 148
MACRUM 1:3a6d4c7a3a73 149 void AS289R2::setANKFont(uint32_t font)
MACRUM 0:c407b8539f80 150 {
MACRUM 0:c407b8539f80 151 char buf[3] = {0x1B, 0x68};
MACRUM 0:c407b8539f80 152 buf[2] = font;
MACRUM 0:c407b8539f80 153 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 154 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 155 }
MACRUM 0:c407b8539f80 156 }
MACRUM 0:c407b8539f80 157
MACRUM 1:3a6d4c7a3a73 158 void AS289R2::printQRCode(uint32_t err, char* param)
MACRUM 0:c407b8539f80 159 {
MACRUM 0:c407b8539f80 160 uint32_t len = strlen(param);
MACRUM 0:c407b8539f80 161 char buf[4] = {0x1D, 0x78};
MACRUM 0:c407b8539f80 162 buf[2] = err;
MACRUM 0:c407b8539f80 163 buf[3] = len;
MACRUM 0:c407b8539f80 164 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 165 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 166 }
MACRUM 0:c407b8539f80 167 for (uint32_t i = 0; i < len; i++) {
MACRUM 0:c407b8539f80 168 _serial.putc(param[i]);
MACRUM 0:c407b8539f80 169 }
MACRUM 0:c407b8539f80 170 }
MACRUM 0:c407b8539f80 171
MACRUM 1:3a6d4c7a3a73 172 void AS289R2::printBarCode(uint32_t code, char* param)
MACRUM 0:c407b8539f80 173 {
MACRUM 0:c407b8539f80 174 char buf[3] = {0x1D, 0x6B};
MACRUM 0:c407b8539f80 175 buf[2] = code;
MACRUM 0:c407b8539f80 176 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 177 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 178 }
MACRUM 0:c407b8539f80 179 for (uint32_t i = 0; i < strlen(param); i++) {
MACRUM 0:c407b8539f80 180 _serial.putc(param[i]);
MACRUM 0:c407b8539f80 181 }
MACRUM 0:c407b8539f80 182 _serial.putc('\0');
MACRUM 0:c407b8539f80 183 }
MACRUM 0:c407b8539f80 184
MACRUM 1:3a6d4c7a3a73 185 void AS289R2::printBitmapImage(uint32_t mode, uint16_t lines, char * image)
MACRUM 0:c407b8539f80 186 {
MACRUM 0:c407b8539f80 187 char buf[3] = {0x1C, 0x2A};
MACRUM 0:c407b8539f80 188 buf[2] = mode;
MACRUM 0:c407b8539f80 189 for (uint32_t i = 0; i < sizeof(buf); i++) {
MACRUM 0:c407b8539f80 190 _serial.putc(buf[i]);
MACRUM 0:c407b8539f80 191 }
MACRUM 0:c407b8539f80 192 _serial.putc((lines >> 8) & 0xFF); // n1
MACRUM 0:c407b8539f80 193 _serial.putc((lines >> 0) & 0xFF); // n2
MACRUM 1:3a6d4c7a3a73 194
MACRUM 0:c407b8539f80 195 if (mode == 0x61) {
MACRUM 0:c407b8539f80 196 return;
MACRUM 0:c407b8539f80 197 }
MACRUM 1:3a6d4c7a3a73 198
MACRUM 0:c407b8539f80 199 for (uint32_t i = 0; i < (48 * lines); i++) {
MACRUM 0:c407b8539f80 200 _serial.putc(image[i]);
MACRUM 0:c407b8539f80 201 }
MACRUM 0:c407b8539f80 202 }
MACRUM 0:c407b8539f80 203
MACRUM 1:3a6d4c7a3a73 204 int AS289R2::_putc(int value) {
MACRUM 1:3a6d4c7a3a73 205 _serial.putc(value);
MACRUM 1:3a6d4c7a3a73 206 return value;
MACRUM 1:3a6d4c7a3a73 207 }
MACRUM 1:3a6d4c7a3a73 208
MACRUM 1:3a6d4c7a3a73 209 int AS289R2::_getc() {
MACRUM 1:3a6d4c7a3a73 210 return -1;
MACRUM 1:3a6d4c7a3a73 211 }
MACRUM 1:3a6d4c7a3a73 212
MACRUM 1:3a6d4c7a3a73 213 AS289R2 tprn(D1, D0); // tx, rx
MACRUM 1:3a6d4c7a3a73 214
MACRUM 0:c407b8539f80 215 int main()
MACRUM 0:c407b8539f80 216 {
MACRUM 1:3a6d4c7a3a73 217 tprn.initialize();
MACRUM 1:3a6d4c7a3a73 218 tprn.putLineFeed(2);
MACRUM 0:c407b8539f80 219
MACRUM 0:c407b8539f80 220 // Text print
MACRUM 1:3a6d4c7a3a73 221 tprn.printf("** Thermal Printer Shield **\r");
MACRUM 1:3a6d4c7a3a73 222 tprn.DoubleSizeWidth(AS289_FNC_ENABLE);
MACRUM 1:3a6d4c7a3a73 223 tprn.printf("AS-289R2\r\r");
MACRUM 1:3a6d4c7a3a73 224 tprn.DoubleSizeWidth(AS289_FNC_DISABLE);
MACRUM 1:3a6d4c7a3a73 225 tprn.printf("日本語文字列の印字テストです。\r\r");
MACRUM 1:3a6d4c7a3a73 226 tprn.DoubleSizeHeight(AS289_FNC_DISABLE);
MACRUM 1:3a6d4c7a3a73 227 tprn.printf("0123456789\r");
MACRUM 1:3a6d4c7a3a73 228 tprn.putLineFeed(2);
MACRUM 0:c407b8539f80 229
MACRUM 0:c407b8539f80 230 // Barcode print
MACRUM 1:3a6d4c7a3a73 231 tprn.setANKFont(AS289_ANK_8x16);
MACRUM 1:3a6d4c7a3a73 232 tprn.printf("QR\r");
MACRUM 1:3a6d4c7a3a73 233 tprn.printQRCode(AS289_QR_ERR_LVL_M, "https://developer.mbed.org");
MACRUM 1:3a6d4c7a3a73 234 tprn.putLineFeed(2);
MACRUM 0:c407b8539f80 235
MACRUM 1:3a6d4c7a3a73 236 tprn.printf("UPC-A\r");
MACRUM 1:3a6d4c7a3a73 237 tprn.printBarCode(AS289_BCODE_UPC_A, "01234567890");
MACRUM 1:3a6d4c7a3a73 238 tprn.putLineFeed(6);
MACRUM 0:c407b8539f80 239
MACRUM 0:c407b8539f80 240 while(1);
MACRUM 0:c407b8539f80 241 }