// Scan5180.h: interface for the Scan5180 class. // ////////////////////////////////////////////////////////////////////// #if !defined(_ReceiptBase_SUNEW_20170608_INCLUDED_) #define _ReceiptBase_SUNEW_20170608_INCLUDED_ #include "cmb.h" //成功,正常 #define RECEIPT_SUCCESS 0 //错误状态 #define RECEIPT_ERR_NO_FOND -1 //设备未找到 #define RECEIPT_ERR_NO_OPEN -2 //设备未打开 #define RECEIPT_ERR_RCV_ERR -3 //数据接收错误 #define RECEIPT_ERR_IN_ERR -4 //输入参数错误 #define RECEIPT_ERR_DEV_ERR -5 //设备硬件故障 //警告类状态 #define RECEIPT_WARN_NO_MEDIA -6 //缺纸 #define RECEIPT_WARN_HEAD_UP -7 //机头抬起 #define RECEIPT_WARN_JAMMED -8 //卡纸 #define RECEIPT_WARN_PAP_LOW 1 //纸少 #ifndef _WIN32 #pragma pack(1) typedef struct tagBITMAPFILEHEADER { UINT16 bfType; UINT32 bfSize; UINT16 bfReserved1; UINT16 bfReserved2; UINT32 bfOffBits; } BITMAPFILEHEADER; typedef struct tagBITMAPINFOHEADER{ UINT32 biSize; INT32 biWidth; INT32 biHeight; UINT16 biPlanes; UINT16 biBitCount; UINT32 biCompression; UINT32 biSizeImage; INT32 biXPelsPerMeter; INT32 biYPelsPerMeter; UINT32 biClrUsed; UINT32 biClrImportant; } BITMAPINFOHEADER; #pragma pack() #endif class ReceiptBase { public: ReceiptBase(); virtual ~ReceiptBase(); protected: SUsb m_cSerial; int m_iLetSpace; //左边空格 int m_iLineHeight; //行高度:点 int m_iLineLeng; //每行字符数 int m_iUsedLeng; //已打印纸张长度 int m_iMinPaper; //切纸最短长度 int m_iLastPos; //上次打印一行内结束位置 int m_iMMPerSec; //打印速度,毫米每秒,延时用 int m_iLinesPrted; //已打印行数,每20行做一次延时 public: //打印高速20,中速10,低速 00 virtual int SetPrintSpeed(short nSpeed); //凭条打印机 初始化 virtual int Init(); public: //凭条打印机 判断端口打开 bool Isopen(); //凭条打印机 打开端口 int Open(const int iVID, const int iPID, const int iFD = 0); //打印机 关闭端口 int Close(); int GetState(); //最少纸长度,部分打印机出纸口限制,太短无法出来 int SetMinLen(int iLen){m_iMinPaper = iLen;}; //设置打印机基本参数(如不设置则使用默认值)每行字符数,左空白字符数,打印速度(无流控延时用) void SetLinePara(int iLineLeng, int iLeftSpace, int iSpeed); //设置左边距,单位为点(0.125mm) int SetLeftDistance(int iLeft); //设置打印区域 int SetPrintArea(int iLeng); //设置行高,单位为点(0.125mm) int SetRowDistance(int iH); //设置字符间隔,单位为点(0.125mm) int SetCharSpace(char iLeft, char iRight); //DH 倍高 DW倍宽 DD黑体 UL下划线 XT斜体 int SetFont(bool bDH, bool bDW, bool bDD, bool bUL, bool bCharB); //nAlign 0左对齐 ,1居中, 2右对齐 int SetAlign(short nAlign); //设置打印放大倍数(1-6) int SetScale(int iX, int iY); //横向移动 int MoveX(int iX); //设置黑白反显打印模式 int SetInverse(bool b); //选择/取消顺时针旋转90度 int SetRotate(bool b); //是否黑标纸 int SetBlackFlag(bool b); //设置黑标位置 int SetBlackPos(int i); //获取固件版本 int GetFirmware(char* s); //打印不自动添加换行 int SendHexStr(const char *sData, int iDataLen = 0); //打印不自动添加换行 int PrintData(const char *sData); //打印数据并自动添加换行 int PrintLine(const char* sLine); int PrintChar(char ch, int iCount); //走纸n行 int FeedLines(int iLines); //走纸1点,iMode 0向前,1后退,单位为点(0.125mm) int FeedPaper(short iMode, short iDistance); // ctype 0 UPC-A(11-12) 1 UPC-E(11-12) 2 JAN13,EAN13(12-13) // 3 JAN8,EAN8(7-8) 4 CODE39(1-255) 5 ITF(1-255偶) // 6 CODABAR(1-255) 7 CODE93(1-255) 8 CODE128(1-255) // iBytePos 0不打印HRI字符 1条码上方打印 2条码下方打印 3条码上下方打印 int PrinterCode(const char* cdata,UINT ctype, UINT iBytePos,UINT BarCodeWidth,UINT BarCodeHeight,bool bCharB); int Cut(int iMode); //0:全切 1:半切 //功能:将单色 bmp 图像数据下载到硬件 int PrintMemBmp(const char *sData, bool bBASE64); //sData文件名或者BASE64数据 返回图片高度,失败返回负值 int DownloadNVBmp(const char *sData,bool bBASE64); int PrintNVBmp(bool bDH, bool bDW); protected: //凭条发送命令,超时时间为毫秒 int SendData(const unsigned char *sSend,int iDatLen,int iTimeout=300); int ReadData(unsigned char *sRead,int iWant,int iTimeout); /* 凭条打印机 获取状态 */ int ReadStateData(short nNum,char * buf); int ReadStateData(char * sCmd1, char* sCmd2, char * sCmd3, char * sCmd4); virtual int GetStateData(const char* sCmd1, const char* sCmd2, const char* sCmd3, const char* sCmd4); int m_iNVHeight; protected: int Bit24ToBit1(const unsigned char* sInData, int iWidth, int iHigh, unsigned char** psOutData); int Bit1ToPrint(unsigned char* sInData, int iWidth, int iHigh, BOOL bRotate, unsigned char** psOutData); short GetBinBuf(short val,char *buf); short ByteToBytes(short value,char *buf); int GetBmpData(const char *sData,bool bBASE64,unsigned char** psOut,int* iPrintW, int* iPrintH, BOOL bChgPrt); }; #endif // !defined(_ReceiptBase_SUNEW_20170608_INCLUDED_)