CaysnPrinter打印示例程序:CaysnPrinter打印机开发包示例程序_Sample_20170710
CaysnPrinter打印示例程序C#版:CaysnPrinter打印机开发包示例程序_SampleCSharp_20170710
CaysnPrinter打印开发包接口说明文档中文版:PrinterLibs_For_Windows_zh_CN_20170710
CaysnPrinter打印开发包接口说明文档英文版:PrinterLibs_For_Windows_en_US_20170710
一 概述
1 PrinterLibs是在Windows平台用C++编写的DLL,DLL导出C风格的函数。
2 PrinterLibs函数有以下几类
A Port_XXX
以Port开头的函数,主要是打开端口,关闭端口,枚举端口。
支持通过串口,并口,USB口,网口进行打印。
备注:与上一版有差别
1 Port_SetPort函数已删除。
2 Port_Open系列函数返回值为bool,不再是BOOL。
B PAGE_XXX
以PAGE开头的函数,封装了页模式指令,可以控制打印机以页模式的方式
打印。
① PAGE_PageEnter进入页模式
② PAGE_SetPrintArea设置页模式打印区域
③ PAGE_DrawXXX系列函数在指定区域打印
④ PAGE_PagePrint打印整个页面
⑤ PAGE_PageExit退出页模式
备注:
②③可以重复调用
仅支持页模式的机型可以使用这些函数
C POS_XXX
以POS开头的函数,主要是封装了ESC/POS指令,可以控制打印机打印。
① 进纸系列函数可以控制打印机进纸
② 设置系列函数可以设置打印的格式等
③ 打印系列函数可以打印文本,条码,QR码,图片等
④ 查询系列函数可以查询打印机状态
⑤ 其他函数可以控制钱箱、切刀、蜂鸣器等
D LABEL_XXX
以LABEL开头的函数,主要封装了标签指令,可以控制标签打印机打印。
① LABEL_PageBegin 初始化一个标签页
② LABEL_DrawXXX 在标签页上画内容
③ LABEL_PageEnd 结束标签页
④ LABEL_PagePrint 打印标签页
二 函数说明
Port Function
Port_OpenCom
Syntax
bool Port_OpenCom(char * pName, int dwBaudrate, int dwParity)
Parameters
pName
端口名称。
例如:COM1,COM2,COM3...COM11...
dwBaudrate
波特率
一般取9600,19200,38400,57600,115200.
需要和打印机波特率保持一致,建议使用高波特率以获得较好的打印速度
dwParity
效验位
/* 0-4=None,Odd,Even,Mark,Space */
Return value
如果打开成功,返回true。否则,返回false
Remarks
如果串口被占用,打开串口会失败。
如果波特率和打印机波特率不匹配,则无法打印。
Port_OpenTcp
Syntax
bool Port_OpenTcp(char * szIp, unsigned short nPort)
Parameters
szIp
IP地址
例如:192.168.1.87
nPort
端口号
固定值:9100
Return value
如果打开成功,返回true。否则,返回false
Remarks
PC和打印机需要同网段的才可以连接
Port_OpenUsb
Syntax
bool Port_OpenUsb(char * pName)
Parameters
pName
端口名称。
可以通过Port_EnumUSB来得到打印机的名称。
也可以使用任意其他字符串,这时候,如果找到USB打印机,会直接打开
Return value
如果打开成功,返回true。否则,返回false
Remarks
USB打印机接到电脑上,如果设备管理器中出现了USB Printing Support,则可以使用该函数打开。
如果出现的是 Prolific USB-to-Serial Comm Port,则说明这是USB虚拟串口,需要使用Port_OpenCom。
Port_OpenLpt
Syntax
bool Port_OpenLpt(char * pName)
Parameters
pName
端口名称。
例如:LPT1,LPT2,LPT3...
Return value
如果打开成功,返回true。否则,返回false
Remarks
并口只有单向通讯,只可写不可读。
一切查询状态的函数,对并口来说均是无效的。
Port_OpenPrn
Syntax
bool Port_OpenPrn(char * pName)
Parameters
pName
打印机名称。
例如:POS58 Printer
Return value
如果打开成功,返回true。否则,返回false
Remarks
Port_Close
Syntax
VOID Port_Close()
Parameters
Return value
Remarks
关闭端口
Port_EnumCom
枚举串口
Syntax
void Port_EnumCom(char * pBuf, int cbBuf, int * pcbNeeded, int * pcnReturned)
Parameters
pBuf
枚举到的端口列表。
cbBuf
pBuf缓冲区字节数
pcbNeeded
需要的缓冲区长度
pcnReturned
返回的端口数目
Return value
Remarks
使用范例代码如下:C++
VOID EnumComToComboBox(HWND hCbx)
{
int cbNeeded = 0;
int cnReturned = 0;
Port_EnumCom(NULL, 0, &cbNeeded, &cnReturned);
if (cbNeeded)
{
CHAR * pBuf = (CHAR *)malloc(cbNeeded);
if (pBuf)
{
Port_EnumCom(pBuf, cbNeeded, &cbNeeded, &cnReturned);
CHAR * pDevice = pBuf;
for (int i = 0; i < cnReturned; ++i)
{
//ComboBox_AddString(hCbx, pDevice);
SendMessageA(hCbx, CB_ADDSTRING, 0, (LPARAM)pDevice); pDevice += strlen(pDevice) + 1;
}
free(pBuf);
}
}
}
Port_EnumLpt
枚举并口
void Port_EnumLpt(char * pBuf, int cbBuf, int * pcbNeeded, int * pcnReturned)
Parameters
pBuf
枚举到的端口列表。
cbBuf
pBuf缓冲区字节数
pcbNeeded
需要的缓冲区长度
pcnReturned
返回的端口数目
Return value
Remarks
使用范例代码同Port_EnumCom
Port_EnumUsb
枚举USB端口
void Port_EnumUSB(char * pBuf, int cbBuf, int * pcbNeeded, int * pcnReturned)
Parameters
pBuf
枚举到的端口列表。
cbBuf
pBuf缓冲区字节数
pcbNeeded
需要的缓冲区长度
pcnReturned
返回的端口数目
Return value
Remarks
使用范例代码同Port_EnumCom
Port_EnumPrn
枚举打印机
void Port_EnumPrn(char * pBuf, int cbBuf, int * pcbNeeded, int * pcnReturned)
Parameters
pBuf
枚举到的打印机列表。
cbBuf
pBuf缓冲区字节数
pcbNeeded
需要的缓冲区长度
pcnReturned
返回的打印机数目
Return value
Remarks
使用范例代码同Port_EnumCom
Page Function
PAGE_PageEnter
选择页模式
Syntax
bool PAGE_PageEnter()
Parameters
Return value
如果指令写入成功,返回true。否则,返回false
Remarks
PAGE_PagePrint
页模式下打印页面内容
Syntax
bool PAGE_PagePrint()
Parameters
Return value
如果指令写入成功,返回true。否则,返回false
Remarks
PAGE_PageExit
退出页模式
Syntax
bool PAGE_PageExit()
Parameters
Return value
如果指令写入成功,返回true。否则,返回false
Remarks
PAGE_SetPrintArea
页模式下设置打印区域
Syntax
bool PAGE_SetPrintArea(int left, int top, int right, int bottom, int direction)
Parameters
left
打印区域左上角x坐标
top
打印区域左上角y坐标
right
打印区域右下角x坐标
bottom
打印区域右下角y坐标
direction
打印区域方向
direction |
打印方向 |
起始位置 |
0 |
自左向右 |
左上角(图中的A) |
1 |
自下向上 |
左下角(图中的B) |
2 |
自右向左 |
右下角(图中的C) |
3 |
自上向下 |
右上角(图中的D) |
Return value
如果指令写入成功,返回true。否则,返回false
Remarks
下图展示了打印区域的概念
PAGE_DrawString
画文本
Syntax
bool PAGE_DrawString(char *pszString, int x, int y, int nWidthScale, int nHeightScale, int nFontType, int nFontStyle)
Parameters
pszString
要打印的内容
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x |
含义 |
-1 |
左对齐 |
-2 |
居中对齐 |
-3 |
右对齐 |
大于等于0 |
横坐标 |
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
nWidthScale
指定宽度放大倍数 [0,7]
nHeightScale
指定高度放大倍数 [0,7]
nFontType
字体类型
0 标准字体
1 压缩字体
nFontStyle
指定字体风格,可以为下表中的一个或者若干个(相加即可)
Value |
Meaning |
0x00 |
正常 |
0x08 |
加粗 |
0x80 |
1点粗的下划线 |
0x100 |
2点粗的下划线 |
0x200 |
倒置(只在行首有效) |
0x400 |
反显(黑底白字) |
0x1000 |
每个字符顺时针旋转 90 度 |
Return value
如果指令写入成功,返回true。否则,返回false
Remarks
页模式Draw函数并不立刻打印,只是填在页面中,直到调用了PAGE_PagePrint,才开始打印。
PAGE_DrawUTF8String
画文本
Syntax
bool PAGE_DrawUTF8String(wchar_t *pszString, int x, int y, int nWidthScale, int nHeightScale, int nFontType, int nFontStyle)
Parameters
pszString
要打印的内容,UNICODE字符串。
x
y
nWidthScale
nHeightScale
nFontType
nFontStyle
同PAGE_DrawString
Return value
同PAGE_DrawString
Remarks
同PAGE_DrawString
PAGE_DrawRect
画矩形
Syntax
bool PAGE_DrawRect(int x, int y, int nWidth, int nHeight, int nColor)
Parameters
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
y
指定垂直方向的起始点位置离打印区域上边界的点数。(纵坐标)
nWidth
指定矩形宽度
nHeight
指定矩形高度
nColor
指定矩形颜色
0 白色
1 黑色
Return value
如果指令写入成功,返回true。否则,返回false
Remarks
如果想画线,只需要把宽度设置为1(若想画粗一点的线,可设置大一点)即可。
注意:不要画太大区域矩形,否则电源撑不住打印机会复位。
PAGE_DrawBarcode
画条码
Syntax
bool PAGE_DrawBarcode(char *pszBarcodeContent, int x, int y, int nBarcodeUnitWidth, int nBarcodeHeight, int nHriFontType, int nHriFontPosition, int nBarcodeType)
Parameters
pszBarcodeContent
条码内容
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x |
含义 |
-1 |
左对齐 |
-2 |
居中对齐 |
-3 |
右对齐 |
大于等于0 |
横坐标 |
y