wince下在线打印机的支持


搞了三周的wince7下在线打印的功能,终于差不多了,剩下的交由软件来做。下面整理下自己的理解。(很多内容只是针对需要用到的做了基本的了解,横向理解可能会比较片面甚至错误,纵向理解可能不够深入,不过,这些足够满足wince下对打印机的支持了大笑)。

1、打印机打印的大致的工作原理是什么?

先了解下打印机的大致的工作原理,有利于理解你到底在做什么,然后再看源码,会更容易理解一下,要不然看的是一头雾水。

打印机都有自己的打印语言,就像Windows操作系统下不能直接运行Android的app一样。打印机语言最常见的有PCL和PS(PostScript),还有基于主机等其他的, 有些打印机只支持某一类打印语言,有些高级一些的打印机可以同时支持多种语言(直接支持,或者需要插入相关语言解析模块)。PCL语言是HP定义的,HP的打印机一般都支持,不过这里需要注意的是,PCL语言有很多版本,目前常见的有PCL5c和PCL6,还有延伸的PCLGUI。不过PCLGUI和PCL不兼容。这点要特别注意!!!

打印工作基本流程:设备(或PC)将要打印内容通过驱动分解等,编码为打印机支持的打印语言,封装为连接接口需要的数据流,通过数据线传给打印机,打印机将 数据流解析,通过解码,执行指令开始打印。

2、wince下怎样才能支持在线打印功能?

这个在网上有很多介绍,主要是添加两个组件即可(也可以直接添加环境变量sysgen_pcl,sysgen_usb_printer),支持USB打印机和PCL语言。组件添加参考这里

3、wince下打印机相关的代码结构及源码简单分析。

源码主要分为两部分,第一部分是组件sysgen_usb_printer相关的,源码地址为:C:\WINCE700\public\common\oak\drivers\usb\class\printer,主要是USB打印机接 口相关的,和普通的流接口一致,接口为(LPT1:);最终会将编码的PCL指令通过这个接口传递给打印机。第二部分是sysgen_pcl相关的,源码地址 为:C:\WINCE700\public\common\oak\drivers\printer,也就是PCL指令编码部分;这个肯定不会像PC端那么强大,将打印机支持的所有功能都支持进去,一些基本的指 令操作打印还是没有问题的。如果想详细了解,可以自己去阅读,甚至可以根据PCL指令语法来研究PCL驱动。对我来说没有必要,所以没有研究。

4、wince下到底支持什么样的打印机?

既然驱动添加了,是不是整一台HP的打印机就可以直接打印了?答案当然是否定的,打印机应是USB接口的支持PCL语言的打印机(注意,wince下支持的是PCL语 言,PCLGUI语言的打印机是不兼容的!!!)。由于资源限制,我这里只是测试了型号为HP LaserJet Pro M202n的打印机,手册上说是支持PCL5c,PCL6(问做过打 印机的网友,说PCL5c,PCL6和系统支持的PCL是兼容的,PCLGUI是延伸的,类似但是不兼容)。

那么问题来了,wince下真的只能使用PCL语言的打印机,不能使用PCLGUI甚至其他语言的打印机了吗?答案是否定的,只要你有打印机语言在wince下的库,在打印 机注册表下指定库文件连接,也是可以打印的。我这里从网上下载了一个网友的PCLGUI的测试版本的库(测试版本打印出来后中间有一条粗的竖线。后来找到发布人,正 式版本需要收费),使用HP1112打印机(PCLGUI语言)测试可以正常打印。感兴趣的朋友可以到这里下载测试程序,里面包含测试库文件。

5、应用程序怎么调用?

应用程序主要使用HDC画图相关API来实现,打开接口如下:

printer.m_hDC = CreateDC(TEXT("PCL.dll"), TEXT("PCLGUI Inkjet"), TEXT("LPT1:"), &m_dm);

可以参考如下代码:(上面链接PCLGUI测试库,有测试例子,修改下库文件名称即可)

6、其他。

怎么知道设备发现打印机了?

答:如果没有安装相关驱动,则打印机连接后,会弹出对话框,让输入驱动名称;如果已经安装驱动,则在注册表下(HKEY_LOCAL_MACHINE\Printers\)会发现添加了新连接的打印机,且在注册表(HKEY_LOCAL_MACHINE\Printers\Ports)下会新增了新的端口(默认是LPT1:);

PCL语言能够进一步提高打印质量,通常在中高端打印机产品中才会出现,是决定打印机输出复杂版面能力的重要指标。 PCL语言 正是Adobe公司的对PostScript语言的收费方式,给HP公司的PCL( Printer CommandLanguage,打印机控制语言)语言提供了发展空间,PCL语言是HP公司于70年代针对其打印机产品推出的一种打印机页面描述语言。HP公司的市场策略与Adobe完全不同,其他厂商可以在他们的打印机产品中自由模仿或使用PCL语言。正是PCL语言的开放性,降低了使用PCL语言的打印机产品的成本,从而使其在打印机产品中的普及程度远远高于PostScript语言。 PCL语言最初也是为点阵打印机设计的,PCL3是第一个得到广泛应用的版本,但它只支持一些简单的打印任务。PCL4虽然还只能应用在个人打印机中,但增加了对图形打印支持,但由于解释工作比较简单,PCL4比后期的PCL5和PCL6对打印控制器的要求要低很多。 PCL5是HP公司为它的激光打印机LaserJetⅢ设计的,它提供了一些与PostScript语言相似的功能,开始支持矢量字库和矢量图形描述,实现了WYSIWYG(What You See Is What You Get, 所见即所得),PCL5中也使用了各种压缩技术来减小数据量,加快数据传输。 PCL5e开始支持双向数据通讯,从而使打印机可以向计算机发送打印机的状态信息。PCL5c增加了对彩色打印支持。 1996年HP公司发布了PCL6,它更加灵活,是一个目标朝向的控制语言,使处理多图形的文件的速度大大加快,实现了更好的WYSIWYG,可以更好地处理Web页面。 两种语言的比较 1.PostScript和PCL两者的工作流程都是首先在计算机的一端将打印内容解释成标准的页面描述文件,这种文件可以被所有采用这种语言的打印机所识别,传送到打印机的核心——控制器中,然后在打印机控制器中将页面描述文件解释成可以打印的图像。从工作流程的角度看,采用这两种语言的打印方式对打印机的“大脑”要求较高,需要打印机能够自己独立处理转换的任务,并且需要打印机本身有足够的内存。 2.PostScript和PCL都具备了标准化和与设备无关性的优势,对计算机系统资源占用也较少,两种语言的高版本还提高了对字库、图形和图像的解释能力,对于提供了高打印质量的产品,大都采用了此两类语言。但相对来说,由于对打印机核心部分——打印控制器性能的要求较高,一定程度会增加机器成本,尤其是PostScript对打印控制器的性能更高。 3.经过对多款使用PCL语言和PostScript语言的黑白和彩色激光打印机进行测试。发现,使用PCL语言的打印机在处理文本或一些常见办公应用软件下的文档时具有常明显的速度优势,在这些应用下,在打印质量方面与使用PostScript语言的打印机也没有差距。使用PostScript语言的打印机在常见办公应用下的打印速度要慢一些,但在处理PDF文件或在Photoshop等软件下打印大的图形图像文件时具有一定的速度优势,同时其在图形表现准确度、色彩表现准确度和一些字库表现准确度方面也比PCL语言有优势。所以PCL语言比较适合一些普通的商务办公应用,而PostScript语言更加适合对图形和色彩准确度要求比较高的专业应用。这也是目前许多打印机产品同时提供PCL和PostScript两个版本的驱动的一个重要原因。 其他相关 其他要说的一点是关于选配打印语言的问题,打印语言有标配和选配两种:所谓标配是把打印语言解释成一段程序,加载在打印机主控芯片程序里面,从主机过来的打印语言格式数据流直接在此芯片中解释成机芯所能识别和控制的视频数据。而选配则是把打印语言解释器做成了一个相对独立的硬件,插于打印机控制器中预留的解释器插槽中。相对于标配,选配的数据读取速度较慢,数据精确度较低。厂商采取选配打印语言的策略就是为了降低打印机的成本,一般的用户用其自带的打印语言就可以完成相应的工作了,但如果有用户需要其的打印语言,那选购打印语言模块后直接插在打印机上就可以了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值