EPSON Thermal Printer RS232 Interface Model --TM-T82II
Diff: EPSON.h
- Revision:
- 0:19ca061f5bcf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EPSON.h Mon Jul 09 08:07:02 2018 +0000 @@ -0,0 +1,368 @@ +/** + ****************************************************************************** + * @file EPSON.h + * @author Shivanand Gowda + * @version V1.0.0 + * @date 21 May 2018 + * @brief This file contains the class of a EPSON thermal control component + ****************************************************************************** + * @attention + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MBED_EPSON_H +#define MBED_EPSON_H + +#include "mbed.h" + +#if defined(__CC_ARM) +// To avoid "invalid multibyte character sequence" warning +#pragma diag_suppress 870 +#endif + + +class EPSON : public Stream +{ +public: + + /** + * @enum Kanji_font_size + * Value of Japanese Kanji font size + */ + enum Kanji_font_size { + //! 24x24 dot font + KANJI_24x24 = 0x30, + //! 16x16 dot font + KANJI_16x16, + //! Defalut font size + KANJI_DEFAULT = KANJI_24x24 + }; + + /** + * @enum ANK_font_size + * Value of ANK font size + */ + enum ANK_font_size { + //! 8x16 dot font + ANK_8x16 = 0x30, + //! 12x24 dot font + ANK_12x24, + //! 16x16 dot font + ANK_16x16, + //! 24x24 dot fot + ANK_24x24, + //! Defalut font size + ANK_DEFAULT = ANK_12x24 + }; + + /** + * @enum QRcode_error_level + * Value of CQ code error correction level + */ + enum QRcode_error_level { + //! Error correction level L (7%) + QR_ERR_LVL_L = 0x4C, + //! Error correction level M (15%) + QR_ERR_LVL_M = 0x4D, + //! Error correction level Q (25%) + QR_ERR_LVL_Q = 0x51, + //! Error correction level H (30%) + QR_ERR_LVL_H = 0x48 + }; + + /** + * @enum barcode_mode + * Value of barcode mode + */ + enum barcode_mode { + //! UPC-A : 11-digit, d1-d11, C/D + BCODE_UPC_A = 0x30, + //! JAN13 : 12-digit, d1-d12, C/D + BCODE_JAN13 = 0x32, + //! JAN8 : 7-digit, d1-d7, C/D + BCODE_JAN8, + //! CODE39 : variable, d1-d20, C/D + BCODE_CODE39, + //! ITF : variable, d1-d20 + BCODE_ITF, + //! CODABAR (NW7) : variable, d1-d20 + BCODE_CODABAR + }; + + /** + * @enum script_mode + * Value of script mode + */ + enum script_mode { + //! Cancel script mode + SCRIPT_CANCEL = 0, + //! Super script + SCRIPT_SUPER, + //! Sub script + SCRIPT_SUB + }; + + /** Create a EPSON instance + * which is connected to specified Serial pin with specified baud rate + * + * @param tx Serial TX pin + * @param baud (option) serial baud rate (default: 9600bps) + */ + EPSON(PinName tx,PinName rx, uint32_t baud = 9600); + + /** Create a EPSON instance + * which is connected to specified Serial instance with specified baud rate + * + * @param serial_obj Serial object (instance) + * @param baud (option) serial baud rate (default: 9600bps) + */ + EPSON(Serial &serial_obj, uint32_t baud = 9600); + + /** Destructor of EPSON + */ + virtual ~EPSON(); + + /** Initializa EPSON + * + * Issues initialize command for AS-289R2 + * + */ + void initialize(void); + + /** Send line feed code + * which is connected to specified Serial pin with specified baud rate + * + * @param lines Number of line feed + */ + void printTest(void); + void printnputLineFeed(uint8_t lines); + void lineFeed(void); + void putHorizontaltab(void); + + void setdefaultLinespacing(void); + void setLinespacing(uint8_t lines); + void setleftMargin(uint8_t n1, uint8_t n2); + void absoluteprintPosition(uint8_t n1, uint8_t n2); + void whiteblack(uint8_t n1); + void papersensorstatus(void); + void carriageReturn(void); + + + + + void printCenter(void); + void printLeft(void); + void printRight(void); + + void font_ZeroOne(void); + void font_Zero(void); + void font_OneZero(void); + int PrintBarCode(char *data ,int ilen); + + + void printModes(uint8_t n); + + + + + /** pur Horizontal Tab + * + */ + + void putLineFeed(uint8_t lines); + + /** Clear image buffer of the AS-289R2 + * + */ + void clearBuffer(void); + + /** Set double height size font + * + */ + void setDoubleSizeHeight(void); + + /** Set normal height size font + * + */ + void clearDoubleSizeHeight(void); + + /** Set double width size font + * + */ + void setDoubleSizeWidth(void); + + /** Set normal width size font + * + */ + void clearDoubleSizeWidth(void); + + /** Set large size font (48x96) + * + */ + void setLargeFont(void); + + /** Set normal size font + * + */ + void clearLargeFont(void); + + /** Set ANK font + * + * @param font ANK font e.g. EPSON::ANK_8x16 + */ + void setANKFont(uint32_t font); + + /** Set Kanji font size + * + * @param font Kanji font e.g. EPSON::KANJI_16x16 + */ + void setKanjiFont(uint32_t font); + + /** Print QR code + * + * @param err QR code error correction level e.g. EPSON::QR_ERR_LVL_M + * @param buf Data to be printed + */ + void printQRCode(uint32_t err, const char* buf); + + /** Print Bar code + * + * @param code Type of Bar code e.g. EPSON::JAN13 + * @param buf Data to be printed + */ + void printBarCode(uint32_t code, const char* param); + + /** Print bitmap image + * + * @param cmd Type of operation mode, 0x61: print image buffer, 0x62: register image buffer, 0x63: register -> print, 0x64: print -> register, 0x65: line print + * @param lines Number of print line + * @param image Data to be printed + */ + void printBitmapImage(uint32_t cmd, uint16_t lines, const uint8_t * image); + + /** Set Line Spaceing + * + * @param space line spacing + */ + void setLineSpaceing(uint32_t space); + + /** Set as default Line Spaceing + * + */ + void defaultLineSpaceing(void); + + /** Set Print Direction + * + * @param direction Print direction, 0: lister, 1: texter + */ + void setPrintDirection(uint32_t direction); + + /** Send feed code + * + * @param space Paper feed + */ + void putPaperFeed(uint32_t space); + + /** Set Inter Character Space + * + * @param space inter-character space + */ + void setInterCharacterSpace(uint32_t space); + + /** Set as default Inter Character Space + * + */ + void defaultInterCharacterSpace(void); + + /** Send Print Position + * + * @param position Print position + */ + void putPrintPosition(uint32_t position); + + /** Set Script + * + * @param script mode e.g. EPSON::SCRIPT_SUPER + */ + void setScript(script_mode script); + + /** Clear Script + * + */ + void clearScript(void); + + /** Set Quadruple size + * + */ + void setQuadrupleSize(void); + + /** Clear Quadruple size + * + */ + void clearQuadrupleSize(void); + + /** Set Enlargement size + * + * @param width enlargement + * @param height enlargement + */ + void setEnlargement(uint32_t width, uint32_t height); + + /** Clear Enlargement size + * + */ + void clearEnlargement(void); + + /** Set BarCode Height size + * + * @param height Bar height + */ + void setBarCodeHeight(uint32_t height); + + /** Set as default BarCode Height size + * + */ + void defaultBarCodeHeight(void); + + /** Set BarCode Bar size + * + * @param narrowbar narrow bars size + * @param widebar wide bars size + */ + void setBarCodeBarSize(uint32_t narrowbar, uint32_t widebar); + + /** Set as default BarCode Bar size + * + */ + void defaultBarCodeBarSize(void); + +private: + Serial *_serial_p; + Serial &_serial; + +protected: + // Stream implementation functions + virtual int _putc(int value); + virtual int _getc(); +}; + +#endif + + \ No newline at end of file