123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- /////////////////////////////////////////////////////////////////////////////////
- /// 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(修改为行高,默认行高是4.23mm,当字体超过行高,一行高度为最高的字体高度)
- 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) 只实现90
- FONT_LEFT_RIGHT_SPACE//字符左右边距设置 单位mm 取值(左边距 {0..36},右边距 {0..36}) 只设置右边距,左边距设置为0
- //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
|