Toyomasa Watarai
/
AS-289R2_Hello-World
AS-289R2 library test code for mbed 2 (classic)
main.cpp@1:3a6d4c7a3a73, 2016-09-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |