介绍

POSDLL 动态库的出口函数是用来直接控制 POS 打印机工作的，分为四个部分：通用函数、标准模式打印函数、页模式打印函数、调试等函数。

1．通用函数

这一部分函数同时支持打印机的三种打印模式（标准模式，页模式，标签模式）。

POS_Open | 打开端口，建立与打印机的通信连接
POS_Close | 关闭端口，断开与打印机的连接
POS_Reset | 复位打印机
POS_SetMode | 设置打印机的打印模式和出纸模式
POS_SetMotionUnit | 设置打印机的移动单位
POS_SetCharSetAndCodePage | 设置国际字符集和代码页
POS_FeedLine | 打印一行或回车换行
POS_SetLineSpacing | 设置字符行高
POS_SetRightSpacing | 设置字符右间距
POS_PreDownloadBmpToRAM | 预下载一幅位图到 RAM
POS_PreDownloadBmpsToFlash | 预下载若干位图到 Flash
POS_QueryStatus | 非实时查询状态
POS_RTQueryStatus | 实时查询状态
POS_NETQueryStatus | 查询网络设备状态
POS_KickOutDrawer | 打开钱箱
POS_CutPaper | 切纸
POS_StartDoc | 开始一个打印作业。
POS_EndDoc | 结束一个打印作业
POS_BeginSaveFile | 将数据写入文件。
POS_EndSaveFile | 结束将数据写入文件

2．只支持标准打印模式（行模式）下的打印函数

POS_S_SetAreaWidth | 设置打印区域宽度
POS_S_TextOut | 打印文本
POS_S_DownloadAndPrintBmp | 下载并立即打印位图
POS_S_PrintBmpInRAM | 打印已经下载到 RAM 中的位图
POS_S_PrintBmpInFlash | 打印已经下载到 Flash 中的位图
POS_S_SetBarcode | 打印条码

3. 只支持页打印模式（P）或标签打印模式（L）下的打印函数

POS_PL_SetArea | 设置打印区域
POS_PL_TextOut | 打印文本
POS_PL_DownloadAndPrintBmp | 下载并立即打印位图
POS_PL_PrintBmpInRAM | 打印已经下载到 RAM 中的位图
POS_PL_SetBarcode | 打印条码
POS_PL_Print | 打印整页或标签
POS_PL_Clear | 清除页或标签的数据缓冲区

4. 杂项

主要用于调试和自定义控制函数使用。

POS_WriteFile | 往端口或文件写数据
POS_ReadFile | 从端口或文件读数据
POS_SetHandle | 设置端口或文件的句柄
POS_GetVersionInfo | 获取 dll 的版本信息

5．函数的返回值说明

Flag | Value | Meaning
POS_SUCCESS | 1001 | 函数执行成功
POS_FAIL | 1002 | 函数执行失败
POS_ERROR_INVALID_HANDLE | 1101 | 端口或文件的句柄无效
POS_ERROR_INVALID_PARAMETER | 1102 | 参数无效
POS_ERROR_NOT_BITMAP | 1103 | 不是位图格式的文件
POS_ERROR_NOT_MONO_BITMAP | 1104 | 位图不是单色的
POS_ERROR_BEYONG_AREA | 1105 | 位图超出打印机可以处理的大小
POS_ERROR_INVALID_PATH | 1106 | 没有找到指定的文件路径或名

6．另外请参考“附录 A 打印机补充说明”、“附录 B 条码说明”、“版本发布记录”和“网络打印简介”。


版本发布记录

版本号：1.40

发布日期：2007年03月29日

备注：

1、支持网络通讯端口；

2、修改了POS_Open函数的参数过滤；

3、修改了POS_Close函数的关闭处理。

版本号：1.35

发布日期：2003年11月24日

备注：

支持USB通讯端口。

1、 增加了函数：

POS_BeginSaveFile

POS_EndSaveFile

2、 修改对POS_Open函数的参数定义。

版本号：1.22

发布日期：2002年11月21日

备注：

支持POS打印机固件版本2.09CP。

1、增加了函数：

POS_SetMotionUnit

POS_SerCharSetAndCodePage

POS_S_SetAreaWidth

并去掉了函数：

POS_FeedLines

POS_PL_PrintBmpInFlash。

2、对于POS_S_TextOut函数，去掉了逆时针旋转功能，以及nFontStyle参数的POS_FONT_STYLE_ANTI_CLOCKWISE_90选项；

3、修改了POS_GetVersionInfo函数的定义。

版本号：1.0.2

发布日期：2002年8月5日

备注：

第一版。

注意：当前版本不保证能够在较新版本的POS打印机、较旧版本的POS打印机或所有型号的POS打印机上使用。


HANDLE POS_Open(

LPCTSTR lpName,

int nComBaudrate,

int nComDataBits,

int nComStopBits,

int nComParity,

int nParam

)

描述

打开端口。

参数

lpName

[in] 指向以 null 结尾的打印机名称或端口名称。

当参数nParam的值为POS_COM_DTR_DSR、POS_COM_RTS_CTS、POS_COM_XON_XOFF或POS_COM_NO_HANDSHAKE 时， “COM1”，“COM2”，“COM3”，“COM4”等表示串口；

当参数nParam的值为POS_OPEN_PARALLEL_PORT时，“LPT1”，“LPT2”等表示并口；

当参数nParam的值为POS_OPEN_BYUSB_PORT时，“BYUSB-0”、“BYUSB-1”、“BYUSB-2”、“BYUSB-3”等表示USB端口。

当参数nParam的值为POS_OPEN_PRINTNAME时，表示打开指定的打印机。

当参数nParam的值为POS_OPEN_NETPORT时，表示打开指定的网络接口，如“192.168.10.251”表示网络接口IP地址，打印时参考“网络打印简介”。

nComBaudrate

[in] 指定串口的波特率（bps）。

可以为以下值之一：

2400，4800，9600，19200，38400，57600，115200等。

具体的值与打印机的端口参数有关，不过最大不应超过256000。

nComDataBits

[in] 指定串口通讯时的数据位数。

可以为 5 到 8。

具体的值与打印机的端口参数有关。

nComStopBits

[in] 指定串口通讯时的数据停止位数。

可以为以下值之一：

Flag | Value | Meaning
POS_COM_ONESTOPBIT | 0x00 | 停止位为1
POS_COM_ONE5STOPBITS | 0x01 | 停止位为1．5
POS_COM_TWOSTOPBITS | 0x02 | 停止位为2

nComParity

[in] 指定串口的奇偶校验方法。

可以为以下值之一：

Flag | Value | Meaning
POS_COM_NOPARITY | 0x00 | 无校验
POS_COM_ODDPARITY | 0x01 | 奇校验
POS_COM_EVENPARITY | 0x02 | 偶校验
POS_COM_MARKPARITY | 0x03 | 标记校验
POS_COM_SPACEPARITY | 0x04 | 空格校验

nParam

[in] 指定串口的流控制（握手）方式、或表示通讯方式。请参考参数lpName的说明。

可以为以下值之一：

Flag | Value | Meaning
POS_COM_DTR_DSR | 0x00 | 流控制为DTR/DST
POS_COM_RTS_CTS | 0x01 | 流控制为RTS/CTS
POS_COM_XON_XOFF | 0x02 | 流控制为XON/OFF
POS_COM_NO_HANDSHAKE | 0x03 | 无握手
POS_OPEN_PARALLEL_PORT | 0x12 | 打开并口通讯端口
POS_OPEN_BYUSB_PORT | 0x13 | 打开USB通讯端口
POS_OPEN_PRINTNAME | 0X14 | 打开打印机驱动程序
POS_OPEN_NETPORT | 0x15 | 打开网络接口

其中前两项也统称为硬件流控制，一般选用 RTS/CTS 方式。

返回值

如果函数调用成功，返回一个已打开的端口句柄。

如果函数调用失败，返回值为 INVALID_HANDLE_VALUE （-1）。

备注

1．如果打开的是并口（LPT1，LPT2等），那么后面的参数 nComBaudrate，nComDataBits，nComStopBits，nComParity将被忽略，可以设置为0，并且参数nParam必需指定为POS_OPEN_PARALLEL_PORT。同样，打开USB端口或打印机驱动程序，nParam必需指定为相应的参数修改。

2．如果由 lpName 指定的通讯端口被其他程序占用，那么返回值为 INVALID_HANDLE_VALUE。

3．如果参数出错，也返回INVALID_HANDLE_VALUE。

4．如果通讯端口已经打开，则会尝试关闭已经打开的端口，然后再去打开。

5．如果参数nParam指定打开USB端口，则需要安装随机附带的端口驱动程序，并把打印机配置为支持USB端口模式。

6．另请参考 POS_Close，POS_Reset。

相关指令

[无]


int POS_Close

int POS_Close(void)

描述

关闭已经打开的并口或串口，USB端口，网络接口或打印机。

参数

无。

返回值

如果函数调用成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

请参考 POS_Open。

相关指令

[无]


int POS_Reset

int POS_Reset(void)

描述

复位打印机，把打印缓冲区中的数据清除，字符和行高的设置被清除，打印模式被恢复到上电时的缺省模式。

参数

无

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

函数成功执行后，则：

1．接收缓冲区中的指令保留。

2．宏定义保留。

3．Flash 中的位图保留。

4．Flash 中的数据保留。

5．DIP开关的设置不进行再次检测。

相关指令

ESC @


int POS_SetMode(

int nPrintMode

)

描述

设置打印机的打印模式。

参数

nPrintMode

[in] 指定打印模式。

可以为以下值之一：

Flag | Value | Meaning
POS_PRINT_MODE_STANDARD | 0x00 | 标准模式（行模式）
POS_PRINT_MODE_PAGE | 0x01 | 页模式
POS_PRINT_MODE_BLACK_MARK_LABEL | 0x02 | 黑标记标签模式
POS_PRINT_MODE_WHITE_MARK_LABEL | 0x03 | 白标记标签模式

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1、部分打印机型号不支持黑标记标签模式和白标记标签模式，请参考相关用户手册。

2、另请参考 POS_CutPaper。

相关指令

ESC S，ESC L，ESC c 0 n


int POS_SetMotionUnit(

int nHorizontalMU,

int nVerticalMU

)

描述

设置打印机的移动单位。

参数

nHorizontalMU

[in] 把水平方向上的移动单位设置为 25.4 / nHorizontalMU 毫米。

可以为0到255。

nVerticalMU

[in] 把垂直方向上的移动单位设置为 25.4 / nVerticalMU 毫米。

可以为0到255。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

另请参考 POS_SetMode。

相关指令

GS P x y


int POS_SetCharSetAndCodePage(

int nCharSet,

int nCodePage

)

描述

选择国际字符集和代码页。

参数

nCharSet

[in] 指定国际字符集。不同的国际字符集对0x23到0x7E的ASCII码值对应的符号定义是不同的。

可以为以下列表中所列值之一。

Value | Meaning
0x00 | U.S.A
0x01 | France
0x02 | Germany
0x03 | U.K.
0x04 | Denmark I
0x05 | Sweden
0x06 | Italy
0x07 | Spain I
0x08 | Japan
0x09 | Nonway
0x0A | Denmark II
0x0B | Spain II
0x0C | Latin America
0x0D | Korea

nCodePage

[in] 指定字符的代码页。不同的代码页对0x80到0xFF的ASCII码值对应的符号定义是不同的。

可以为以下列表中所列值之一。

Value | Meaning
0x00 | PC437 [U.S.A. Standard Europe
0x01 | Reserved
0x02 | PC850 [Multilingual]
0x03 | PC860 [Portuguese]
0x04 | PC863 [Canadian-French]
0x05 | PC865 [Nordic]
0x12 | PC852
0x13 | PC858

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_PARAMETER

POS_ERROR_INVALID_HANDLE

备注

1、有些打印机可能不支持所有字符集或代码页，详细信息请参考打印机配置样张或附带的用户手册。

2、参数nCodePage值的可取范围为0到255，除表格中所列的其他值保留以后使用。

3、另请参考 POS_SetMode。

相关指令

ESC R n，ESC t n


int POS_FeedLine

int POS_FeedLine(void)

描述

向前走纸。

参数

无。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

1．如果在标准打印模式（行模式）下打印文本，则打印缓冲区中的数据，且打印位置自动移动到下一行的行首。

2．如果在标准打印模式（行模式）下打印位图，则在指定的位置打印位图，且打印位置自动移动到下一行的行首。

3．如果在页模式或标签模式下，则把需要打印的数据设置在指定的位置，同时把打印位置移动到下一个行首，但是并不立即进纸并打印，而是一直到调用 POS_PL_Print 函数时才打印。

相关指令

LF


int POS_SetLineSpacing(

int nDistance

)

描述

设置字符的行高。

参数

nDistance

[in] 指定行高点数。

可以为 0 到 255。每点的距离与打印头分辨率相关。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1、如果把行高设置为0，则打印机使用内部的默认行高值，即1/6英寸。如果打印头纵向分辨率为180dpi 则相当于 31 点高。

2、如果行高被设置为小于当前的字符高度，则打印机将使用当前字符高度为行高。

3、另请参考 POS_SetRightSpacing。

相关指令

ESC 2，ESC 3 n


int POS_SetRightSpacing(

int nDistance

)

描述

设置字符的右间距（相邻两个字符的间隙距离）。

参数

nDistance

[in] 指定右间距的点数。

可以为 0 到 255。每点的距离与打印头分辨率相关。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1、字符右间距的设置在标准模式和页模式或标签模式是独立的。

2、如果字符放大，则字符右间距同倍放大。

3、另请参考 POS_SetLineSpacing。

相关指令

ESC SP n


int POS_PreDownloadBmpToRAM(

char *pszPath,

int nID

)

描述

预下载一幅位图到打印机的 RAM 中，同时指定此位图的 ID 号。

参数

pszPath

[in] 指向以 null 结尾的表示位图路径及其文件名的字符串。

nID

[in] 指定将要下载的位图的 ID 号。

可以为 0 到 7。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PATH

POS_ERROR_INVALID_PARAMETER

POS_ERROR_NOT_BITMAP

POS_ERROR_NOT_MONO_BITMAP

POS_ERROR_BEYOND_AREA

备注

1．将要下载的位图大小不能超过 900 平方毫米 (大约为 240点 × 240 点)。

2．位图必须是单色的。

3．一般打印机内部的可用 RAM 空间为 8K 字节。

4．位图的 ID 号不要求是连续的。

5．另请参考POS_PreDownloadBmpsToFlash、POS_S_PrintBmpInRAM、POS_PL_PrintBmpInRAM。

相关指令

GS # n，GS * x y d1…d(x*y*8)


int POS_PreDownloadBmpsToFlash(

char* pszPaths[],

int nCount

)

描述

预下载一幅或若干幅位图到打印机的 Flash 中。

参数

pszPaths

[in] 指向包含若干位图的文件路径及其名称的字符串数组。

nCount

[in] 指定将要下载的位图幅数。

可以为1 到 255。

返回值

如果函数成功，则返回值为 POS_SUCCESS.

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_PATH

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

POS_ERROR_NOT_BITMAP

POS_ERROR_NOT_MONO_BITMAP

POS_ERROR_BEYONG_AREA

备注

1．每幅位图的数据大小不能超过 8K 字节（大约为 256 点 × 256 点）。

2．位图必须为单色位图。

3．下载到 Flash 中的位图的图号与位图的个数和排列顺序相关。位图的下载顺序和文件名在数组中的顺序一致，是连续的。如：第一个位图的图号为 1，第二个为 2，以此类推。

4．每次下载都会把上次下载到 Flash 中的位图都清除。

5．关电后不会被清除。

6．打印机内部Flash 的可使用空间与具体打印机型号有关。

7．另请参考POS_PreDownloadBmpToRAM、POS_S_PrintBmpInFlash。

相关指令

FS q n [xL xH yL yH d1...dk]1...[xL xH yL yH d1...dk]n


int POS_QueryStatus(

char *pszStatus,

int nTimeouts

)

描述

通过串口查询打印机当前的状态。此函数是非实时的。

参数

pszStatus

[out] 指向返回的状态数据的缓冲区，缓冲区大小为 1 个字节。

返回的各状态位意义如下表所示：

Bit | Status | Meaning
0，1 | 0/1 | 容纸器中有纸 / 纸将用尽
2，3 | 0/1 | 打印头处有纸 / 无纸
4，5 | 0/1 | 钱箱连接器引脚 3 的电平为低 / 高（表示打开或关闭）
6，7 | 0 | 保留（固定为0）

nTimeouts

[in] 设置查询状态时大约的超时时间（毫秒）。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

1．此函数在并口通讯中无效。

2．部分型号的打印机在上盖打开或打印头抬起、缺纸、Feed键按下等情况下，不能返回打印机的状态。

3．另请参考 POS_RTQueryStatus。

相关指令

GS r n


int POS_RTQueryStatus(

char *pszStatus

)

描述

通过串口返回当前打印机的状态。此函数是实时的。

参数

pszStatus

[out] 指向接收返回状态的缓冲区，缓冲区大小为 1 个字节。

返回的各状态位意义如下表所示：

Bit | Status | Meaning
0 | 0/1 | 钱箱连接器引脚 3 的电平为低/高（表示打开或关闭）
1 | 0/1 | 打印机联机/脱机
2 | 0/1 | 上盖关闭/打开
3 | 0/1 | 没有/正在由Feed键按下而进纸
4 | 0/1 | 打印机没有/有出错
5 | 0/1 | 切刀没有/有出错
6 | 0/1 | 有纸/纸将尽（纸将尽传感器探测）
7 | 0/1 | 有纸/纸用尽（纸传感器探测）

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

1．此函数在并口通讯中无效。

2．部分型号的打印机在上盖打开或打印头抬起、缺纸、Feed键按下等情况下，不能返回打印机的状态。

3．另请参考 POS_QueryStatus。

相关指令

DLE EOT n


int POS_NETQueryStatus(

char *ipAddress,

char *pszStatus

)

描述

通过网络接口查询返回当前打印机的状态。

参数

ipAddress

[in] 设备IP地址。如“192.168.10.251”。

pszStatus

[out] 指向接收返回状态的缓冲区，缓冲区大小为 1 个字节。

返回的各状态位意义如下表所示：

Bit | Status | Meaning
0 | 0/1 | 钱箱连接器引脚 3 的电平为低/高（表示打开或关闭）
1 | 0/1 | 打印机联机/脱机
2 | 0/1 | 上盖关闭/打开
3 | 0/1 | 没有/正在由Feed键按下而进纸
4 | 0/1 | 打印机没有/有出错
5 | 0/1 | 切刀没有/有出错
6 | 0/1 | 有纸/纸将尽（纸将尽传感器探测）
7 | 0/1 | 有纸/纸用尽（纸传感器探测）

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

1．另请参考 POS_QueryStatus。

相关指令

0x1b 0x76


int POS_KickOutDrawer(

int nID,

int nOnTimes,

int nOffTimes
)

描述

往钱箱引脚发送脉冲以打开钱箱。

参数

nID

[in] 指定钱箱的引脚。

可以为以下值之一：

Value | Meaning
0x00 | 钱箱连接器引脚2
0x01 | 钱箱连接器引脚5

nOnTimes

[in] 指定往钱箱发送的高电平脉冲保持时间，即 nOnTimes × 2 毫秒。

可以为1 到 255。

nOffTimes
[in] 指定往钱箱发送的低电平脉冲保持时间，即 nOffTimes × 2 毫秒。

可以为1 到 255。

返回值

如果函数成功，则返回值为 POS_SUCCESS.

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．如果参数 nOffTimes 的值小于 nOnTimes, 则往钱箱发送的低电平脉冲的保持时间为nOnTimes × 2 毫秒。

2．请参考钱箱供应商提供的相关资料。

相关指令

ESC p m t1 t2


int POS_CutPaper(

int nMode,

int nDistance

)

描述

切纸。

参数

nMode

[in] 指定切纸模式。

可以为以下值之一：

Flag | Value | Meaning
POS_CUT_MODE_FULL | 0x00 | 全切
POS_CUT_MODE_PARTIAL | 0x01 | 半切

nDistance

[in] 指定进纸长度的点数。

可以为 0 到 255。每点的距离与打印头分辨率相关。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．如果指定为全切，则参数 nDistance 忽略。

2．如果指定为半切，则打印机走纸 nDistance 点，然后切纸。

3．另请参考 POS_SetMode。

相关指令

(1) GS V m，(2) GS V m n


BOOL POS_StartDoc()

描述

新建一个打印作业。

参数

无

返回值

如果函数成功，为TRUE；否则为FALSE。

备注

用户可以在多次作业开始时调用一次该函数，也可以每次作业调用此功能。

相关指令

[无]


BOOL POS_EndDoc()

描述

结束一个打印作业。

参数

无

返回值

如果函数成功，为TRUE；否则为FALSE。

备注

用户可以在多次作业结束时调用一次该函数，也可以每次作业调用此功能。

相关指令

[无]


void POS_BeginSaveFile(

LPCTSTR lpFileName,

BOOL bToPrinter

)

描述

开始把发往打印机（端口）的数据保存到指定的文件。

参数

lpFileName

[in] 保存数据的文件名称，是null结尾的字符串。可以是绝对路径，也可以是相对路径。

bToPrinter

[in]

TRUE ：指定是否在保存数据到文件的同时，把数据也发送到打印机（端口）。

FALSE ：指定是否在保存数据到文件的同时，不把数据也发送到打印机（端口）。

返回值

无。

备注

1． 如果指定的文件存在，则以追加方式不断把数据保存到此文件；如果指定的文件不存在，则会创建，然后再以追加方式保存数据。

2． 另请参考POS_EndSaveFile。

相关指令

无。


void POS_EndSaveFile()

描述

结束保存数据到文件的操作。

参数

无。

返回值

无。

备注

另请参考POS_BeginSaveFile。

相关指令

无。


int POS_S_SetAreaWidth(

int nWidth

)

描述

设置标准模式下的打印区域宽度。

参数

nWidth

[in] 指定打印区域的宽度。

可以为 0 到 65535点。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．此函数只在行首有效。

2．由于不同的打印机型号有不同的打印头宽度（或内部缓冲区的宽度），所以可打印区域的宽度是不同的。

3．如果打印区域的宽度设置小于一个字符宽度，则当打印机接受打印一个字符时，会自动往右或左扩展到一个字符的宽度，当打印位图时，打印机会以同样的方式来扩展并打印。

4．如果打印区域的宽度加上左边距宽度大于可打印区域宽度，则打印机使用的打印区域宽度大小是可打印区域宽度和左边距宽度之差。

5．另请参考POS_PL_SetArea和POS_SetMotionUnit。

相关指令

GS W nL nH


int POS_S_TextOut(

char *pszString,

int nOrgx,

int nWidthTimes,

int nHeightTimes,

int nFontType,

int nFontStyle

)

描述

把将要打印的字符串数据发送到打印缓冲区中，并指定X 方向（水平）上的绝对起始点位置，指定每个字符宽度和高度方向上的放大倍数、类型和风格。

参数

pszString

[in] 指向以 null 结尾的字符串缓冲区。

nOrgx

[in] 指定 X 方向（水平）的起始点位置离左边界的点数。

可以为 0 到 65535。

nWidthTimes

[in] 指定字符的宽度方向上的放大倍数。

可以为 1到 6。

nHeightTimes

[in] 指定字符高度方向上的放大倍数。

可以为 1 到 6。

nFontType

[in] 指定字符的字体类型。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_FONT_TYPE_STANDARD | 0x00 | 标准 ASCII
POS_FONT_TYPE_COMPRESSED | 0x01 | 压缩 ASCII
POS_FONT_TYPE_UDC | 0x02 | 用户自定义字符
POS_FONT_TYPE_CHINESE | 0x03 | 标准 “宋体”

nFontStyle

[in] 指定字符的字体风格。

可以为以下列表中的一个或若干个。

Flag | Value | Meaning
POS_FONT_STYLE_NORMAL | 0x00 | 正常
POS_FONT_STYLE_BOLD | 0x08 | 加粗
POS_FONT_STYLE_THIN_UNDERLINE | 0x80 | 1点粗的下划线
POS_FONT_STYLE_THICK_UNDERLINE | 0x100 | 2点粗的下划线
POS_FONT_STYLE_UPSIDEDOWN | 0x200 | 倒置（只在行首有效）
POS_FONT_STYLE_REVERSE | 0x400 | 反显（黑底白字）
POS_FONT_STYLE_SMOOTH | 0x800 | 平滑处理（用于放大时）
POS_FONT_STYLE_CLOCKWISE_90 | 0x1000 | 每个字符顺时针旋转 90 度

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．在打印机中，一般内部已有字体类型如下表所示，但是不同机型会有所不同，可以参考打印机的测试样张。

Font Type | Size (W * H)
Standard ASCII | 12 * 24 / 13 * 24
Compressed ASCII | 9 * 17
标准宋体 | 24 * 24

2．如果字符风格（nFontStyle）设置为“反显（POS_FONT_STYLE_REVERSE）”，或“顺时针旋转90度（POS_FONT_STYLE_CLOCKWISE_90）”，那么“细下划线（POS_FONT_STYLE_THIN_UNDERLINE）” 和“粗下划线（POS_FONT_STYLE_THICK_UNDERLINE）”的功能将无效。

3．如果在汉字字符模式下，则一次调用时，标准ASCII字符（除部分符号和全角下的符号）和汉字可以混合打印；如果在ASCII字符模式下，则只可以打印标准 ASCII 字符和压缩的ASCII字符。

4．此函数并不立即打印传入的字符串，而是一直到调用函数 POS_FeedLine 时才进行实际的进纸并打印的动作。但是，如果传入的字符串已经大于可打印宽度时，那么会自动进纸并打印。

5．另请参考 POS_PL_TextOut。

相关指令

ESC $ nL nH，GS M n，GS B n，GS b n，GS ! n，ESC E n，ESC – n


int POS_S_DownloadAndPrintBmp(

char *pszPath,

int nOrgx,

int nMode

)

描述

下载并打印位图

参数

pszPath

[in] 指向以null 结尾的包含位图文件路径及其名称的字符串。

nOrgx

[in] 指定将要打印的位图和左边界的距离点数。

可以为 0到 65535 点。

nMode

[in] 指定位图的打印模式。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_BITMAP_MODE_8SINGLE_DENSITY | 0x00 | 8点单密度
POS_BITMAP_MODE_8DOUBLE_DENSITY | 0x01 | 8点双密度
POS_BITMAP_MODE_24SINGLE_DENSITY | 0x20 | 24点单密度
POS_BITMAP_MODE_24DOUBLE_DENSITY | 0x21 | 24点双密度

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PATH

POS_ERROR_INVALID_PARAMETER

POS_ERROR_NOT_BITMAP

POS_ERROR_NOT_MONO_BITMAP

POS_ERROR_BEYOND_AREA

备注

1、位图不可以大于 8K 字节。

2、位图必须是单色的。

3、打印结束后，行高被设置为 31 点高。

4、另请参考 POS_PreDownloadBmpToRAM，POS_PreDownloadBmpsToFlash，POS_PL_DownloadBmpAndPrint， POS_SetLineSpacing。

相关指令

ESC $ nL nH，ESC * m nL nH d1...dk


int POS_S_PrintBmpInRAM(

int nID,

int nOrgx,

int nMode

)

描述

打印已经下载到 RAM 中的位图。

参数

nID

[in] 指定位图的 ID 号。

可以为 0 到 7。

nOrgx

[in] 指定将要打印的位图和左边界的距离点数。

可以为 0到 65535 点。

nMode

[in] 指定位图的打印模式。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_BITMAP_PRINT_NORMAL | 0x00 | 正常
POS_BITMAP_PRINT_DOUBLE_WIDTH | 0x01 | 倍宽
POS_BITMAP_PRINT_DOUBLE_HEIGHT | 0x02 | 倍高
POS_BITMAP_PRINT_QUADRUPLE | 0x03 | 倍宽且倍高

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

参考函数 POS_PreDownloadBmpToRAM，POS_PL_PrintBmpInRAM。

相关指令

ESC $ nL nH，GS # n，GS / m


int POS_S_PrintBmpInFlash(

int nID,

int nOrgx,

int nMode

)

描述

打印已经下载到 Flash 中的位图。

参数

nID

[in] 指定位图的 ID 号。

可以为 1 到 255。

nOrgx

[in] 指定将要打印的位图和左边界的距离点数。

可以为 0到 65535 点。

nMode

[in] 指定位图的打印模式。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_BITMAP_PRINT_NORMAL | 0x00 | 正常
POS_BITMAP_PRINT_DOUBLE_WIDTH | 0x01 | 倍宽
POS_BITMAP_PRINT_DOUBLE_HEIGHT | 0x02 | 倍高
POS_BITMAP_PRINT_QUADRUPLE | 0x03 | 倍宽且倍高

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

参考函数 POS_PreDownloadBmpsToFlash。

相关指令

ESC $ nL nH，FS p n m


int POS_S_SetBarcode(

char *pszInfoBuffer,

int nOrgx,

int nType,

int nWidthX,

int nHeight,

int nHriFontType,

int nHriFontPosition,

int nBytesToPrint

)

描述

设置并打印条码。

参数

pszInfoBuffer

[in] 指向以 null 结尾的字符串。每个字符允许的范围和格式与具体条码类型有关。

nOrgx

[in] 指定将要打印的条码的水平起始点与左边界的距离点数。

可以为 0 到65535。

nType

[in] 指定条码的类型。

可以为以下列表中所列值之一。另请参考“附录 B 条码说明”。

Flag | Value | Meaning
POS_BARCODE_TYPE_UPC_A | 0x41 | UPC-A
POS_BARCODE_TYPE_UPC_E | 0x42 | UPC-C
POS_BARCODE_TYPE_JAN13 | 0x43 | JAN13(EAN13)
POS_BARCODE_TYPE_JAN8 | 0x44 | JAN8(EAN8)
POS_BARCODE_TYPE_CODE39 | 0x45 | CODE39
POS_BARCODE_TYPE_ITF | 0x46 | INTERLEAVED 2 OF 5
POS_BARCODE_TYPE_CODEBAR | 0x47 | CODEBAR
POS_BARCODE_TYPE_CODE93 | 0x48 | 25
POS_BARCODE_TYPE_CODE128 | 0x49 | CODE 128

nWidthX

[in] 指定条码的基本元素宽度。

可以为以下列表中所列值（n）之一。

n | 单基本模块宽度 （连续型） | 双基本模块宽度（离散型）
 |  | 窄元素宽度 | 宽元素宽度
2 | 0．25mm | 0．25mm | 0．625mm
3 | 0．375mm | 0．375mm | 1．0mm
4 | 0．5mm | 0．5mm | 1．25mm
5 | 0．625mm | 0．625mm | 1．625mm
6 | 0．75mm | 0．75mm | 1.875mm

nHeight

[in] 指定条码的高度点数。

可以为 1 到 255 。默认值为162 点。

nHriFontType

[in] 指定 HRI（Human Readable Interpretation）字符的字体类型。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_FONT_TYPE_STANDARD | 0x00 | 标准ASCII
POS_FONT_TYPE_COMPRESSED | 0x01 | 压缩ASCII

nHriFontPosition

[in] 指定HRI（Human Readable Interpretation）字符的位置。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_HRI_POSITION_NONE | 0x00 | 不打印
POS_HRI_POSITION_ABOVE | 0x01 | 只在条码上方打印
POS_HRI_POSITION_BELOW | 0x02 | 只在条码下方打印
POS_HRI_POSITION_BOTH | 0x03 | 条码上、下方都打印

nBytesToPrint

[in] 指定由参数 pszInfoBuffer指向的字符串个数，即将要发送给打印机的字符总数。具体值与条码类型有关。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

另请参考POS_PL_SetBarcode 和 “附录 B 条码说明”。

相关指令

ESC $ nL nH，GS w n，GS h n，GS f n，GS H，GS k m n d1…dn


int POS_PL_SetArea(

int nOrgx,

int nOrgy,

int nWidth,

int nHeight,

int nDirection

)

描述

设置页面的打印区域。

参数

nOrgx

[in] 指定区域的 X （水平）方向的起始点和左边界的距离。

可以为 0 到 65535。

nOrgy

[in] 指定区域的 Y （垂直）方向的起始点和上边界（当前打印头位置）的距离点数。

可以为 0 到 65535。

nWidth

[in] 指定打印区域的宽度（水平方向）。

可以为 0 到 65535。

nHeight

[in] 指定打印区域的高度（垂直方向）。

可以为 0 到 65535。

nDirection

[in] 指定打印区域的方向（原点位置）。

可以为以下列表中所列值之一。

Flag | Value | Starting Position
POS_AREA_LEFT_TO_RIGHT | 0 | 左上角
POS_AREA_BOTTOM_TO_TOP | 1 | 左下角
POS_AREA_RIGHT_TO_LEFT | 2 | 右下角
POS_AREA_TOP_TO_BOTTOM | 3 | 右上角

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．由于不同的打印机型号有不同的打印头宽度（或内部缓冲区的宽度），所以可打印区域的宽度是不同的。同样，可打印区域的高度也有可能不同，一般大约是 128 × 8 点，如果参数 nWidth 和 nHeight 所指定的值超过此限制。那么可打印区域自动设置为实际的可打印区域。

2．如果打印区域的宽度或高度设置为0，则打印机停止指令的处理，而将随后接受到的数据都当作普通的字符数据。

3．如果打印区域的起始点超出打印机的可打印区域，则打印机停止指令的处理，而将随后接受到的数据都当作普通的字符数据。

相关指令

ESC W xL xH yL yH dxL dxH dyL dyH，ESC T n


int POS_PL_TextOut(

char *pszString,

int nOrgx,

int nOrgy,

int nWidthTimes,

int nHeightTimes,

int nFontType,

int nFontStyle

)

描述

把将要打印的字符串数据发送到打印缓冲区中，并指定X 方向（水平）上的绝对起始点位置，指定每个字符宽度和高度方向上的放大倍数、类型和风格。

参数

pszString

[in] 指向以 null 结尾的字符串缓冲区。

nOrgx

[in] 指定 X 方向（水平）的起始点位置离左边界的点数。

可以为 0 到 65535。

nOrgy

[in] 指定 Y 方向（垂直）的起始点位置离上边界的点数。

可以为 0 到 65535。

nWidthTimes

[in] 指定字符的宽度方向上的放大倍数。

可以为 1到 6。

nHeightTimes

[in] 指定字符高度方向上的放大倍数。

可以为 1 到 6。

nFontType

[in] 指定字符的字体类型。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_FONT_TYPE_STANDARD | 0x00 | 标准 ASCII
POS_FONT_TYPE_COMPRESSED | 0x01 | 压缩 ASCII
POS_FONT_TYPE_UDC | 0x02 | 用户自定义字符
POS_FONT_TYPE_CHINESE | 0x03 | 标准 “宋体”

nFontStyle

[in] 指定字符的字体风格。

可以为以下列表中的一个或若干个。

Flag | Value | Meaning
POS_FONT_STYLE_NORMAL | 0x00 | 正常
POS_FONT_STYLE_BOLD | 0x08 | 加粗
POS_FONT_STYLE_THIN_UNDERLINE | 0x80 | 1点粗的下划线
POS_FONT_STYLE_THICK_UNDERLINE | 0x100 | 2点粗的下划线
POS_FONT_STYLE_REVERSE | 0x400 | 反显（黑底白字）
POS_FONT_STYLE_SMOOTH | 0x800 | 平滑处理（用于放大时）

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1、在打印机中，一般内部已有字体类型如下表所示，但是不同机型会有所不同，可以参考打印机的测试样张中

Font Type | Size (W * H)
Standard ASCII | 12 * 24 / 13 * 24
Compressed ASCII | 9 * 17
标准宋体 | 24 * 24

2、如果字符风格（nFontStyle）设置为“反显（POS_FONT_STYLE_REVERSE）”那么“细下划线（POS_FONT_STYLE_THIN_UNDERLINE）” 和“粗下划线POS_FONT_STYLE_THICK_UNDERLINE）”的功能将无效。

3、如果在汉字字符模式下，则一次调用时标准ASCII字符（除部分符号）和汉字可以混合打印；如果在ASCII字符模式下，则只可以打印标准 ASCII 字符和压缩的ASCII字符。

4、此函数并不立即打印传入的字符串，而是一直到调用函数 POS_PL_Print 时才进行实际的进纸并打印的动作。

5、另请参考 POS_S_TextOut。

相关指令

ESC $ nL nH，GS $ nL nH，GS M n，GS B n，GS b n，GS ! n，ESC E n，ESC – n


int POS_PL_DownloadAndPrintBmp(

char *pszPath,

int nOrgx,

int nOrgy,

int nMode

)

描述

下载位图到打印缓冲区中。

参数

pszPath

[in] 指向以null 结尾的包含位图文件路径及其名称的字符串。

nOrgx

[in] 指定将要打印的位图和左边界的距离点数。

可以为 0到 65535 点。

nOrgy

[in] 指定将要打印的位图和上边界的距离点数。

可以为 0到 65535 点。

nMode

[in] 指定位图的打印模式。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_BITMAP_MODE_8SINGLE_DENSITY | 0x00 | 8点单密度
POS_BITMAP_MODE_8DOUBLE_DENSITY | 0x01 | 8点双密度
POS_BITMAP_MODE_24SINGLE_DENSITY | 0x20 | 24点单密度
POS_BITMAP_MODE_24DOUBLE_DENSITY | 0x21 | 24点双密度

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PATH

POS_ERROR_INVALID_PARAMETER

POS_ERROR_NOT_BITMAP

POS_ERROR_NOT_MONO_BITMAP

POS_ERROR_BEYOND_AREA

备注

1．位图不可以大于 8K 字节。

2．位图必须是单色的。

3．打印结束后，行高被设置为 31 点高。

4．此函数并不立即进纸并打印位图，而是一直等到调用函数 POS_PL_Print 时才打印。

5．另请参考 POS_PreDownloadBmpToRAM，POS_PreDownloadBmpsToFlash，POS_S_DownloadAndPrintBmp， POS_SetLineSpacing。

相关指令

ESC $ nL nH，GS $ nL nH，ESC * m nL nH d1...dk


int POS_PL_PrintBmpInRAM(

int nID,

int nOrgx,

int nOrgy,

int nMode

)

描述

打印已经下载到 RAM 中的位图。

参数

nID

[in] 指定位图的 ID 号。

可以为 0 到 7。

nOrgx

[in] 指定将要打印的位图和左边界的距离点数。

可以为 0到 65535 点。

nOrgy

[in] 指定将要打印的位图和上边界的距离点数。

可以为 0到 65535 点。

nMode

[in] 指定位图的打印模式。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_BITMAP_PRINT_NORMAL | 0x00 | 正常
POS_BITMAP_PRINT_DOUBLE_WIDTH | 0x01 | 倍宽
POS_BITMAP_PRINT_DOUBLE_HEIGHT | 0x02 | 倍高
POS_BITMAP_PRINT_QUADRUPLE | 0x03 | 倍宽且倍高

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1、此函数并不立即进纸并打印位图，而是一直等到调用函数 POS_PL_Print 时才打印。

2、参考函数 POS_PreDownloadBmpToRAM，POS_S_PrintBmpInRAM。

相关指令

ESC $ nL nH，GS $ nL nH，GS # n，GS / m


int POS_PL_SetBarcode(

char *pszInfoBuffer,

int nOrgx,

int nOrgy,

int nType,

int nWidthX,

int nHeight,

int nHriFontType,

int nHriFontPosition,

int nBytesToPrint

)

描述

设置条码。

参数

pszInfoBuffer

[in] 指向以 null 结尾的字符串。每个字符允许的范围和格式与具体条码类型有关。

nOrgx

[in] 指定将要打印的条码的起始点与左边界的距离点数。

可以为 0 到65535。

nOrgy

[in] 指定将要打印的条码的起始点与上边界的距离点数。

可以为 0 到65535。

nType

[in] 指定条码的类型。

可以为以下列表中所列值之一。另请参考“附录 B 条码说明”。

Flag | Value | Meaning
POS_BARCODE_TYPE_UPC_A | 0x41 | UPC-A
POS_BARCODE_TYPE_UPC_E | 0x42 | UPC-C
POS_BARCODE_TYPE_JAN13 | 0x43 | JAN13(EAN13)
POS_BARCODE_TYPE_JAN8 | 0x44 | JAN8(EAN8)
POS_BARCODE_TYPE_CODE39 | 0x45 | CODE39
POS_BARCODE_TYPE_ITF | 0x46 | INTERLEAVED 2 OF 5
POS_BARCODE_TYPE_CODEBAR | 0x47 | CODEBAR
POS_BARCODE_TYPE_CODE93 | 0x48 | 25
POS_BARCODE_TYPE_CODE128 | 0x49 | CODE 128

nWidthX

[in] 指定条码的基本元素宽度。

可以为以下列表中所列值（n）之一。

n | 单基本模块宽度 （连续型） | 双基本模块宽度（离散型）
 |  | 窄元素宽度 | 宽元素宽度
2 | 0．25mm | 0．25mm | 0．625mm
3 | 0．375mm | 0．375mm | 1．0mm
4 | 0．5mm | 0．5mm | 1．25mm
5 | 0．625mm | 0．625mm | 1．625mm
6 | 0．75mm | 0．75mm | 1.875mm

nHeight

[in] 指定条码的高度点数。

可以为 1 到 255 。

nHriFontType

[in] 指定 HRI（Human Readable Interpretation）字符的字体类型。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_FONT_TYPE_STANDARD | 0x00 | 标准ASCII
POS_FONT_TYPE_COMPRESSED | 0x01 | 压缩ASCII

nHriFontPosition

[in] 指定HRI（Human Readable Interpretation）字符的位置。

可以为以下列表中所列值之一。

Flag | Value | Meaning
POS_HRI_POSITION_NONE | 0x00 | 不打印
POS_HRI_POSITION_ABOVE | 0x01 | 只在条码上方打印
POS_HRI_POSITION_BELOW | 0x02 | 只在条码下方打印
POS_HRI_POSITION_BOTH | 0x03 | 条码上、下方都打印

nBytesToPrint

[in] 指定由参数 pszInfoBuffer指向的字符串个数，即将要发送给打印机的字符总数。具体值与条码类型有关。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1、此函数并不立即打印条码，而是一直到调用函数 POS_PL_Print时才打印。

2、另请参考 POS_S_SetBarcode 和 “附录 B 条码说明”。

相关指令

ESC $ nL nH，GS $ nL nH，GS w n，GS h n，GS f n，GS H，GS k m n d1…dn


int POS_PL_Print

int POS_PL_Print(void)

描述

打印页或标签缓冲区中的数据。

参数

无。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

备注

1．如果函数成功，则将进纸并打印票面，但是页缓冲区或标签缓冲区内容还是被保留着，可以再次调用此函数继续打印页缓冲区或标签缓冲区中的票面。

2．可以调用 POS_PL_Clear 来清除页缓冲区或标签缓冲区中的数据。

3．另请参考 POS_SetMode。

相关指令

ESC FF


int POS_PL_Clear

int POS_PL_Clear(void)

描述

清除票面和标签的打印缓冲区中的数据。

参数

无。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：
POS_FAIL
POS_ERROR_INVALID_HANDLE

备注

1．如果函数成功，则打印机内部的当前页缓冲区被清除。

2．另请参考 POS_PL_Print，POS_SetMode。

相关指令

CAN


int POS_WriteFile(

HANDLE hPort,

char *pszData,

int nBytesToWrite

)

描述

发送数据到端口或文件。

参数

hPort

[in] 端口或文件句柄。

pszData

[in] 指向将要发送的数据缓冲区。

nBytesToWrite

[in] 指定将要发送的数据的字节数。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．此函数仅用来调试。

2．另请参考 POS_ReadFile。

相关指令

[无]


int POS_ReadFile(

HANDLE hPort,

char *pszData,

int nBytesToRead,

int nTimeouts

)

描述

从串口，或USB端口或文件读数据到指定的缓冲区。

参数

hPort

[in] 端口或文件句柄。

pszData

[in] 指向将要读取的数据缓冲区。

nBytesToWrite

[in] 指定将要读取的数据的字节数。

返回值

如果函数成功，则返回值为 POS_SUCCESS。

如果函数失败，则返回值为以下值之一：

POS_FAIL

POS_ERROR_INVALID_HANDLE

POS_ERROR_INVALID_PARAMETER

备注

1．此函数仅用来调试。

2．此函数不支持网络接口。

3．另请参考 POS_WriteFile。

相关指令

[无]


HANDLE POS_SetHandle(

HANDLE hNewHandle

)

描述

改变dll内部的端口或文件句柄。

参数

hNewHandle

[in] 用来替换dll内部的句柄。

返回值

如果函数成功，则返回dll内部的句柄，并使用hNewHandle替换内部句柄。

如果函数失败，则返回 INVALID_HANDLE_VALUE（-1）。

备注

1．此函数仅用来调试。

2．另请参考 POS_WriteFile，POS_ReadFile。

相关指令

[无]


int POS_GetVersionInfo(

int *pnMajor,

int *pnMinor

)

描述

获取当前 dll 的发布版本号。

参数

pnMajor

[out] 主版本号。

pnMinor

[out] 次版本号。

返回值

如果函数成功，则返回此 dll 的建立日期。

备注

此函数一般用作调试或测试使用。

相关指令

[无]


附录 A 打印机补充说明

A．1 打印模式

一般情况下，打印机只使用两种工作模式：标准模式和页模式。

在标准模式下，只要打印机行缓冲区满或者接收到打印或进纸指令，打印机就打印并进纸。

例如：当调用函数POS_S_TextOut往打印机发送字符串“ABCDEF”时，打印机根据函数的参数对字符串进行处理，然后放在行缓冲区中， 等待打印。当调用函数 POS_FeedLine 时，打印机将走纸并把行缓冲区中的字符串打印出来。但是，如果接收到的数据大于行缓冲区长度，打印机将会自动进纸并打印。

在页模式下，打印机把接收到的所有将要打印的数据（处理后的）都被存储在页缓冲区中，但是并没有打印动作。而是当调用函数 POS_PL_Print时，才会走纸并打印页缓冲区中的数据。

例如：当调用函数 POS_PL_TextOut 往打印机发送字符串“ABCDEF”时，打印机根据根据函数的参数对字符串进行处理，然后放在页缓冲区中，如果接着调用函数 POS_FeedLine，打印机页缓冲区中把起始点坐标移到下一行的行首。如果调用函数 POS_PL_Print 时，打印机将走纸并打印页缓冲区中的数据。

在两种模式下，打印完毕后都不会自动清除缓冲区。如果在页模式下，可以调用 POS_PL_Clear来清除页缓冲区。

另外，还有一种打印模式是标签模式，分为黑标记型标签模式和白标记型标签模式．标签模式下的打印和页模式下的打印类似。

A．2 打印区域设置

1． 打印区域是由函数 POS_PL_SetArea来设置的。如果在调用此函数之前所有的打印和进纸操作都已经完成，则打印机以左边（当你面对打印机时）作为打印区域的坐标原点（x0，y0）。矩形打印区域的宽度（dx 点）在 x 向（垂直于进纸方向）从坐标原点（x0，y0）向右扩展；高度（dy 点）在 y 向（进纸方向）向下扩展。如果没有用此函数来设置打印区域，则打印区域采用默认值。

2． 打印机在打印区域和打印区域方向（由函数 POS_PL_SetArea设置）设置之后，接收到的打印数据将会在打印区域内以字符、位图或条码左下角作为基点。打印数据中的下载的位图或条码数据以当前位置作为其左下角（图2中的B点），与基线对齐。

3． 在接收到一个包含有进纸的命令（函数POS_FeedLine）之前，如果打印数据（包括字符间距）已经超出打印区域，则打印机自动进纸一行（进纸多少，取决于由函数 POS_SetLineSpacing 设置的行高），同时打印位置移到下一行的行首。

4． 默认行高是1/6英寸，如果纵向分辨率为203 DPI，则大约相当于34点。如果在下一行的打印数据中含有在纵向上放大超出2倍的字符，或者位图占用2行甚至更多行，以及条码比正常字符高时，打印机进纸量不能满足需要，造成打印的字符和上一行打印的字符叠加。可以增加行高来避免此情况的发生。


附录 B 条码说明

B．1 条码种类

条码类型 | 允许长度 | 字符集
UPC-A | 11 ≤ n ≤ 12 | 48 ≤ d ≤ 57
UPC-E | 11 ≤ n ≤ 12 | 48 ≤ d ≤ 57
JAN13 (EAN13) | 12 ≤n ≤ 13 | 48 ≤ d ≤ 57
JAN 8 (EAN8) | 7 ≤n ≤ 8 | 48 ≤ d ≤ 57
CODE39 | 1 ≤ n ≤ 255 | 45 ≤ d ≤ 57, 65 ≤ d ≤ 90, 32, 36, 37,43 d1 = dk = 42
ITF | 1 ≤ n≤ 255 | 48 ≤ d ≤ 57
CODABAR | 1 ≤ n≤ 255 | 48 ≤ d ≤ 57 65 ≤ d ≤ 68, 36, 43,45,46,47 58
CODE93 | 1 ≤ n≤ 255 | 0 ≤ d ≤ 127
CODE128 | 2 ≤ n≤ 255 | 0 ≤ d ≤ 127

B．2．1 128 码综述

128码通过交替使用字符集A、字符集B和字符集C，能够对 128 个 ASCII 字符和 00~99 的 100 个数字以及一些特殊字符进行编码。每个字符集编码的字符如下：

字符集 A： ASCII 字符 00H 到 5FH

字符集 B： ASCII 字符 20H 到 7FH

字符集 C： 00~99的100个数字

128 码也能对下列特殊字符进行编码：

SHIFT 字符

“SHIFT”能使条码符号“SHIFT”字符后边第一个字符从字符集A转换到字符集B，或从字符集B转换到字符集A，从第二个字符开始恢复到 SHIFT 以前所用的字符集。“SHIFT”字符仅能在字符集A和字符集B之间转换使用，它无法使当前的编码字符进入或退出字符集C的状态。

字符集选择字符（CODE A、CODE B、 CODE C）

这些字符能将其后边的编码字符转换到字符集A、B或C。

功能字符（FNC1、 FNC2、FNC3、FNC4）

这些功能符的用处取决于应用软件。在字符集C中，只有FNC1 可用。

B．2．1 128 码字符集

字符集A中的字符

字符 | 发送数据 |  | 字符 | 发送数据 |  | 字符 | 发送数据
 | Hex | Decimal |  | Hex | Decimal |  | Hex | Decimal
NULL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP ! " # $ % & ' | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O | 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | P Q R S T U V W X Y Z [ \ ] ^ _ FNC1 FNC2 FNC3 FNC4 SHIFT CODEB CODEC | 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 7B,31 7B,32 7B,33 7B,34 7B,53 7B,42 7B,43 | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 123,49 123,50 123,51 123,52 123,83 123,66 123,67

字符集B中的字符

字符 | 发送数据 |  | 字符 | 发送数据 |  | 字符 | 发送数据
 | Hex | Decimal |  | Hex | Decimal |  | Hex | Decimal
SP ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G | 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o | 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F | 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | p q r s t u v w x y z { | } — DEL FNC1 FNC2 FNC3 FNC4 SHIFT CODEA CODEC | 70 71 72 73 74 75 76 77 78 79 7A 7B,7B 7C 7D 7E 7F 7B,31 7B,32 7B,33 7B,34 7B,53 7B,41 7B,43 | 112 113 114 115 116 117 118 119 120 121 122 123,123 124 125 126 127 123,49 123,50 123,51 123,52 123,83 123,65 123,67

字符集C中的字符

字符 | 发送数据 |  | 字符 | 发送数据 |  | 字符 | 发送数据
 | Hex | Decimal |  | Hex | Decimal |  | Hex | Decimal
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 FNC1 CODEA CODEB | 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 7B,31 7B,41 7B,42 | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 123,49 123,65 123,66


网络打印简介

在使用网络设备打印编程时，往往采用多台同时操作，查询可以直接调用POS_NetQueryStatus函数，设置不同IP地址就可以实现，但是打印时需要注意遵循以下调用流程：

在实现多台网络设备打印时，建议采用线程编程方式，最好不要采用Timer事件编程。对每一台网络设备打印操作必须符合以上流程（打开端口、发送指令数据、关闭端口），完成后再对另一台网络设备进行同样流程的操作。