Toyomasa Watarai
/
AS-289R2_Hello-World
AS-289R2 library test code for mbed 2 (classic)
main.cpp
- Committer:
- MACRUM
- Date:
- 2016-09-03
- Revision:
- 1:3a6d4c7a3a73
- Parent:
- 0:c407b8539f80
- Child:
- 2:89363d1cba42
File content as of revision 1:3a6d4c7a3a73:
#include "mbed.h" #define AS289_FNC_ENABLE 0x31 #define AS289_FNC_DISABLE 0x30 #define AS289_KANJI_24x24 0x30 #define AS289_KANJI_16x16 0x31 #define AS289_ANK_8x16 0x30 #define AS289_ANK_12x16 0x31 #define AS289_ANK_16x16 0x32 #define AS289_ANK_24x24 0x33 #define AS289_ANK_DEFAULT 0x31 #define AS289_QR_ERR_LVL_L 0x4C #define AS289_QR_ERR_LVL_M 0x4D #define AS289_QR_ERR_LVL_Q 0x51 #define AS289_QR_ERR_LVL_H 0x48 #define AS289_BCODE_UPC_A 0x30 #define AS289_BCODE_JAN13 0x32 #define AS289_BCODE_JAN8 0x33 #define AS289_BCODE_CODE39 0x34 #define AS289_BCODE_ITF 0x35 #define AS289_BCODE_CODABAR 0x36 class AS289R2 : public Stream { public: /** Create a AS289R2 instance * which is connected to specified I2C pins with specified address * * @param tx I2C-bus SDA pin * @param rx I2C-bus SCL pin * @param baud (option) I2C-bus address (default: 0x76) */ AS289R2(PinName tx, PinName rx, uint32_t baud = 9600); /** Create a BME280 instance * which is connected to specified I2C pins with specified address * * @param i2c_obj I2C object (instance) * @param slave_adr (option) I2C-bus address (default: 0x76) */ AS289R2(Serial &serial_obj, uint32_t baud = 9600); /** Destructor of BME280 */ virtual ~AS289R2(); /** Initializa BME280 sensor * * Configure sensor setting and read parameters for calibration * */ void initialize(void); void putLineFeed(uint32_t lines); void clearBuffer(void); void DoubleSizeHeight(uint32_t param); void DoubleSizeWidth(uint32_t param); void setLargeFont(uint32_t param); void printQRCode(uint32_t err, char* buf); void printBarCode(uint32_t code, char* param); void setANKFont(uint32_t font); void printBitmapImage(uint32_t cmd, uint16_t lines, char * image); private: Serial *_serial_p; Serial &_serial; protected: // Stream implementation functions virtual int _putc(int value); virtual int _getc(); }; AS289R2::AS289R2(PinName tx, PinName rx, uint32_t baud) : _serial_p(new Serial(tx, tx)), _serial(*_serial_p) { _serial.baud(baud); initialize(); } AS289R2::AS289R2(Serial &serial_obj, uint32_t baud) : _serial_p(NULL), _serial(serial_obj) { _serial.baud(9600); initialize(); } AS289R2::~AS289R2() { } void AS289R2::initialize(void) { _serial.printf("\x1B\x40"); } void AS289R2::putLineFeed(uint32_t lines) { for(uint32_t i = 0; i < lines; i++) { _serial.putc('\r'); } } void AS289R2::clearBuffer(void) { _serial.putc(0x18); } void AS289R2::DoubleSizeHeight(uint32_t param) { char buf[3] = {0x1B, 0x4E}; buf[2] = param; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } } void AS289R2::DoubleSizeWidth(uint32_t param) { char buf[3] = {0x1B, 0x57}; buf[2] = param; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } } void AS289R2::setLargeFont(uint32_t param) { char buf[3] = {0x1B, 0x4C}; buf[2] = param; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } } void AS289R2::setANKFont(uint32_t font) { char buf[3] = {0x1B, 0x68}; buf[2] = font; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } } void AS289R2::printQRCode(uint32_t err, char* param) { uint32_t len = strlen(param); char buf[4] = {0x1D, 0x78}; buf[2] = err; buf[3] = len; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } for (uint32_t i = 0; i < len; i++) { _serial.putc(param[i]); } } void AS289R2::printBarCode(uint32_t code, char* param) { char buf[3] = {0x1D, 0x6B}; buf[2] = code; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } for (uint32_t i = 0; i < strlen(param); i++) { _serial.putc(param[i]); } _serial.putc('\0'); } void AS289R2::printBitmapImage(uint32_t mode, uint16_t lines, char * image) { char buf[3] = {0x1C, 0x2A}; buf[2] = mode; for (uint32_t i = 0; i < sizeof(buf); i++) { _serial.putc(buf[i]); } _serial.putc((lines >> 8) & 0xFF); // n1 _serial.putc((lines >> 0) & 0xFF); // n2 if (mode == 0x61) { return; } for (uint32_t i = 0; i < (48 * lines); i++) { _serial.putc(image[i]); } } int AS289R2::_putc(int value) { _serial.putc(value); return value; } int AS289R2::_getc() { return -1; } AS289R2 tprn(D1, D0); // tx, rx int main() { tprn.initialize(); tprn.putLineFeed(2); // Text print tprn.printf("** Thermal Printer Shield **\r"); tprn.DoubleSizeWidth(AS289_FNC_ENABLE); tprn.printf("AS-289R2\r\r"); tprn.DoubleSizeWidth(AS289_FNC_DISABLE); tprn.printf("日本語文字列の印字テストです。\r\r"); tprn.DoubleSizeHeight(AS289_FNC_DISABLE); tprn.printf("0123456789\r"); tprn.putLineFeed(2); // Barcode print tprn.setANKFont(AS289_ANK_8x16); tprn.printf("QR\r"); tprn.printQRCode(AS289_QR_ERR_LVL_M, "https://developer.mbed.org"); tprn.putLineFeed(2); tprn.printf("UPC-A\r"); tprn.printBarCode(AS289_BCODE_UPC_A, "01234567890"); tprn.putLineFeed(6); while(1); }