///////////////////////////////////////////////////////////////////////////////// /// Copyright (c) 2013 China Merchants Bank, all rights reserved /// /// Adapter Interface for Printer. /// /// /// /// /// ///////////////////////////////////////////////////////////////////////////////// #ifndef __THERMAL_PRINT_CLASS_H #define __THERMAL_PRINT_CLASS_H #pragma once #include "DeviceBaseClass.h" //the paper state of printer enum ThermalPaperState { PAPER_FULL=0, //纸量充足 PAPER_LOW, //少纸,纸将尽 PAPER_EMPTY, //缺纸 PAPER_JAMMED //卡纸 }; enum ThermalHardwareState { STATE_OK=0, //状态正常 STATE_OTHER_ERROR //其他硬件错误(如切刀错,上盖打开) 具体原因写入DevErrorInfo //to be added }; //state of printer struct ThermalState { ThermalPaperState paperState; ThermalHardwareState hardwareState; //to be added }; enum PrintAction { ACTION_PRINT_ONE_LINE =0,//打印走纸一行 ACTION_PRINT_MOVEFORWRAD_LINES,//打印并走纸n行(单位:字符行) ACTION_PRINT_MOVEBACKWRAD_LINES,//回纸n行(单位:字符行) ACTION_CUT_ALL,//全切纸 ACTION_CUT_HALF,//半切纸 ACTION_MOVE_TO_POSITION_RELATIVE,//把打印光标移动相对当前位置一段距离(横向),单位mm ACTION_MOVE_TO_FORWRAD_LENGTH,//移动向前走纸一段距离(距离包括本行高度在内) 单位:mm ACTION_MOVE_TO_BLACKMARK,//移动到黑标位置,把打印位置设置在行首(标记纸有效) ACTION_PRINT_MOVEBACK_TO_LINE//设置起始位置在行首,取值(0:打印内容返回行首,1:清空要打印的内容返回行首) //to be added }; enum CommandType{ COMMON_ROW_SPACE=0,//行间距 单位mm COMMON_ALIGN, //字符对齐模式 单位是"AlignStyle"的值 COMMON_REVERSE,//颠倒打印(注意需要设置退出或者切纸才行,并在行首) 取值(0:正常打印 1:颠倒打印) COMMON_LEFT_MARGIN,//左边距 单位mm COMMON_PRINTABLE_AREA//可打印区域 单位mm //to be added }; enum FontStyle { FONT_UNDERLINE = 0,//下划线 取值(0:否 1:是) FONT_BOLD,//粗体 取值(0:否 1:是) FONT_INVERSE, //反白 取值(0:否 1:是) FONT_DOUBLEHEIGHT,//纵翻倍放大 取值(0:否 1:是) FONT_DOUBLEWIDE,//横翻倍向放大 取值(0:否 1:是) FONT_CUSTOM_SIZE,//字体宽高自定义,取值(宽 {1..6} ,长 {1..6}) FONT_ROTATE,//字体旋转 取值(0,90,180,270) FONT_LEFT_RIGHT_SPACE//字符左右边距设置 单位mm 取值(左边距 {0..36},右边距 {0..36}) //to be added }; enum AlignStyle { ALIGN_LEFT=0, ALIGN_MIDDLE, ALIGN_RIGHT }; enum BarCodeType{ CONTENT_BARCODE_UPC_A =0, CONTENT_BARCODE_UPC_E, CONTENT_BARCODE_EAN8, CONTENT_BARCODE_EAN13, CONTENT_BARCODE_39, CONTENT_BARCODE_128 //to be added... }; enum QRCodeType{ CONTENT_TWODIM_QRCODE=0, CONTENT_TWODIM_PDF417 //to be added... }; enum HriPosition{ HRI_POSITION_NONE =0, HRI_POSITION_ABOVE, HRI_POSITION_BELOW, HRI_POSITION_BOTH }; enum ThermalPaperType{ PAPER_CONTINUOUS=0,//连续纸 PAPER_LABEL //标记纸 }; class ThermalPrintClass : public DeviceBaseClass { public: // 打开打印机 virtual ErrorCodeEnum DevOpen(BYTE btPort,DWORD dwBaudRate) = 0; // 获取打印机实时状态 virtual ErrorCodeEnum GetDevState(ThermalState &devState) = 0; //开始打印初始设置:paperWidth一般为80mm和57mm virtual ErrorCodeEnum BeginPrint(ThermalPaperType eType,int paperWidth)=0; //打印控制指令函数:主要是打印,切纸和控制打印光标指令函数 //第三个参数是预留参数 暂时无用到 virtual ErrorCodeEnum ControlAction(PrintAction eAction,DWORD dwValue1,DWORD dwValue2=0) = 0; //打印参数指令函数: //第三个参数是预留参数 暂时无用到 virtual ErrorCodeEnum SetParam(CommandType eType,DWORD dwValue1,DWORD dwValue2=0) = 0; //打印字体指令函数:主要是字体相关饿指令函数 //第三个参数是预留参数 设置FONT_CUSTOM_SIZE用到,dwValue1表示宽,dwValue2表示长 // 设置FONT_LEFT_RIGHT_SPACE用到 dwValue1表示左边距 dwValue2表示右边距 virtual ErrorCodeEnum SetFont(FontStyle eType,DWORD dwValue1,DWORD dwValue2=0) = 0; //打印文本数据函数 virtual ErrorCodeEnum PrintText(BYTE *pData,DWORD dwDataLen)=0; //打印条形码函数 //dwUnitWidth 条形码基本模块宽度 取值{2..6} 默认2 //dwHeight 条形码高度 单位mm //iHRIPosition hri字符打印位置 见枚举类型HriPosition virtual ErrorCodeEnum PrintBarCode(BarCodeType eType, BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth,DWORD dwHeight,HriPosition eHRIPosition)=0; //打印二维码QRCode函数 //dwUnitWidth 二维码基本元素宽度 取值{1..255} 默认3 virtual ErrorCodeEnum PrintQRCode(BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth)=0; //打印二维码QRCode函数 //dwWidth 二维码长度 ,单位mm virtual ErrorCodeEnum PrintQRCodeByArea(BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth,DWORD dwWidth)=0; //打印二维码PDF417函数 //errorLevel pdf417纠错级别 取值{0..8} //dwUnitWidth 基本元素宽度 取值{3..90} //dwUnitHeight 基本元素长度 取值{1..30} //row pdf417 行数 取值{1..7} //lines pdf417 列数 取值{2..25} virtual ErrorCodeEnum PrintPDF417code(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwUnitWidth,DWORD dwUnitHeight,int rows,int lines)=0; //打印二维码PDF417函数 //errorLevel pdf417纠错级别 取值{0..8} //dwWidth pdf417宽度 单位mm //dwHeight pdf417长度 单位mm virtual ErrorCodeEnum PrintPDF417codeByArea(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwWidth,DWORD dwHeight)=0; //打印图像函数:pData是base64编码的数据 virtual ErrorCodeEnum PrintImage(BYTE *pData,DWORD dwDataLen)=0; //获取打印失败后错误信息和错误状态 virtual ErrorCodeEnum GetLastErrState(ThermalState &devState , DevErrorInfo &devErrInfo) = 0; }; #endif //__THERMAL_PRINT_CLASS_H