打印/传真嵌入式开发--张志龙的专栏

用CUPS作为网络打印服务器,其他计算机作为客户端可以通过CUPS实现对打印机的管理。

客户端常用方法是通过IPP协议安装打印机驱动。。安装步骤如下:

1)在弹出的对话框中选择“添加打印机”

2)选择添加的打印机类型为“网络打印机”

3)在URL下输入地址::631/printers/ll,其中10.2.2.3为cups打印服务器的IP地址,631为cups服务端口,ll为添加的打印机的名称。

4)点击“下一步”,然后提供Windows下的打印机驱动即可。

以上是客户端通过IPP协议安装驱动。但是IPP协议在Windows 2000下并不能完全兼容(在某些网段上无法搜索到打印机),而且IPP协议有个缺点,就是在打印机关闭的情况下,客户端某些软件启动会搜索打印机。某些软件在调用createNewDocument函数时花费的时间很长。该函数为windows的MFC库函数,为根据文档模板中记录的运行时信息创建文档视图模型对象。根据微软公开的资料,与打印机状态没有关系,但在实际使用中,发现该函数调用底层库时,对默认打印机的状态进行查询。由于默认打印机设为网络打印机,操作系统底层会从网络中搜索该台打印机,由于该打印机状态为关机,无法及时得到它的状态,所以操作系统底层会在网段上搜索打印机,直到超时返回,此过程需要10秒钟到1分钟,视网络环境而定。

以上缺点影响了CUPS在某些系统中的应用。为解决这个问题,可以将打印协议改为LPD协议,从而避免每次使用打印机时进行实时查询。LPD协议为假脱机协议,对Windows而言,安装了LPD协议的打印机始终是出于“就绪”状态。只有在真正进行打印任务时,Windows才会将数据通过LPD协议发送到打印机,此时若打印机出于“不可使用”状态,则会返回给上层应用软件:该打印机不可用。

CUPS本身支持LPD协议。在CUPS服务器端,需要将inetd添加到系统服务中,建立/etc/inetd.conf,添加一行:printer stream tcp nowait root/arm_cups/lib/cups/daemon/cups-lpd cups-lpd。这样CUPS服务器端就支持LPD协议了。

(注意:arm_cups/etc/cups/cupsd.conf 里调试等级不能是debug2。在ipp.c中add_job函数中,一个调试信息cupsdLogMessage(CUPSD_LOG_DEBUG2,"add_job(%p[%d], %p(%s), %p(%s/%s))",

con, con->http.fd, printer, printer->name,

filetype, filetype->super,filetype->type);

会导致程序崩溃。因为filetype 为NULL。

安装步骤如下:

1.进入控制面板—-打印机和传真机,点击“添加打印机”按钮,如下:

2.点击“下一步”,在弹出的界面上,选择“连接到此计算机的本地打印机”,点击“下一步”。

3.在弹出的“选择打印机端口”界面上,选择“创建新端口”,端口类型为“Standard TCP/IP Port”,然后点击“下一步”。

4.在弹出的界面上,点击“下一步”。

5.在弹出的“添加端口”界面上,打印机名或IP地址栏输入打印机的IP地址,点击“下一步”。

6.在弹出的“需要额外端口信息”界面上,点击“自定义—-设置”;

7.点击“下一步”,在弹出的界面上选择LPR,,队列名称为“打印机名称”,将“启用了LPR字节计数”前的复选框勾上,点击确定。特别注意,本步骤非常重要。.

8点击确定后回到前一窗口,再点击“下一步”,再点击“完成”。

9.在弹出的界面上,点击“从磁盘安装…”。

接下来正常安装驱动文件。安装成功后,则在“打印机和传真”窗口中显示出安装的打印机。

海内存知已,天涯若比邻。

打印/传真嵌入式开发--张志龙的专栏

相关文章:

你感兴趣的文章:

标签云: