3.CUPS 基础知识
CUPS 是 UNIX/Linux 平台上的打印系统。CUPS 的定义和实现是基于 IPP(Internet Printing Protocol)协议的。IPP 是通用的打印系统标准,它的功能和操作被一系列RFC(Request for Comments)所详细定义。这些具体功能和操作包括:建立 IPP请求,应答 IPP 请求和设置 IPP 请求等等。
和 IPP 相关的 RFC 包括 RFC1179,RFC2910,RFC2911,RFC3196 等等。在网络协议中,IPP 位于 HTTP(Hyper-Text Transport Protocol)协议之上。因此以下代码示例将涉及到很多 IPP 和 HTTP的系统调用,例如 ippAddString() 和 httpConnectEncrypt() 等等。此外,在UNIX/Linux 平台上在使用 CUPS 之前要提前引入下列头文件:
#include #include #include #include
有了上述 CUPS 基础知识,下文将举例说明使用 CUPS 实现打印机管理移植的技术细节。
4.获取打印机数量
Windows 通过 API EnumPrinters() 的返回参数 pcReturned 来获取系统的打印机数量。Windows 程序的具体实现如下所示:
int n_PrinterCount;EnumPrinters( , , , , , , &n_PrinterCount);
在 Linux 中,CUPS 函数 cupsGetDests() 可实现同样的功能。需要注意的是,在调用结束后,调用者需要使用 cupsFreeDests() 来释放内存。
cups_dest_t *dests; int n_PrinterCount = cupsGetDests( &dests ); cupsFreeDests(count, dests);
5.获取打印机名称,打印机端口和打印机型号
Windows使用API EnumPrinters() 来获取打印机名称,打印机端口和打印机型号。详情请参考Windows MSDN。在Linux平台上,CUPS可实现同样的功能。具体实现流程如下图所示:
图2 获取打印机信息(名称,端口,型号)流程
上一页 [1] [2] [3] [4] 下一页