用于打印机的精简分割行数据的方法和设备的制作方法

文档序号:6413956阅读:433来源:国知局
专利名称:用于打印机的精简分割行数据的方法和设备的制作方法
技术领域
本发明总体上涉及打印设备,特别是针对采用具有一个喷墨嘴阵列的打印头的喷墨打印机。本发明特别作为一种喷墨打印机加以公开,该打印机打印数据分割行,并通过沿同一分割行消除打印数据区域之间连续空片的空白区来精简原始位图打印数据,然后根据原始打印数据打印出每一分割行的每一个区域,同时使打印头托架绕过这些空白区而不必将这种空白区作为零写入打印图象缓冲存储器中。
采用多重喷嘴阵列的喷墨打印机就像采用如发光二极管(LED)等其它多重打印器件的其它类型的打印机一样,已有多年历史。在这类打印机中,这些喷嘴一般地被组合在一起装到一个打印头上,该打印头一般地被固定在一个可动的滑架或托架上,滑架或托架相对于沿垂直、纵向方向移动或换行的纸张做左、右水平运动。这些多重喷嘴(或发光二极管)一般被集中组合在一个竖列(或多重这种竖列)中,从而当打印头借助其托架每走过一个水平行程,可同时将许多象素或点(即打印单元)的水平“列”打印到纸张或其它记录介质上,形成一“分割行”油墨。
当打印头在水平方向运动时,根据打印机通常从主机接收到的“打印数据”沿着分割行产生微小的点。分割行的“宽度”(即在这个取向上的“高度”)依打印头喷嘴的分辨率(例如300dpi(每英寸的点数)),其分辨率为1/300英寸,及打印头上竖直列阵列中的喷嘴数目而定。例如,如果打印头具有一个数目为104个喷嘴的阵列,其分辨率为300dpi,则分割行的宽度约为1/3英寸。典型的传统打印机将打印数据格式化,从而每个喷嘴实际上同时接收到信息的一个数字(即,或为“通”或为“断”)数据位,这意味着,在上述的例子中,一个至少104比特的数据集,必须被传送到打印头以便控制104个喷嘴,它们准备通过接到ON的状态(即逻辑1)来打印一个点或者处于喷嘴OFF的状态(即逻辑0)不打印一个点。这个在某一特定时刻控制104个喷嘴的整个竖列阵列的数据集用术语“片”表示。因此,为形成一分割行打印数据,必须将一片接一片的打印数据传送到打印头,顺序地在正确的时刻接通或关闭每一个打印头喷嘴,打印出早些时候由打印机从主机接收到的打印数据图形图象。在上述例子中,每一片必须包含104比特打印数据,且当假定水平分辨率也为300dpi时,则打印头借助其托架水平移动1英寸必须有300片数据,从而形成一个104×300象素或1/3英寸×1英寸的矩形。
在传统的喷墨打印机中,通常从一个主PC机中输入打印数据并通过接收打印数据的“字”或“字节”将这些打印数据存储起来,当数据为“位图”形式时,字或字节的每一个比特代表一个单一的象素。位图信息通常以每个字为16比特的字串到达,直到一个完整的片被定义为止。一旦一个分割行的第一片被接收并存储到打印机的存储系统中,然后再接收另外的字以定义下一个邻接片,这一过程一直继续到一个分割行的所有片被接收并存储到打印机的存储系统为止。在第一分割行完成之后,接下来接收到的打印数据将再次分成字组以定义下一分割行的第一片,该分割行通常为刚刚完成的那个分割行的相邻分割行。
这一过程一直持续到待打印的一整页所有分割行的所有片全部被接收到为止。如果不采用数据压缩或数据精简技术,打印机接收到并随之被存储到打印机存储系统中的位图将是一个相互邻接以构成一个分割行的竖直片系列,而相互邻接的水平分割行系列则定义将被打印的页面的整个垂直结构。所有这些片和分割行均由单独的象素组成,不论该象素是将要被打印出来或者是空的,借此形成位图打印数据的整个矩形页面。这种方法使存储器十分紧张,因为所有“空”区尽管没有需要打印的象素,仍然要求占用和将要被打印头打印的各种象素的区域同样的存储空间。如果不采用任何型式的数据压缩或数据精简技术,存储一个打印数据页面所需的存储区的数量将总是形成一个分割行的所有片所需的象素数乘以该页面的分割行数。例如,如果要将一个整个为8-1/2×11英寸的打印数据页面,以300dpi的分辨率存储在存储器中,需要(8.5×300)×(11×300)=8,415,000个象素。这大约为8百万比特的数据,相应地要求打印机存储系统中超过1百万字节的存储空间,而且,这还是在假定没有采用多余的比特用于任何(通常的)错误校验程序的前提下。容易看出,减少用于在这种打印系统中保持打印数据所需的存储器空间的数量是非常有益的。
在Bauman的一个专利(US.5,272,768)中,公开了一种数据压缩技术,该技术将字符字形数据压缩,然后将压缩过的字形字符存储,然后在即将用打印头打印之前将字形字符解压缩。这种Bauman的数据压缩技术通常用于喷墨打印机或可能用于采用发光二极管(LEDs)阵列的打印机,其中被打印的行由水平分割行组成。在Bauman的专利提供的一个例子中,每个字符包含三(3)个数据分割行,称之为“带”。每一个带包含16比特或象素的打印数据,并对每一个字符字形进行分析看是否要求所有三(3)个带被定义包含至少一个“黑”象素或打印数据。如果是,则该特定字符的字形不被压缩。反之,如果对于一个特定的字符字形有一个或更多的带是完全空的,则通过删除为打印该字符所不需要的一个或更多的带而将该字符压缩。打印机的字形ROM(即,只读存储器)将这些字符字形按其压缩状态存储起来,从而在字形ROM中节省一些存储空间。
如Bauman的专利所公开的,打印作业数据接收自一个主机并暂时存储在一个输入缓冲存储器中。这里,该数据通常是ASCII数据,而不是位图数据。在这些情况下,ASCII数据必须被加以解释或者经过光栅图象处理(“RIPed”),使得每一个字符具有一个由字形ROM为之产生的位图。在字符被传送到打印工具之前,在打印机的某处,字符必须变成一个位象。在Bauman的专利中,当ASCII字符到达打印机时,对于每个在打印机字形ROM中可获得的字形,这些ASCII字符将借助存储在字形ROM中的压缩图象转换成一个位图,而它在传送到打印工具之前必须被打印机解压缩。这是通过记忆每一个特定字符字形的三个带中的哪一个已被删除而对该ASCII字符产生一个被压缩的字形来实现的。采用一个数据表来存储该信息,当对该特定字符字形产生位图时,在传送到打印工具之前,“被删除”的带被加到整个字符的位图上。Bauman的发明只适用于预定的字符数据,例如不同类型字形或点的大小的字母字符,同时,它是以ASCII数据或其它高级语言数据格式输入到打印机中的。
另一个Nagata的美国专利(U.S.5,237,645)公开了一种利用发光二极管(LED)阵列或激光头或其它类似器件的打印机。典型的普通激光打印机不按分割行打印,而是以单个象素的单独行进行打印。如果采用发光二极管阵列,则打印过程可以按分割行进行。在这两种情况下,Nagata提出了一种在数据存储到图象存储器中之前压缩之一位图数据的方法。打印数据或者作为已经是位图数据而被接收,或者打印数据以某种高级页面描述语言例如PostScriptTM的形式从主机中传达。如果数据以高级语言传达,则必须通过光栅图象处理产生一个位图。一旦数据成为位图格式,则Nagata将一整页数据以未压缩的状态接收到存储器的一个虚拟页中。此时,整页数据被分成“虚拟块”,这主要是通过选择块的尺寸来实现的。一旦虚拟块的尺寸被选定,Nagata系列必须对足够的“光栅”(即,高度为一(1)象素的线)进行光栅图象处理,直到充满一个块(现在由一个局部的位图构成)的整个高度。一旦这些块被定义,Nagata打印机对每一个虚拟块进行分析,以判断是否有任何块完全是空的(即,在特定的区域内没有要打印的数据)。这样的空白块被称为“空”块。所有非空块被称为“有效”块。尽管各空块的地址被存储到存储寄存器的不同集合中,但只有有效块被存储在图象存储器中。按照这种方法,大量的图象存储器可被用来存储将被打印的各数据页。
通过按照Nagata的发明压缩数据,超过一页的打印数据通常可装入在图象存储器中可以获得的有限空间中。当然,这些压缩数据随后在传送给打印工具之前必须被解压缩。根据Nagata,有效块象所需要的那样,以完全位图格式,按各光栅段从图象存储器中恢复。当打印机遇到一个空块时,这样的光栅段仅被读取为零,以对该块提供打印数据,并且该数据随后被传给打印工具。按照这种方法,打印工具总是接收将被打印的整个页的完全位图数据。从而,打印工具必须物理地经过将被打印页的每一个物理象素位置,不管在该位置处是否要打印一个象素。这将使打印工具花费与在打印页相等的区域上的各个位置打印黑象素一样长的时间来“打印”大面积的空数据。
在美国专利U.S.3,827,357(Mahoney的专利)中,公开了一种打印机,这种打印机在每一串/列位置存储一个整个的字符。如果该字符是空的或是一个不可打印的字符(例如,某些类型的无效代码),则该字符将不被打印。当每个数据串被存储时,一个计数器对于能被打印的各字节(即,字符)做减法。在打印时,该计数器再次对各字符做减法,直到它求出已经打印的串的所有可打印字符为止。此时,其余的串被舍弃,并且打印机立即将其打印头换到下一行。Mahoney是一个较老的专利,主要针对点阵或字符型打印机。Mahoney主要公开了一个用于确定每行最右侧字符的方法,并且当该字符被打印头遇到时,便立即被命令进行换行。
在Bohrer的专利(U.S.4,481,602)中公开了另一个传统喷墨打印机的例子。Bohrer主要公开了一种用于在数据被存储到存储器中之前压缩字形数据,然后在打印前对数据解压缩的方法。Bohrer声称用一种方法使指针表的尺寸最小化,以提供超过三倍的存储压缩。如上所述,任何大的存储压缩都是有价值的,这是因为可将超过单一打印数据页的数据存入可能是被设计成仅存储一页位图打印数据(未压缩)的图像缓冲存储器中,从而通过更有效地处理打印数据来提高打印的总体速度。当然,Bohrer打印机必须执行大量的数据处理以实现其所述的目的。根据Bohrer的方法,各字符与其特定的字形相匹配,并为各字符产生一个指针和校正因子补偿值。这一信息被存储在一个压缩数据的“卷阵列”中,也存储在一个“指针表”中。当对数据解压缩时,必须从卷阵列中找到字符的大小,必须确定“完全字符盒”中字符的位置,并且利用包括指针和校正因子补偿值在内的所有存储数据将该字符拷贝到位图中。虽然Bohrer有可能在图象表中节省存储空间,却需要大量的数据处理,这会使总体打印过程减慢。
虽然数据压缩技术具有所需的特性,但还需要“精减”打印数据,这种方法不需要随后的解压缩操作。精减数据能够从图象存储表中删去某些空区,从而节省大量的存储空间。通过省去先压缩,然后再解压缩的需要,打印机的操作速度得到提高。另外,这种方法可以应用到图形数据上,而不仅仅局限于预定的字符(即,字形)数据。
因此,本发明的主要目的是提供一种打印系统,通过精减位图打印数据节省图像存储空间,以便显著减小一个文件或打印页的大小,从而对于存储每一单页只需更小的存储容量。
本发明的另一个目的是提供一种按下述方法控制打印机的打印工具的打印系统,该方法为只打印包括将被打印的位图数据的确定区域,跳过作为打印页一部分的一个特定分割行的连续空片的空白区。
本发明的另一个目的是提供一种用于精减位图打印数据的方法,通过对将被打印的每个分割行的各个片进行分析,确定包含实际被打印象素的区域和包含足够连续空片的空白区,以便当经过空白区时能够关闭打印机打印头,然后和其它记录分割行各区域的开始片和结尾片位置的变量或指针一起存储精简的位图打印数据。
本发明的其它一些目的,优点和新颖性特点,将部份地在下面的描述中加以陈述,而其余部分对于熟悉本领域的人来说,通过对以下的描述进行研究将变得十分明显,或者通过对本发明的实施体会出来。
为了达到前述及其它一些目的,并根据本发明的一个方面,提供一种改进的打印系统,该打印系统按打印页的每一分割行确定该分割行中每一个包含实际将被打印的象素“区域”的开始点和结尾点,每一区域的开始片和结尾片的地址,并且确定该分割行中包含足够的最小数目的连续空片的“空白区”,借此精简位图打印数据。对于打印数据的每一分割行,找到当前分割行最左片和最右片。开始,例如在最左片,对各个连续的片进行分析,以便确定是否在该片中包含将被打印的象素。如果发现一个“空”片(即,一个所包含的字均由逻辑0比特值组成的片),则该方法继续查找更多的连续的空片,以确定是否有足够数目的这种连续空片存在,并将其看作一个“空白区”。这通常借助选择一个阈值(例如,100个连续空片)来实现,如果超过阈值,将认为空片的空间足够大,需要在该空白区的开始关闭打印头,然后当到达该空白区的结尾相当于下一打印区的开始时再打开打印机。
精简过位图打印数据可被作为一个数据文件存储在存储器中,并且通过暂时从数据文件中删除空白区信息并在打印机或者在主计算机的存储系统中(如果数据精简在主计算机中进行)设置相邻区域的最外侧的片,如果在主机中实施数据精简方法时,使得该文件占据比未精简的位图打印数据文件小得多的存储空间。当然,空白区必须计算出来,这通过建立与每个分割行的待打印的每个区域的起始片和结尾片相对应的“指针”变量来完成。这一精简的数据最终以如下的方式传送到打印机的打印工具,即,对于每一个实际上要打印到打印介质(例如纸张)上的区域,这些片的位图打印数据被顺序地传送到打印工具,从而喷嘴(例如,在喷墨打印机的情况下)将接收到它们所要求的数字ON-OFF数据以便恰当地指示喷嘴何时在打印介质上喷射墨滴。
当打印头借助打印托架驱动器经过每一个区域时,打印头最终会到达该区域的末端,这时打印头将关闭或“不工作”并开始通过空白区,该空白区界于在这一分割行内刚刚打印过的区域和位于空白区远端侧的下一个待打印的区域之间。打印头一直保持在截止状态直到到达含有真正要打印到打印介质上的象素的下一个待打印区的第一片为止。这时,打印头再次“工作”或打开,并接收位图打印数据并向打印介质上喷墨(在喷墨打印机的情况下)。在一个单一的分割行内打印区和相邻空白区的数目仅由下述几个因素限定,它们是整个分割行的最左边的片和最右边的片之间的片数,确定可看作是空白区的连续空片的最小数目的阈值,由托架驱动器驱动的打印头速度以及打印头的“开”响应时间和“关”响应时间,包括启动ASIC的逻辑或控制打印头的其它处理器件的类似响应时间。
如果当通过根本不需要打印的空白区时,打印头具有更高的运动速度性能,本发明的优点则更为突出。在这种情况下,相对于打印头托架以这种高速运动,阈值将会增大。
对位图打印数据的精简处理,可在主机中进行,也可在打印机中进行。如果精简过程在主机中进行,则打印机的整个存储容量将会被更好地加以利用,在通常情况下只能存储一页打印数据的存储空间内,具有可以存储大于一页的信息量的存储能力(在许多情况下)。当精简位图打印数据传输与高级语言数据文件传输相比时,从主机传输到打印机的数据量似乎更大;然而,在喷墨打印机的情况下,由于打印头经过给定页上每一待打印分割行所用的实际时间量与从主机向打印机写入这些各分割行的精简数据所需的时间量一样短,所以总处理能力不会有损失。
本发明的打印数据精简方法首先分析,对于特定分割行大小(依该分割行的打印数据宽度而不同)的每个分割行最大可能区域数目,并且主要借助表示可看作空白区的连续空片的最小数目的阈值来确定。一旦分割行的最大可能区域数目被确定,则通过确定哪一处连续空片等于或超过阈值来分析待打印数据的第一个区域。一旦确定,则第一区域的结尾将被标为到达下一空白区之前、至少包含一个实际将被打印象素的片。这时,产生两个表示区域开始片地址和该区域长度(以片为单位)的变量。在实际位图数据到达打印头打印的同时,这两个变量将最终传递到打印工具。
直到打印头的水平位置与该区域的开始片位置重合为止,待打印的第一片将不被传递给打印头。此后,打印头将根据该区域的位图打印数据开始打印,并且当该区域的片数都已经被计数过时,打印头将被关闭或不工作。根据这种打印机,打印头可按与其正常打印速度相同的速度经过该空白区,或者可以在空白区内提高速度,直到到达下一区域为止。当到达下一区域时,产生与打印第一区域时相同的操作,即当打印头到达第一片的物理位置时接收该下一区域的第一片的数据。打印头再次开始工作后,按这一区域的位图打印数据确定的象素打印,直到到达该区域的最后一片为止,然后再次不工作。打印头的这种开和关一直持续通过该分割行的每一个区直到打印头到达该分割行最右侧的片为止,这时打印头被换档到下一个分割行(这通常通过采用纸张驱动电机来实现)。
本发明的主要作用在于用一个较小的位图打印数据文件就可以定义待打印的特定页面的整个位图,同时,在精简之后,这一数据实际上不必经受任何型式的“解精简”操作,因为每一区域位图的真正打印数据并未以任何方式进行过变换。打印精简数据文件对要求打印精简数据文件的全部信息的唯一改变是必须存储一定的指针变量以便记录每一分割行的每一个区的起始和终止的部位。这和很多传统的系统中,首先“压缩”数据来节省诸如打印图象表或字形ROM的存储空间有很大不同。这种压缩过的数据,在晚些时候必须解压缩,这是一个必须在打印机内完成的额外操作,从而降低了打印机的总处理能力。
本发明的其它一些目的对于熟悉本领域的人来说从下面的描述和附图中将变得十分明显,其中描述并给出了本发明的一个优选实施例,它是预期实施本发明的最佳模式之一。如将会认识到的,本发明可以有各种不同的实施例,它们的许多细节可以在许多显著的方面加以调整而不脱离本发明的范围。因此,附图和描述应被看做是本质性的而不是限制性的。
构成说明书的一部分所插入的附图,将用来说明本发明的一些方面,并与说明书和权利要求书一起,用来阐明本发明的原理。在这些附图中

图1是一个打印系统的框图,该系统包括一个主机和一个喷墨打印机,它们按照本发明的位图打印数据精简方法的原理具体运用。
图2是一个存储在存储器中的打印数据图表,并且该图表被变换以产生一个将要被按本发明原理构造的喷墨打印机喷嘴阵列打印的位图数据分割行。
图3是一个被打印的页面的一部分的前视图,它给出了在该打印的页面上打印数据的一个分割行,并用本发明的原理对其进行描述。
图4是图3中被打印页面的一部分的放大前视图。
图5A,5B和5C表示用本发明的精简方法处理时,位图打印数据所处的各个阶段,第一阶段为原始位图数据,然后为精简过的相应位图数据,最后一个阶段给出了传递到打印工具的打印数据和指令。
图6是一个给出了可以按照本发明的原理进行精简的各个区域的待打印样页的前视图。
图7A和7B是给出根据本发明原理进行位图精简方法的细节的流程图。
图8是一个为完成本发明所需功能的简图,其中,按照本发明的原理,光栅图象处理和随后处理精简数据步骤是在主机中完成的。
图9是按照本发明的原理在打印机中首先完成光栅图象处理然后精简位图数据所必须执行的功能的简图。
现在将详细介绍本发明的优选实施例,在附图中给出其中一个例子,在全部附图中同样的数字表示相同的部分。
现在参见附图,图1给出了一个打印系统,它包括一个主机或主PC机10,它通过通信电缆24与喷墨打印机30相连。主机10通常包括微处理器12,只读存储器(ROM)14,随机存取存储器(RAM)16和某种类型的输入/输出端口18。这些基本结构单元由一个地址总线20和一个数据总线22连接在一起。在许多应用中,主机将包括一些类型的字处理程序,字处理程序产生将被打印的数据文件,并且这些数据文件能够以例如PostScript格式的高级语言(HLL)格式或其它不同的高级语言格式,例如PCL格式传给打印机30,或者,该数据能够以打印机30可直接操作的“位图”格式传送。另一方面,主机10可以是一台网络服务器,它包括一个大的非易失性数据存储设备,例如一个能够从网络(例如一个区域网(LAN))中的其它计算机接收数据文件的硬盘驱动器(未标出),或者它能够自己产生数据文件(例如,采用字处理程序),暂时存储到硬盘驱动器上,并且,这些数据可以在需要时传送给打印机30。
喷墨打印机30沿地址总线40和数据总线42还包括一个微处理器32,ROM 34,RAM 36。打印机30包括一个具有专用功能的ASIC(专用集成电路)38,它主要用于在从主机接收到打印数据直到它被打印为止的整个过程中对打印数据进行处理。通信线路24连接到输入/输出端口44上,端口44最好包括一个具有双向能力的平行通信端口。I/O(输入/输出)端口44连接到一个输入缓冲存储器46上,该输入缓冲存储器46进一步连接到将输入的打印数据从输入缓冲存储器46传输到ASIC38的数据总线48上。
由ASIC 38对打印数据的处理最终是由微处理器32中运行的计算机程序控制的。在一些打印机上,输入的打印作业数据包括一高级语言(例如PCL)并且在进一步被传送到打印工具之前必须经过光栅图像处理步骤。在这种情况下,微处理器32将控制光栅图像处理并在RAM 36中的一部分中暂时存储高级语言打印作业数据,并同时在RAM 36的另一部分存储由按照位图格式进行光栅图像处理所产生的副产品。这一位图数据最终经ASIC 38传输给打印工具。如果打印作业数据以位图格式从主机10传达,假设打印机30的所有组件都准备好在给定时间传输数据,则可以将打印数据直接从输入缓冲存储器46经ASIC 38传输给打印工具70。在正常条件下,打印工具不能跟上进入I/O端口44的传输数据,因此,这些数据必须经ASIC 38传送到RAM 36中暂时存储起来,直到打印工具准备好接收更多的数据为止。
在图1中,打印工具由标号70图解地表示,它包括一个打印头72,一个纸张电机驱动电路80和托架电机驱动电路82。打印工具70的这些主要部件由ASIC 38借助各种电信号进行控制,其中打印头72的信号是控制总线74,数据总线76和地址总线78传送的。在一个优选的喷墨打印机30中,打印头72实际上包含两列独立的喷墨咀(因此,它在本质上等价于安装在一个公用托架上的两个独立的打印头),因此,控制总线74包括两套加热线和两个独立的组件选通线,以及一套公用的电源线。纸张电机驱动器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中喷墨咀的开关动作。
在一个优选的打印机中,例如位于Kentuchy(肯塔基)州Lexington的Lexmark Internatioal Inc.制造的型号为“WinWriter150C”的打印机由主机到达的打印作业信息已经是位图格式的。原始数据文件,不论它是一个PostScript或PCL语言下的字处理字符文件或者其它类型的图形数据文件,都将在主机中由与特定类型的打印机一起使用的特殊“驱动”程序做光栅图像处理,所得到的位图将在I/O(输入/输出)端口18输出然后经由通信通道24传输到打印机30的相应I/O端口44。如上所述,在传统打印机中这种位图信息很可能包括一个大的象素矩阵,这个象素矩阵实际上与将被打印上图像的整张纸一样大。一般而言,打印作业数据从输入缓冲存储器36经由ASIC 38传输到RAM 36中,暂时寄存,当打印头72处于正确的位置时,ASIC 38的“引发逻辑”将被打开,从而使打印头72的喷嘴将墨点喷射到纸或其它打印介质上,在其上形成图像。当ASIC 38打开时,它通过DMA(直接存储访问)利用存储在RAM 36中另一张表上的信息从RAM 36“攫取”打印数据,存储在RAM 36的另一张表中的这些信息向ASIC 38提供含有打印数据以及用于由打印头72打印的当前分割行的“打印开始位置”(即,片的位置)在内的在RAM 36中起始地址的存储地址。ASIC 38比较打印开始位置和当前托架的位置,当前托架的位置是由编码电路50提供的打印头72当前的实际位置。如果比较结果为真(下面将作详细的描述),则打印工具70将开始使油墨从打印头72的打印喷嘴流到纸或者其它打印介质上的操作。
当打印头72关闭时,即,当不在打印介质上打印象素时,最好将ASIC 38的引发逻辑关闭,直到需要做下一次打印操作为止。这将在后面做更为详细的描述。
在图2中,标号100表示一个存储元素的图象表象,这个存储元素可以在主机10的RAM 16或打印机30的RAM36中找到。在“块100”中的每一个矩形表示一个数据字,它们依次表示二进制信息的十六(16)位。在图2中的图解块102中,第一个字标为“W1”表示16位,这16位由“b1”至 “b16”标出。
通常采用与图2中标号100和102标出的部分相似的方法存储地址和存储在存储地址中的二进制信息。换而言之,如果一系列二进制数据将自己传送给一个通信端口或一些类型的存储设备,例如RAM芯片、硬盘驱动器、地址总线或数据总线,则它通常将这一信息表示为一系列二进制或十六进制数,这些数通常由字节或字组成。这些字节或字通常组合起来水平地横跨一张打印页(当在打印输出或显示屏看到这些信息时),直到二进制或十六进制数到达该页上的一行结尾为止,在接下来的二进制或十六进制数移到下一行之后,从左边开始继续向右边重复上述过程。然而,当最终将在一些类型的打印介质上产生一个点的喷墨打印机或其它采用发光二极管或其它转换装置的阵列型打印机采用这种二进制或十六进制时,打印作业信息通常被旋转90°(“δ旋转”),因而将被存储在存储器中的连续数据流表示的是垂直信号,而不是待打印图象的水平表象。换而言之,标号100处所示的二进制数据的顶行中的连续二进制信息被旋转为分割行105的“SLICE1”(片1),如图2底部所示。
在一个典型的例子中,采用一个具有104个间距为1/300英寸(从而提供300dpi的分辨率)的竖直喷嘴的打印头,一个分割行的数据将至少要求104个二进制位的数据来定义该分割行的一个完整的单个片上所有象素。当利用每个大小为16比特的数据字时,每一个片要求6.5个这样的数据字,它将产生16×6.5=104个数据位以表示该特定片的同样的104个象素。对于SLICE1(片1),这些字由符号W1,W2,W3,W4,W5,W6,及W7表示。
由于绝大部分现代的微处理器具有至少为十六(16)比特宽的寄存器,所以采用整个16比特宽数据字来写计算机程序比仅用部分字来写计算机程序更为容易,并且因此,对于某些其它数据存储目的来说,采用整个七(7)个字来表示片1比试图“节省”第七个字W7后的八个字节更好。因此,由标号108标出的第七个数据字,将用其全部十六位来表示片1的一部分,并且在表示任何类型的位图打印数据时由标号106标出的其后八位在存储器中实际是浪费的空间。当然,计算机程序可能能够将每一片第七个数据字的后八(8)位用于一些其它的目的,例如错误校验,但是这将使计算机程序复杂,同时降低打印机30的处理速度,这主要是由子在打印头72工作期间,微处理器32和ASIC 38在应当被更好的用于迅速,有效地向打印工具70传输数据的同时还要利用这八个数据位执行其它的操作。
从图2可以看出,SLICE 2(片2)包括另外七(7)个数据字,由W8-W14标出,其中W14的后八(8)个数据位不容纳将在打印作业的最后打印操作中使用的任何象素二进制数据。其它各片也包含有相同类型格式的七个数据字。分割行105代表一个八英寸宽的图表(水平方向分辨率为300dpi),并且因此包括有2400个片。如由图2可以看出的,片2400包含七个数据字,由W16794-W16800表示。如前面所述,每个数据字包括16比特,表示打印头上16个垂直方向的喷嘴位置,并且最后一个字W16800只使用其前八位信息(即,用于控制最后八(8)个喷嘴)来帮助产生该分割行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的打印数据的一个分割行。在上述例子中当采用分辨率为300dpi的具有104个喷嘴组成的阵列的打印头时,分割行140大约为1/3英寸宽(或高)。如图3所示,分割行140在横跨整个页120的范围内只需要在两(2)个片位打印,即,在片位142和片位144。左侧片142在圆圈150处的细节参见图4中的放大示图。在图4中可以看到连线部分132表示垂直横跨页120的打印象素的单一一片宽度的连线。连接部分142表示包含在片140内的象素的片,并且这一连线部分142是连线部分132的子集。通过理解这个例子,我们可以知道该片的104个象素不是单独描绘到图4上的在许多传统喷墨打印机中整个分割行140将不被光栅图象处理成8.5英寸宽的片来形成图3中的图象。而是确定最左侧片(即,片142)和最右侧片(即,片144),并且忽略掉分割行140中最左侧片142以左的页面上的所有区域,和分割行142中最右侧片144以右的页面上的所有区域。然而,在传统打印机中,位于最左侧片142和最右侧片144之间的所有片都被传输给打印工具,以打印该分割行140的两垂直线部分142和144。换而言之,需要相当于八(8)英寸的片,在分辨率为300dpi的例子中为2400片,用来打印仅为两(2)片的打印图象。而在Nagata的专利(U.S.5,237,645)中虽然先忽略“空块”,但在数据传送给打印工具之前,这些空块仍是占满的。Nagata的方法在图3和图4的例子中可以节省相当数量的存储空间,然而,这种节省不能转换到打印工具自身的操作中。
在本发明中,如下面将要更详细地说明的那样,不仅将打印页在分割行140左侧片142以左和右侧片144以右的部分忽略,而且将分割行140在片142和144之间、由标号146标出的尺寸为“B”的整个部分都忽略掉,并且无论在存储器存储或打印头操作中都予以忽略。在理想的情况下,为了打印分割行140,只需将打印头72置于片142的上方然后在该处喷射一行黑点于打印页120上形成所需的竖列象素,然后移到最右侧片144的位置并类似地打印另一组黑点以显示出这些象素即可。但是,现实当中,通常的打印头并不具备完美无缺的竖直喷嘴阵列,这些喷嘴的排列模式总是有一定的偏移,从而它们被以对角线的方式排列。因此,为了在片142上打印一个真正理想竖直的象素行,打印头72实际上需要移动一个较短的水平距离使得每一个偏离排列模式的喷嘴有机会越过片142处在纸张上相应的水平位置。为此,必须在片142的左、右两侧加上“填充”以使得打印头72的运动能够在其整个必需的水平位置被加以控制,以便使每个喷嘴都能在沿片142的恰当的垂直位置上进行打印。
利用现在的技术,一般倾向于这一填充具有一个20片的最小规模,它们用片142以左的那些片152及142以右的那些片154表示。如图4所示,最左边的填充片由标号156表示,最右边的填充片由标号158表示。当然,可以理解,没有任何打印后的象素落入到填充片152或154内,定义这些片只是为了使一个高分辨率的喷嘴阵列能够成功地打印所有必须的点以便形成打印片142,同时打印头只进行一个很小的水平移动使得每一个必要的喷嘴在其向页面120上喷墨时到达正确的位置。
利用图5A,5B和5C中所描述的精简方法,可以看出,图3的例子将提供一个极高的数据精简比,它将分割行140中的片数从2400个缩减到只有两(2)个。当然,这个比值略去了具有并非理想化竖直的喷嘴阵列(对这类打印头这是很通常的)的打印头通常所必需的填充片。即使加上所需的填充片152和154,本发明仍然达到相当高的精简比,从2400片精简到只有40片,其精简比为60比1(60∶1)。这是基于在该分割行的总片数2400除以在左线段132和右线段136处的两个填充组的总片数40(每一个线段为20片)得出的。当然,这是一个极端的例子,但它对帮助理解本发明的有益效果是很有用处的。
在图5A,5B和5C中,说明了本发明的更为详细的有益之处。在讨论用本发明的方法处理数据时,为了方便起见,在这些例子中均略去了需要填充这一概念。在图5A上画出了一个矩形用以表示一个原始位图格式的数据分割行200。在这个例子中,分割行200的竖直宽度(高度)只有十(10)个象素。最左边的片由标号202表示,最右边的片由标号204表示。由左及右,要被打印的原始位图由标号206标出,并且该位图与其它准备被打印的类似位图组(即,那些将包含非空片的区域)一样,被称为“区域”。从左至右,在区域206之后的第一片的待打印象素是空的,接下来的连续数片也是空的,并且它们形成一个足够大的连续空片组,被定义为一个“空白区”,由标号208标出。不是每一个连续空片组都被看作一个“空白区”,只有超过了空片预定阈值的足够大的连续空片区域才被定为“空白区”。在图5A的例子中,阈值选择为十(10),由于空白区208包含有十七(17)个连续空片,因此当然超过了阈值十。
在通过整个空白区208之后,遇到了由标号210标出的第二个待打印的位图组。在打印了分割行200内的这些象素之后,遇到了由标号212标出的另一个连续空片组。由于在“组”212中的连续空片的数目小于阈值十(10),所以组212不被看作一个空白区。在通过组212之后,遇到由标号214标出的另一个包含待打印象素的打印数据系列。这一“区域”位于两(2)个空白区208和216之间,并且该区域包括打印组210,空组212和打印组214。
沿分割行200继续向右,遇到了包含有连续空片数目超过阈值十(10)的空白区216。在通过空白区216之后,遇到由标号218标出的另一组含有待打印象素的打印数据。如图5A所示,打印组218包含最右侧片204,因此,系统结束对该分割行200的监测。
采用本发明的原理,包含在分割行200中的原始位图数据被精简成主要包含具有待打印象素的片的信息分割行。这是通过删除分割行200中的空白区来实现的。精简的结果是形成图5B所示的分割行220,其中打印组206直接与打印组210的片邻接。容易看出,分割行200中包含在空白区208内的空数据,在分割行220中已经被删去,因此,打印数据组206最右侧片与打印数据组210的最左侧片相邻(在存储器中)。可以明白,分割行200或分割行220中的各数据片在本例中包括十(10)个数据位或象素,该数据位或象素可由包含16比特的单个数据字表示。在采用包含104个象素的片的实际应用当中,需要七(7)个数据字来存储相当数量的位,用以表示这一数目的象素。
不管片的大小(即,在一个特定片中象素或位的数目),通过记住它们的起始存储地址,可以在存储器中移动用于单独各片的数据,这在计算机程序中通常用一个“片指针”来实现。我们还知道,通过使用计算机程序中适当的指令,并根据垂直片的大小,计算机程序可以增加或减少单个片的指针,增加一(1)片指针可实际增加大于一(1)个的数据字。例如,在图2中,如果片指针指在片2的第一位上,则在到达适当的存储地址之前该片指针必须增加七(7)个字,以便指出片3。
因为不足以被看作一个空白区,所以空组212仍然保留在分割行220中。因此,打印数据组210的最右侧片与打印组214的最左侧片不邻接。然而,在分割行220中,打印组214的最右侧片与打印组218的最左侧片邻接,从而在该分割行中没有连续空片浪费的空间。
根据本发明,打印组218的最右侧片是要求定义整个原始分割行200的存储器的最后部分。从而节省由标号222表示的相当大的存储空间,它可用来存储这一打印作业的其它分割行的打印数据组。当然,应该明白,不能仅仅将在原始分割行200中存在空白区208和216的事实忽略掉。最好将开始在分割行200中找到的每个区域开始和结尾处的片的地址存储到一个单独的存储表中,并且该信息用于在适当的时候传达开始打印和停止打印的指令。根据精简位图数据的方法是否在主机中完成还是在打印机中完成,精简的位图数据和存储开始打印和停止打印指令的片地址关联表将存储在主PC机的RAM中,例如主机10的RAM 16中,或打印机的RAM中,例如打印机30的RAM 36。涉及这两种选择的方法论将在后面结合图8和9作详细的讨论。
精简后的位图数据显然可以装入存储器中比未精简时的原始位图数据小得多的空间中,因此,实际超过一“页”的位图数据可以存储进原本用于仅存储一页数据的图象存储表中,当然,这一精简数据随后必须在打印之前“解精简”,从而使分割行230如图5C所示。当打印机准备好打印如分割行200的在图5A中初始表示的分割行时,它首先找到最左片202的水平位置。当打印头指向位置202后,该打印机现在做两(2)件事首先在图5C中标号232的位置开始打印机发出一“开始打印”命令。通过这样做,它可以启动(或“打开”)ASIC 38的引发逻辑,并且可以从存储器中读取位图数据以获得区域206的打印数据组。此时,RAM 36将存储打印数据组206,而不考虑在主PC机或打印机本身中是否进行过数据精简过程。当打印头72被指向开始打印位置232时,它开始在最左侧片202打印象素。依据区域206的位图数据打印适当的象素,并且在该组的结尾处,一个停止打印指令在标号234标出的位置通知给ASIC 38。
一旦打印头72已到达标号234处的停止打印命令位置,则ASIC 38的引发逻辑被关闭(即,截止),而打印头72移过空白区208。通过采用编码电路50,打印机30知道打印头72必须在到达打印数据组210的最左侧片处的下一区域时,重新开始打印。因此,将打印应该开始的理想点(即,片的地址)与打印头的实际位置进行比较,以确定何时重新启动ASIC 38的引发逻辑。这些逻辑程序将在后面结合图7A和7B中的流程图作更详细的说明。
当编码电路50指示打印头72已经到达打印数据组210的最左侧片时,在标号236处给出另一个开始打印指令,该指令再次启动ASIC 38的引发逻辑。如图5C所示,ASIC 38保持启动状态,直至到达标号238处的下一停止打印指令为止。在打印头72从开始打印指令位置236到停止打印指令位置238的水平移动过程中,打印头将打印出打印数据组210的象素,在空组212处的接下来的四片中不打印象素,然后再打印出打印数据组214的象素。
这个例子给出了本发明中术语“区域”的定义的清楚的表述;两个打印数据组210和214尽管被超过一个的连续空片隔开,但它们都是同一区域的一部分。当然,这是因为(原始空组212的)连续空片的数目小于阈值十(10)片所造成的。因此,当打印头72经过该区域时,ASIC38不仅为打印数据组210和214内的所有象素提供“打印数据”,还为这两个打印组之间的空组212的空片提供象素。当然空片不会被实际打印到打印介质上,但就打印头72而言,从控制打印头72运动的数据传送操作和从ASIC 38送出的指令的角度来说,这些空片确实被“打印”了。
打印头72通过了停止打印指令位置238之后,ASIC 38再次关闭以通过下一个空白区216。编码电路50再次记住打印头的实际位置,并且当其位置到达区域218的最左侧片时,在位置240发出开始打印指令。ASIC 38的引发逻辑再次打开,并向打印头72传递打印数据,根据区域218的位图打印数据打印出象素的图形。在区域218的最右侧片处,标号242给出一个停止打印指令,并且ASIC 38的引发逻辑再次关闭。打印数据组218的最右侧片也是分割行230的最右侧片,在该分割行上不再有打印的象素。因此,打印头72能够指向该页上下一待打印的分割行。
图6给出了何种空白空间可以标为用于根据本发明来节省图象存储空间的“空白区”的真实的例子。图6给出了一份美国专利的扉页的局部复印件,它被划分成高度约为1/3英寸的分割行。假设水平和垂直方向的分辨率均为300dpi,并且假定阈值为100,则空白区的最小可能尺寸的水平距离为1/3英寸。可以注意到这样的事实,这种参数下的最小可能空白区大约为正方形,1/3英寸乘1/3英寸。标号256标出了这样的正方形,并用斜阴影线示出,以便更清楚的看出这一区域。图6上的其它空白区也用斜阴影示出,包括从该页顶部数第三分割行的空白区250和252在内。
如果显著地减小阈值,则可出现如标号254处含有交叉网格的矩形所示的其它空白区域。从图6很容易看出,矩形254小于含有阈值为100的足够多的片的所需宽度的一半,因此,在该分辨率下,除非阈值减小到小于50,否则不能将其看作空白区。
在标号258处有一个位置没有被定义为空白区,标号258指向靠近图6页面中间处的数字“22”。如图所示,数字22的右边是包括标号258在内的分割行262的大量空片。然而,在分割行262中,此位置以右没有需要打印的象素,因此,该分割行的最右侧片位于数字22在分割行262上的右边缘处。这正好与含有空白区260在内的相邻分割行相反,在相近分割行中空白区260之后是开始短语“22Claims,28DrawingShcets”的最左侧片。
对于以单速沿托架指示它们打印头位置的打印机,本发明的主要优点是通过存储精简的位图数据代替存储未精简的位图数据来节省打印机图象存储器中的空间。更进一步,如果精简过程在主机中进行(而不是在打印机中),则可获得如下额外的节约(1)通过以代原始未精简的位图数据,来存储精简位图数据,在主机中用于存储光栅图象处理过的位数数据的存储空间将能够存储多页的信息;(2)当这一位图数据通过通信线路例如图1的通信线路24中的直接电缆连接,或经过区域网(LAN)传输给打印机时,则将由于同样的原因,例如由于存储精简位图数据比存储未精简的位数数据所需存储器存储空间减少的原因,而使传输这些数据所需的通信时间间隔减少;(3)打印机自身的存储系统将可以在打印机中从输入缓冲存储器46开始,到RAM36(它含有图象存储表),最后到经数据总线76传输给打印工具60的数据量的所有地址中都能存储更多的精简位图数据。
如果所使用的打印机还具有以两(2)种不同的速度操纵其托架电机驱动器的能力,则利用本发明的原理还可达到进一步的节省。在图5C中提供的例子中,分割行230将要求打印头以其正常的打印速度通过区域206,然而,一旦ASIC 38于234处接收到停止打印命令,打印头托架可以较高的速度被驱动以通过空白区208,因为这里不需要真正进行打印。当打印头接近下一个开始打印命令(在236处)处,当其通过包括打印数据组210,空组212及打印数据组214的区域时,打印托架驱动电机的速度则当然降低到其正常“打印”速度。如上所述,打印头72必须逐字地“打印”全部数据,包括空组212,因为打印头从该空区212接收到了位图打印数据,尽管没有象素真正地要被打印(鉴于该空区212含有全部零这一事实)。
如果阈值被规定为对于连续空片的值为一(1)的话,则每一个空片将被认为是一个“空白区”,那么就永远不会有图5C中像空组212那样的“非空白”的空片组。但是,这是不现实的,因为,对于每一个这种空片,存储开始打印命令和停止打印命令位置所需要的处理时间要大于打印机将该空片作为正常打印数据进行处理时所需的时间。更糟的是,由于开—和关—响应时间的关系,打印头在实际上不可能于关闭后以通过一个单个的空片然后再足够快地开通为再次打印下一个非空片做好准备。
基于这些考虑,将会看出,确定最小空白区域的大小(以连续空片数计)的合适的阈值,对于用本发明的方法所制造的每个打印机来说很可能是不同的。主要需要考虑的问题是(1)微处理器32和ASIC 38的处理速度能力,(2)打印头72的接通和切断及与之相关的ASIC 38引发逻辑的开—响应时间和关—响应时间,(3)控制打印头72运动的托架电机驱动器的速度。在图6中,对于较大的区域,例如大于区域256的区域,例子中的阈值等于100个连续空片。但是在图6中也表明,可以把其它区域,例如区域254列为空白区,这就必须降低打印头托架的速度或者必须降低打印头接通和切断的响应时间,以便可以将这种较少数量的连续空片作为空白区。
此外,可以看出,对于不管是进行打印还是通过空白区时沿着托架以单一速度运动的打印头来说,一个给定的足够良好运作的阈值,在打印头沿其托架通过空白区时以较高的速度运动的情况下,上述阈值就会显得不够大。在后面这种情况下,考虑到以下事实,就需要将阈值加大,即,打印头高速通过空白区时需要更多的时间(这表示需要有更多数量的连续空片)以便当打印头横越空白区时对打印头的运动进行加速或减速。当然,也可以作为一种变型设计一种打印机,当保持打印头以较低速度通过打印区和空白区时,有一个较低的阈值,例如100,但当超过某一特定空白区时,则具有大于第一个阈值的第二阈值(例如300),从而使打印头以更高的速度(当不打印时)横过该空白区。
图7A和7B是一个流程图,它描述了根据本发明的原理完成数据精简方法所需的详细逻辑操作。该流程图概括地给出了一个子程序或功能调用,它将被用作为计算机程序建立起源代码的一个“模块”,且如上所述,该精简过程可在一个主机(如主机10)中进行,也可在打印机本身(如打印机30)内进行。
从一个“起始”功能块300开始,某些变量被转到该子程序或功能调用中,它们包括PRINTSTART位置,SWATHLENTH,及THRESHOLD的数值。应当注意的是,这个流程图表示的是精简一个单一分割行所需要的操作,而对待打印的整个页的每一分割行均要执行这一过程。
如上所述,传统的打印机具有找出每个分割行的最左侧片和最右侧片的能力。考虑到这一点,假设在该特定分割行打印头托架由左及右运动,则原始PRINTSTART位置与该分割行的最左侧片一致。在所述的这个实施例中,该第一打印开始位置被指定属于第一“区域”,应该记得,这一“区域”早些时候被确定为该分割行中含有非空打印数据的部分。这一流程图用一个数字来代表各区域,该数字由变量“n”来确定。“n”值最初在功能块302中被设为零(0)。
在功能块304处,“n”值被增加,并且将三个变量设为零。这三个变量被命名为AREA[n]START,AREA[n]STOP,和AREA[n]LENGTH。这一操作预置了该分割行上第一区域的最左侧片处这三个变量的初值。
在判断块306处,确定“n”值是否大于或等于变量SWATHLENGTH除以变量THRESHOLD的结果。SWATHLENGTH和THRESHOLD的值已于早些时候,作为借助控制打印机30的操作的计算机程序的另一部分已将其传送给这一子程序的传递变量参数,由步骤300给出。赋给SWATHLENGTH的值与从最左片到最右片打印该整个分割行所需的片数相等。赋给THRESHOLD的值与可被看作空白区的连续空片的最小数量相等。用SWATHLENGTH除以THRESHOLD,可以确定这一特定的分割行中区域的最大数目,这也是变量“n”的最大值。
一旦知道了该分割行可能区域的最大数量,则在存储器中产生一组阵列,用以暂时存储该分割行的精简数据。作为一种选择,如果“n”值等于一(1),则此时实际上可以退出该子程序,这是因为这样的一个分割行不需要执行数据精简(即,无空白区)。这些阵列由判断块306的操作产生,因为当该问题的答案为NO时,逻辑流程返回功能块304,功能块304在每次发生这种循环时产生三个新变量。换而言之,在该流程图中第一次遇到功能块304时,它产生三(3)个变量,称为AREA[1]START,AREA[1]STOP,和AREA[1]LENGTH。在逻辑流程访问过一次功能块304之后,判断块306可以通过它的NO输出将逻辑流程送回到功能块304,这时功能块304将定义三个新变量AREA[2]START,AREA[2]STOP,和AREA[2]LENGTH。这一过程一直继续到“n”值大于或等于判断块306中的除式结果为止。
这时,逻辑流程转到判断块306的YES输出,并且到达功能块308。在功能块308,变量n被设为零(0),一个称为TEMPSTOP的新变量被设为零(0),一个称为SLICEPOINTER的新变量设为与(PRINTSTART-1)的值相等。变量SLICEPOINTER表示存储器中指向组成单一一片的每组字“顶”字起始位的位置。随着变量SLICEPOINTER数值的增加或减小,在存储器中等价于该增量或减量的位置将被实际移动构成一个单片的字数。例如如果打印头包含一个104个喷嘴的阵列,则每一片将含有每个字为十六(16)比特的七(7)个字。因此,变量SLICEPOINTER的值每增加七(7)个字(它一般等价于十四(14)个字节),变量SLICEPOINTER被计算机程序增加一个增量。在功能块308处,将变量SLICEPOINTER设置为等于该分割行中紧邻最左侧片的左边那一片的位置,最左侧片由变量PRINTSTART的值表示。
功能块308还引入另一个新变量SWATHEND,设其与(PRINTSTART+SWATHLENTH) 的值相等。因为变量PRINTSTART的值等于最左侧片的片位置,变量SWATHLENTH的值等于该分割行的片数,所以这一方程的结果(即,变量SWATHEND的值)为计算机提供了这一分割行最右侧片的片位。这一信息晚些时候在被这一流程图定义的过程中将是有用的。可以看出,在功能块308中的大部分操作可以在这一流程图中较早的时候进行而不会影响整个逻辑。
现在逻辑流程到达功能块310,在这里变量SLICEPOINTER被增加。在这一流程图的整个剩下的部分,变量SLICEPOINTER的值表示正在被分析的页面上的位置(即,具体地说,在该分割行内片的位置)。下一步,判断块312确定变量SLICEPOINTER的值是否大于或等于变量SWATHEND的值。如果答案是YES,则逻辑流程指向“结束”功能块314,它表明系统现已结束对这一打印数据分割行的分析,该流程图产生的“控制信息”被传送到打印工具70。如下面将更为详细描述的,将要被传送到打印工具的数据的类型包括这一分割行的每一区的开始位置和长度信息。这些信息将为如下格式(1)对于区域#1,为变量AREA[1]START,AREA[1]LENGTH;(2)对于区域#2,为变量AREA[2]START,AREA[2]LENGTH;(3)依此类推,直到系统定义了该分割行的每一个区域的这些起始位置和长度值为止。可以看出,这些变量送到打印工具的区域最小数目将为一(1)。如果参考判断块306作出的上述这一选择用于只有单一区域的分割行时,则该选择将使逻辑流程直接从判断块306转向“结束”功能块314,这时只有区域#1的开始和长度信息将被传送给该打印工具。
如果判断块312的分析产生的答案为NO,则逻辑流程到达判断块316,该判断块确定当前位置(由变量SLICEPOINTER的当前值指出)的片的位图信息是否包含任何待打印的数据。当判断块316检测该片时,它扫描该片的所有七(7)个字,以确定该片中是否有任何一个打印数据位的逻辑值为1。如果有,则该判断块的答案将为YES,否则答案将为NO。如果答案为NO,则逻辑流程返回到功能块310,这时变量SLICEPOINTER被增加。当然,逻辑流程则继续在判断块312中确定SLICEPOINTER是否达到变量SWATHEND的值。
当判断块316的答案为YES时,逻辑流程转到转移块318,它由字母“A”标出,使逻辑流程转到图7B中。在图7B中,逻辑流程从字母“A”到功能块320使“n”值增加。这时,变量AREA[n]START设为与变量SLICEPOINTER的当前值相等。第一次通过这一流程图时,AREA[n]START的值将等于PRINTSTART的值,由于这是针对区域#1的,所以使得具有这一值的实际变量被设为名为AREA[1]START的变量。此后,功能块322增加变量SLICEPOINTER的值。
现在,逻辑流程到达判断块324,判断块324确定SLICEPOINTER位置处的片是否含有任何待打印的数据(即,该片的任何数据字是否含有至少一个逻辑值为1的位)。如果答案是YES,则逻辑流程返回功能块322,变量SLICEPOINTER被增加。这一过程持续到最终到达一个在当前SLICEPOINTER位置处的片不含有任何待打印数据(即,该片的所有字被设为逻辑0)时为止。这时,NO输出使逻辑流程转向功能块326。
在功能块326处,变量TEMPSTOP被设为与变量SLICEPOINTER的当前值相等。进而,一个名为SPACECOUNT的新变量被赋予零(0)值。变量TEMPSTOP表示一个暂停点,它可以是当前区域的结束。在这一点上实际需做的是检查下一个连续空片组是否超过阈值。因此,变量SPACECOUNT最初被赋予零(0)值,并且每次系统遇到新的连续空片时该变量将被增加。如果SPACECOUNT的值最终超过阈值,则系统确定这里有足够的连续空片可被作为一个空白区。
现在,逻辑流程到达功能块328,该功能块增加变量SLICEPOINTER的值。接下来,判断块330对下一片(SLICEPOINTER的当前位置)进行分析,以确定该片是否包含任何待打印的数据(即,该片的任何字是否包含一个具有逻辑值1的位)。如果答案立即为YES,则显然说明此处只有单一一片空数据,并且变量SPACECOUNT的值将不会增加到超出阈值。在这种情况下,逻辑流程直接返回功能块322,该功能块在增加变量SLICEPOINTER的值之后分析下一片是否含有任何待打印数据。
如果判断块330发现当前片没有要打印的数据,则逻辑流程向功能块332输出NO,功能块332使变量SPACECOUNT增加。此后,判断块334确定变量SPACECOUNT的值是否大于或等于THRESHOLD。如果答案是NO,则逻辑流程直接返回使SLICEPOINTER变量增加的的功能块328,然后分析下一片是否含有任何待打印的数据。如果对于一个相当数量的空片,在判断块330中的答案继续为NO,则变量SPACECOUNT最终将等于或超过判断块334处的阈值。此时,逻辑流程将直接向功能块336输出YES。
在功能块336处,变量AREA[n]STOP被设为与变量TEMPSTOP的值相等。举例来说,如果逻辑流程目前在第二区域,则写入TEMPSTOP值的实际变量的变量名为AREA[2]STOP。
一旦AREA[n]STOP变量值由功能块336设定,则可清楚地知道,现在存在一个有效的完整区域。
功能块336还将变量AREA[n]LENGTH设为与(AREA[n]STOP-AREA[n]START)的值相等。在优选的实施例中,它对于使ASIC 38知道打印开始位置和每一特定区域待打印片数是很重要的。现在系统已经获得区域开始点和结束点的片的位置,一个简单的减法将给出该区域的在片中的长度,这一长度由AREA[n]LENGTH变量来表示。
达到一个区域的结尾时需要确定在位图打印数据的这一特定分割行中是否有更多的区域。此外,逻辑流程指向“下一区域”块338,如虚线箭头340处所指,逻辑流程从此处返回图7A。在图7A中,功能块338“下一区域”将逻辑流程指向使SLICEPOINTER变量增加的功能块310。在流程图的这一点上,“n”值现在等于一个非零值,变量TEMPSTOP的值直到逻辑流程到达功能块326为止可以被忽略,并且SLICEPOINTER的值将在判断块312中进行分析,判断是否到达分割行的结尾。如果判断块312处的答案是YES,则已经到达分割行的结尾,并且逻辑流程将指向功能块314,在这里将获得与每个区域有关的所有必需的变量(即,关于区域开始片位置和以每一区域的片数来计算的区域长度的信息),以便传输给打印机的内存管理软件。这一内存管理软件被设计成可自动得知在何处将这些区域输入打印缓冲存储器,以便该打印缓冲存储器存储如图5B中分割行220所示的精简过的位图数据。
在图8中是用图解法表示的打印系统,它具有一个主机350和一个打印机360。主机350包含有与图1所示的主机10相同的硬件。打印机360包含有与图1所示的打印机30相同的硬件。图8主要表示了各个元件执行本发明的方法所需的步骤。主机350在标号352处由高级语言(HLL)打印数据文件开始。这一高级语言文件被光栅图象处理然后旋转,以便在软件功能块354处产生垂直片。在这一状态下,由软件功能块354产生的位图将是一个充满的未经精简的位图,与图5A所示的相似。为了执行本发明,需要一个精简该位图数据的事后处理步骤,如软件功能块356所示。在这一阶段,最终的位图数据被沿着图5B所示的外形线精简。
然后这个被精简的位图数据通过通信线路358传送到打印机360的打印工具362。如前所述,当打印工具接收到精简的位图数据时,其ASIC间歇式地启动和停止打印头。除了实际的位图打印数据外,通过通信线路358传送的数据部分还必须包括各个区域的开始位置和每个区域的长度值,从而对于每个待打印分割行,可以正确地指令打印工具。如前所述,图8的配置是本发明的优选实施例,并利用了如PC这样的主机通常所具有的与绝大多数打印中的ASIC和微处理机的处理能力相比更大的处理能力。当然,为使这一系统工作,必须在主机350上安装一打印驱动软件模块。在大多数喷墨打印机的情况下,传送待打印的分割行的数据所需的时间比打印头向纸张或其它介质上实际打印每一分割行所需的时间短。因此,虽然对于同一待打印文件来说,当由主机向打印机传递位图信息时与高级语言信息相比这里必须传送更多的信息,但这并不会使按照优选实施例的图8中所示的系统的总处理能力降低。
图9给出了一个描述具有主机400和打印机410的打印系统的示意图,其中,在打印机自身内实行本发明的方法。在本实施例的主机400内一个字处理器程序402生成一个新的文件,该文件接着生成高级语言打印数据文件404。该高级语言文件通过通信线路406被传送到打印机410。
高级语言数据文件被打印机中的功能块412接收,然后,该文件必须经过光栅图象处理并旋转,在功能块414生成一个合适的位图。打印机按照图7A和图7B的流程图中描述的方法在功能块416中逐分割行地精简该位图数据。这个被精简过的位图数据现准备好被传送到打印工具,它里面不包含大量的连续零片(它们现被列为空白区),与图5B中的分割行数据220相似。该数据经由功能块418传送到打印工具420,最后被打印机410打印。
图9中所述的实施例的优点在于以高级语言格式通过打印机电缆406(或者LAN 406,如果采用网络将数据由主机传送到打印机时)传送的数据量将需要传输较少的数据字节数来表示后来将被打印的全部数据文件。如果打印机具有一个功能足够强的微处理器和ASIC系统,它就可以成功地进行光栅图象处理(RIP),旋转位图对每一分割行生成竖直片,然后逐分割行地精简位图数据,而不会降低打印机的总处理能力。
在图8和图9中所描述的系统均采用了本发明的基本方案,即,打印工具不必逐个地“打印”所有那些构成由本发明所定义的空白区的连续空片。而是代之以在每个实施例中,只要求打印工具打印含有真正要向打印介质(例如纸张)上打印数据的区域,然后当通过空白区时打印工具可被关闭,直至到达该打印页的每一分割行中下一个待打印的区域为止。特别是在托架驱动电机能以较高的速度通过非打印区的系统中,其特殊优点就在于生成根本就无须打印的这种空白区,这将增大由打印机360或打印机410进行的被打印页的吞吐量。
在打印机设计中的另一个优点在图8的配置中表示出来,利用这种配置,打印机360的存储系统内的图象存储表可以用精简的格式容纳更多的数据,从而通过更有效地利用这一存储能力来达到更高的总处理能力。看来似乎在未来实际设计的打印机中,其图象存储器将至少总是含有足够的存储器能力用以存储单一页的全部未精简位图,而当利用本发明所具有的优点来处理实际的打印作业时,对于所有的实际应用来说,这种存储器能力都似乎是多余的。特别是在进行生成主要含有文字的字处理文本文件时,以及在用于打印图表或线状图形的图形数据软件的情况下,尤其如此。本发明的精简方法唯一可能会显示不出明显优点的时候,是在实际上每一个象素都具有一个不为零(0)的灰度等级值的图象信息的情况下。在这些情况下本发明可能没有用处,因为这时,即使有的话,也只有极少的其中所包含的字的每一个字的所有比特仅具有逻辑零0值的“空片”。但即使在这种情况下,也有可能加以改进而利用本发明,这可通过选择一个最小的灰度等级值把它实际上作为零(0)值来对待,然后可以有足够多的连续空片被看作是一个空白区(从而可以利用本发明)。
为了解释和说明,对本发明的一个优选实施例进行了上面的描述。但并不是试图拘泥于或将本发明局限于所公开的这种确切形式。显然借助上面的阐述可以进行各种显而易见的改型或变型。选择并描述该实施例是为了最好地说明本发明的原理及其实际应用从而使得在本领域具有一般熟练程度的人可以在各种实施例及各种适于特定用途改型中最好地利用本发明。对本发明的范围将在所附的权利要求中加以详细说明。
权利要求
1.一种精简待打印数据的方法,包括以下步骤(a)将原始打印数据分成打印信息的许多分割行,每一个所述分割行包含有许多片,每一个所述片的特征在于或为一个空片或为一个数据片;(b)规定一个对应于一最小连续空片数的预定阈值;(c)在所述许多分割行内的第一分割行中标识出具有超过所述阈值的实际空片数的第一空白区,其中,所述第一空白区被限定在第一个区和第二区之间,其中所述的第一和第二区的每一个中至少包含一个数据片;及(d)生成表示所述第一分割行的精简数据,它包括对应于所述第一区和第二区的边界信息和打印数据,并舍弃对应于所述第一空白区的数据。
2.如权利要求1所述的方法,进一步包括以下步骤(e)由表示所述第一分割行的所述精简数据生成未精简的数据,所述未精简数据被加以调整,使得未精简的第一和第二区至少包含一个待打印的数据片,未精简的边界信息包含在所述待打印的第一分割行内定义区域的开始和停止位置,和一个不包含打印数据的未精简的第一空白区;以及(f)利用所述未精简数据打印所述第一分割行,从而根据原始打印数据对第一分割行生成一个具有相同形状的文件。
3.如权利要求1所述的方法,进一步包括完成光栅图象处理操作步骤以便将一个高级语言原始数据集转换成位图格式,从而生成所述的原始打印数据。
4.如权利要求1所述的方法,其特征在于,所述区域边界信息包括一个开始打印位置和一个长度值。
5.如权利要求1所述的方法,其特征在于,所述区域边界信息包括一个开始打印位置和一个停止打印位置。
6.如权利要求1所述的方法,其特征在于,所述精简数据包括许多分割行,且至少所述分割行之一包括许多区域并且至少有一个空白区界于它们之间;同时其特征在于,所述许多区域中的每一个至少包括下述内容之一(i)含有至少一个非空片的位图打印数据,该非空片具有将由打印介质上的打印点表示的象素,(ii)含有数目小于所述阈值的连续空片的位图打印数据,因此它不是一个空白区,以及(iii)填充片。
7.如权利要求1所述的方法,其特征在于,所述原始打印数据包括图形数据,它不是字形字符信息。
8.一个具有主机,打印机和在它们之间的通信线路的打印系统,所述打印系统包括(a)一个具有第一处理电路,第一存储器电路,第一通信端口的主机,其中,所述第一处理电路借助下述方法精简存储在所述第一存储器电路中的位图打印数据的第一数据组(i)将所述第一数据组分成许多分割行,每个分割行含有许多片,(ii)检测每一个所述许多分割行,以确定是否存在一些与预定阈值至少一样大的连续空片,并且,如果有则,(iii)将当前分割行分成许多包含至少一个待打印象素的区域,其中每个所述区域与其它所述区域由一个空白区分开,每个所述空白区包括的连续空片至少与所述阈值一样大,(iv)为当前分割行中每个所述区域产生区域边界信息,以及(v)产生一组包含有与所述各分割行的所述各个区域相联系的打印数据的第二数据组,设置所述第二数据组,以便使得具有至少两个含有打印数据的区域和一个位于其间的空白区的每个所述分割行还包括用于每个所述区域的区域边界信息,但在区域之间的所述空白区没有任何打印数据,所述第一处理线路还用于向所述第一通信端口传输所述第二数据组;(b)一条通信线路,该通信线路有效地连接到所述第一通信端口并由所述第一通信端口接收数据;以及(c)一个具有第二处理电路,一个第二存储电路,一个第二通信端口,和一个打印工具的打印机,所述第二通信端口有效地连接到所述通信线路上,并从所述通信线路接收数据,其中所述第二处理电路被配置来通过以下步骤打印所述第二数据组表示的图象(i)在所述第二存储电路中暂时存储所述第二数据组,(ii)检测所述第二数据组,以确定具有至少二个含有打印数据的区域和位于其间的空白区的所述分割行,(iii)一分割行接一分割行地向所述打印工具传送打印数据和各所述区域的区域边界的信息,但区域之间的空白区无任何打印信息,以及所述打印工具包括一个其上配置有所述第二处理电路的打印头,对于所述每一分割行,它(i)在包含于当前分割行内的所述第一区域的开始处启动,并根据从所述第二数据组得来的所述第一区域的打印数据对各片进行打印,(ii)在所述第一区域的结尾关闭,(iii)移向当前分割行中所述区域的每一下一区域,包括当前分割行中所述区域的最后一个在内,(iv)在所述下一区域的开始处启动,并根据从所述第二数据组得来的所述下一区域的打印数据对各片进行打印,(v)在所述下一区域的结尾处关闭;从而打印出整个页面,打印出的页面具有与位图打印数据的所述第一数据组相同的图形。
9.如权利要求8所述的打印系统,其特征在于,所述打印工具包括一个打印机托架/打印头组件,并且其中所述打印机托架/打印头组件当通过所述各区域时以第一速度移动,而当通过区域之间的空白区时以较大的第二速度移动。
10.如权利要求9所述的打印系统,其特征在于,为了启动所述打印头,所述第二处理电路的专用集成电路(ASIC)含有这样的逻辑它用于接收打印开始位置,利用直接存储器存取(DMA)从所述第二存储电路读取打印数据,比较所述打印开始位置和打印机托架当前位置,一旦比较结果为真,则使所述打印头根据打印数据进行打印;并且当所述打印头关闭时,所述ASIC逻辑不工作。
11.如权利要求8所述的打印系统,其特征在于所述第二数据组包括许多分割行,至少所述分割行之一包括许多区域并且至少有一个空白区界于它们之间;同时其中,所述许多区域中的每一个至少包括下述内容之一(i)含有至少一个非空片的位图打印数据,该非空片具有将由打印介质上的打印点表示的象素,(ii)含有连续空片的数目小于所述阈值的位图打印数据,因此它不是一个空白区,以及(iii)填充片。
12.一种计算/处理系统,包括一个处理电路和一个存储电路,其特征在于,所述处理电路借助下述方法精简存储在所述存储器电路中的位图打印数据的第一数据组(a)将所述第一数据组分成许多分割行,每个分割行含有许多片;(b)检测每一个所述许多分割行,以确定是否存在其数目与预定阈值一样大的连续空片,并且,如果有则;(c)将当前分割行分成许多每个至少包含一个待打印象素的区域,其中每个所述区域与其它区域由一个空白区分开,每个所述空白区包括的连续空片至少与所述阈值一样大;(d)为当前分割行中每个所述区域产生区域边界信息;以及(e)产生一组包含有与各分割行的各个所述区域相联系的打印数据的第二数据组,设置所述第二数据组,以便使得具有至少两个含有打印数据的区域和一个位于其间的空白区的所述每个分割行还包括用于每个所述区域的区域边界信息,但在区域之间的所述空白区没有任何打印数据;其中所述第二数据组,当在打印机上打印时,产生一份与位图打印数据的第一数据表示的图象相同的文件。
13.如权利要求12所述的计算/处理系统,其特征在于,所述第二数据组包括许多分割行,至少所述分割行之一包括许多区域并且至少有一个空白区界于它们之间;同时其中所述许多区域中的每一个至少包括下述内容之一(i)含有至少一个非空片的位图打印数据,该非空片具有将由打印介质上的打印点表示的象素,(ii)含有连续空片的数目小于所述阈值的位图打印数据,因此它不是一个空白区,以及(iii)填充片。
14.一种具有一个处理电路和一个存储电路的打印机,其特征在于,所述处理电路借助下述方法精简存储在所述存储器电路中的位图打印数据的第一数据组(a)将所述第一数据组分成许多分割行,每个分割行含有许多片;(b)检测每一个所述分割行,以确定是否存在数目与预定阈值一样大的连续空片,并且,如果有则;(c)将当前分割行分成许多每个至少包含一个待打印象素的区域,其中每个所述区域与其它区域由一个空白区分开,每个所述空白区包括的连续空片至少与所述阈值一样大;(d)为当前分割行中每个所述区域产生区域边界信息;以及(e)产生一组包含有与各分割行的各个所述区域相联系的打印数据的第二数据组,设置所述第二数据组,以便使得具有至少两个含有打印数据的区域和一个位于其间的空白区的所述每个分割行还包括用于每个所述区域的区域边界信息,但在区域之间的所述空白区没有任何打印数据;所述处理电路被进一步配置来通过以下步骤打印所述第二数据组表示的图象(f)在所述存储电路中暂时存储所述第二数据组;(g)检测所述第二数据组,以确定具有至少二个含有打印数据的区域和位于其间的空白区的所述分割行;(h)一分割行接一分割行地向所述打印工具传送打印数据和各区域边界的信息,但区域之间的空白区无任何打印数据;以及所述打印工具包括一个其上配置有所述第二处理电路的打印头,对于所述每一分割行,它(i)在包含于当前分割行内的所述第一区域的开始处启动,并根据从所述第二数据组得来的所述第一区域的打印数据对各片进行打印;(j)在所述第一区域的结尾关闭;(k)移向当前分割行中所述区域的每一个下一区域,包括当前分割行中所述区域的最后一个在内;(l)在所述下一区域的开始处启动,并根据从所述第二数据组得来的所述下一区域的打印数据对各片进行打印;(m)在所述下一区域的结尾处关闭;从而打印出整个页面,打印出的页面具有与位图打印数据的所述第一数据组相同的图形。
15.如权利要求14所述的打印机,其特征在于,所述打印工具包括一个打印机托架/打印头组件,并且其中所述打印机托架/打印头组件当通过所述各区域时以第一速度移动,而当通过区域之间的空白区时以较大的第二速度移动。
16.如权利要求15所述的打印机,其特征在于,为了启动所述打印头,所述处理电路的专用集成电路(ASIC)含有这样的逻辑它用于接收打印开始位置,利用直接存储器存取(DMA)从所述存储电路读取打印数据,比较所述打印开始位置和打印机托架当前位置,一旦比较结果为真,则使所述打印头根据打印数据进行打印;并且当所述打印头关闭时,所述ASIC逻辑不工作。
17.如权利要求14所述的打印机,其特征在于,所述第二数据组包括许多分割行,至少所述分割行之一包括许多区域并且至少有一个空白区界于它们之间;同时其中所述许多区域中的每一个至少包括下述内容之一(i)含有至少一个非空片的位图打印数据,该非空片具有将由打印介质上的打印点表示的象素,(ii)含有连续空片的数目小于所述阈值的位图打印数据,因此它不是一个空白区,以及(iii)填充片。
18.一种压缩打印作业数据的方法,所述方法包括步骤(a)提供一个具有第一处理电路,第一存储器电路,第一通信端口的主机,其中,所述所述主机借助下述方法精简存储在所述第一存储器电路中的位图打印数据的第一数据组(i)将所述第一数据组分成许多分割行,每个分割行含有许多片,(ii)检测每一个所述分割行,以确定是否存在数目与预定阈值一样大的连续空片,并且,如果有则,(iii)将当前分割行分成许多至少包含一个待打印象素的区域,其中每个所述区域与其它区域由一个空白区分开,每个所述空白区包括的连续空片至少与所述阈值一样大,(iv)为当前分割行中每个所述区域产生区域边界信息,以及(v)产生一组包含有与各分割行的各个所述区域相联系的打印数据的第二数据组,设置所述第二数据组,以便使得具有至少两个含有打印数据的区域和一个位于其间的空白区的所述每个分割行还包括用于每个所述区域的区域边界信息,但在区域之间的所述空白区没有任何打印数据,(b)向所述第一通信端口传输所述第二数据组;(c)提供一条通信线路,该通信线路有效地连接到所述第一通信端口并从所述第一通信端口接收数据;以及(d)提供一个具有第二处理电路,一个第二存储电路,一个第二通信端口,和一个打印工具的打印机,所述第二通信端口有效地连接到所述通信线路上,并从所述通信线路接收数据,其中所述打印机通过以下步骤打印所述第二数据组表示的图象(i)在所述第二存储电路中暂时存储所述第二数据组,(ii)检测所述第二数据组,以确定具有至少二个含有打印数据的区域和位于其间的空白区的所述分割行,(iii)一分割行接一分割行地向所述打印工具传送打印数据和各所述区域边界的信息,但区域之间的空白区无任何打印数据,以及(e)提供配有打印头的打印工具,对于所述每一分割行,它(i)在包含于当前分割行内的所述第一区域的开始处启动,并根据从所述第二数据组得来的所述第一区域的打印数据对各片进行打印,(ii)在所述第一区域的结尾关闭,(iii)移向当前分割行中所述区域的下一区域,包括当前分割行中所述区域的最后一个在内,(iv)在所述下一区域的开始处启动,并根据从所述第二数据组得来的所述下一区域的打印数据对各片进行打印,(v)在所述下一区域的结尾处关闭;从而打印出整个页面,打印出的页面具有与位图打印数据的所述第一数据组相同的图形。
19.如权利要求18所述的方法,进一步包括完成光栅图象处理操作步骤以便将一个高级语言原始数据集转换成位图格式,从而生成所述第一数据组。
20.如权利要求18所述的方法,进一步包括启动打印头的步骤通过接收打印开始位置、读取打印数据,并将所述打印开始位置与当前打印机托架位置进行比较,从而,一旦比较结果为真,则驱使所述打印头根据所述打印数据进行打印。
21.一种精简打印作业数据的方法,所述方法包括步骤(a)提供一种计算/处理系统,包括一个处理电路和一个存储电路,其中所述计算/处理系统借助下述方法精简存储在所述存储器电路中的位图打印数据的第一数据组(b)将所述第一数据组分成许多分割行,每个分割行含有许多片;(c)检测每一个所述许多分割行,以确定是否存在其数目与预定阈值一样大的连续空片,并且如果有则;(d)将当前分割行分成许多每个至少包含一个待打印象素的区域,其中每个所述区域与其它区域由一个空白区分开,每个所述空白区包括的连续空片至少与所述阈值一样大;(e)为当前分割行中每个所述区域产生区域边界信息;以及(f)产生一组包含有与各分割行的各个所述区域相联系的打印数据的第二数据组,设置所述第二数据组,以便使得具有至少两个含有打印数据的区域和一个位于其间的空白区的所述分割行还包括用于每个所述区域的区域边界信息,但在区域之间的所述空白区没有任何打印数据;其中所述第二数据组,当在打印机上打印时,产生一份与位图打印数据的第一数据表示的图象相同的文件。
22.如权利要求21所述的方法,进一步包括完成光栅图象处理操作步骤以便将一个高级语言原始数据集转换成位图格式,从而生成所述第一数据组。
23.一种精简打印作业数据的方法,所述方法包括步骤(a)提供一种具有一个处理电路和一个存储电路的打印机,其中,所述打印机借助下述步骤精简存储在所述存储电路中的位图打印数据的第一数据组(b)将所述第一数据组分成许多分割行,每个分割行含有许多片;(c)检测每一个所述分割行,以确定是否存在其数目与预定阈值一样大的连续空片,并且如果有则;(d)将当前分割行分成许多每个至少包含一个待打印象素的区域,其中每个所述区域与其它区域由一个空白区分开,每个所述空白区包括的连续空片至少与所述阈值一样大;(e)为当前分割行中每个所述区域产生区域边界信息;以及(f)产生一组包含有与各分割行的各个所述区域相联系的打印数据的第二数据组,设置所述第二数据组,以便使得具有至少两个含有打印数据的区域和一个位于其间的空白区的所述每个分割行还包括用于每个所述区域的区域边界信息,但在区域之间的所述空白区没有任何打印数据;(g)借助下述步骤打印所述第二数据组表示的图象(i)在所述存储电路中暂时存储所述第二数据组;(ii)检测所述第二数据组,以确定具有至少二个含有打印数据的区域和位于其间的空白区的所述分割行;(iii)一分割行接一分割行地向所述打印工具传送打印数据和各区域边界的信息,但区域之间的空白区无任何打印数据;以及(h)提供配有打印头的打印工具,对于每一所述分割行,它(i)在包含于当前分割行内的所述第一区域的开始处启动,并根据从所述第二数据组得来的所述第一区域的打印数据对各片进行打印;(ii)在所述第一区域的结尾关闭;(iii)移向当前分割行中所述区域的每个下一区域,包括当前分割行中所述个区域的最后一个在内;(iv)在所述下一区域的开始处启动,并根据从所述第二数据组得来的所述下一区域的打印数据对各片进行打印;(v)在所述下一区域的结尾处关闭;从而打印出整个页面,打印出的页面具有与位图打印数据的所述第一数据组相同的图形。
24.如权利要求23所述的方法,进一步包括完成光栅图象处理操作步骤以便将一个高级语言原始数据集转换成位图格式,从而生成所述打印数据组。
25.如权利要求23所述的方法,进一步包括启动打印头的步骤通过接收打印开始位置、读取打印数据,并将所述打印开始位置与当前打印机托架位置进行比较,从而,一旦比较结果为真,则驱使所述打印头根据打印数据进行打印。
全文摘要
一种打印系统和方法,它通过确定待打印页的每一分割行、确定分割行中含有实际将被打印的象素的各“区域”的开始和结尾点、确定这些区域中每一区域开始片和结尾片的位置、确定分割行中含有足够的最小连续空片数目的“空白区”。当连续空片的数目超过预定阈值时可被确定为空白区。打印系统的打印头将在空白片的开始处被关闭,并且在到达空白片的结尾时重新打开,所述空白片的结尾与下一个待打印区域的开始相对应。
文档编号G06F3/12GK1192550SQ9810563
公开日1998年9月9日 申请日期1998年1月23日 优先权日1997年1月23日
发明者斯蒂芬·凯利·坎纳金, 托马斯·乔恩·伊德 申请人:莱克斯马克国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1