ReceiptBase.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. // Scan5180.h: interface for the Scan5180 class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(_ReceiptBase_SUNEW_20170608_INCLUDED_)
  5. #define _ReceiptBase_SUNEW_20170608_INCLUDED_
  6. #include "cmb.h"
  7. //成功,正常
  8. #define RECEIPT_SUCCESS 0
  9. //错误状态
  10. #define RECEIPT_ERR_NO_FOND -1 //设备未找到
  11. #define RECEIPT_ERR_NO_OPEN -2 //设备未打开
  12. #define RECEIPT_ERR_RCV_ERR -3 //数据接收错误
  13. #define RECEIPT_ERR_IN_ERR -4 //输入参数错误
  14. #define RECEIPT_ERR_DEV_ERR -5 //设备硬件故障
  15. //警告类状态
  16. #define RECEIPT_WARN_NO_MEDIA -6 //缺纸
  17. #define RECEIPT_WARN_HEAD_UP -7 //机头抬起
  18. #define RECEIPT_WARN_JAMMED -8 //卡纸
  19. #define RECEIPT_WARN_PAP_LOW 1 //纸少
  20. #ifndef _WIN32
  21. #pragma pack(1)
  22. typedef struct tagBITMAPFILEHEADER {
  23. UINT16 bfType;
  24. UINT32 bfSize;
  25. UINT16 bfReserved1;
  26. UINT16 bfReserved2;
  27. UINT32 bfOffBits;
  28. } BITMAPFILEHEADER;
  29. typedef struct tagBITMAPINFOHEADER{
  30. UINT32 biSize;
  31. INT32 biWidth;
  32. INT32 biHeight;
  33. UINT16 biPlanes;
  34. UINT16 biBitCount;
  35. UINT32 biCompression;
  36. UINT32 biSizeImage;
  37. INT32 biXPelsPerMeter;
  38. INT32 biYPelsPerMeter;
  39. UINT32 biClrUsed;
  40. UINT32 biClrImportant;
  41. } BITMAPINFOHEADER;
  42. #pragma pack()
  43. #endif
  44. class ReceiptBase
  45. {
  46. public:
  47. ReceiptBase();
  48. virtual ~ReceiptBase();
  49. protected:
  50. SUsb m_cSerial;
  51. int m_iLetSpace; //左边空格
  52. int m_iLineHeight; //行高度:点
  53. int m_iLineLeng; //每行字符数
  54. int m_iUsedLeng; //已打印纸张长度
  55. int m_iMinPaper; //切纸最短长度
  56. int m_iLastPos; //上次打印一行内结束位置
  57. int m_iMMPerSec; //打印速度,毫米每秒,延时用
  58. int m_iLinesPrted; //已打印行数,每20行做一次延时
  59. public:
  60. //打印高速20,中速10,低速 00
  61. virtual int SetPrintSpeed(short nSpeed);
  62. //凭条打印机 初始化
  63. virtual int Init();
  64. public:
  65. //凭条打印机 判断端口打开
  66. bool Isopen();
  67. //凭条打印机 打开端口
  68. int Open(const int iVID, const int iPID, const int iFD = 0);
  69. //打印机 关闭端口
  70. int Close();
  71. int GetState();
  72. //最少纸长度,部分打印机出纸口限制,太短无法出来
  73. int SetMinLen(int iLen){m_iMinPaper = iLen;};
  74. //设置打印机基本参数(如不设置则使用默认值)每行字符数,左空白字符数,打印速度(无流控延时用)
  75. void SetLinePara(int iLineLeng, int iLeftSpace, int iSpeed);
  76. //设置左边距,单位为点(0.125mm)
  77. int SetLeftDistance(int iLeft);
  78. //设置打印区域
  79. int SetPrintArea(int iLeng);
  80. //设置行高,单位为点(0.125mm)
  81. int SetRowDistance(int iH);
  82. //设置字符间隔,单位为点(0.125mm)
  83. int SetCharSpace(char iLeft, char iRight);
  84. //DH 倍高 DW倍宽 DD黑体 UL下划线 XT斜体
  85. int SetFont(bool bDH, bool bDW, bool bDD, bool bUL, bool bCharB);
  86. //nAlign 0左对齐 ,1居中, 2右对齐
  87. int SetAlign(short nAlign);
  88. //设置打印放大倍数(1-6)
  89. int SetScale(int iX, int iY);
  90. //横向移动
  91. int MoveX(int iX);
  92. //设置黑白反显打印模式
  93. int SetInverse(bool b);
  94. //选择/取消顺时针旋转90度
  95. int SetRotate(bool b);
  96. //是否黑标纸
  97. int SetBlackFlag(bool b);
  98. //设置黑标位置
  99. int SetBlackPos(int i);
  100. //获取固件版本
  101. int GetFirmware(char* s);
  102. //打印不自动添加换行
  103. int SendHexStr(const char *sData, int iDataLen = 0);
  104. //打印不自动添加换行
  105. int PrintData(const char *sData);
  106. //打印数据并自动添加换行
  107. int PrintLine(const char* sLine);
  108. int PrintChar(char ch, int iCount);
  109. //走纸n行
  110. int FeedLines(int iLines);
  111. //走纸1点,iMode 0向前,1后退,单位为点(0.125mm)
  112. int FeedPaper(short iMode, short iDistance);
  113. // ctype 0 UPC-A(11-12) 1 UPC-E(11-12) 2 JAN13,EAN13(12-13)
  114. // 3 JAN8,EAN8(7-8) 4 CODE39(1-255) 5 ITF(1-255偶)
  115. // 6 CODABAR(1-255) 7 CODE93(1-255) 8 CODE128(1-255)
  116. // iBytePos 0不打印HRI字符 1条码上方打印 2条码下方打印 3条码上下方打印
  117. int PrinterCode(const char* cdata,UINT ctype,
  118. UINT iBytePos,UINT BarCodeWidth,UINT BarCodeHeight,bool bCharB);
  119. int Cut(int iMode); //0:全切 1:半切
  120. //功能:将单色 bmp 图像数据下载到硬件
  121. int PrintMemBmp(const char *sData, bool bBASE64);
  122. //sData文件名或者BASE64数据 返回图片高度,失败返回负值
  123. int DownloadNVBmp(const char *sData,bool bBASE64);
  124. int PrintNVBmp(bool bDH, bool bDW);
  125. protected:
  126. //凭条发送命令,超时时间为毫秒
  127. int SendData(const unsigned char *sSend,int iDatLen,int iTimeout=300);
  128. int ReadData(unsigned char *sRead,int iWant,int iTimeout);
  129. /* 凭条打印机 获取状态 */
  130. int ReadStateData(short nNum,char * buf);
  131. int ReadStateData(char * sCmd1, char* sCmd2, char * sCmd3, char * sCmd4);
  132. virtual int GetStateData(const char* sCmd1, const char* sCmd2, const char* sCmd3, const char* sCmd4);
  133. int m_iNVHeight;
  134. protected:
  135. int Bit24ToBit1(const unsigned char* sInData, int iWidth, int iHigh, unsigned char** psOutData);
  136. int Bit1ToPrint(unsigned char* sInData, int iWidth, int iHigh, BOOL bRotate, unsigned char** psOutData);
  137. short GetBinBuf(short val,char *buf);
  138. short ByteToBytes(short value,char *buf);
  139. int GetBmpData(const char *sData,bool bBASE64,unsigned char** psOut,int* iPrintW, int* iPrintH, BOOL bChgPrt);
  140. };
  141. #endif // !defined(_ReceiptBase_SUNEW_20170608_INCLUDED_)