首页> 中国专利> 用于压缩片形式的位映象的方法和设备

用于压缩片形式的位映象的方法和设备

摘要

提供了一种改进的打印系统,它通过对于打印页的一幅的每一个片确定两种不同的数据压缩技术中的哪一种能够更有效地压缩各个片,并随后把压缩数据暂时存储在一个存储电路中直到打印头需要其进行打印介质形式的最后输出的实际打印,来压缩位映象打印数据。当采用那些每一个片包含7个不同的字的片时,本发明利用了一种“控制字”的单个“控制位”来表示片的每一个数据字。

著录项

  • 公开/公告号CN1193152A

    专利类型发明专利

  • 公开/公告日1998-09-16

    原文格式PDF

  • 申请/专利权人 莱克斯马克国际公司;

    申请/专利号CN98106092.7

  • 发明设计人 蒂莫斯·J·拉德玛切;

    申请日1998-03-10

  • 分类号G06T9/00;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人杨国旭

  • 地址 美国肯塔基

  • 入库时间 2023-12-17 13:13:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-05-13

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2004-04-28

    授权

    授权

  • 2000-05-10

    实质审查请求的生效

    实质审查请求的生效

  • 1998-09-16

    公开

    公开

说明书

本发明一般地涉及一种成象和打印设备且具体地涉及采用具有喷墨喷嘴阵列的打印头的打印机。本发明是以打印成幅的打印数据的喷墨打印机的形式公开的—其中这些幅由大量的片组成。打印机或主机根据至少两种不同的压缩技术来压缩各个片原有的位映象(bitmap)打印数据,以看哪一种技术对各个片有更大的压缩比,在此之后压缩数据被暂时存储在存储器中直到准备好进行打印,而在打印时各个片按照适当的解压缩技术而得到解压缩,从而根据原有的打印数据打印图象。

采用多个喷嘴的阵列的喷墨打印机已经被提供了多年了,而采用多重打印器件—诸如热元件—的阵列的其他类型的打印机也是如此。在这些打印机中,这些喷嘴通常在打印头上被组成组,而打印头一般被装在沿着水平方向相对于纸左右运动的可移动支架上,而纸则沿着垂直的纵向方向移动。多个喷嘴通常组成一个纵向的列(或多个这样的纵向列),从而当打印头借助支架而进行一次水平移动时,能够在纸或其他的打印介质上同时留下一“幅”墨中的多个水平点或丸(即打印象素)“列”。

当打印头沿着水平方向移动时,它按照通常是从主机由打印机接收到的“打印数据”沿着幅产生出细小的点。幅的“宽度”(即沿着此取向的“高度”)取决于打印头喷嘴的分辨率(诸如300dpi(点/英寸)),该分辨率为1/300英寸,以及打印头上沿着纵向列的喷嘴数目。例如,如果打印头具有104个喷嘴,且其分辨率为300dpi,则幅的宽度将为约1/3英寸。通常的传统打印机对打印数据进行格式化,从而使各个喷嘴几乎同时地接收数字(即“导通”或“关断”)数据位,这意味着在上述例子中必须有至少104个数据组被送到打印头,以对104个喷嘴进行控制,从而通过“导通”(例如逻辑1)使其准备好打印一个点,或者通过把喷嘴置于关断状态(例如逻辑0)而使其不打印一个点。这种用于在一个具体时刻控制104个喷嘴的整个纵向列阵列的数据组,由术语“片”表示。因此,为了产生一幅打印数据,必须把一个片接着一个片的打印数据送到打印头,以在正确的时刻依次导通或关断打印头的各喷嘴,以再现打印机早先从其主机接收到的打印数据图案。在上述例子中,各个片必须包含104位的打印数据,且假定水平分辨率也是300dpi,则打印头借助其支架行进每一个水平英寸将必须有300个片的数据,从而产生104×300丸或1/3英寸×1英寸的一个矩形。

在传统的喷墨打印机中,通常从一个主机输入打印数据以通过接收打印数据的“字”或“字节”而存储该打印数据,其中如果该数据是“位映象”形式的,则字或字节的各个位表示单个的丸。位映象信息通常是以一系列的每个16位的字的形式到达的,直到定义了一个完整的片。一旦幅的第一个片已经被接收并存储在打印机的存储器系统中,额外的字随后得到接收,以定义下一个相继的片,且这种过程继续进行,直到一个幅的所有的片都已经得到接收并随后存储在打印机的存储器中。在已经完成了第一个幅之后,随后接收的打印数据将再次形成字组,以定义下一个幅的第一片,这通常是与刚完成的一个幅相邻的一幅。

该过程继续进行,直到接收到了所要打印的整个页的所有幅的所有片。如果不采用数据压缩或精简技术,则打印机所接收并随后存储在打印机的存储器系统中的位映象将代表构成一个幅的彼此相邻的纵向片,和彼此相邻的、定义所要打印的页的整个纵向结构的一系列水平幅。所有这些片和幅都由单个的丸组成,不论这些丸是要打印的还是将要成为空白的,从而形成了由位映象打印数据组成的一个整个矩形页。这种方式是非常占用存储器的,因为所有的“空白”区—其中没有将要打印的丸—也要求与具有要用打印头打印的各种丸的区相同的存储器空间。在没有数据压缩技术的情况下,存储一页打印数据所需的存储区总是组成各个幅的所有片的丸数乘上该页的幅数。例如,如果整个一个8-1/2×11英寸页的打印数据将要被存储在存储器中,则在300dpi,将要有(8.5×300)×(11×300)=3,415,000个丸。这大约八百万位的数据将对应于刚好超过打印机存储器系统中所需的1百万字节的存储空间,这就假定没有额外的位用于任何(典型的)差错检验程序。容易看到减小把打印数据保持在这种打印系统中所需的存储器空间的好处。

在Bauman的专利(美国专利第5,272,768号)中,公布了一种数据压缩技术,它压缩字根数据,随后存储压缩的字根字符,并随后在刚好要借助打印头打印该字根字符之前解压缩该字根字符。这种Bauman数据压缩技术通常被喷墨打印机或采用LED阵列的打印机所采用,其中所要打印的行被组成水平的幅。在Bauman提供的一个例子中,各个字符包括三个数据幅,指定为“条”。各个条由16位或丸的打印数据组成,且各个字符字根得到分析,以看它是否要求所有三个条都被定义成包含至少一个“黑”丸或打印数据的条。如果是这样,则该具体的字符字根不被压缩。另一方面,如果一个或更多的这些条对于一个具体的字符字根是整个的空白,则该字符通过删除打印该字符所不需要的一或多个条而得到压缩。打印机的字根ROM(即只读存储器)存储处于压缩状态的这些字符字根,从而节省字根ROM中的某些存储器空间。

如在Bauman中公布的,打印任务数据是从一个主机接收并暂时存储在一个输入缓存器中的。这种数据通常在此时为ASCII数据,而不是位映象数据。在这些情况下,该ASCII数据必须被解译或“RIP”(即经历屏面图象处理),从而使各个字符具有由字根ROM为其产生的位映象。在打印机中的某处,字符必须在被送到打印引擎之前变成位映象图象。在Bauman中,当ASCII到达打印机时,对于打印机字根ROM中可得到的每一个字根,这种ASCII字符都通过采用存储在该字根ROM中的压缩图象而被转换成位映象,后者随后必须在被送到打印引擎之前被打印机解压缩。这是通过跟踪用于各个具体字符的三个条中的哪一个已经被删除以产生该ASCII字符的压缩的字根,而得到实现的。一个数据表被用来存储这种信息,且当为该具体字符字根产生出位映象时,“删除”的条随后在被送到打印引擎之前被加到整个字符的位映象上。Bauman发明只对预定字符数据有用,诸如不同类型字根和点尺寸的字母数字字符,且它是以ASCII数据或某些其他高级语言数据的形式引入打印机的。

Nagata的美国专利第5,237,645号公布了一种打印机,它采用了发光二极管(LED)阵列、或激光头或其他类似的装置。典型的传统激光打印机不以幅打印数据,而是以单个丸组成的各个行来打印。如果采用了LED阵列,则将以幅来进行打印处理。在两种情况下,Nagata都教导了一种用于在位映象数据被存储在图象存储器之前对该数据进行压缩的方法。打印数据或是以已经得到位映象的数据的形式被接收,或是从主机以某些高级页描述语言(诸如PostScriptzTM)的形式到达。如果数据以高级语言的形式到达,则必须首先通过RIP数据而产生位映象。一旦数据处于位映象格式,Nagata在存储器的一个虚拟页中接收整个页的未压缩状态的数据。此时,整个页的数据被分成“虚拟块”,且这基本上是通过选择块尺寸来进行的。一旦选定的虚拟块的大小,则Nagata系统必须RIP足够的“屏面”(即一个象素或丸高度的行),直到足够填充一个块的整个高度(它现在由部分位映象组成)。一旦这些块已经被确定,Nagata打印机分析各个虚拟块以确定任何块是否完全是空白的(即在具体的区中不包含所要打印的数据)。这种空白的块被指定为“空”的块。所有非空的块随后被指定为“有效”块。虽然各个空块的位置被存储在一组不同的存储器寄存器中,但只有有效的块被存储在图象存储器中。以此方式,对于所要打印的每一页数据可节约大量的图象存储器。

通过按照Nagata发明压缩数据,通常可在图象存储器可用的有限空间中容纳一页以上的打印数据。当然,这种压缩数据必须在后面在被送到打印引擎之前得到解压缩。根据Nagata,有效块根据需要而以全位映象形式被从图象存储器获取,如果需要的话按照各个屏面部分获取。当打印机到达一个空块时,这种屏面部分只被装载零,以提供对该块的打印数据,且随后该数据被传送到打印引擎。以此方式,打印引擎始终接收所要打印的整个页的全位映象数据。因此,打印引擎必须在物理上通过所要打印的页的所有物理丸位置,不论在此位置是否有所要打印的丸。打印引擎“打印”一个大空白数据区所需的时间与它在相同面积的页上打印在各种地方有黑丸所需的时间一样地长。

在Mahoney的美国专利第3,827,357号中,公布了一种打印机,它把整个的字符存储在各个行/列位置。如果该字符是空白或是不可打印的字符(例如某些类型的无效编码),则该字符将不被打印。当存储各个行数据时,一个计数器对于能够打印的每一个字节都得到递减。在打印期间,该计数器对于各个字符再次递减,直到已经确定该行的所有可打印字符都已经得到打印。此时,该行的其余部分被放弃,且打印机立即将其打印头移到下一行。Mahoney是一个老专利,它主要是涉及点阵或形成的字符打印机的。Mahoney基本上公布了一种用于确定各个行的最右字符的方法,且当该字符已经被打印头所达到时,则可立即命令行馈送的开始。

传统喷墨打印机的另一个例子是Bohrer的美国专利第4,481,602。Bohrer基本上公布了一种用于在字根数据被存储在存储器中之前对其进行压缩并随后在打印之前解压缩该数据的方法。Bohrer教导了采用一种方法—它把指针表的大小减至最小,以提供总体的三倍存储压缩。与上述相联系,任何适当的存储压缩都是有用的,因为可以把一页以上的打印数据存储在只为保持一页(未压缩)位映象形式的打印数据而设计的图象缓存器中,从而通过更有效地处理打印数据而增大了总体打印速度。当然,Bohrer打印机必须进行大量的数据操作以实现其目的。根据Bohrer方法,各个字符与其具体的字根相匹配,且为这些字符的每一个产生一个指针和校正因子偏离。这种信息被存储在压缩数据的一个“滚动阵列”和一个“指针表”中。当解压缩数据时,必须在该滚动阵列中找到字符的大小,字符在其“全字符框”中的位置必须被确定,且该字符随后被复制成位映象,利用包括指针和校正因子偏离的所有存储数据。虽然Bohrer可存储图象表中的存储器空间,但它也要求大量的处理,这可能减慢总体的打印过程。

在Schoon的美国专利第4,870,498号中,公布了一种打印机,它把ASCII或其他数据解压缩成运行长度编码数据—它在从二进制0至1或从1至0的每一次转变中只在扫描行中提供一片信息,这不同于位映象。

在Holliday的美国专利第4,553,171号中,公布了一种复印机/打印机,它把数字信息分成块。各个不同类型的数据块被分配了唯一的识别码,并被置入暂时存储器中。具有相同的数据的块被分配了相同的识别码,以便随后进行使用。

在Campbell的美国专利第5,479,587号中,公布了一种打印机,它采用了一个以上的数据压缩技术。如果第一个数据压缩操作未实现可接受的压缩水平,则采用其他的技术以实现足够的压缩。公布了各种类型的压缩技术,包括“M-压缩”和“LZW压缩”。

在Zimmerman的美国专利第5,483,622号中,公布了一种打印机,它具有一个以上的压缩技术。当随机存取存储器(RAM)不足以存储输入数据部分时,它试图进行字根压缩,或借助一种不同的方法的压缩,以试图除去“存储器低/溢出”信号。该专利中公布的某些压缩技术包括一种“M压缩”和一种“位运行长度”压缩。

在Hsu的美国专利第5,465,322号中,公布了一种打印机,它把位映象分成压缩位映象图象数据中的分割处的众多图象数据段。这些分割处被列在一个位映象表中,且采用了多个成象信道来平行地解压缩选定的位映象段。

Cook的美国专利第5,500,928号公布了一种数字打印系统,其中打印图象被分成段。为各个段定义了一个“显示清单”,其中该显示清单当存储器容量被超过时得到压缩。如果该显示清单输入项增大到超过一个纯象素表示的尺寸时,则该显示清单利用一种适配压缩技术而重新被转换成象素。

虽然上述数据压缩技术具有所希望的特征,但还希望以一片一片的方式压缩打印数据,该数据能够随后被一片一片地解压缩以产生打印机的打印头处所需的位映象打印数据幅。更有利的是能够实时地在一片一片的基础上从一个以上的数据压缩技术中进行选择。这种过程可被用在图形数据上,且不只是预定的字符(即字根)数据。

因此,本发明的主要目的,是提供一种打印系统,它通过压缩位映象打印数据而节约了打印机中的存储器空间,从而使文件的总位映象大小得到了显著的减小,从而需要较小的存储器容量来存储各个页。

本发明的另一个目的,是提供一种打印系统,它以一片一片的方式压缩位映象打印数据,从而使该压缩数据能够随后得到解压缩(也以一片一片的方式),以产生构成各个打印页的一部分的各个幅。

本发明的再一个目的,是提供一种打印系统,它以一种一片一片的方式压缩位映象打印数据,其中对被压缩的每一个片实时采用一个以上的数据压缩技术,且类似地,各个压缩的片随后按照适当的压缩/解压缩技术并且也在各个片的基础上得到解压缩。

本发明的又一个目的,是提供一种方法,用于通过分析所要打印的各个幅的各个片以确定两种不同的数据压缩技术中的哪一种对于压缩各个片来说更为有效而对位映象打印数据进行压缩,并随后按照适当的压缩/解压缩技术来解压缩这些片中的每一个,从而使提供给打印头的最后的图象表位映象相等对应于原有的打印数据。

本发明其他的目的、优点和新颖特征,一部分将在以下的描述中给出,一部分将通过对以下描述的检验而对于本领域的技术人员来说变得显而易见,或者可从本发明的实施获得。

为了实现上述和其他的目的,且根据本发明的一个方面,提供了一种改进的打印系统,它通过为打印页的一幅的每个片确定两种不同的数据压缩技术中哪一种能够更为有效地压缩各个片,而压缩位映象打印数据,并随后将压缩的数据存储在一个存储电路中,直到打印头需要以打印介质形式实际打印最后输出。在一个最佳实施例中,一种喷墨打印机采用了具有104个喷嘴的打印头,  这些喷嘴处在相对于支架的“水平”运动的不同纵向位置上,而该支架使打印头按照幅在打印介质上移动。在黑白打印机的情况下,各个喷嘴的喷墨指令可用二进制信号的单个位来表示(即逻辑1或0),且限定了104个喷嘴的喷墨指令的单组的一个片可用7个不同的16位字来表示。

当采用每片包含7个不同的字的片时,本发明利用了“控制字”的单个“控制位”来表示片的数据字的每一个。根据所采用的压缩技术的类型,和根据数据字(即片中的打印数据的表示丸)—与系统所选定的预定数据字值(诸如000016)相比,各个数据字的控制位将被置于逻辑“1”或逻辑“0”,且它可被用于两种类型的数据压缩技术。在各个片都借助两种类型的数据压缩技术而得到分析之后,片中的某些数据字可被暂时放弃,留下少于七个的数据字以表示作为压缩数据的该片。这种用于各个片的压缩数据将被与构成上述各个控制位的“控制字”相匹配,从而产生比较小的数据组—它能够被存储在比存储相同打印数据的未压缩片的存储器空间小的存储器空间中。随后,这些(压缩的)数据组(每一个片一个)能够按照适当的解压缩技术得到解压缩,且完整的打印数据随后在借助打印头的打印之前得到恢复。作为控制字的一部分,一种“模式位”可被置于逻辑“1”或逻辑“0”,从而表示两种数据压缩技术中的哪一种被初始用于该片。

在最佳实施例中,压缩过程是在发出原有打印任务数据文件的主机进行的。该主机不是把用于打印的整个未压缩位映象串行或平行传送到打印机,而是能够传送压缩数据,这不仅将占用主机和接收打印任务的打印机的存储器中的较小暂时存储空间,而且在数据链路(可以是网络)上传输所需的时间也比较短。一旦打印机接收到了这种压缩数据文件,该文件将得到暂时存储,直到打印头需要它以借助打印机产生最后的输出打印介质。当产生一个图象表位映象以使打印头能够得到其所需的数据时,各个片将按照适当的压缩/解压缩技术得到解压缩,原有的位映象数据将被生成以构成各个幅,且各个幅将根据打印头的需要而被结合成整个的打印页。

在最佳实施例中,所用的两种数据压缩技术被称为“USE-X模式”和“REPEAT模式”。在两种模式中,必须选择被给予了变量名“X”的一种“目标字”的初始值。这种数据值通常是零(000016),因为多数打印页的空白面积远大于打印面积。当然,当打印图象是某些类型的照片或艺术品的某些类型的灰度图象时,特别是在采用了连续色调的灰度成象时,情况可能不是上述的。

假定在USE-X模式下目标字值等于零(000016),对于也具有零值(000016)的片的任何数据字,控制位将被置于逻辑“1”,且该字能够被从作为压缩数据而存储的信息中消除。随后,当进行解压缩时,对于被置于逻辑“1”的控制字的各个位,被置于逻辑“0”(000016)的十六位的整个数据字将被插入为打印头产生的各个片内的正确位置。

在REPEAT模式压缩技术中,变量X的值只对于各个片的第一个字的测试有意义。一般地,采用REPEAT模式的片的各个数据字的控制位值,只在该数据字的十六进制值等于前面的数据字的十六进制值时,才被置于逻辑“1”。然而,各个片的第一字没有前面的字进行比较,因而把它与具有等于变量X的十六进制值的目标字进行比较。例如,如果目标字被置于零(000016)的值,则各个片的第一数据字的控制位,只在该片的第一字的数据值也等于十六进制零(000016)时,被置于逻辑“1”。

自然地,整个压缩/解压缩技术可只在主机中,或者只在打印机中,得到实现,虽然较好的操作模式是使压缩发生在主机中而使解压缩发生在打印机中。

从以下的描述和附图,其中以实施本发明的一种最佳模式描述和显示了本发明的一个最佳实施例,本发明的其他目的对于本领域的技术人员将变得显而易见。应该理解的是,本发明可具有其他不同的实施例,且在不脱离本发明的情况下其若干细节可以在各种明显的方面得到修正。因此,这些附图和描述应该被理解为描述性的,而不是限制性的。

在此包含的附图形成了本说明书的一部分,并显示了本发明的若干个方面,并于描述和权利要求书一起用于解释本发明的原理。在附图中:

图1是包含一个主机和一个喷墨打印机的打印系统的框图,该系统得到配置以根据本发明的位映象打印数据压缩方法的原理而得到采用。

图2是存储在存储器中的打印数据的示意图,该数据被循环以产生一幅位映象数据—该数据用于借助根据本发明的原理所组成的喷墨打印机中的喷嘴阵列来进行打印。

图3是一个打印页的一部分的正视图,显示了在该打印页上的一幅打印数据,并且是利用本发明的原理来描述的。

图4是图3的打印页的一部分的放大正视图。

图5描述了USE-X模式的一个例子,显示了未压缩数据和压缩数据,用作借助本发明的压缩方法所处理的数据,并且还显示了控制字数据。

图6显示了REPEAT模式的一个例子,显示了未压缩数据和压缩数据,用作借助本发明的压缩方法所处理的数据,并还显示了控制字数据。

图7是REPEAT模式的另一个例子,采用了图5中描述的片作为原有数据(其中它经历了USE-X模式的压缩/解压缩方法)。

图8是USE-X模式的另一例子,采用了图6中描述的片作为原有数据(其中它经历了REPEAT模式的压缩/解压缩方法)。

图9是执行根据本发明的原理的压缩步骤的功能的流程图,它在所示的实施例中是在主机中进行的。

图10是执行根据本发明的原理的解压缩步骤所需的功能的流程图,它在所示的实施例中是在打印机本身中进行的。

现在详细描述本发明的最佳实施例;在附图中显示了它的一个例子,其中相同的标号表示相同的部分。

现在参见附图,图1显示了一个打印系统,该系统包括经过一个通信电缆24而与一个喷墨打印机30相连的主机或主机PC 10。主机10通常包含微处理器12、只读存储器(ROM)14、随机存取存储器(RAM)16、以及某些类型的输入/输出端口18。这些基本组成元件借助地址总线20和数据总线22连接在一起。在许多应用中,主机包含某些类型的字处理程序—它产生所要打印的数据文件,且这些数据文件,能够以诸如PostScript格式的高级语言(HLL)或诸如PCL的不同高级语言,而被传送到打印机30,或者该数据能够以可被打印机30直接操作的“位映象”格式而得到传送。或者,主机10可以是一种网络服务器,它包含诸如硬盘驱动器(未显示)的大的非易失数据存储装置—它能够接受来自网络系统(诸如局域网络(LAN))中的其他计算机的数据,或者能够自身产生将要暂时存储在该硬盘驱动器上的数据文件(例如利用一种字处理程序),且随后这种数据文件能够根据需要而被传送到打印机30。

喷墨打印机30还包括微处理器32、ROM 34、RAM 36,以及地址总线40和数据总线42。打印机30还包括特殊功能ASIC(应用专用集成电路)38-它被用于处理从主机接收直到被打印时的打印数据。通信链接24与一个输入/输出端口44相连,后者较好地是包括一个具有双向能力的平行通信端口。I/O端口44随后与一个输入缓冲器46相连,后者又与一条数据总线48相连,而数据总线48把输入的打印数据从输入缓冲器46连接到ASIC 38。

ASIC 38进行的打印数据的处理最终由微处理器32上运行的一个计算机程序控制。在某些打印机上,输入的打印任务数据是一种高级语言(诸如PCL)且必须在被传送到打印引擎之前经历一种屏面图象处理(RIP)。在这种情况下,微处理器32将控制RIP并将把该高级语言打印任务数据暂时存储在RAM 36的一部分中,同时还以位映象格式把RIP产生的副产品存储在RAM 36的另一部分中。这种位映象数据最终将通过ASIC 38而被传送到打印引擎。如果打印任务数据从主机10以位映象格式到达,则可以使打印数据直接从输入缓存器46通过ASIC 38而被传送到打印引擎70-假定打印机30的所有部件都为该数据传送在给定时刻的发生而作好了准备。在正常的情况下,打印引擎不能跟上在I/O端口44进入的传送数据,且该数据因而必须经过ASIC 38而被送到RAM 36中,以得到暂时存储,直到打印引擎准备好了接收更多的数据。

在图1中,打印引擎由标号70示意显示,并包括一个打印头72、一个纸马达驱动电路80和一个支架马达驱动电路82。打印引擎70的这些主要部件经过各种电信号而得到ASIC 38的控制—这些信号在打印头72的情况下是经过控制总线74、数据总线76、以及地址总线78而传送的。在较好的喷墨打印机30中,打印头72实际上包括两个单独列的喷墨喷嘴(因而实际上等价于安装在一个公共支架上的两个单独的打印头),且控制总线74因而包括两组加热器线和两个单独的芯片启动线,以及一组公共的电源线。较好地,纸马达驱动电路80是一个步进马达驱动器,且支架马达驱动器82是一个直流马达驱动器。驱动器80和82分别受到信号线84和86的控制,这些信号也是从ASIC 38导出的。

打印机30最好还包含由标号60表示的“控制面板”。控制面板60通常表示可以由用户在打印机30的前面板处控制的各种开关和灯。这些开关和灯通过一组I/O线62而与ASIC 38进行通信。

沿着水平方向移动打印机30的打印头的支架(未显示)的物理位置,由在图1中由标号52示意表示的一个编码器检测。编码器52产生通过导线54传送到编码器电路50的正交信号。该编码器电路调节该正交信号并将其沿着导体56进一步传送到ASIC 38,且通过这些信号而以1/300或1/600英寸的精度—取决于打印机30沿着水平方向的分辨率—随时知道打印头的准确位置。这种信息不仅用于控制支架马达驱动器82,而且还用于控制打印头72中的喷墨喷嘴的导通和关断致动。

在较好的打印机—诸如位于肯塔基的列克星敦的Lexmark公司的LexmarkTM 7000 Color JetprinterTM中,来自主机的打印任务信息已经是位映象格式的。原有数据文件,不论是字处理字符文件或PostScript或PCL形式的某些类型的图形数据文件,都将在主机中借助与具体类型的打印机一起使用的专用“驱动器”程序而得到RIP,且所产生的位映象将在I/O端口18上输出,并随后通过通信信道24而被传送到打印机30上的相应I/O端口44。与上述有关地,在传统的打印机中,这种位映象信息可包括丸的大的矩形阵列,该阵列基本上如所要进行打印任务的整张纸一样大。一般地说,打印任务数据通过ASIC 38而从输入缓冲器46被传送到RAM36中,以暂时存储。当打印头72处于正确位置时,ASIC 38的“喷墨逻辑”将被导通,从而打印头72的喷嘴把墨点喷射到纸或所要形成图象的其他打印介质上。当ASIC 38被导通时,它借助DMA(直接存储器存取)而使用存储在RAM 36的另一个表中的信息—它向ASIC 38提供包含打印数据的RAM 36中的开始地址的存储器地址—从RAM 36“窃取”打印数据,以及用于打印头72将要打印的当前幅的“打印开始位置”(即片的位置)。ASIC 38把该打印开始位置与编码器电路50提供的当前支架位置—它是打印头72的实际当前位置—进行比较。一旦这种比较变为真(见下面的详细描述),则打印引擎70将开始进行处理,以使墨流过打印头72的打印喷嘴而到达纸或其他打印介质上。

当打印头72被关断时,即当没有丸将要被置于打印介质上时,较好地是ASIC 38的喷墨逻辑被关闭,直到下一个打印操作所需要。这将在下面得到详细描述。

在图2中,标号100表示存储器元件的一种图形表示,它可在主机10的RAM16或打印机30的RAM 36中找到。“框”100中的每一个矩形都表示一个数据字,它表示16位的二进制信息。如图2中的示意框102中所示,“W1”表示16位,用b1至b16表示。

通常用这样一种方式表示存储在存储位置中的存储器位置和二进制信息—该方式与在图2中标号100和102处所示的类似。换言之,如果一系列二进制数据被提供给一个通信端口或某些类型的存储器器件—诸如RAM芯片、硬盘驱动器、地址总线、或数据总线,则通常把这种信息表示为一般被组成字节或字的二进制或十六进制数。这些字节或字通常在打印页上水平地形成组(当在打印输出或监测屏幕上看这种信息时),直到二进制或十六进制数达到页上的一行的末端,在此之后进一步的二进制或十六进制数据都移到沿着左侧边界开始并向着右侧边界继续的下一行。然而,当借助喷墨打印机而采用这种二进制或十六进制数据时,或者当采用利用某些类型的发光二极管或其他传感器件的阵列以最终在某些类型的打印介质上产生点的其他打印机时,该打印任务信息通常被转动90°(被称为Δ转动)以使存储在存储器中的相继的数据流代表纵向信息而不是所要打印的图象的某些类型的水平表示。换言之,标号100表示的处于二进制数据的最上行中的相继二进制信息,得到了转动而成为显示在图2的底部的幅105的“片1”。

在采用包括相距1/300英寸(从而提供300dpi的分辨率)的104个纵向喷嘴的打印头的一个示例性例子中,一幅数据需要至少104个二进制位数据来限定该幅的一个整个片中的所有丸。当采用每个16位的数据字时,各个片将需要6.5个这样的数据字,这将产生16×6.5-104个数据位来表示该具体片的104个丸。对于片1,这些字将由符号W1、W2、W3、W4、W5、W6和W7表示。

由于现在的多数微处理器具有至少16位宽的寄存器,所以写入采用整个16位映象宽的数据字而不是字的一部分的计算机程序是更为容易的,因而较好地是用7个整个的字来表示片1,而不是试图“节约”第七个字W7的后八位以用于其他的数据存储目的。因此,用标号108表示的第七个数据字,将全部被用来表示片1的一部分,且其用标号106表示的后八位将基本上是存储器中的被浪费的空间—就表示任何类型的位映象打印数据来说。当然,计算机程序员可进行设置以把各个片的第七个数据字的后八位用于某些目的,诸如误差检查,但这将增大计算机程序的复杂性并减慢打印机30的处理速度,多数情况是微处理器32和ASIC 38在它们最好被用来在打印头72被激活期间迅速而有效地把数据传送到打印引擎70时却被要求进行利用这八位的其他操作。

如图2所示,片2包括7个额外的数据字,由W8-W14表示,其中W14的后八个数据位未被用来包含将要在该打印任务的最后打印中采用的任何丸二进制数据。各个附加的片还包含某些相同类型的七数据字格式。幅105表示一种八英寸宽表示(沿着水平方向300dpi),因而包含2400个片。如图2所示,片2400包含七个数据字,由W16794-W16800表示。如前所述,这些数据字每一个都包含16位,在此情况下表示打印头上的16个纵向喷嘴位置,且最后的字W16800只使用其头八位信息(即控制最后八个喷嘴)以有助于产生该幅105的打印表示。

在图3中,打印页的一部分用标号120表示。为了显示本发明的一个重要方面,假定将要在页120上打印单个丸宽的行,且该单丸宽的行(用标号130表示)包含三个单独的段,即纵向段132、水平段134和另一纵向段136。为了说明的目的,假定段134为八英寸长,且等价于图3所示的大小“B”。页120为8.5英寸宽,因而大小“A”等于0.25英寸,且大小“C”等于0.25英寸。页120最左的边用标号122表示,最右的边用标号126表示,最上边用标号124表示,切割边用标号128表示。

用标号140表示的两个平行水平行之间的水平空间,表示了输入到页120上的一幅打印数据。在上述例子中,幅140约为1/3英寸宽(或高)—利用了具有104个喷嘴的300dpi分辨率的阵列的打印头。如图3所示,幅140只需要在整个页120上打印2个片位置,即片位置142和片位置144。用圆圈150表示的左侧的片142的细节示于图4所示的放大图中。在图4中可见,行段132表示了在页120上纵向延伸的打印丸的单个片宽的行。行段142表示了包含在片140中的丸的片,且段142是段132的子组。应该理解的是,该片的所有104个丸不是单独地显示在图4中的,以澄清该说明。

在许多传统的喷墨打印机中,整个幅140将不被RIP成8.5英寸宽的片组以形成图3显示的图象。相反地,最左的片(即片142)和最右的片(即片144)将得到确定,且幅140中至最左片142的左边的所有页区域将被忽视,且幅142中至最右片144的所有页区域将被忽视。

通常的打印头包括至少两列基本上纵向排列的喷嘴,其中两列的喷嘴都对包括片142的幅140的打印有贡献。为了在片142打印基本上纵向的丸行,打印头72需要物理移动短的水平距离,从而使其喷嘴有机会行进到纸上用片142表示的水平位置。为此,“填充”被加到片142的左和右边,以使打印头72的运动能够在其必需的所有水平位置上都得到控制,以使各个喷嘴能够沿着片142在适当的纵向位置上进行打印。

利用当前的技术,较好地是这种填充具有20个片的最小的尺寸,且这些片用在片142左边的片152以及在片142右边的片154表示。如图4所示,最左的填充片用标号156表示,且最右的片用标号158表示。当然,应该理解的是,在填充片152或154中没有打印丸,且这些片只是为了使高分辨率的喷嘴阵列能够成功地打印所有所需的点以产生打印片142,并同时通过小的水平移动以使各个所需的喷嘴能够在把墨喷到页120上时到达其正确的位置。

通过利用下面描述的压缩方法,可以从用于幅146的压缩数据组中消除非常大量的“空白”片。即,由于在最左边的片142与最右边的片144之间的所有片都是完全非打印的空白,所以直到打印头准备好打印该具体的幅之前,把具有逻辑“0”的形式的所有这种“空白”数据作为设置在打印机存储器中的临时图象表的一部分是没有理由的。在此公布的两种压缩技术都能够消除这些空白片中的每一个中的很大部分的数据字,如下面所描述的。

图5提供了称为“USE-X模式”压缩的压缩技术的一个例子,它从代表具有104个喷嘴的打印头的喷墨打印机的单个片的二进制丸的标号200处的数据组开始。这种片由7个数据字组成,表示为W1-W7。数据组200显示了二进制和十六进制值形式的这7个数据字。当然,字W7的后八个位未被采用,因为我们只需要六个半16位字来描述104个丸。在图5的例子中,十六进制的该数据字值如下:

0020 0000 2000 0000 07FD 0000 0000

它用标号202表示。在本发明中,一个“控制”位是通过分析数据字W1-W7中的每一个并给这些数据字每一个都分配一个“控制位”而形成的。另外,所希望的是找到由变量“X”表示的最频繁出现的字—对于喷墨打印机它通常是一个白的空间并以十六进制值000016表示。

在USE-X模式,控制字的各个位“i”,当片的同一部分i的字等于为X选定的值时被置于逻辑“1”,或者被清除为逻辑“0”以表示该字不等于X的值,在此情况下下一个字i的值应该被置于压缩数据中。在此例子中控制字的各个位用标号204表示,且由于X的值等于000016,所以字W2、W4、W6、和W7的控制位被置于逻辑“1”,且W1、W3、和W5的控制位被清除成逻辑“0”。控制字的八位是“模式位”,并被用于表示哪一个压缩模式被用于该数据片。在最佳实施例中,图5中的模式位被置于逻辑“1”,以表示USE-X模式压缩技术被用于该片。因而在标号204表示的控制字中,模式位被置于逻辑“1”。

如图5所示,表示字W1的控制位成为控制字中的最低有效位(LSB),且表示数据字W7的位成为该控制字的最高有效位(MSB)(除了模式位)。因此,在此例中的控制字具有以下的值,如标号206、208和210所示:00EA16。十六进制的控制字的头两个数字用标号206表示,且由于包含字W1-W7的数据片所限定的控制字只有八位(包括模式位),控制字210的头两个数字被置于0016。如果该片要包括112个以上的丸,则控制字的两个最高有效数字将包含实际的数据,而不是总是被置于零。控制字的两个最低有效数字被置于标号208所示的值,它们是与控制字204相同的数据(见其二进制形式);然而,与标号204处的数据相比,在标号208处的位的顺序已经被倒转了。当结合在206的两个最高有效数字和在208的两个最低有效十六进制数字时,在标号210处产生了最后的控制字。

此例的片的压缩数据在标号212处描述。它以控制字开始,具有值00EA16,并随后跟随有数据字W1、W3和W5—它们具有不等于X的值的数据值。采用这种压缩技术,可以看到原有的7个数据字已经被压缩成了4个字,其中的一个是控制字。

在图6中,提供了利用被称为REPEAT模式的不同压缩技术的另一个例子。用于单个片的二进制和十六进制形式的数据字值在用于数据字W1-W7的标号220处描述。该片的数据还以十六进制的形式被列在标号222处,并包含以下的值:

0000 0000 0000 000F FFFF FFFF 0000.

在图6上,构成代表片的各个字W1-W7的控制字的相应控制位,在标号224处得到描述。在REPEAT模式中,控制字的各个位“i”被置于逻辑“1”,以表示在片的同一位置的字与在前面的位置(i-1)处的字相同。另外,  最低有效控制位i在第一字W1等于X的值时被置于逻辑“1”。在图6所示的例子中,X被置于等于000016,虽然可以为X选择任何值。

在224的控制字位对于字W1、W2、W3和W6被置于逻辑“1”,对于字W1,其值000016等于X的值,且其控制位(它是最低有效位)因而被置于逻辑“1”。由于W2的值等于W1的值,其控制位被置于逻辑“1”。类似地,字W3的控制位被置于逻辑“1”,因为其值等于字W2的值。最后,W6的值FFFF16等于字W5的值,且字W6的控制位因而也被置于逻辑“1”。

由于字W4的值不等于字W3,其控制位被清除成逻辑“0”,且由于类似的理由,字W5和W7的控制位也被清除为逻辑“0”。在最佳实施例中,当采用REPEAT模式压缩时模式位被清除为逻辑“0”,且这在图6的控制位224得到了描述。

其结果是一个控制字具有值002716,如标号230所示。该控制字包括被置于0016的两个最高有效数字,如在标号226处显示的,它们在此情况下表示在原有的打印数据片中只有7个数据字。当然,如果该数据片包括112丸以上的信息,则控制字的两个最高有效数字可具有非零值。控制字的十六进制形式的这两个最低有效数字在标号228处以二进制格式得到显示。如图6所示,在基座2处的这些数字的顺序与在标号224处描述的控制位的顺序相反。其结果是在标号230处的控制字具有十六进制形式的值0027。如果字W1的数据值不等于X的值,则在标号224处的控制字的最低有效位(LSB)将被清除为逻辑“0”。

最后的结果是如标号232处显示的压缩数据。该压缩数据以控制字002716开始,并跟随有用于字W4、W5和W7的数据值,如图6的底部显示的。在此例中,片220的头7个数据字已经被压缩成了4个字,包括控制字。

在图7中,被用在图5的例子中的数据利用REPEAT模式压缩技术得到了压缩。原有片数据的字W1-W7被显示在标号242处。相关的控制位被显示在标号244处,其中模式位被清除为逻辑“0”,因为我们采用的是REPEAT模式。如在此例中可见,几乎没有重复,且只有最高有效位(MSB)被置于逻辑“1”,因为字W7中的值等于字W6的值。

所产生的控制字是其两个被清除为零的、在标号246处的最高有效数字与控制位248的结合,给出了在标号250处的最后控制字值004016。在标号252处的压缩数据是七字长的(包括控制字),所以可见同其原有位映象全丸格式的原有片数据相比,REPEAT模式压缩技术对于减小将要存储在存储器中的字数是没有用的。

在图8中,用在图6中的例子中的数据,利用USE-X模式压缩技术,得到了压缩。十六进制形式的原有丸数据显示在标号262处,且其相应的控制位被显示在标号264处。模式位被置于逻辑“1”,因为采用的是USE-X模式。控制字,除了包括控制位的字268之外,由在标号266处的零值的头两个最高有效数字构成。其结果是在标号270处的具有十六进制值00C7的控制字。在标号272处的压缩数据只有4字长,包括控制字。这是很大的压缩,且该数据实际上被压缩到了与采用图6显示的原有REPEAT模式压缩技术时相同的字数。对于该具体的丸数据片,两种压缩技术具有相同的压缩比。

图9和10提供了显示进行根据本发明的原理的压缩和解压缩的逻辑步骤的流程图。在压缩实际的位映象片数据时,各个片将借助两种压缩技术而得到压缩,随后进行比较以看哪一种技术在压缩之后给出最少的需要存储在存储器中的字。应该理解的是,在本发明中可在不背离本发明的原理的前提下采用其他类型的压缩技术。甚至可能的是对每一个数据片采用两种以上的压缩技术,然而,如果采用两种以上的压缩技术,模式位必须被扩展到一位以上,以确定对各个数据片最好的技术。

图9显示了压缩单片的位映象打印数据所需的重要逻辑组,并包括上述的两种数据压缩技术。从标号300表示的“开始”框开始,该逻辑流程进行到功能框302-它初始化压缩过程中所用的若干变量。用于控制每个片的字数的一个循环计数器被置于零,且这被给予了变量名“cnt”。两个变量被初始化成零—它们跟踪所采用的两种模式(即两种不同的数据压缩技术)的压缩数据的尺寸。对于USE-X模式该变量名是sizel,且对于REPEAT模式该变量名是size2。另一个变量prev被置于等于值X,且X最好表示了前面在打印数据中找到的最普通的数据字。一般地,最普通的数据字等于零(000016),因为多数文件所要打印的最普通的片是“空白”片。

逻辑流程现在进行到判定框304,在那里将要分析的下一个数据字,利用称为data(cnt)的变量,被与变量X的值相比较。变量data(cnt)表示用于该具体片的一个未压缩的数据字,且由于变量cnt当前被置于零,这起到了至正在分析的片中的第一字位置的指针的作用。

如果判定框304的答案是“否”,则逻辑流程进行到功能框306,后者把变量size1的值加1,这增大了USE-X模式的压缩数据中所需的字数。逻辑流程现在进行到另一个判定框308,不论流程是来自判定框304的“是”结果还是来自功能框306的输出。

在判定框308,片中的当前数据字得到分析,以看它是否等于变量prev的值,它基本上问“新”或当前数据字的数据是否与前面的数据字中的数据相同。如在判定框304一样,变量data(cnt)表示了正在分析的片的第一数据字,因为cnt的值当前被置于零。如果判定框308的答案是“否”,则逻辑流程进行到功能框310以把变量size2的值加1。如在功能框306一样,功能框310增大了当采用REPEAT模式时在压缩数据中所需的字数。

逻辑流程现在进行到功能框312,不论是来自判定框308的“是”结果还是来自功能框310的输出。在功能框312,变量prev被置于等于变量data(cnt)的值,这将变量prev置于该片的当前未压缩字值。在逻辑流程的此处,变量prev将被置于该片中的第一字的值,因为变量cnt的值当前被置于零。在此之后,功能框312将把变量cnt的值加1,这意味着对于在包括判定和功能框304、308、312和314的循环中的下一个组操作,该片的下一组数据字将得到分析。

逻辑流程现在进行到判定框314,它判定变量cnt小于片的高度。该高度表示在一个具体的片中的字数,且为了描述图9的流程图,假定在各个片中的16位中有13个字。这将提供每个片208位或丸的精度,这对于具有208个沿着纵向方向的喷嘴位置的高密度喷墨打印头是有用的。

如果判定框314的答案是“是”,逻辑流程返回到判定框304-在那里“新”的数据字得到分析以看它是否等于变量X的值。因此,逻辑流程随后将进行到判定框308以看新的数据字是否等于前面的数据字的值,如在变量prev中找到的。根据答案,如前面一样,根据片中的当前数据字的值,变量size1和size2将得到递增,表明压缩数据的字的大小可能得到增大。

如果在判定框314的答案是“否”,则逻辑流程将进行到功能框316,且此具体片的分析结束。换言之,图9的流程图只描述了对单个片的分析,且要分析下一个数据片,需要进行步骤300-314,如上所述。

在功能框316,变量cnt被置于零,这现在表示控制字中的位位置和在该片的未压缩数据中的字位置。一个变量“size”被置于等于1,这等于字中的压缩数据的当前大小。这基本上代表了压缩数据的最小尺寸,因为在各个片的压缩数据的所有情况下将总是有至少一个控制字。另一变量out(0)表示存储压缩数据的一个暂时阵列。此时,功能框316把变量out(0)置于零,这表明了该片中的控制字的位置。

逻辑流程现在进行到一个判定框320-它判定变量size2的值是否小于变量size1的值。如果答案是“是”,则逻辑流程进行到功能框340,且REPEAT模式是在此具体片的更为有效的压缩技术,因为在REPEAT模式下的压缩数据中的数据字数少于在USE-X模式下的。如果判定框320的答案是“否”,则逻辑流程进行到一个功能框322,这表明USE-X模式是对于此片更为有效的压缩技术。如果两个变量size2和size1的值相等,则逻辑流程将进行到功能框322,且USE-X模式将被用来产生压缩数据。

当采用USE-X模式时,功能框322把变量out(0)的位高度置于逻辑“1”。这种操作将用在控制字中的最高有效位(MSB)-它是“模式”位—置于逻辑“1”。在功能框322,最高有效位(MSB)被置于逻辑“1”,以表示该具体片在USE-X模式下得到压缩。在图9的流程图中,这通过设定变量out(0)的名为“height”的位来表示。

逻辑流程现在进行到判定框324,以判定未压缩片中的下一个数据字值是否等于变量X。这在图9的流程图中被表示为询问变量data(cnt)是否等于X。如果答案是“是”,则逻辑流程进行到功能框326,在那里与变量out(0)中的变量cnt的当前值对应的位“i”被置于逻辑“1”。在此之后,逻辑流程进行到功能框330。当发生这种情况时,该片中的相应数据字“i”的值将不被保存在压缩数据中,因为其值等于变量X的值。

如果判定框的结果是“否”,则逻辑流程进行到功能框328,在那里新的数据字被复制到压缩数据中。在图9的流程图中,这是通过把变量data(cnt)复制到变量out(size)中而实现的。在此之后,变量“size”得到递增。逻辑流程现在进行到功能框330。

在功能框330,变量cnt得到增值,这意味着控制字中的下一个位“i”将在下一个从逻辑框324至330的循环中得到分析。逻辑流程现在到达判定框332,以判定变量cnt是否小于“height”的值。如上所述,在此例中的片的大小为13个数据字,因而变量cnt当该判定框产生“是”结果时将从零增值到12,而逻辑流程将直接返回到判定框324。一旦变量cnt达到值13,判定框332的结果将是“否”,且逻辑流程将进行到功能框360。

如果对于一个具体的片选择了REPEAT模式,则功能框340将把变量X的值载入变量prev。与上述有关地,变量prev将包含位于位置(i-1)的最前面的字的数据字值—假定该控制字中的当前位现在等于i。如果这是一个具体片的第一个字,则变量prev的值(经过X)被置于一个预定的数据值,诸如零(000016)。

逻辑流程现在进行到判定框342,它判定当前的数据字值是否等于前面的数据字值。在图9的流程图中,这被显示为把变量cnt与变量prev相比较。如果答案是“是”,则逻辑流程进行到功能框344,以把当前位i(根据变量out(0)的变量cnt)置于逻辑“1”。当出现这种情况时,当前字的数据值不被保存在压缩数据中,因为当前数据字具有等于前面的数据字的值(注意该片是按照REPEAT模式而得到压缩的)。逻辑流程现在进行到功能框348。

如果判定框342的结果是“否”,则逻辑流程进行到功能框346,以把新的数据字复制到压缩数据中。对于图9的流程图中显示的变量,功能框346同上述有关地进行与功能框328相同的步骤。逻辑流程现在进行到功能框348。

在功能框348,当前字的值(即“数据cnt”)被装载到变量prev中,且随后变量cnt得到增值。这更新了变量prev的值,因而当所要分析的片中的下一个数据字与该“当前”字(它将迅速变成“前面的”字)相比较时,正确的值将被准备好用于变量prev中。

逻辑流程现在进行到判定框350,以判定一个具体片中的所有数据字是否都已经借助包括框342至350的逻辑循环而得到了分析。判定框350的操作方式与上述判定框332的相同。如果该结果是“是”,则逻辑流程将返回到判定框342,以对片中的下一个数据字进行操作。如果该结果是“否”,则逻辑流程进行到功能框360。

功能框360把压缩数据写入存储器(作为数据文件)或通信端口—诸如主机直接与打印机相连的并行端口。在图9的流程图中,这被描述为写入存在于变量“out”中的字数(它等价于变量size的数据值)—它是该片的压缩数据中的字数。当然,如果原有的未压缩片数据包括了与位映象数据的208个位相应的13个字,则所希望的是在此阶段变量out中的数据字数远小于13。在通常的图形数据或文本数据中,这几乎总是得到实现。对于灰度图象所用的连续色调数据,则并不总是这种情况。

一旦这已经得到实现,逻辑流程进行到此流程图的“结束”框362。与上述有关地,图9的流程图较好地是在也产生包含这种位映象信息的打印数据文件的主机上发生的一个过程。喷墨打印机当前的趋势是在主机内执行屏面图象处理(RIP),并随后把整个位映象一片一片地经过一个并行端口或一个串行端口(可以是通过一个网络)传送到喷墨打印机。虽然主机与打印机之间的通信速度可能足够地快因而不需要数据压缩来跟上打印机的打印头或打印引擎的速度,但仍然希望压缩在主机与打印机之间的传送的数据流,不仅是为了时序的考虑,更多地是为了节约主机与打印机中的存储器存储空间。在多数打印机中,接收的打印任务数据将被暂时存储在随机存取存储器(RAM)中,直到打印机准备好了打印该打印任务的一个具体页。在RAM中保持这种数据所需的空间越小,能够由一或多个主机下载到打印机的页或整个打印任务就越多,从而使主机能够进行其他的任务,并且也许解脱了在其他情况下将仍然试图传送打印数据的数据包的网络。

图10描述了一个流程图,它显示了对图9的流程图产生的压缩片数据进行解压缩所需的重要逻辑步骤。与上述有关地,较好地是这些逻辑步骤发生在即将结束在诸如纸的打印介质上产生打印输出的打印机中。然而,应该理解的是,图9和10的流程图中的逻辑步骤可以在主机或打印机中实现,而不脱离本发明的原理。

该流程图开始于“开始”框400且该逻辑流程进行到一个判定框402,以判定各个片的控制字中的“模式”位是已经被置于逻辑“1”还是被清除为逻辑“0”。在图10的流程图中,变量data(0)表示用于一个整个单个片的控制字。如果判定框402的结果是“是”,则USE-X模式得到显示且逻辑流程进行到功能框404。如果判定框402的结果是“否”,则显示REPEAT模式且逻辑流程进行到功能框420。

在功能框404,变量cnt被置于零,它表示位于控制字的“i”的位。另外,变量i被置于等于1,它表示压缩数据的字位置。变量cnt和i的值不同的原因,是由于压缩数据的第一个字是控制字,且不表示实际的打印数据。逻辑流程现在进行到判定框406。

判定框406判定变量data(0)的具有值“cnt”的位是否被置于逻辑“1”。如果答案是“是”,则逻辑流程进行到功能框408,以检索变量X的值并将其置入该片的未压缩数据中。在此之后,逻辑流程进行到功能框412。

如果判定框406的结果是“否”,则逻辑流程进行到功能框410,以从该片的压缩数据检索数据字,并将该值载入该片的具有变量名out(cnt)的未压缩数据。在此之后,变量i得到增值,从而使压缩数据中的下一个字位置将在适当时得到采用。逻辑流程进行到功能框412。

在功能框412,变量cnt得到增值,从而在从逻辑框406至412的下一个循环期间控制字的下一个位的位置将得到检验。逻辑流程现在进行到判定框414。在判定框414,通过比较变量cnt和片的高度,判定是否已经达到了片的末端。如果cnt小于该高度(例如13个字),则逻辑流程进行到判定框406。如果该比较的结果是“否”,则逻辑流程进行到“结束”框432。

在功能框420,两个变量被置于常数,即变量cnt被置于零,且变量i被置于1。另外,变量prev被置于变量X的预定值,后者将被用来在REPEAT模式下仅检验该片的压缩数据的第一字。逻辑流程现在进行到判定框422。

判定框422判定在变量data(0)的cnt位置的位是否被置于逻辑“1”。如果答案是“是”,则逻辑流程进行到功能框424,以检索前面的字(在位置(i-1))的值。这样,该当前字位置的未压缩数据将被载入与前面的(i-1)字位置处相同的数据,且逻辑流程随后进行到功能框428。

如果判定框422的结果是“否”,则功能框426将从位置i处的压缩数据检索当前字的数据。在此之后,变量i的值得到增值。逻辑流程现在进行到功能框428,在那里变量prev被载入当前数据字的内容,被称为变量out(cnt)。变量cnt随后得到增值。逻辑流程现在进行到判定框430。

在判定框430,通过检验变量cnt是否小于片的高度(例如在字诸如具有13个字的片中)判定是否已经达到片的结束处。如果答案是“是”,则逻辑流程返回到判定框422,以进行该片的下一个数据字的操作。如果结果是“否”,则逻辑流程进行到“结束”框432。

一旦到达图10中的流程图的结束,包含所有所需的数据字的一个片将被原来从变量data(0)导出的压缩数据产生出来。如果USE-X模式被用来压缩一个具体的片,则该压缩数据只包含不等于变量X的字,且因而在图10的流程图描述的解压缩步骤期间,具有等于X的额外的数据字必须被插入到压缩数据中,以获得构成整个片所需的适当未压缩数据。

如果具体的片采用了REPEAT模式,则该压缩数据被直接用来产生将要在前面的具有完全相同的数据的字之后被直接插入的额外字,它至少被重复了一次。

应该理解的是,在不脱离本发明的原理的情况下,图9和10可采用不同的压缩技术。另外,应该理解的是,在找到哪一种数据压缩技术更有效的判定中,可以对打印数据的各个片采用两种以上的压缩/解压缩技术。当然,如果为各个片分析两种以上的压缩/解压缩技术,则需要一个以上的二进制信息位来表示在压缩步骤中选择了哪一种模式。

对本发明的最佳实施例的前述描述是为了说明和描述的目的而给出的。这种描述不是为了穷尽或限定所公开本发明的具体形式。从上述的教导,可以作出明显的变形和修正。该实施例是为了对本发明的原理和实际应用进行最好的说明而得到选择和描述的,以使本领域的技术人员能够把本发明最好地实施到各种实施例中和进行各种修正以适应具体的应用情况。其意图是本发明的范围只由所附的权利要求书来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号