Toyomasa Watarai
/
AS-289R2_Hello-World
AS-289R2 library test code for mbed 2 (classic)
Diff: main.cpp
- Revision:
- 1:3a6d4c7a3a73
- Parent:
- 0:c407b8539f80
- Child:
- 2:89363d1cba42
--- a/main.cpp Sat Sep 03 04:33:46 2016 +0000 +++ b/main.cpp Sat Sep 03 05:22:24 2016 +0000 @@ -2,7 +2,6 @@ #include "mbed.h" -Serial _serial(D1, D0); // tx, rx #define AS289_FNC_ENABLE 0x31 #define AS289_FNC_DISABLE 0x30 @@ -27,37 +26,100 @@ #define AS289_BCODE_CODE39 0x34 #define AS289_BCODE_ITF 0x35 #define AS289_BCODE_CODABAR 0x36 - -void LineFeed(uint32_t lines); -void Init(void); -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, uint32_t lines, char * image); -void LineFeed(uint32_t lines) +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 Init(void) -{ - _serial.printf("\x1B\x40"); -} - -void ClearBuffer(void) +void AS289R2::clearBuffer(void) { _serial.putc(0x18); } -void DoubleSizeHeight(uint32_t param) +void AS289R2::DoubleSizeHeight(uint32_t param) { char buf[3] = {0x1B, 0x4E}; buf[2] = param; @@ -66,7 +128,7 @@ } } -void DoubleSizeWidth(uint32_t param) +void AS289R2::DoubleSizeWidth(uint32_t param) { char buf[3] = {0x1B, 0x57}; buf[2] = param; @@ -75,7 +137,7 @@ } } -void SetLargeFont(uint32_t param) +void AS289R2::setLargeFont(uint32_t param) { char buf[3] = {0x1B, 0x4C}; buf[2] = param; @@ -84,7 +146,7 @@ } } -void SetANKFont(uint32_t font) +void AS289R2::setANKFont(uint32_t font) { char buf[3] = {0x1B, 0x68}; buf[2] = font; @@ -93,7 +155,7 @@ } } -void PrintQRCode(uint32_t err, char* param) +void AS289R2::printQRCode(uint32_t err, char* param) { uint32_t len = strlen(param); char buf[4] = {0x1D, 0x78}; @@ -107,7 +169,7 @@ } } -void PrintBarCode(uint32_t code, char* param) +void AS289R2::printBarCode(uint32_t code, char* param) { char buf[3] = {0x1D, 0x6B}; buf[2] = code; @@ -120,7 +182,7 @@ _serial.putc('\0'); } -void PrintBitmapImage(uint32_t mode, uint16_t lines, char * image) +void AS289R2::printBitmapImage(uint32_t mode, uint16_t lines, char * image) { char buf[3] = {0x1C, 0x2A}; buf[2] = mode; @@ -129,40 +191,51 @@ } _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() { - Init(); - LineFeed(2); + tprn.initialize(); + tprn.putLineFeed(2); // Text print - _serial.printf("** Thermal Printer Shield **\r"); - DoubleSizeWidth(AS289_FNC_ENABLE); - _serial.printf("AS-289R2\r\r"); - DoubleSizeWidth(AS289_FNC_DISABLE); - _serial.printf("日本語文字列の印字テストです。\r\r"); - DoubleSizeHeight(AS289_FNC_DISABLE); - _serial.printf("0123456789\r"); - LineFeed(2); + 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 - SetANKFont(AS289_ANK_8x16); - _serial.printf("QR\r"); - PrintQRCode(AS289_QR_ERR_LVL_M, "https://developer.mbed.org"); - LineFeed(2); + tprn.setANKFont(AS289_ANK_8x16); + tprn.printf("QR\r"); + tprn.printQRCode(AS289_QR_ERR_LVL_M, "https://developer.mbed.org"); + tprn.putLineFeed(2); - _serial.printf("UPC-A\r"); - PrintBarCode(AS289_BCODE_UPC_A, "01234567890"); - LineFeed(6); + tprn.printf("UPC-A\r"); + tprn.printBarCode(AS289_BCODE_UPC_A, "01234567890"); + tprn.putLineFeed(6); while(1); }