JK

网络接口动态库简介

［发布说明］

发布名称： BYNetPortAPIDLL V3.0 --------------------- 网络接口动态库发布包
内容包括：
BYNetPortAPI.dll ----------- 网络接口动态库文件
BYNetPortAPI Guide.chm ----------- 网络接口动态库帮助文件
NetPrnStatusDemo.exe ----------- VC动态库例程可执行文件
NetPrnStatusDemo_delhpi.exe ----------- delphi动态库例程可执行文件
NetPrnStatusDemo Guide.chm ----------- 动态库例程帮助文件
NetPrnStatusDemo_VC ----------- VC动态库例程源码包
NetPrnStatusDemo_delhpi ----------- delphi动态库例程源码包

［主要指标］

支持系统：Windows 98、Windows NT、Windows 2000、Windows XP操作系统。
支持设备：山东新北洋制造的网络接口模块：JK-E01、JK-02、JK-W01。

［函数列表］

函数.htm

序号 | 函数名称 | 函数功能
1 | NetWriteOpen | 打开写端口
2 | NetWrite | 向写端口发送数据
3 | NetWriteClose | 关闭写端口
4 | NetGetStatus | 获取设备状态
5 | NetGetPrinterIP | 查询网络中设备IP地址
6 | NetGetManufacturerInfo | 获取厂商信息、设备序列号
7 | OpenPort | 打开9100端口或其它代替9100的端口并连接
8 | WritePort | 向9100端口或其它代替9100的端口下发数据
9 | ReadPort | 从9100端口或其它代替9100的端口读取数据
10 | ClosePort | 关闭9100端口或其它代替9100的端口连接
11 | CreatPassWord | 创建新密码
12 | GetPrintPort | 获取打印端口
13 | SetPrintPort | 设置新打印端口替代9100端口

［返回值定义］

序号 | 宏定义 | 数值 | 含义
1 | BYSOCK_SUCCESS | 1 | 操作成功
2 | BYSOCK_FAIL | -1 | 操作失败
3 | BYSOCK_INVALIDATE_PARAMETER | -2 | 参数错误

［版本历史］

版本：V3.0
版本信息：在2.0基础上增加对JK-E02、IPX协议的支持。

版本：V2.0
版本信息：首次发布，兼容JK-E01、JK-W01两大接口模块功能。


JK

输出函数

［面向连接调用流程］

［无连接调用流程］

［打印调用流程］

NetWriteOpen

[函数原型] BOOL NetWriteOpen (char *ipaddr,int connecttime)

[功能] 打开打印端口

[参数] char *ipaddr：设备IP地址，不能为空；
int connecttime：连接超时时间，>=0。

[返回值] 成功返回TRUE；
失败返回FALSE。

[备注] 此函数为发送打印数据连接打印设备；通讯协议：TCP，通讯端口：9100。

NetWrite

[函数原型] int WINAPI NetWrite(char *databuf,unsigned int length,int writetime)

[功能] 向写端口发送数据

[参数] char *databuf：发送数据缓冲区 ，不能为空；
int length：缓冲区数据长度，>=0；
int writetime：写数据超时时间，>=0。

[返回值] 成功返回实际下发数据长度，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 通讯失败。

NetWriteClose

[函数原型] BOOL NetWriteClose(void)

[功能] 关闭写端口

[参数] 无。

[返回值] 成功返回TRUE；
失败返回FALSE。

NetGetStatus

[函数原型] int NetGetStatus(char *ipaddr,unsigned char *tobuf,unsigned int length,int connecttime,int readtime)

[功能] 获取设备状态数据

[参数] char *ipaddr：设备IP地址，不能为空；
unsigned char *tobuf：接收数据缓冲区；
int length：接收缓冲区大小 ，>=0；
int connecttime：连接超时时间 ，>=0；
int readtime：读超时时间 ，>=0。

[返回值] 成功返回实际接收到的数据长度，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 通讯失败。

[备注] POS打印机状态返回四个字节数据，具体状态数据信息如下：

第一字节数据（打印机信息）：

Bit | Off/On | Hex | Decimal | 打印机状态
0 | Off | 00 | 0 | 不用，固定为0
1 | Off | 00 | 0 | 不用，固定为0
2 | Off | 00 | 0 | 钱箱接口3脚为低电平
 | On | 04 | 4 | 钱箱接口3脚为高低电平
3 | Off | 00 | 0 | 打印机在线
 | On | 08 | 8 | 打印机占线
4 | On | 10 | 16 | 不用，固定为1
5 | Off | 00 | 0 | 打印机上盖合上
 | On | 20 | 32 | 打印机上盖打开
6 | Off | 00 | 0 | 正在用进纸键进纸
 | On | 40 | 64 | 未用进纸键进纸
7 | Off | 00 | 0 | 不用，固定为0

第二字节数据（打印机信息）：

Bit | Off/On | Hex | Decimal | 打印机状态
0 | - | - | - | 未定义
1 | - | - | - | 未定义
2 | - | - | - | 未定义
3 | Off | 00 | 0 | 没有切刀错误
 | On | 08 | 8 | 有切刀错误
4 | Off | 00 | 0 | 不用，固定为0
5 | Off | 00 | 0 | 无可恢复错误
 | On | 20 | 32 | 有可恢复错误
6 | Off | 00 | 0 | 无可自动恢复错误
 | On | 40 | 64 | 有可自动恢复错误
7 | Off | 00 | 0 | 不用，固定为0

第三字节数据（纸传感器信息）：

Bit | Off/On | Hex | Decimal | 打印机状态
0,1 | Off | 00 | 0 | 未探测到纸将尽
 | On | 03 | 3 | 纸将尽
2,3 | Off . | 00 | 0 | 未探测到纸尽
 | On . | 0C | 12 | 纸尽
4 | Off | 00 | 0 | 不用，固定为0
5,6 | - | - | - | 未定义
7 | Off | 00 | 0 | 不用，固定为0

第四字节数据（纸传感器信息）：

Bit | Off/On | Hex | Decimal | 打印机信息
0-3 | - | - | - | 未定义
4 | Off | 00 | 0 | 不用，固定为0
5,6 | - | - | - | 未定义
7 | Off | 00 | 0 | 不用，固定为0

NetGetPrinterIP

[函数原型] int NetGetPrinterIP(char *ip)

[功能] 查询获取网络中设备IP地址

[参数] char *ip：IP地址信息。

[返回值] 成功返回实际连接的设备IP地址数量；
失败BYSOCK_FAIL。

[备注] IP地址信息格式为：***.***.***.***@***.***.***.***@，每个ip地址以@符号结束，可以根据返回ip地址数量解析出每个ip地址，具体解析方式可以参考演示例程源码。

NetGetManufacturerInfo

[函数原型] int NetGetManufacturerInfo(char *ipaddr, char *mfc, char *sn)

[功能] 获取厂商信息、设备序列号

[参数] LPCTSTR ipaddr 设备IP地址，不能为空，参考NetGetPrinterIP； ；
char *mfc 厂商地址；
char *sn 打印机设备序列号。

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 下发数据失败。

OpenPort

[函数原型] int OpenPort(char *IpAddr,int Port,int Timeout)

[功能] 打开9100端口或其它代替9100的端口并连接

[参数] char *IpAddr：设备IP地址，不能为空，参考NetGetPrinterIP；
int Port：可用的端口号；
int Timeout：连接超时时间，>=0。

[返回值] 成功返回创建的SOCKET，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 打开端口失败。

[备注] JK-E01、JK-W01不支持其他端口代替9100端口。

WritePort

[函数原型] int WritePort(int DeviceHandle,char *DataBuf.int Length,int Timeout)

[功能] 向9100端口或其它代替9100的端口下发数据

[参数] int devicehandle：设备套接字；
char *databuf；发送数据缓冲区，不能为空；
int length：发送数据长度，>=0;
int timeout：发送超时时间，>=0。

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 下发数据失败。

[备注] 1、JK-E01、JK-W01不支持其他端口代替9100端口。
2、建议每次发送的数据量不大于2M。

ReadPort

[函数原型] int ReadPort(int DeviceHandle,char *DataBuf,int Length,int Timeout)

[功能] 从9100端口或其它代替9100的端口读取数据

[参数] int devicehandle：设备套接字；
char *databuf：接收数据缓冲区；
int length：接收数据长度，>=0；
int timeout：接收超时时间，>=0.

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 读数据失败。

[备注] JK-E01、JK-W01查询打印机状态使用4000端口，获取配置信息使用3000端口。

ClosePort

[函数原型] int ClosePort(int DeviceHandle)

[功能] 关闭9100端口或其它代替9100的端口连接

[参数] int DeviceHandle：设备套接字；

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 关闭端口失败。

[备注] JK-E01、JK-W01不支持其他端口代替9100端口。

CreatPassWord

[函数原型] int CreatPassWord(char * MacAddr,char *OldPassword,char *NewPassword)

[功能] 创建新密码

[参数] char *MacAddr：有效的MAC地址；
char *OldPassword：原密码， 需要验证；
char *NewPassword：新密码，不能为空。

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 创建新密码失败。

[备注] 1、JK-E01、JK-W01不支持此函数。
2、此函数仅支持IPX协议。

GetPrintPort

[函数原型] int GetPrintPort(char * MacAddr,int* PrintPort)

[功能] 获取打印端口

[参数] char *MacAddr：有效的MAC地址；
int *PrintPort：打印端口号。

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 获取打印端口失败。

[备注] 1、JK-E01、JK-W01不支持此函数。
2、此函数仅支持IPX协议。

SetPrintPort

[函数原型] int SetPrintPort(char * MacAddr,char *Passwaord,int PrintPort)

[功能] 设置新打印端口替代9100端口

[参数] char *MacAddr：有效的MAC地址；
char *Passwaord：密码，需要验证；
int PrintPort：打印新端口号，1000 <= PrintPort <= 65535, 不能为4000和3000。

[返回值] 成功返回BYSOCK_SUCCESS，不成功返回值为如下值之一：
BYSOCK_INVALIDATE_PARAMETER 参数错误；
BYSOCK_FAIL 获取打印端口失败。

[备注] 1、JK-E01、JK-W01不支持此函数。
2、此函数仅支持IPX协议。
3、JK-E02：新设置的端口可用于读取数据；
4000端口仍可用于读取打印机状态；
3000端口仍可用于获取打印机配置信息。

演示例程

在提供网络接口动态库的同时，提供了该动态库的调用演示程序。用户实际应用本动态库进行编程时请先仔细阅读演示程序。VC演示程序在发布包中目录名称为：\NetPrnStatusDemo_VC。Delphi演示例程在发布包中目录名为：\NetPrnStatusDemo_delhpi。演示例程中以对 网络打印机进行状态监控操作为例，分别实现自动获取设备IP地址、打印演示、状态监控等功能。
演示程序开发环境：Visual C++ 6.0 、Delphi7
演示程序工程名：
VC工程名：NetPrnStatusDemo.dsw
delphi工程名：NetPrnStatusDemo_delphi.dpr
演示例程主界面图：

状态监控界面图：