打印系统的制作方法

文档序号:6412606阅读:194来源:国知局
专利名称:打印系统的制作方法
技术领域
本发明涉及一种打印系统、打印设备、以及用于打印出从例如主机传送来的打印数据的打印控制方法。
传统上,专用于图象输出的页打印机是已知的,并被称为基于主机的打印机。
在这种打印机中,一个主机把一页的映象图象数据从该页的开头进行压缩,并将压缩的数据送到打印机的控制器单元。该控制器单元再把接收的压缩数据展开,把展开的数据转换成视频信号,并将该视频信号与一个引擎单元的纸排放时序相同步地输出到该引擎单元。以此方式,实现了在纸上的一页打印。
在这种打印机中,压缩图象数据至视频信号的转换和至引擎单元的视频信号输出是借助硬件电路来实现的。最终,控制器单元不要求任何CPU,且能够提供成本非常低的页打印机。
然而,采用传统的基于主机的打印机的主计算机暂时把所有打印数据—诸如字符打印数据、制图数据、图象粘贴数据等—映象为图象,随后压缩映象的图象,并将压缩数据传送到打印机。因此,所要从主计算机传送到打印机的数据量变得很大。另外,由于主计算机必须临时地把所有数据映象成图象,多页的文件占据了很长的主计算机处理时间,从而使打印处理时间很长。
本发明的一个目的,是提供一种打印设备,它是图象专用打印机并具有与基于主机的打印机类似的简单结构,但能够通过接收字符编码形式的一个字符部分并将其映象成字符图象,而减小主计算机中的字符映象处理时间和从主计算机传送的数据量,另外还提供了一种打印系统和打印控制方法。
本发明的另一个目的,是提供一种能够输出包括具有大量数据的图象数据的打印设备,以及一种打印系统和打印控制方法。
为了实现上述目的,本发明包括以下设置。
即,提供了一种打印系统,用于利用一种打印设备打印由一种主机设备产生的文件数据,该主机设备包括第一发送装置,用于以出现在文件数据中的字符类型为单位把编码和字符图象发送到打印设备;以及第二发送装置,用于把出现在该文件数据中的字符以字符编码的形式并把字符以外的部分以图象数据的形式发送到打印设备,且该打印设备包括寄存装置,用于寄存从第一发送装置发送的字符编码和字符图象;图象重新构成装置,用于根据寄存装置寄存的编码和字符图象以图象数据的形式映象从第二发送装置发送的字符编码,并把映象的图象数据与从第二发送装置发送的图象相合成;以及用于打印图象重新构成装置获得的图象数据的装置。
还提供了一种打印控制设备,用于打印从一个主机设备接收到的打印数据—该主机设备以出现在文件数据中的字符类型为单位地发送编码和字符图象并随后以字符编码的形式发送出现在文件数据中的字符并以图象数据的形式发送字符以外的一个部分,包括寄存装置,用于寄存从主机设备发送的字符编码和字符图象;图象重新构成装置,用于根据寄存装置寄存的编码和字符图象来把从主机设备发送的字符编码成图象数据,并把映象的图象数据与从第二发送装置发送的图象相合成;以及用于打印由图象重新构成装置获得的图象数据的装置。
还提供了一种打印控制设备,用于使一个打印设备打印出所产生的文件数据,包括第一发送装置,用于以出现在文件数据中的字符类型为单位把编码和字符图象发送到该打印设备;以及第二发送装置,用于把出现在文件数据中的字符以字符编码的形式并把字符以外的一个部分以图象数据的形式发送到该打印设备。
还提供了一种打印控制方法,用于打印从一个主机设备接收的打印数据—该主机设备以出现在文件数据中的字符类型为单位发送编码和字符图象并随后以字符编码的形式发送出现在文件数据中的字符并以图象数据的形式发送字符以外的一个部分,包括寄存步骤,用于寄存从主机设备发送的字符编码和字符图象;图象重新构成步骤,用于根据寄存步骤中寄存的编码和字符图象来把从主机设备发送的字符编码映象成图象数据,并把映象的图象数据与在第二发送步骤中发送的一个图象相合成;以及打印在图象重新构成步骤中获得的图象数据的步骤。
还提供了一种打印设备的一种控制方法,用于提供所产生的文件数据,包括第一发送步骤,用于以出现在文件数据中的字符类型为单位把编码和字符图象发送到打印设备;第二发送步骤,用于把出现在文件数据中的字符以字符编码的形式并把字符以外的一个部分以图象数据的形式发送到该打印设备。
还提供了一种计算机可读取存储介质,它根据从一个主机设备—该设备以出现在文件数据中的字符类型为单位发送编码和字符图象并随后以字符编码的形式发送出现在该文件数据中的字符并以图象数据的形式发送字符以外的一个部分—接收到的打印数据,存储用于计算机执行的程序寄存过程用于寄存从主机设备发送的字符编码和字符图象;图象重新构成过程用于根据寄存过程中寄存的编码和字符图象,把从主机设备发送的字符编码映象成图象数据,并把映象的图象数据与在第二发送过程中发送的一个图象相合成;以及打印在图象重新构成过程中获得的图象数据的过程。
还提供了一种计算机可读取存储介质,该介质存储用于使计算机执行的一个程序第一发送过程,用于以出现在文件数据中的字符类型为单位把编码和字符图象发送到一个打印设备;以及第二发送过程,用于把出现在文件数据中的字符以字符编码的形式并把字符以外的一个部分以图象数据的形式发送到该打印设备。
通过以下结合附图的描述,本发明的其他特征和优点将变得显而易见。在附图中相同的标号表示了相同或类似的部分。
构成说明书一部分的附图显示了本发明的实施例,并与描述一起用于解释本发明的原理。


图1是根据第一实施例的总体系统的设置的框图;图2是图象数据和字符数据合成原理的说明图;图3是指令结构的说明图;图4是指令序列的结构的说明图。
图5显示了安装在一个ROM中的程序;图6A和6B是一个接收缓存器的指针的说明图;图7是流程图,显示了打印机驱动程序的操作;图8是流程图,显示了该打印机驱动程序的操作;图9是流程图,显示了一种接收管理程序的操作;图10是流程图,显示了该接收管理程序的操作;图11是流程图,显示了一种接收单元的操作;图12是流程图,显示了该接收单元的操作;图13是流程图,显示了一种解释程序的操作;图14是流程图,显示了该解释程序的操作;图15是流程图,显示了一种寄存程序的操作;图16是流程图,显示了一种打印程序的操作;图17是流程图,显示了一种纸排放程序的操作;图18是框图,显示了根据第二实施例的总体系统的设置;图19是一种控制器单元的带(band)处理的原理的说明图;图20是指令结构的说明图;图21显示了安装在一个ROM中的程序;图22是流程图,显示了一种打印机驱动程序的操作;图23是流程图,显示了该打印机驱动程序的操作;图24是流程图,显示了该打印机驱动程序的操作;图25是流程图,显示了一种解释程序的操作;图26是流程图,显示了该解释程序的操作;图27是流程图,显示了该解释程序的操作;图28是流程图,显示了该解释程序的操作;图29是流程图,显示了一种打印程序的操作;图30是在一个带的视频输出时采用的变量的说明图;图31是流程图,显示了一种图象展开/视频传送电路的操作;图32是流程图,显示了该图象展开/视频传送电路的操作;图33是流程图,显示了该图象展开/视频传送电路的操作;图34是根据第三实施例的图象带的重复原理的说明图;图35是图象带的重复的一个例子的说明图;图36是指令结构的说明图;图37是流程图,显示了一种打印机驱动程序的操作;图38是流程图,显示了该打印机驱动程序的操作;图39A和39B是流程图,显示了打印机驱动程序的操作;图40是流程图,显示了一种解释程序的操作;图41是流程图,显示了该解释程序的操作。图42是流程图,显示了该解释程序的操作。图43是流程图,显示了该解释程序的操作。图44是框图,显示了根据第四实施例的总体系统的设置;图45是指令结构的说明图;图46A和46B是一种页管理表的结构的说明图;图47是流程图,显示了一种打印机驱动程序的操作;图48是流程图,显示了该打印机驱动程序的操作;图49是流程图,显示了该打印机驱动程序的操作;图50是流程图,显示了该打印机驱动程序的操作;图51是流程图,显示了该打印机驱动程序的操作;图52是流程图,显示了一种接收单元的操作;图53是流程图,显示了该接收单元的操作;图54是流程图,显示了一种接收管理程序的操作;图55是流程图,显示了该接收管理程序的操作;图56是流程图,显示了该接收管理程序的操作;图57是流程图,显示了一种解释程序的操作;
图58是流程图,显示了该解释程序的操作;图59A和59B显示了用于输出一个巨大图象的程序的原理;图60显示了在输出具有大量数据的图象时打印机的状态。
图61是流程图,显示了根据第五实施例的打印机驱动程序的操作;图62A和62B是流程图,显示了根据第五实施例的打印机驱动程序的操作;图63是流程图,显示了根据第五实施例的打印机驱动程序的操作;且图64是流程图,显示了根据第五实施例的打印机驱动程序的操作。
(第一实施例)以下借助附图来描述第一实施例。
(打印系统的设置)图1是框图,用于说明总体系统的设置。一个主机1包括一个个人计算机,该个人计算机产生所要寄存的图象数据、用于命令打印的字符编码、以及压缩图象数据,并将它们送到一个打印机,主机1通过借助一个CPU执行从一个次级存储器装载到一个主存储器中的程序而实施这种处理。在主机1,用户能够执行其所希望的应用程序。用户根据来自一个输入单元并显示在一个显示单元上的输入控制这种程序。主机1经过一个接口单元而与一个打印机2相连。
打印机2包括一个控制单元3和一个引擎单元4。控制单元3从主计算机接收字符数据和图象数据,产生一个视频信号并将该视频信号送到引擎单元4。引擎单元4通过利用从控制单元3接收的视频信号而在打印纸上打印图象并排放该打印纸。
控制单元3包括用于控制整个控制单元3的一个中央处理单元(以下称为CPU)5;存储描述CPU 5的处理操作的程序的一个只读存储器(以下称为ROM)3;一个随机存取存储器(以下称为RAM)9;用于接收来自主机1的字符和图象数据并把接收数据置于RAM 9中分配的一个接收缓存器10的接收单元6;一个字符展开电路17,用于展开接收的压缩字符数据并将展开的数据映象到一个帧缓存器11上;一个图象展开电路16,用于展开接收的压缩图象数据并将展开的数据映象到帧缓存器11上;一个视频传送电路7,用于把映象到帧缓存器11上的图象转换成视频信号,并将该视频信号输出到引擎单元4;等等。数据18表示已经被接收并以页为单位而被置于接收缓存器10中的字符数据,且数据19表示已经接收并以页为单位地被置于接收缓存器10中的图象数据。
另外,RAM9包括一个用于程序的工作区12,它包括一个页管理表13,用于以页为单位地管理接收在接收缓存器10中的字符和图象数据18和19;一个寄存字符数据区15,用于以字符为单元地存储压缩的点图象;一个寄存字符管理表14,用于管理寄存的字符数据;等等。
应该注意的是,接收的字符数据18的内容包括寄存的字符和字符编码。首先出现在将要在主机1上打印的文件中的字符得到压缩,并以一个字符的点图象即寄存字符的形式被发送到打印机2。对随后的相同字符的打印以及第一个字符的位置由字符编码指令。
临时接收在接收缓存器10中的寄存字符被发送到并存储在寄存字符数据区15中。当一个字符编码命令打印时,与该字符编码对应的寄存字符数据被从寄存字符数据区15读出,被字符展开电路17展开,并被映象到帧缓存器11上。另一方面,压缩图象数据19被图象展开电路16展开,并被映象到帧缓存器11上。
注意控制单元3的CPU5可采用具有不那样高的处理性能的成本低廉的产品,因为它只需要利用RAM9中的接收缓存器10、页管理表13、寄存字符管理表14等来进行存储管理。
另一方面,引擎单元4包括CPU21和存储器22。存储器22包括存储控制程序的一个ROM23和用于程序的工作区的RAM24。一个视频接收单元25接收来自控制单元3的视频信号,并利用一种显影/定影单元27把图象转移到纸上。一个纸送进单元26从纸盒等送进空白的纸,显影/定影单元27把图象转移并定影到纸上,且一个纸排放单元28把打印的纸排放出去。
注意,图1中的粗箭头表示字符数据、图象数据、以及视频信号的流动,或纸在引擎单元中的流动。细箭头表示各个单元之间的控制交换过程。控制单元3的CPU5和引擎单元4的CPU21彼此交换信息。所要交换的信息与诸如视频传送、纸送进等的打印处理的控制有关。
图2是控制单元3中的图象和字符的合成原理的说明图。如借助图1已经部分地描述的,主机1的驱动程序把所要打印的文件分成字符部分和字符以外的部分。字符以外的部分以图象的形式被映象到主机1上。随后,驱动程序以页为单位地分别把字符数据部分和图象数据部分发送到打印机2。在此情况下,字符数据部分是以这样的方式传送的一即相应的字符的字符编码和压缩点图案数据被传送到并寄存在打印机中,且寄存的字符编码序列随后作为打印数据而得到发送。
控制单元3利用图象展开电路16展开接收的压缩图象数据19,并把它映象到帧缓存器11上。在接收到字符数据18(即字符编码序列)时,控制单元3利用字符展开电路17展开与各个接收字符编码相应地寄存的压缩点图案数据,并将其映象到帧缓存器11上。在完成了一页图象和字符数据至帧缓存器11的映象时,视频传送电路7把所要打印的一种视频信号传送到引擎单元4。
注意,图象和字符部分的“或(OR)”被写入到帧缓存器11上。对于文件,这种“或”通常就足够了。
一定的字符的字符点数据在每次打印文件时被寄存一次。即使当相同的字符在不同的页中重复出现时,该字符也只需要被寄存一次,且其打印被一个字符编码所重复地命令。然而,在完成文件打印时,寄存的字符被从RAM9清除。即,寄存的字符在多个文件之间不是有效的。字符寄存以所要打印的文件为单位而得到重复。
图3显示了从主机1送到打印机2的诸如字符数据、图象数据等的打印数据的指令结构。打印数据依次包括任务启动指令31、各页的页启动指令32、表示打印位置的指针的位置移动指令33、类型指令34、以及一个指令序列35。类型指令34表示跟随的指令序列35的类型。指令序列35具有几种类型,用于进行字符寄存的类型、用于命令字符打印的类型、用于命令图象打印的类型等等。指令序列35的类型将结合图4而得到详细描述。在页启动指令32之后的指令组与所要打印的文件的页数相应地重复出现,且用于一个文件的打印指令响应于一种任务结束指令36而结束。
在图3中,位置移动指令33总是在类型指令34之前得到设置,并它不是总是必要的。例如,当类型指令34和指令序列35只与字符的寄存有关时,就不需要位置移动指令33。
图4是以类型指令34的值为单位的指令序列35的结构的说明图。
当类型指令34表示类型1时,该指令是一个“只字符寄存”指令。该指令序列包括字体号41、字符编码42、数据尺寸43、以及压缩字符点图象数据44。
所要寄存的字符数据被按照字体而被分类,并与字符编码相应地被寄存在RAM 9上的寄存字符数据区15中。更具体地说,这种分类和相关是在寄存字符管理表14上进行管理的。
当类型指令34包括类型2时,该指令是一个“字符寄存+打印”指令,即同时命令字符的寄存和打印。此时指令序列35的格式与类型1的相同。在此情况下一个字符编码42暗指所要寄存的字符的编码分配,以及已经寄存的字符的打印命令。
当类型指令34表示类型3时,该指令是一个“只字符图象打印”指令。即字符点图象数据在没有得到寄存的情况被打印。此时的指令序列35包括一个数据尺寸43和压缩字符点图象数据44。
当类型指令34表示类型4时,该指令是一个“字符编码打印”指令。此时的指令序列35包括一个字体号41和字符编码42。控制单元3利用字体号41和字符编码42查询寄存字符管理表14,以从寄存字符数据区15找到目标寄存字符数据,利用字符展开电路17展开找到的数据,并将其映象到帧缓存器11上。
当类型指令34表示类型5时,该指令是一个“图象块粘贴”指令,且此时的指令序列35包括图象块的纵向和水平尺寸45和46、数据大小47、以及压缩图象块数据48。控制单元3利用图象展开电路16展开该压缩图象块数据,并将其映象到帧缓存器11上。这五个不同的类型指令34得到了采用。
图5用于说明安装在控制单元3的RAM8中的程序。
一个接收管理程序51,利用页管理表13,以页为单位地管理存储在接收缓存器10中的字符和图象数据。另外,程序51命令在接收缓存器10上的接收数据的写入位置的接收单元6。
一个解释程序52解释存储在接收缓存器10中的字符数据即字符寄存指令和字符打印指令,或图象数据即图象块粘贴指令,并命令字符寄存的字符寄存程序53、命令把字符映象到帧缓存器11上的打印程序54、并把图象贴到帧缓存器11上。
另外,在完成一定页的所有字符和图象数据至帧缓存器11上的映象时,解释程序52命令在帧缓存器11上的图象至引擎单元4的视频传送的纸排放程序55,并命令该引擎单元执行纸排放。另外,程序52从接收缓存器10中删除用于纸排放页的数据。删除是通过只从页管理表13擦除用于纸排放页的数据,而进行的。即,程序52并不实际清除接收缓存器10上的任何数据。
以下结合流程图(将在后面描述)来详细描述各个程序的操作。
注意,接收管理程序51和解释程序52是当打印机的电力开关被接通时被同时启动的,并等来自主机1的数据。这两个程序继续进行多任务操作,直到打印机的电力开关关断。
图6A和6B用于说明当接收数据的写入正在进行时指针之间的位置关系。接收缓存器10具有所谓的“环缓存器”结构。
接收管理程序51预先命令限制指针61的接收单元6,且在接收缓存器10中直到限制指针61的位置的接收数据直接写入得到了允许。其写入位置—它是以字节为单位而递增的—由接收单元6管理。
参见图6A,在打印机2启动之后,限制指针61立即匹配接收缓存器10的最大值位置,即接收缓存器10上的区的结束地址。然而,在图6A中,限制指针61被设定在略微在接收缓存器10的最大值之前处,以进行描述。这种状态表明接收数据已经被接收单元6写入到略微在限制指针61之前的位置。
接收数据又被解释程序52所解释,且引擎单元4从其字符和图象数据已经被映象到帧缓存器11上的页开始排放打印好的纸。随后,一个第一页—其进行引擎单元4的纸排放命令还没有完成—被一个解释指针62所指。另外,其至引擎单元4的纸排放命令还没有完成的一个第一页被一个纸排放指针63所指。即,已经接收但还没有被解释的数据被存储在解释指针62与最新的接收数据之间,且已经被解释但还没有输出的数据被存储在纸排放指针63与解释指针62之间。另外,对于在纸排放指针62的当前地址之前的一个位置,由于相应的纸已经被排放,且存储在其中的数据不是必要的,该部分被“擦除”,且新接收的数据能够得到写入。在“擦除”时,数据并不被实际清除,而是以新接收的数据覆盖。
注意,解释指针62和纸排放指针63是以页为单位地设定的。解释程序52能够通过查询由接收管理程序51产生和管理的页管理表13,来检测接收缓存器10上的页边界位置等。
图6B显示了一种状态—其中接收数据已经被写入到接收缓存器10的最大值的位置。在图6B中,接收管理程序51命令接收单元6把限制指针61移到接近接收缓存器10的开始地址的一个位置,且在图6B所示的状态下,由接收单元6进行的接收数据的写入实际上正在略微接近开始地址位置处进行。即,进行了所谓的“环缓存器”操作。
限制指针61是按照以下步骤更新的。当接收单元6已经把接收数据写入到直到限制指针61的位置时,它通知接收管理程序51“写入已经达到了极限且不能再写入更多的数据”。即,接收单元6请求接收管理程序51更新限制指针61。接收管理程序51检验纸排放指针63,以检查有无新的空白。随后,程序51命令接收单元6把纸排放指针63的当前位置作为限制指针61的新位置。以此方式,接收单元6能够从限制指针61的老位置向新位置写入接收数据。
注意,接收单元6不只是在“写入位置已经达到限制指针61”时才与接收管理程序51通信,而且在“它从接收数据检测到任务启动指令31、页启动指令32、任务结束指令36”等时也进行这种通信。借助这种通信接收管理程序51能够在信任地让接收单元6进行实际的接收工作—即信号线的控制和接收数据至存储器的写入—的同时,管理接收的页。
注意,接收单元6具有用于把从主机1接收的数据高速写入接收缓存器10的设置,即所谓的DMA(动态存储器存取)接收电路。这种电路包括一个FIFO(先进先出)缓存器。从主机1送来的图象数据被临时存储在该FIFO缓存器中,并随后被写入到由接收管理程序51指定的接收缓存器10上的写入位置。由于这种电路是现有技术,所以省略了对其的详细描述。工作区12包括页管理表13、寄存字符管理表14、寄存字符数据区15、等等,但将省略对它们的内部结构的详细描述。然而,这些表和区具有有效的结构,从而不会消耗过量的存储器容量。
(打印控制程序)以下结合流程图描述根据本发明的第一实施例的打印系统的操作。
(打印机驱动程序)图7是用于说明主机1上的打印机驱动程序的操作的流程图。该打印机驱动程序,从包括字符和图象数据并由用户采用的应用软件程序产生的文件数据,产生出借助图3和4描述的字符和图象打印指令,并把它们传送到打印机2。当用户从应用软件程序命令文件打印时,主机1中的打印机驱动程序得到启动。
在启动时,驱动程序在主机1的存储器上保证了一页的帧缓存器(未显示),并同时清理该帧缓存器。在驱动程序完成了文件打印时,用作该帧缓存器的存储区被释放。
在实际处理中,驱动程序在步骤S1把一个任务启动指令31传送到打印机2,并在步骤S2检查是否从一个应用程序接收到了某些命令。如果步骤S2为“否”,驱动程序形成一个环并等候接收命令。另一方面,如果步骤S为“是”,驱动程序在步骤S3检查接收的命令是否文件结束命令。如果步骤S3为“是”,驱动程序在步骤S4检查在文件结束之前的最后一页中是否包括图象数据。如果步骤S4为“是”,驱动程序在步骤S5传送一个表示图象块的粘贴位置的位置移动指令33,并还在步骤S6传送类型5的一个类型指令34即包括图象块的纵向和水平大小45和46、数据大小47、以及压缩图象块数据48的指令。
在步骤S6传送的图象块是包括作为单个图象块的整个最后页的数据。一页的图象被映象到分配在主机1的存储器上的用于一页的帧缓存器上。在图象指令在步骤S6得到传送之后,驱动程序清除主机上的帧缓存器的内容。
如果步骤S4为“否”,或步骤S6后,驱动程序在步骤S7把一个任务结束指令36传送到打印机2,从而结束驱动程序处理程序例程。
如果步骤S3为“否”,驱动程序在步骤S8检查是否从应用程序接收到了一个页启动命令。如果步骤S8为“是”,驱动程序在步骤S9检查前一页是否出现在一个相同的文件中并包括一个图象。换言之,它检查一个图象是否被映象到用于前一页的帧缓存器上。如果步骤S9为“是”,驱动程序在步骤S10传送表示一个图象块的粘贴位置的位置移动指令33,并还在步骤S11向打印机传送类型5的一个类型指令34—即图象块指令45、46、47、和48。随后,驱动程序清除主机1上的帧缓存器的内容。
如果步骤S9为“否”,或者在步骤S11之后,驱动程序在步骤S12把一个页启动指令32发送给打印机2,且流程返回到步骤S2以等候来自应用程序的下一个命令。
如果步骤S8为“否”,驱动程序在步骤S13检查是否从应用程序接收到了一个字符打印命令,且在此文件中是否出现有字符。如果步骤S13为“是”,流程进行到步骤S14,以向打印机2发送一个位置移动指令33。驱动程序随后在步骤S15检查寄存字符的数目是否超过了其极限。如果步骤S15为“否”,驱动程序在步骤S16向打印机2发送类型2的类型指令34即“字符寄存+打印”指令41、42、43、和44。另一方面,如果在步骤S15判定寄存字符的数目已经超过了极限,驱动程序在步骤S17向打印机2发送一个类型3的类型指令34—即“只字符图象打印”指令43和44。在步骤S16或步骤S17之后,流程返回到步骤S2,以等候来自应用程序的下一个命令。
在步骤S17,驱动程序向打印机2发送一个字符点图象。在此情况下,采用了只执行点图象的粘贴但不寄存它的指令。作为另一种方法,当寄存字符的数目执行超过了极限时,一个字符点图象可被直接映象属性主机1上的帧缓存器上。在此情况下,在步骤S6或S11,包括作为单个图象块的一个页的数据的指令被发送给打印机2。
如果步骤S13为“否”,驱动程序在步骤S18检查应用程序是否命令该字符的第二或随后的打印。如果步骤S18为“是”,驱动程序在步骤S19向打印机2发送表示打印位置的一个位置移动指令33,并在步骤S20向打印机2发送类型4的类型指令34—即字符编码打印指令41和42。随后,流程返回到步骤S2,以等候来自应用程序的下一个命令。
如果步骤S18为“否”,则判定已经从应用程序接收到了标尺线画出命令、画图命令、图象粘贴命令等,且驱动程序在步骤S21把这种接收到的数据以图象的形式映象到主机1上的帧缓存器上。随后,随后,流程返回到步骤S2,以等候来自应用程序的下一个命令。
主机1在上述步骤中把打印数据以指令序列的方式送到打印机。
(接收管理程序)图9和10是流程图,用于说明打印机2中的接收管理程序51的操作。该程序在打印机2的电力开关被接通之后立即启动。
在步骤S31,程序清除接收缓存器10、帧缓存器11、页管理表13以及工作区12中的寄存字符管理表14等的内容。在步骤S32,程序指令接收单元6把接收单元6的接收数据写入极限值—即图6中描述的限制指针61的值—设定在接收缓存器的最大值。借助这种设定,接收单元6能够写入直到接收缓存器的大小的数据。随后,程序在步骤S33检查用户是否已经关断了打印机的电力开关。如果步骤S3为“是”,程序结束其处理。
如果步骤S33为“否”,程序在步骤S34检查是否从接收单元6接收到了接收启动信息。该接收启动信息表示接收单元6是否从来自主机1的发送数据中检测到了一个任务启动指令31。如果步骤S34为“否”,流程返回到步骤S33,且程序形成一个环以等候从主机1发送的打印指令。
如果步骤S34为“是”,程序命令接收单元6把接收数据写入接收缓存器10。
在检测到任务启动指令31时,接收单元6暂时停止从主机1的接收,并把任务启动指令31的检测信息提供给接收管理程序51。随后接收单元6等候来自接收管理程序51的把接收数据写入接收缓存器10的命令。这种处理与步骤S35对应。另一方面,接收单元6放弃检测到任务启动指令31的所有接收数据。即,接收单元6从主机1接收数据但不把它们写入接收缓存器10。
在步骤S35之后,程序在步骤S36等候1秒。在此1秒里,接收单元6把接收数据写入接收缓存器10。随后,程序在步骤S37检查是否从接收单元6接收到了页启动指令32或任务结束指令36的检测信息。如果步骤S37为“是”,程序在步骤S38把接收的页寄存在页管理表13中。此时,程序可经常寄存到页管理表13中的不仅是单个的页,而且还可同时寄存多个页。即,在步骤S37时,某些页启动指令和任务结束指令可能已经排队。
程序在步骤S39检查来自接收单元6的信息的内容是否包括一个任务结束指令36。如果步骤S39为“是”,程序命令接收单元6结束写入,且流程返回到步骤S33。随后,程序形成一个环并等候接收下一个任务。然而,如果步骤S39为“否”,流程返回到步骤S36,且程序形成一个环以继续把接收数据写入接收缓存器10。
注意,接收单元6在检测到任务结束指令时暂时停止了数据接收。更具体地说,即使当接收单元6依次接收了多个任务时,它也不把所有接收数据同时地随机写入接收缓存器10,而是响应于来自接收管理程序51的命令而以任务为单位地把它们写入接收缓存器10。
如果步骤S37为“否”,程序在步骤S40检查是否从接收单元6接收到了表示接收数据的写入位置已经达到了指定的极限值的信息。如果步骤S40为“否”,流程返回到步骤S36,且程序形成一个环以继续进行接收单元6的接收数据写入。另一方面,如果步骤S40为“是”,程序在步骤S41检查程序是否能够通知接收单元6一个新的极限值。如果步骤S41为“是”,程序在步骤S42通知接收单元6一个新的极限值。随后,流程返回到步骤S36,且程序形成一个环以继续由接收单元6把接收数据写入接收缓存器10。
如果步骤S41为“否”,程序在步骤S43检查接收数据是否太大。“太大的数据”指的是即使当接收缓存器10被全部使用时也不能接收的一打印的数据。如果步骤S43为“是”,程序在步骤S44在打印机2的一个面板上显示一个错误消息,并在步骤S45清除接收缓存器10、帧缓存器11、页管理表13、以及工作区12中的寄存字符管理表14等中的内容。在步骤S46,程序命令接收单元6把接收数据写入极限值设定为接收缓存器的最大值。随后,程序命令接收单元6结束写入,且流程返回到步骤S33,以形成一个环,从而等候下一个文件的任务启动信息。借助这种处理,包括造成错误—该错误是由于数据太大而引起的—的页的所有文件任务都被从该太大的页中放弃了。
注意,在上述描述中在步骤S44“在打印机2的面板上显示一个错误消息”,但在图1的框图中没有描述或说明面板。然而,通常的打印机等在打印机2的前或上表面上都具有一个液晶面板、状态显示灯等,以表示“可打印”、“错误”、或“无纸”状态。因此,省略了对其的详细描述。
(接收单元6)
图11和12是流程图,用于说明接收单元6的操作。接收单元6的操作已经在描述接收管理程序51的操作时在图9和10中提到了,但将在下面借助这些流程图进行详细描述。虽然接收单元6是一个硬件电路且不同于通常的程序,以下将借助流程图对其操作顺序进行描述。
接收单元6在打印机2的电力开关接通的同时开始操作。在步骤S51,接收单元6临时停止接收。更具体地说,接收单元6把打印机2设定为繁忙,以阻止从主机1的数据发送。随后,在步骤S52,接收单元6等候来自接收管理程序51的接收缓存器10的写入位置的极限值的命令。在接收到该命令时,在步骤S53,接收单元6被置于一个状态—其中它能够接收来自主机1的数据但放弃该接收的数据。
随后在步骤S54检查用户是否已经关断了打印机2的电力开关。如果步骤S54为“是”,接收单元6结束其操作。如果步骤S54为“否”,则它在步骤S55检查是否从接收数据检测到了一个任务启动指令31。如果步骤S55为“否”,流程返回到步骤S54,以等候来自主机1的任务启动指令31。
如果步骤S55为“是”,接收单元6在步骤S56暂时停止接收,并在步骤S57把表示任务启动指令31的检测的信息提供给接收管理程序51。即,通过把打印机2设定为繁忙以阻止从主机1的数据接收,而暂时停止了接收。
在步骤S58,接收单元6等候来自接收管理程序51的至接收缓存器10的写入启动命令。在检测到该命令时,单元6在步骤S59继续从主机1接收数据并将从主机1接收的数据写入接收缓存器10。它在步骤S60检查是否检测到了一个页启动指令32。如果步骤S60为“是”,单元6在步骤S61把页启动指令32的检测信息提供给接收管理程序51。此时,接收管理程序51把接收的文件记录在页管理表13中。在步骤S61之后,流程返回到步骤S59,以执行数据接收和写入。
另一方面,如果步骤S60为“否”,则在步骤S62检查是否检测到了一个任务结束指令36。如果步骤S62为“是”,单元6在步骤S63暂时停止接收,并在步骤S64把任务结束指令36的检测信息提供给接收管理程序51。此时,接收管理程序51把任务的结束记录在页管理表13上。
随后,在步骤S65,接收单元6等候一个命令—该命令允许接收但放弃来自接收管理程序51的接收数据。在接收到该命令时,流程返回到步骤S53,以等候下一个文件的任务启动指令31。
如果步骤S62为“否”,则在步骤S66检查接收缓存器10的写入位置是否已经达到了极限值。如果步骤S66为“是”,单元6在步骤S67暂时停止接收,并在步骤S68将表示接收缓存器10上的写入位置已经达到极限值的信息提供给接收管理程序51。
随后在步骤S69检查是否从接收管理程序51接收到了接收缓存器10上的写入位置的新的极限值的命令。如果步骤S69为“否”,则在步骤S70检查是否从接收管理程序51接收到了一个写入结束命令。如果步骤步骤S70为“否”,则流程返回到步骤S69以形成一个环。更具体地说,接收单元6等候来自接收管理程序51的写入结束命令或新的极限值的命令。注意,当由于一页的数据太大—它即使在使用了接收缓存器10的所有区的情况下也不能被存储在接收缓存器10中—而发生了错误时,在步骤S70判定从接收管理程序51接收到了写入结束命令。
如果步骤S69为“否”,则流程返回到步骤S59以继续数据接收或写入。如果步骤S70为“是”,流程返回到步骤S53,且在此之后随后的数据得到接收但被放弃,直到接收到下一个任务启动指令31。即,造成了由于太大的数据引起的错误的文件的任务被放弃了。
另一方面,如果步骤S66为“否”,流程返回到步骤S59,以继续数据接收和至接收缓存器的写入。
(解释程序)图13和14是流程图,用于说明解释程序52的操作。解释程序52是在打印机2的电力被接通时启动的,并解释由接收单元6写入接收缓存器10中的打印指令。
在步骤S81,程序检查用户是否已经关断了打印机2的电力开关。如果步骤S81为“是”,该程序结束其处理。如果步骤S81为“否”,程序在步骤S82检查接收缓存器10是否存储一页的接收数据。如果步骤S82为“否”,流程返回到步骤S81以形成一个环,从而等候接收来自主机1的数据。在步骤S82,程序通过查询页管理表13而检查接收到的页数据的有/无。页管理表13由接收管理程序51管理,如已经结合图9和10所描述的。
如果步骤S82为“是”,程序解释并处理在该页中的打印指令。程序在步骤S83检查第一指令是否一个位置移动指令33。如果步骤S83为“是”,程序在步骤S84移动游标。在此”游标”是一个想象的指针,它表示了感兴趣的字符或图象在帧缓存器11上的映象位置。更具体地说,这种“游标”是表示工作区12上的X和Y坐标的变量。在步骤S84之后,流程跳到步骤S96。
如果步骤S83为“否”,程序在步骤S85检查指令是否为类型1的类型指令34即字符寄存指令。如果步骤S85为“是”,则在步骤S86由字符寄存程序53进行字符寄存,且流程跳到步骤S96。字符寄存将结合图15描述。
如果步骤S85为“否”,程序在步骤S87检查该指令是否类型2的类型指令34,即字符寄存+打印指令。如果步骤S87为“是”,则在步骤S88进行字符寄存,且在步骤S89进行打印。随后,流程跳到步骤S96。在步骤S88的字符寄存与在步骤S86的相同。在步骤S89的打印由打印程序54进行,并将在后面结合图16进行描述。
如果步骤S87为“否”,则程序在步骤S90检查该指令是否类型3的类型指令34,即一个字符图象打印指令。如果步骤S90为“是”,则在步骤S91只进行字符图象的打印,且流程跳到步骤S96。
如果步骤S90为“否”,程序在步骤S92检查该指令是否类型4的类型指令34,即字符编码指令。如果步骤S92为“是”,则在步骤S93进行打印,且随后流程跳到步骤S96。步骤S93的打印与上述的步骤S89的相同。
如果步骤S92为“否”,程序在步骤S94检查该指令是否类型5的类型指令,即一个图象块指令。如果步骤S94为“是”,程序在步骤S95利用图象展开电路展开压缩图象数据,并将展开的图象块粘贴到帧缓存器11上。流程随后进行到步骤S96。
在步骤S84、S86、S89、S91、S93、或S95之后,或者在步骤S94为“否”时,流程进行到步骤S96。在步骤S96,程序检查该页的接收数据是否仍然包括未解释的指令。如果步骤S96为“是”,流程返回到步骤S83以解释该未解释的指令。
另一方面,如果在步骤S96判定该页中已经没有未解释的指令,则在步骤S97由纸排放程序55执行纸排放。纸排放将结合图17进行描述。
程序在步骤S98清除页管理表13上的纸排放页的数据,并在步骤S99清除帧缓存器11的内容。程序随后在步骤S100检查该任务的所有页的纸排放是否完成。如果步骤S100为“否”,则流程返回到步骤S81以等候该文件的随后页的数据接收。
如果步骤S100为“是”,程序在步骤S101清除寄存字符管理表14,且流程返回到步骤S81以等候下一个文件的任务的数据接收。
在步骤S98,程序清除页管理表13上的页寄存。接收管理程序51证实该区已经被清除,并随后命令接收单元6接收数据写入位置的新的极限值。
(字符寄存程序)图15是流程图,用于详细描述字符寄存程序53的操作。
该程序从解释程序52调用。在步骤S111,程序把压缩的字符点图象数据传送到寄存字符数据区15。在此之后,程序在步骤S112把寄存地址、字体号、字符编码等记录到寄存字符管理表14中,从而结束处理。
(打印程序)图16是流程图,用于详细描述打印程序54的操作。该程序也是从解释程序52调用的。
在步骤S121,程序从寄存字符数据区15获得具有与接收字体号41匹配的字体号和与接收字符编码42匹配的字符编码的寄存字符的地址。该程序在步骤S122利用字符展开电路17展开在该地址的压缩点图象,并在步骤S123将展开的字符点图象粘贴在帧缓存器11上的游标位置。随后, 该程序的处理结束。
(纸排放程序)图17是详细描述纸排放程序55的操作的流程图。该程序也是从解释程序52调用的。
在步骤S131,由视频传送电路7把帧缓存器11上的一页的图象转换成视频信号,且该视频信号被提供给引擎单元4。在步骤S132,继续检查受到引擎单元的打印的的纸的排放是否肯定完成了。如果步骤S132为“是”,该程序的处理结束。另一方面,如果步骤S132为“否”,则检查打印机2中是否发生了“堵纸”或“纸用完了”错误。如果这些错误都没有发生,流程返回到步骤S132以形成一个环,从而监测纸排放的完成。
如果发生了“堵纸”或“纸用完了”错误,则在步骤S134在打印机的面板上显示一个表示“堵纸,除去堵塞的纸”或“纸用完了,重新装纸”的消息。在此之后,程序在步骤S135进行等候,直到用户除去了堵塞的纸或重新装上了纸。如果步骤S135为“是”,流程返回到步骤S131,以重新输出用于一个相同的页的视频信号并等候纸排放的完成。
(第一实施例的独特效果)借助上述设置,本实施例的打印系统能够提供以下的独特效果。
(1)在此实施例中,控制单元3的CPU不需要任何高性能的处理器,因为它只进行存储器管理和寄存字符数据的传送,从而降低了制作成本。数据接收和至存储器的写入、压缩数据的展开、视频信号的输出等由硬件电路完成。因此,与只基于图象传送的基于主机的打印机相比,成本的增加得到了减小。
(2)由于主机几乎不进行任何字符图象的映象,主机上的打印机驱动程序的处理时间能够得到缩短。送到其的所有数据都必须是图象数据和字符数据形式的基于主机的打印机,要求长的主机字符映象时间。然而,根据本实施例,主机中的打印所要求的时间能够得到缩短。
(3)由于多数字符能够以字符编码的形式传送,所要传送到打印机的数据的量能够得到减小。送到其的所有数据都必须是图象数据和字符数据形式的基于主机的打印机,必须支撑至打印机的大量的数据传送,因此,打印所需的时间能够得到缩短。
(4)由于控制器单元具有用于一页的帧缓存器,且至纸上的打印是在一页的字符和图象至帧缓存器的映象完成时开始的,不会发生作为基于带处理的打印机所独有的问题的过度运行错误。
(5)基于主机的打印机具有一个小的接收缓存器,且该主机必须相继地把分到带中的图象发送到打印机。在此情况下,由于主机给予数据发送最高优先,主机上的其他应用程序可被锁定。然而,在本实施例中,由于控制器单元具有用于一页的帧缓存器,且至纸上的打印是在一页的字符和图象至帧缓存器上的映象完成时开始的,所以在主机上不发生锁定等。
(第二实施例)以下结合附图描述第二实施例的打印系统。
(系统设置)在第一实施例中,字符和图象数据被映象到RAM9上的帧缓存器11上,且随后作为视频信号而被传递到引擎单元4。然而,在第二实施例中,与第一实施例中不同,字符和图象数据被交替地映象到RAM9上的两个带存储器上,并以视频信号的形式被发送到引擎单元4。
图18是用于说明整个系统的设置的框图。由于多数部件与图1中的相同,所以下面只描述它们的不同。
带A71和B72被指定为RAM9上的两个带存储器,以代替帧缓存器11,且一个图象展开/视频传送电路73代替了视频传送电路7。图象展开/视频传送电路73交替地把带A71和B72上的存储器图象转换成视频信号,并把转换的视频信号发送到引擎单元4。作为电路73的另一功能,当从驱动程序送来的用于一定带的数据是用于一个空白带的数据时,用于该部分的视频信号不被发送。作为电路73又一个功能,当从驱动程序送来的、用于一定带的压缩图象数据只包括单个的图象块时,压缩图象块不被映象到该带上,而是被展开成图象数据并被转换成将要被发送到引擎单元4的视频信号。即,电路73具有三个不同的功能。
在存储在第一实施例中的接收缓存器10中的数据中,字符和图象数据是以页为单位地排列的。然而,在本实施例中,页被分割或分段成16个带,且在各个带中,字符和图象数据得到排列。当然,主机1上的打印机驱动程序把如此排列的数据输出到打印机2。
图19是控制单元3中的图象和字符数据的视频信号输出的原理的说明图。图象和字符数据经过四个路径而被发送到引擎单元4。第一个路径是只用于图象数据的带且没有任何中介带存储器的路径。当只有图象数据的带被展开时,展开的数据被直接发送到打印机引擎。第二和第三路径是包括字符数据的带的路径。这种带的数据被暂时映象到带A71或B72上,并从这些带被交替地被传送到引擎单元。第四个路径是用于空白带的路径,且没有视频信号被传送。以此方式,与图象展开/视频传送电路73的功能相应地提供了这四个路径。
如已经结合图18部分地描述的,主机1上的驱动程序把所要打印分成一个字符部分和该字符部分以外的一个部分。字符部分以外的该部分作为一个图象而被映象到主机1的帧缓存器上。字符和图象数据部分,以分割一页而获得的16个带为单位,而被分别地发送到打印机2。在此情况下,对于字符数据部分,出现在该部分中的字符的压缩点图案被送到或寄存在打印机中,且一个字符编码序列随后作为打印数据而被送到打印机。如在第一实施例中,字符在各个文件中只需要被寄存一次。在一个文件任务的打印完成时,寄存的字符得到清除。
16个分割的带具有相等的高度。即,这些带被相等地分割。
至于跨过两个带的字符,它们的打印编码被从驱动程序发送到打印机2,而它们属于这两个带。
一个大的字符被作为图象而得到映象,且该图象被从驱动程序发送到打印机2。能够由字符展开电路17处理的字符的大小是有限的,且大于该界限的字符被作为图象处理,如上所述。
映象到主机1的帧缓存器上的一个图象,被分成16个带,且从各个带中只提取实际包括一个图象的一个矩形部分。该矩形部分得到压缩,并作为单个的图象块而从驱动程序发送到打印机2。在图19中,只有由图象数据的点线所界定的部分被实际作为图象块传送。
当一定的带同时包括图象块和字符数据时,打印机2的控制单元3利用图象展开电路16展开接收的压缩图象数据19,并将其映象到带A71或B72上。另外,单元3以包括接收的字符数据18的字符编码为单位展开寄存的字符点图象数据,并将展开的图象数据映象到带A71或B72上。字符和图象数据受到“或”处理,且这些数据的“或”被写入到带上。
注意,奇数带的数据被映象到带A71上,且偶数带的数据被映象到带B72上。
在完成了字符和图象数据至带A71上的映象时,至引擎单元4的视频传送命令被输入到图象展开/视频传送电路73。在从电路73输出视频信号期间,字符和图象数据被映象到带B72上。当至带B72的映象已经结束,且前面命令的从带A71的视频输出已经结束时,带B72的视频信号输出命令被输入到图象展开/视频传送电路73。随后,开始字符和图象数据至带A71的映象。
如上所述,一页的打印是通过把字符和图象数据映象到两个带存储器上并从这些存储器输出视频信号而进行的。只包括字符的一个带的数据得到映象,并借助与上述的相类似的处理而得到打印。
在既不包括字符数据也不包括图象数据的空白带的情况下,图象展开/视频传送电路73,在与一个带的高度相对应的期间里,停止至引擎单元4的视频信号发送。
如果用于一定的带的数据只包括一个图象块,该图象块的数据展开命令和至引擎单元4的视频信号输出命令被输入到图象展开/视频传送电路73。即,一个视频信号被直接发送到引擎单元4,而不把图象映象到带存储器上。
图19显示了经过上述四个路径输出的视频信号。一页的打印是借助这些路径的结合而进行的。
图20是将要从主机1送到打印机2的字符和图象数据的指令结构的说明图。与第一实施例的图3的不同,在于带启动指令81被插入在页启动指令32之后。
每页都反复地出现16个带启动指令81。即使对既不包括字符也不包括图象数据的带,也发出带启动指令81。
注意,以类型指令34为单位的指令序列35的结构与第一实施例的图4的相同,且在此省略了对其的详细描述。
图21用于说明安装在控制单元3的ROM8中的程序。安装在第一实施例中的纸排放程序55在图21中被省略了,但解释程序52以带为单位地执行解释和视频输出,以及纸排放。接收管理程序51与字符寄存程序53同第一实施例中的相同,但后面将结合流程图对解释程序和打印程序54的运行进行详细描述。
在第一实施例中,结合图6A和6B,已经描述了在正在把接收数据写入接收缓存器10的情况下指针之间的位置关系。在第二实施例中,至接收缓存器的写入,也是以与第一实施例相同的方式进行的,且对其的详细描述因而被省略了。
工作区12包括页管理表13、寄存字符管理表14、寄存字符数据区15等,且将省略对其的详细描述,因为它们与第一实施例的相同。
(系统的控制步骤)以下结合流程图描述根据本发明的第二实施例的运行。
图22至24是用于说明主机1的打印机驱动程序的操作的流程图。该打印机驱动程序从借助用户采用的应用软件程序产生的文件数据,产生出如上面借助图20所描述的字符和图象打印机指令,并将它们发送到打印机2。当用户从应用软件程序命令文件打印时,主机1中的打印机驱动程序得到启动。
在启动时,驱动程序在主机1的存储器上保证一个一页的帧缓存器(未显示),并同时清除该帧缓存器。在借助驱动程序的文件打印完成时,帧缓存器所用的存储器区得到释放。
驱动程序在步骤S141把一个任务启动指令31发送到打印机2,在步骤S142把一个变量m设定成通过把所要打印的文件的页码加1而获得的值,并在步骤S143把一个变量mp设定成表示所感兴趣的页码的1。该驱动程序随后在步骤S144检查变量mp是否小于变量m。如果步骤S144为“否”,由于对文件的所有页的处理已经完成,驱动程序在步骤S172发送一个任务结束指令,从而结束其处理。
另一方面,如果步骤S144为“是”,驱动程序在步骤S145向打印机2发送一个页启动指令32,在步骤S146保存来自应用程序的第mp页的字符打印命令,并在步骤S147根据它们的打印位置对保存的字符打印命令进行分类。因此,驱动程序在步骤S148把来自应用程序的第mp页的字符打印命令以外的画命令映象到主机1上的帧缓存器上。字符打印命令以外的画命令包括标尺线和画图命令、图象粘贴命令、等等。
在步骤S147根据打印位置对字符打印命令进行分类时,字符打印命令按照它们沿着纸的纵向的打印位置而分类,并随后按照它们沿着纸的横向的打印位置而分类。借助这种分类,字符打印命令被这样地分类—即使得它们的被指令的打印位置在长度方向沿着纵向方向的纸上从上左位置向着下右位置依次排列。
随后,驱动程序在步骤S149把一个变量n设定为17。值“17”是通过把表示纸的大小沿着其长度方向被等分成16个带的值“16”加1而获得的。因此,如果带的数目不是16,n的值也相应地确定。在步骤S150,驱动程序把表示感兴趣的带的变量np设定为1。驱动程序随后在步骤S151检查变量np是否小于变量n。如果步骤S151为“否”,由于它表示对一页的16个带的处理已经完成,变量mp的内容被加1,且流程返回到步骤S144,以开始下一页的带输出处理。
如果步骤S151为“是”,驱动程序在步骤S153把一个带启动指令81发送到打印机2,并在步骤S154拾取字符打印命令—该命令被包括在来自应用程序的保存打印命令的第np个带中。驱动程序随后在步骤S155设定一个值—该值是通过把变量合成中的拾取字符数加1而获得的,并还在步骤S156把表示在一个带中的感兴趣的字符的位置的变量sp设定为1。
注意,在步骤S154所要拾取的字符打印命令包括包含在第np个带中(虽然是部分地包含)的字符。因此,某些字符根据它们的打印位置而被打印在两个带上。
驱动程序在步骤S157检查变量sp是否小于变量s。如果步骤S157为“否”,由于包括在第np带中的字符数据发送处理已经完成,驱动程序在步骤S158启动第np个带的图象数据的发送处理和随后的步骤。即,驱动程序在步骤S158从主机上的帧缓存器提取与第np个带的位置和大小相应的图象,并在步骤S159检查该第np个带是否一个空白带。如果步骤S159为“是”,流程跳到步骤S163而不进行任何处理。
另一方面,如果步骤S159为“否”,驱动程序在步骤S160提取实际包括单个块形式的图象的一个矩形区。驱动程序在步骤S161把表示提取的块的粘贴位置的一个位置移动指令33发送到打印机2,并随后在步骤S162把与类型5相应的指令即图象块指令45、46、47、和48发送到打印机2。当然,该图象块数据是在被压缩之后发送的驱动程序在步骤S163把变量np的内容加1,且随后流程返回到步骤S151,以启动下一个带发送处理。
如果步骤S157为“是”,驱动程序在步骤S164检查第sp个字符是否在此文件中所要打印的第一个字符。如果步骤S164为“是”,驱动程序在步骤S165把一个表示打印位置的位置移动指令33发送到打印机2,并在步骤S166检查在打印机2侧寄存的字符的数目是否已经达到了一个极限, 如果步骤S166为“是”,驱动程序在步骤S167把一个与类型3相应的指令即只字符图象打印指令43和44发送到打印机2。随后,流程进行到步骤S171。
如果步骤S166为“否”,驱动程序在步骤S168把与类型2相应的一个指令—即字符寄存+打印指令41、42、43和44—发送到打印机2,且流程进行到步骤S171。当然,将要发送到打印机2的各个字符的点图象得到了压缩。
如果步骤S164为“否”,由于它表示该打印命令是该字符的第二或随后的打印命令,驱动程序在步骤S169把表示打印位置的一个位置移动指令33发送到打印机2,并还在步骤S170把类型4的类型指令34—即字符编码打印指令41和42发送到打印机2。
在步骤S171,驱动程序把变量sp的内容加1,且流程随后返回到步骤S157,以执行至打印机2的下一个字符数据发送处理。
图25、26、27和28是用于说明解释程序52的操作的流程图。解释程序52也是在打印机2的电力接通时启动的,并随后执行接收单元6写入接收缓存器10的打印指令的解释和纸排放。
在步骤S181,该程序检查用户是否已经关断了打印机2的电力开关。如果步骤S181为“是”,该程序结束其处理。如果步骤S181为“否”,程序在步骤S182检查一页的接收数据是否被存储在接收缓存器10中。如果步骤S182为“否”,流程返回到步骤S181,以形成一个环,从而等候接收来自主机1的数据。
注意,程序在步骤S182查询页管理表13,以检查接收页的有/无。页管理表13,由接收管理程序51通过以上借助第一实施例中的图8的流程图的操作,来进行管理。
如果步骤S182为“是”,程序依次对该页的打印指令进行解释和处理。在步骤S183,程序把变量n设定为17。值“17”是通过把每页的分割带的数目“16”加1而获得的。在步骤S184,程序把变量np设定为1。程序随后在步骤S185检查变量np是否小于变量n。如果步骤S185为“否”,则表示对所有带的处理已经完成,且流程跳到步骤S223,以等候纸排放的结束。
如果步骤S185为“是”,程序在步骤S186检查第np个带是否既不连接字符数据也不包括图象数据,即是一个空白带。如果步骤S186为“是”,则在程序在步骤S187把变量t设定为0之后,流程跳到步骤S193。
如果步骤S186为“否”,程序在步骤S188检查第np个带的数据是否包括字符数据。如果步骤S188为“是”,在步骤S189程序在变量np为奇数时把变量t设定为1,或者在变量np为偶数时把变量t设定为2。随后,流程跳到步骤S193。
如果步骤S188为“否”,程序在步骤S190检查第np个带的数据是否包括多个图象块数据。如果步骤S190为“是”,在步骤S189程序在变量np为奇数时把变量t设定为1,或者在变量np为偶数时把变量t设定为2。随后,流程跳到步骤S193。注意在以上结合图22描述的驱动程序的操作中,一个以上的图象块从未出现在单个的带中。
如果步骤S190为“否”,它表示单个的图象块以用于第np个带的数据的形式出现,且程序在步骤S192把变量t设定为3。随后流程进行到步骤S193。
程序在步骤S193检查变量t是1还是2。如果步骤S193为“是”,程序从标头数据开始依次解释包含在第np个带中的字符和图象块数据,并在步骤S194和随后的步骤中把它们映象到带A71和B72中。在步骤S194,程序在变量t为1时清除带A71,或者在变量t为2时清除带B72。程序随后在步骤S195检查所要解释的指令是否一个位置移动指令33。如果步骤S195为“是”,程序在步骤S196移动游标。该“游标”是表示字符或图象在带存储器上的映象位置的想象指针。更具体地说,这种“游标”是表示工作区12上的X和Y坐标的变量。游标位置以各个带的左上端为原点。从驱动程序送来的位置移动指令33,是根据以各个带的左上端为原点的相对位置而得到发送的。即,位置移动指令33并不以页的左上端作为原点。在步骤S196之后,流程跳到步骤S208。
如果步骤S195为“否”,程序在步骤S197检查该指令是否类型1的类型指令34。如果步骤S197为“是”,在字符寄存程序53在步骤S198进行了字符寄存之后,流程跳到步骤S208。由于该字符寄存与上面借助第一实施例的图15的流程图描述的相同,所以在此省略了对其的详细描述。
如果步骤S197为“否”,程序在步骤S199检查该指令是否为类型2的类型指令34。如果步骤S199为“是”,在步骤S200进行字符寄存,且在步骤S201进行打印。随后流程跳到步骤S208。在步骤S200的字符寄存与在上述步骤S198进行的相同。另一方面,在步骤S201的打印是借助打印程序54进行的,且将结合图29进行详细描述。
如果步骤S199为“否”,程序在步骤S202检查该指令是否为类型3的类型指令34。如果步骤S202为“是”,在步骤S203只打印了字符图象之后,流程跳到步骤S208。
如果步骤S202为“否”,程序在步骤S204检查该指令是否为类型4的类型指令34。如果步骤S204为“是”,在步骤S205进行了打印之后,流程跳到步骤S208。注意,在步骤S205的打印与在步骤S201的相同。
如果步骤S204为“否”,程序在步骤S206检查该指令是否为类型5的类型指令34。如果步骤S206为“是”,在步骤S207程序利用图象展开电路16展开压缩的图象数据,并把展开的图象块粘贴到带71或72上。在此情况下,如果变量t为1,程序把展开的数据粘贴到带A71上;如果变量t为2,程序把它粘贴到带B72上。随后流程进行到步骤S208。
在步骤S196、S198、S201、S203、S205或S207之后,或者如果步骤S206为“否”,流程进行到步骤S208。在步骤S208,程序检查为第np个带接收的数据是否仍然包括未解释的指令。如果步骤S208为“是”,流程返回到步骤S195,以解释未解释的指令。
如果步骤S193或步骤S208为“否”,流程跳到图27的步骤S209。在步骤S209至S222,以带为单位执行至引擎单元4的视频信号输出处理。
在步骤S209,程序检查变量np是否为1。即,程序检查感兴趣的带是否一定页的第一个带。如果步骤S209为“是”,程序在步骤S21向引擎单元4提供纸送进启动命令,并在步骤S211检查引擎单元4是否已经检测到“纸用完了”状态。如果步骤S211为“是”,程序进行等候,直到用户在步骤S212加上了纸,且随后,流程跳到步骤S215。如果步骤S211为“否”,即有纸,流程跳到步骤S215。
另一方面,如果在步骤S209判定感兴趣的带不是第一个带,程序在步骤S213等候前一个带的数据的视频传送的结束。在此等候期间,程序始终在步骤S214监测是否发生了堵纸。如果发生了堵纸,流程从步骤S214跳到步骤S228,以从堵纸进行恢复。
如果步骤S213为“是”,即如果前一带的数据视频传送完成,程序在步骤S215检查变量t是否为0。如果步骤S215为“是”,在程序在步骤S216命令图象展开/视频传送电路73输出一个空白带之后,流程跳到步骤S222。
如果步骤S215为“否”,程序在步骤S217检查变量t是否为1。如果步骤S217为“是”,在程序在步骤S218命令图象展开/视频传送电路73从带A71输出一个视频信号之后,流程跳到步骤S222。
如果步骤S217为“否”,程序在步骤S219检查变量t是否为2。如果步骤S219为“是”,在程序在步骤S220命令图象展开/视频传送电路73从带B72输出一个视频信号之后,流程跳到步骤S222。
如果步骤S219为“否”,程序在步骤S221命令图象展开/视频传送电路73在展开压缩图象数据的同时输出包括在第np个带中的单个图象块的一个视频信号,且随后流程进行到步骤S222。
在步骤S222,程序把变量np加1,且流程返回到步骤S185,以开始把下一个带数据映象到带存储器上并进行视频信号输出处理。
如果步骤S185为“否”,所有带的输出处理都已经完成,且程序在步骤S223和随后的步骤等候打印的纸的排放的完成。在图28的步骤S223,程序检查纸排放是否完成。如果步骤S223为“否”,程序在步骤S227检查是否发生了堵纸。如果步骤S227为“否”,流程返回到步骤S223,以形成一个环,从而等候纸排放的完成。
如果程序在步骤S223判定纸排放已经完成,程序在步骤S224清除页管理表13上的纸排放页的描述,并在步骤S225检查任务的结束—即是否单个文件的所有页都已经被排放。如果步骤S225为“是”,程序在步骤S226清除寄存字符管理表14,且流程返回到步骤S181,以等候下一个文件任务的数据接收。
如果步骤S225为“否”,流程也返回到步骤S181,以等候该文件的随后的页的数据接收。
另一方面,如果步骤S227为“是”,程序在步骤S228在面板上显示一个堵纸消息,并在步骤S229进行等候,直到用户除去了堵塞的纸。如果纸已经被除去,流程返回到步骤S181,且程序重新进行接收的页数据至带上的映象、视频输出、以及纸排放,这些都已经在上面进行了描述。
注意,程序在步骤S224清除页管理表13上的页寄存。接收管理程序51证实该区域已经被清除,并随后命令接收单元6接收数据写入位置的新的极限值。
图29是用于详细描述打印程序54的操作的流程图。该程序也是从解释程序52调用的。
在步骤S231,程序检索寄存字符管理表14以获得其字体号和字符编码匹配的寄存字符在寄存字符数据区15上的地址。在步骤S232,程序利用字符展开电路17展开字符点图象数据。在步骤S233,程序检查所要粘贴的字符是否在带边界上。如果步骤S233为“是”,程序在步骤S234执行字符图象的边界值处理并精细地调节游标位置。随后,流程进行到步骤S235。如果步骤S233为“否”,流程也进行到步骤S235。
在步骤S234的边界值处理中,只有包括在当前带的区域中的一个部分被从一个字符的字符图象中提取出。由于只有这种小的图象部分被粘贴到带区域中,游标位置必须也得到精细的调节,以移动到该带区中的一个位置。
例如,假定一定的字符从当前带的上边界延伸了其字符框的约上半部分。由于游标位置位于该字符框的左上端,它此时出现在该带区之外。边界值处理只提取位于该带区中的字符框的下半图象。其结果,下半字符的字符框的左上端位置变成了新的游标位置。这种位置位于该带区的上边界处。这是“游标位置的精细调节”。
另外,当一个字符框处于带区的四个角之一时,包括在该带区中的一个字符图象部分也类似地得到提取,且游标位置得到精细调节。
在步骤S235,程序把展开的字符点图象粘贴在带A71或B72上的游标位置。如果图25中描述的变量t为1,该点图象被粘贴到带A71上;如果变量t是2,图象被粘贴到带B72上。最后,该程序结束其处理。
以下结合图30至33描述图象展开/视频传送电路73的操作。虽然图象展开/视频传送电路73是一个硬件电路且不是程序,其操作将借助图31、32和33的流程图进行描述。如上所述,解释程序52命令图象展开/视频传送电路73输出一个视频信号给引擎单元4。图象展开/视频传送电路73的处理包括三个不同的处理操作,即空白带处理,从带A71或B72的视频信号输出处理,以及从压缩图象块数据的压缩图象数据的直接展开以及展开数据的视频信号输出处理。
图象展开/视频传送电路73包括用于在压缩图象数据被从图象块数据展开之后存储展开的一行数据的行缓存器(未显示)。电路73根据存储在该行缓存器中的数据产生一种视频信号,并将其输出到引擎单元4。
以下结合图30说明图31、32和33的流程图中采用的变量。
一个变量h表示带的高度,它对应于输出视频信号时的行数。变量1表示带的宽度,它是字节为单位而设定。即,与8的倍数相应的点被转换成视频信号的黑和白位,并被输出。
变量ha表示从一定带的第一行至一个图象块的顶空白。即,变量ha表示了不需要传送视频信号的行数。变量hb表示了一个图象块的高度,即块的行数。
变量1a是图象块的左空白。在此部分中,不需要传送视频信号。变量1b表示一个图象块的宽度,它也是以字节为单位设定的。即,与8的倍数相应的数目的点被转换成视频信号的黑和白位,并被输出。
主机1的驱动程序的上述操作, 并不表明带或图象块的宽度被调节到“以字节为单位的大小”,但这种至给定单位的调节对于利用硬件电路实现高速图象输出是必要的。驱动程序在这种条件下把打印指令发送到打印机2。
以下结合图31、32和33来描述图象展开/视频传送电路73的操作。
该电路在打印机2的电力开关被接通之后立即开始操作。在步骤S241,它检查用户是否已经关断了打印机2的电力开关。如果步骤S241为“是”,该电路结束操作。如果步骤S241为“否”,则在步骤S242检查该电路是否已经接收到了来自解释程序52的视频信号输出命令。如果步骤S242为“否”,流程返回到步骤S241,以形成一个环,从而等候来自解释程序52的命令。
如果步骤S242为“是”,则在步骤S243把变量h设定为一个带的高度,即该带的总行数。该值是与来自解释程序52的视频信号输出命令一起给出的。在步骤S244,检查来自解释程序52的命令是否一个空白带输出命令。如果步骤S244为“是”,则在步骤S245把变量t设定为0,且流程跳到步骤S250。
如果步骤S244为“否”,在步骤S246把变量1设定为带的宽度值。该值也是与来自解释程序52的视频信号输出命令一起给出的。随后在步骤S247检查来自解释程序52的命令是否从带A71或B72的视频信号输出命令。如果步骤S247为“是”,变量t被设定为1,且随后流程跳到步骤S250。
如果步骤S247被判定为“否”,接收的命令表明在带中出现有单个的图象块,且压缩图象块数据借助图象展开/视频传送电路73而得到展开,以输出一个视频信号。在步骤S249,变量t被设定为2,变量ha被设定为块的顶空白,且变量hb被设定为块的高度即总行数,变量1a被设定为块的左空白,且变量1b被设定为块块的宽度。这些值也是与来自解释程序52的视频信号输出命令一起给出的。随后流程进行到步骤S250。
在步骤S250,变量hp被设定为0。变量hp被作为表示将要从其输出视频信号的带上的行的位置的计数值。随后在步骤S251检查变量t被设定为0还是1。如果变量t是0或1,则在步骤S252检查电路是否已经从引擎单元4接收到了一个视频信号输出请求。如果步骤S252为“否”,则形成一个环以等候该请求。如果接收到了视频信号输出请求,则在步骤S253检查变量t是否为1。如果步骤S25 3为“否”,流程跳到步骤S255。如果步骤S253为“是”,在步骤S254在带A71或B72上的第hp行被转换成视频信号,且该视频信号被输出到引擎单元4。随后,流程进行到步骤S255。注意,在步骤S254,来自带A71或B72的输出命令是与来自解释程序52的视频信号输出命令一起给出的。
在步骤S255,变量hp被加1。在步骤S256,检查变量hp是否小于变量h。如果步骤S256为“是”,即如果带仍然包括仍然有需要输出的视频信号的行,流程返回到步骤S252,以输出下一个行的视频信号。
如果步骤S256为“否”,即,如果带中的所有行的视频信号都得到了输出,则在步骤S257表示命令的带的视频信号输出的结束的信息被提供到解释程序52。该信息还包括空白带输出处理的完成。随后流程返回到步骤S241,以等候来自解释程序52的下一个视频信号输出命令。
如果步骤S251为“否”,接收的命令是来自带中的图象块数据的视频信号输出命令。在此情况下,在图33的步骤S258,块数据中的第一行的压缩图象数据被展开且展开的数据在步骤S258被置于图象展开/视频传送电路73的内部行缓存器中。预先展开压缩数据能够防止在输出视频信号时展开数据的视频输出时序延迟。
随后,在步骤S259,形成了一个环,以等候来自引擎单元4的视频信号请求。如果接收到该视频信号请求,则在步骤S260检查变量hp是否小于变量ha。如果步骤S260为“是”,流程跳到步骤S267而不进行处理。这意味着没有视频信号被送到块的顶空白部分。
如果步骤S260为“否”,在步骤S261检查变量hp是否小于变量ha和hb之和。如果步骤S261为“否”,流程跳到步骤S267而不发送任何视频信号。这意味着如果带中的块以下的部分是空白,即存在底空白,则不为此部分发送视频信号。
如果步骤S261为“是”,在步骤S262没有与变量1a的大小相应的视频信号发送。随后,在步骤S263,在图象展开/视频传送电路73的内部行缓存器上的数据被转换成与变量1b的大小相应的视频信号,且该视频信号被输出到引擎单元4。在步骤S264,变量hbp被设定为1与通过从变量hp减掉变量ha而获得的值之和。
随后,在步骤S265检查变量hbp是否小于变量hb。如果步骤S265为“否”,即如果块中的所有行的视频信号都被输出,流程跳到步骤S267而不作任何处理。
如果步骤S265为“是”,即如果该块包括仍然有要输出的视频信号的行,在步骤S266由块数据中的变量hbp指定的第hbp行的压缩图象被展开,且展开的数据被置于图象展开/视频传送电路73的内部行缓存器中。随后流程进行到步骤S267。
在此处理中,预先展开压缩数据同样能够防止在输出视频信号时展开数据的视频输出引起的时序延迟。
在步骤S267,变量hp被加1,且随后在步骤S268检查变量hp是否小于变量h。如果步骤S268为“是”,流程返回到步骤S259,以继续带中的下一行的视频信号输出处理。
如果步骤S268为“否”,在流程跳到图32中的步骤S257以把表示视频信号输出的结束的信息提供给解释程序52之后,流程返回到步骤S241,以等候来自解释程序52的下一个视频信号输出命令。
在步骤S257,从图象展开/视频传送电路73向解释程序52提供表示视频信号输出结束的信息直到解释程序52给图象展开/视频传送电路73提供下一个带的视频信号输出命令的间隔,必须是非常短的。如果该间隔变成长的时间滞后,由于在此间隔期间没有视频信号输出,在打印出的纸上在该行的部分上就形成了一个白条。即在相邻的带之间形成了一个空隙。因此,在解释程序52的纸排放时相邻带之间的处理必须非常迅速。
(第二实施例的独特效果)借助上述设置,可获得以下的效果。
(1)在此实施例中,由于用带存储器代替的帧缓存器且打印是借助带处理而进行的,存储器容量能够得到减小,且设备的制作成本能够得到降低。
(2)在此实施例中,打印是在接收缓存器接收到了一页的数据之后开始的。因此,由于本实施例不象基于主机的打印机那样把最高优先给予数据发送,因而能够防止主机上的其他应用程序被锁定。
(3)在本实施例中,由于主机上的驱动程序把实际包括带区中的一个图象的一个块(矩形部分)—而不是具有带本身的大小的图象数据—发送给了打印机,所要发送的数据的量能够得到减小。
(4)在本实施例中,当存在空白带时,由于控制器单元命令图象展开/视频传送电路不发送任何视频信号—而不是把该空白部分映象到带存储器上并把视频信号发送到引擎单元,CPU的负荷能够得到减小。
(5)在本实施例中,当带包括没有字符的图象时,控制器单元只命令压缩图象数据的展开、视频信号的转换、以及视频信号至引擎单元的输出,而不是把图象映象到带存储器上并把视频信号输出到引擎单元。因此,CPU的负荷能够得到减小。
(第三实施例)以下结合附图描述第三实施例。
(系统设置)在第二实施例中,一页被等分成16个带。然而,在第三实施例中,带的数目和各个带的高度是可变设定的,且当图象数据包括以带为单位的重复图象图案时,驱动程序向打印机发送一个带重复指令,从而减小所要发送的图象数据量。
然而,由于本实施例的组成元件、程序操作等与第二实施例的几乎相同,以下将主要描述其不同点。
由于块设置与第二实施例的图18中描述的相同,对其的详细描述将被省略。在第三实施例中,带高度在图18中的RAM9上分配的带A71或B72的带高度内得到了任意的设定。
图34是在本实施例中的打印的原理的说明图。
主机1上的驱动程序把所要打印的文件分成字符和图象数据,并象在第一和第二实施例中那样把它们发送到打印机2。
在本实施例中,驱动程序,在它把图象数据送到打印机2之前,在映象到主机1上的帧缓存器上的一页的图象中以带为单位地进行图案识别,并检查带是否表示重复的图案。在此情况下,带高度可被任意改变。至于图案识别技术,由于对于本领域的技术人员来说各种方法是已知的,所以将省略对其的详细描述。
在图34的左图象中,由包括波形图的图象A、空白带和包括链形图的图象B的带组成的带组,出现了三次。在此情况下,对于出现于第二和随后次的图象A和B的带,表示这些带数据与第一次出现的图象A和B的带数据相同的打印指令被发送到打印机2。字符数据部分的处理与第二实施例中的相同。
图34所示的例子在实际文件中是罕见的,但图35中重复的图象带的例子则在实际文件中是经常出现的。
在此例中,假定只有表的一个带标尺的行图象部分—从其除去了字符部分。如图35的左图象所示,该图象可被分成第一至第六带,第一、第二和第六带的图象数据作为打印指令而被直接发送到打印机2,但判定第三、第四和第五带包括第二带中的重复图象,且命令“第二带重复”的打印指令被发送到打印机2。
图36是从主机1传送到打印机2的字符和图象数据的指令结构的说明图。图36显示的指令结构基本上与第二实施例的图20中显示的相同,只是在带启动指令81之后加上了带高度指令82和重复带数目83。
任意数目的带启动指令81在每页中重复出现。带高度指令82也是以带为单位而被任意设定在带A71或B72的带高度内的。重复带数目83表示了出现在该页中的带的顺序,且1表示该页的开头的带。当该带不包括任何重复图象即新的图象时,-1被设定为带号。
安装在控制单元3的ROM8中的程序的名称与第二实施例的图2中显示的相同。这些程序的操作基本上与第二实施例中的相同,只是解释程序52除外。由于接收单元6的操作与第一实施例中的相同,且图象展开/视频传送电路73的操作与第二实施例中的相同,将省略对其的详细描述。解释程序52的操作基本上与第二实施例中的相同,并将在后面结合图40至43的流程图而进行详细描述。
主机1上的驱动程序的操作基本上与第二实施例的相同,但将在下面结合图37、38、39A和39B的流程图而得到描述。
(系统控制)下面借助流程图描述根据本发明的第三实施例的操作。驱动程序和解释程序52与第二实施例中的不同操作将在下面得到描述。
图37、38、39A和39B是用于说明主机1上的打印机驱动程序的操作的流程图。打印机驱动程序,从用户采用的应用软件程序产生的文件数据,产生上面借助图36描述的字符和图象打印指令,并把它们发送到打印机2。当用户从应用软件程序命令文件打印时,打印机驱动程序在主机1中得到启动。
在启动时,驱动程序在主机1的存储器上保持一页的帧缓存器(未显示),并同时清除该帧缓存器。在驱动程序的文件打印完成时,被用作帧缓存器的存储区得到释放。
驱动程序在步骤S271把一个任务启动指令31发送到打印机2,在步骤S272把该值设定为所要打印的文件的页数之和并把一个变量m设定为1,并在步骤S273把一个变量mp设定为1。驱动程序在步骤S274检查变量mp是否小于变量m。如果步骤S274为“否”,对文件的所有页的处理完成,且驱动程序在步骤S311发送一个任务结束指令,从而结束其处理。
如果步骤S274为“是”,驱动程序在步骤S275把一个页启动指令32发送到打印机2,在步骤S276保存来自应用程序的第mp页的字符打印命令,在步骤S277根据保存的字符打印命令的打印位置对它们进行分类,并在步骤S278把来自应用程序的第mp页的字符打印命令以外的画命令映象到主机1上的帧缓存器上。字符打印命令以外的画命令包括带标尺的行和画图命令、图象粘贴命令等。
在步骤S277根据字符打印命令的打印位置而对它们进行分类时,这些字符打印命令根据它们沿着纸上的长度方向的打印位置而得到分类,并随后根据它们沿着纸上的宽度方向的打印位置而得到分类。当一个A4纸被置于成象位置时,命令从上向下位置地得到分类,并随后被从左向右分类。
驱动程序借助图案识别来分析帧缓存器的内容,以在步骤S279检查映象的图象是否包括以带为单位的重复图象图案,并随后在步骤S280检查是否发现了重复图案。如果步骤S280为“否”,由于一页的图象被等分成16个带,在步骤S281适当的值被置入带管理表中由带号、带高度、和当重复图案时采用的带号组成的列中。特别地,当重复一个图案时采用的带号的列被设定为-1。随后,流程跳到图38的步骤S285。
如果步骤S280为“是”,在步骤S282和步骤S283,其带高度超过了最大高度即带A71或B72或高度的一个带被这样地分割—即使得分割的带高度等于或小于最大带高度。随后,流程进行到步骤S284。如果步骤S282被判定为“否”,流程也进行到步骤S284。在此情况下,由于带高度没有被设定为相等而是以带为单位的任何值,在步骤S284带管理表中由带号、带高度、以及当重复一个图案时采用的一个带号组成的列被设定了适当的值。随后流程进行到步骤S285。
注意带管理表被分配在主机1,以方便驱动程序产生与带有关的打印指令,并包括三个项一即带号、带高度、在重复一个图象图案时采用的号码列。
参见图38,在步骤S285驱动程序把变量n设定为一个值—它是通过给带的总数加1而获得的。驱动程序在步骤S286把变量np设定为1,并在步骤S287检查变量np是否小于变量n。如果步骤S287为“否”,这意味着一页中所有带的处理都已经完成,且驱动程序在步骤S288把变量mp加1。随后,流程返回到步骤S274以启动对下一页的带输出处理。
如果步骤S287为“是”,驱动程序在步骤S289把一个带启动指令81,在步骤S290把一个带高度指令82,且在步骤S291把一个重复带数指令83发送到打印机2。如果当前带不包括任何重复图象,指令83被设定为-1,并得到发送。
驱动程序在步骤S292从来自应用程序的保存的打印命令拾取包括在第np个带中的字符打印命令,在步骤S293把一个变量s设定为一个值—该值是通过把拾取字符的数目加1而获得,且在步骤S294把一个变量sp设定为1。
注意,将要在步骤S292拾取的字符打印命令包括包括在第np个带中(虽然是部分地)的那些字符。因此,某些字符根据它们的打印位置而被打印在两个带上。
驱动程序在步骤S295检查变量sp是否小于变量s。如果步骤S295为“否”,则判定包括在第np个带中的所有字符数据都已经得到发送,且在步骤S296开始对第np个带的图象数据的发送。即驱动程序在步骤S296检查当前带是否一个重复带。如果步骤S296为“是”,流程跳到步骤S302而不进行任何处理。
如果步骤S296为“否”,驱动程序在步骤S297从主机1上的帧缓存器提取与第np个带的大小和位置相应的图象,并在步骤S298检查第np个带是否一个空白带。如果步骤S298为“是”,流程跳到步骤S302而不进行任何处理。
如果步骤S298为“否”,驱动程序在步骤S299提取实际包括作为单个块的一个图象的一个矩形区。驱动程序在步骤S300把表示该块的粘贴位置的一个位置移动指令33发送到打印机2,并在步骤S301把类型5的一个指令序列即图象块指令45、46、47和48发送到打印机2。当然,图象块数据是在压缩的情况下发送的驱动程序在步骤S302把变量np的内容加1,且随后流程返回到步骤S287,以开始下一个带发送处理。
如果步骤S29 5为“是”,驱动程序在步骤S303检查第sp个字符是否在此文件中所要打印的第一个字符。如果步骤S303为“是”,驱动程序在步骤S304把表示打印位置的一个位置移动指令33发送到打印机2,并在步骤S305检查打印机2侧上的寄存字符的数目是否已经达到了一个极限,如果步骤S305为“是”,驱动程序在步骤S307把类型3的一个指令序列即只字符图象打印指令43和44发送到打印机2,且流程跳到步骤S310。
如果步骤S305为“否”,驱动程序在步骤S306把类型2的一个指令序列即字符寄存+打印指令41、42、43、和44发送到打印机,且流程跳到步骤S310。当然,所要发送到打印机2的各个字符的点图象得到了压缩。
如果步骤S303为“否”,由于它表示该打印命令是该字符的第二或随后的打印命令,驱动程序在步骤S308把表示该打印位置的一个位置移动指令33发送到打印机2,且还在步骤S309把一个类型4的指令序列即字符编码打印指令41和42发送到打印机2。
驱动程序在步骤S310把变量sp加1,且流程返回到步骤S295,以把下一个字符数据发送到打印机2。
图40至43是用于说明解释程序52的操作的流程图,在打印机2的电力接通时,解释程序52也开始执行接收单元6写入接收缓存器10的打印指令的解释和纸排放。
程序在步骤S321检查用户是否关断了打印机2的电力开关。如果步骤S321为“是”,程序结束其处理。如果步骤S321为“否”,驱动程序在步骤S322检查接收的一页的数据是否被存储在接收缓存器10中。如果步骤S322为“否”,流程返回到步骤S321,以形成一个环,从而等候从主机1接收数据。
注意,程序在步骤S322查询页管理表13,以检查有/无接收到的页。页管理表13,是由接收管理程序51,通过上面借助第一实施例中的图9和10的流程图所描述的操作,而进行管理的。
如果步骤S322为“是”,程序依次解释和处理该页的打印指令。程序在步骤S323把一个变量n设定为“带的总数+1”,在步骤S324把一个变量np设定为1,并在步骤S325把一个变量hb设定为带高度。程序随后在步骤S326检查变量np是否小于变量n。如果步骤S326为“否”,则表明对所有带的处理完成,且流程跳到步骤S368,以等候纸排放的完成。
如果步骤S326为“是”,程序在步骤S327检查第np个带是否既不包括字符数据也不包括图象数据,即是一个空白带。如果步骤S327为“是”,程序在步骤S328把变量t设定为0。随后流程跳到步骤S344。
如果步骤S327为“否”,程序在步骤S329检查第np个带是否包括字符数据。如果步骤S329为“是”,在步骤S330程序在变量np为奇数的情况下把变量t设定为1,“或”在变量np为偶数的情况下把变量np设定为2。随后,流程跳到步骤S334。
如果步骤S329为“否”,程序在步骤S331检查用于第np个带的数据是否包括多个图象块数据。如果步骤S331为“是”,程序在步骤S322在变量np为奇数的情况下把变量t设定为1,或者在变量np为偶数的情况下把变量t设定为2。随后,流程跳到步骤S334。注意,在以上结合图37、38、39A和39B描述的驱动程序操作中,在单个带中从来没有出现过多个图象块。
如果步骤S331为“否”,则表明存在有单个的图象块,作为第np个带的数据。程序在步骤S33把变量t设定为3,且流程进行到步骤S334。
程序在步骤S334检查变量t是否1或2。如果步骤S334为“是”,程序在步骤S335和随后的步骤从标头数据依次解释包括在第np个带中的字符和图象块数据,并把它们映象到带A71和B72上。在步骤S335,程序在变量t为1的情况下清除带A 71或者在变量t为2的情况下清除带B72。
程序然后在步骤S336检查当前带的重复带数指令83是否为-1以外的值。如果步骤S336为“否”,流程进行到步骤S338而不进行处理;否则,在步骤S337进行处理且随后流程进行到步骤S338。在步骤S337,程序利用图象展开电路16把借助重复带数目指定的带中的单个图象块粘贴到带存储器上。在此情况下,图象块被粘贴到带A71上;如果变量t为2,图象块被粘贴到带B72上。
该程序随后在步骤S338检查所要解释的指令是否位置移动指令33。如果步骤S338为“是”,程序在步骤S339移动游标。“游标”是表示字符或图象在带存储器上的映象位置的一个想象指针。更具体地说,这种“游标”是表示工作区12上的X和Y坐标的变量。该游标位置以各个带的左上端作为原点。从驱动程序发送来的位置移动指令33是根据以各个带的左上端作为原点的相对位置而传送的。即,位置移动指令33并不以页的左上端作为原点。在步骤S339之后,流程跳到步骤S351。
如果步骤S338为“否”,程序在步骤S340检查该指令是否类型1的类型指令34。如果步骤S340为“是”,则在步骤S341借助字符寄存程序53进行字符寄存,且流程跳到步骤S351。由于该字符寄存与上面借助第一实施例的图15的流程图描述的相同,所以省略了对其的详细描述。
如果步骤S340为“否”,程序在步骤S342检查该指令是否类型2的类型指令34。如果步骤S340为“是”,在步骤S343进行了字符寄存且在步骤S344进行了打印之后,流程跳到步骤S351。在步骤S343的字符寄存与在上述步骤S341的相同。另一方面,在步骤S344的打印是由打印程序54进行的。
如果步骤S342为“否”,程序在步骤S345检查该指令是否类型3的类型指令34。如果步骤S345为“是”,则在步骤S346只进行字符图象的打印,且流程跳到步骤S351。
如果步骤S345为“否”,程序在步骤S347检查该指令是否类型4的类型指令34。如果步骤S347为“是”,在步骤S348进行打印,且流程跳到步骤S351。在步骤S348的打印与上述的在步骤S344的相同。
如果步骤S347为“否”,程序在步骤S349检查该指令是否类型5的类型指令34。如果步骤S349为“是”,在步骤S350程序利用图象展开电路16展开压缩图象数据,并把展开的图象块粘贴到带A71或B72上。在此情况下,如果变量t为1,程序把展开的数据粘贴到带A71上;如果变量t为2,程序把它粘贴到带B72上。在此之后,流程跳到步骤S351。
在步骤S339、S341、S344、S346、S348或S350之后,或者如果步骤S349为“否”,流程进行到步骤S351。在步骤S351,程序检查第np个带的接收数据是否仍然包括未解释的指令。如果步骤S351为“是”,流程返回到步骤S338以解释未解释的指令。
如果步骤S334或步骤S351为“否”,流程跳到图42的步骤S352。
在步骤S352至S367,至引擎单元4的视频信号输出处理以带为单位地进行。
程序在步骤S352检查变量np是否为1。即,程序检查感兴趣的带是否一定的页的第一个带。如果步骤S352为“是”,程序在步骤S353把一个纸送进启动命令送到引擎单元4,并在步骤S354检查引擎单元4是否已经检测到一个纸用完了状态。如果步骤S354为“是”,程序在步骤S355进行等候,直到用户加入了纸,且流程跳到步骤S358。如果步骤S354为“否”,即如果纸已经设好,流程跳到步骤S358。
另一方面,如果在步骤S352判定感兴趣的带不是第一个带,程序在步骤S356等候前一带的视频数据发送的结束。在此等候期间,程序在步骤S357始终监测着是否发生了堵纸。如果发生了堵纸,流程从步骤S357跳到步骤S373,以从堵纸进行恢复。
如果步骤S356为“是”,即如果前一带的视频数据发送已经完成,程序在步骤S358检查变量t是否为0。如果步骤S358为“是”,程序在步骤S359把空白带输出处理命令与作为带高度的变量hbp的值一起发送到图象展开/视频传送电路73,且随后流程跳到步骤S367。
如果步骤S358为“否”,程序在步骤S360检查变量t是否为1。如果步骤S360为“是”,程序在步骤S361把来自带A71的一个视频信号输出命令与作为带高度的变量hbp的值一起送到图象展开/视频传送电路73,且随后流程跳到步骤S367。
如果步骤S360为“否”,程序在步骤S362检查变量t是否为2。如果步骤S362为“是”,程序在步骤S363把来自带B72的一个视频信号输出命令与作为带高度的变量hbp的值一起送到图象展开/视频传送电路73,且随后流程跳到步骤S367。
如果步骤S362为“否”,程序在步骤S364检查重复带数目是否为-1以外的值。如果步骤S364为“是”,在步骤S365程序命令图象展开/视频传送电路73输出一个视频信号并同时展开在由该重复带数目指定的、具有作为带高度的变量hbp的值的一个带中的一个单个图象块的压缩图象数据。
如果步骤S364为“否”,在步骤S366程序命令图象展开/视频传送电路73输出一个视频信号并同时展开包括在具有作为带高度的变量hbp的值的第np个带中的单个图象块。随后,流程进行到步骤S367。
在步骤S367,程序把变量np加1,且流程随后返回到步骤S326,以开始把下一个带数据映象到带存储器并进行视频信号输出处理。
如果步骤S326为“否”,所有带的输出处理都已经完成,且程序在步骤S368和随后的步骤等候打印的纸的排放的完成。程序在步骤S368检查纸排放是否完成。如果步骤S368为“否”,程序在步骤S372检查是否发生了堵纸。如果步骤S372为“否”,流程返回到步骤S368以形成一个环,从而等候纸排放的完成。
如果程序在步骤S368判定纸排放已经完成,程序在步骤S369清除在页管理表13上的纸排放页的描述,并在步骤S370检查任务的结束即是否单个文件的所有页都已经被排放。如果步骤S370为“是”,程序在步骤S371清除寄存字符管理表14,且流程返回到步骤S321以等候下一个文件任务的数据接收。
另一方面,如果步骤S370为“否”,流程也返回到步骤S321,以等候该文件的随后的页的数据接收。
如果步骤S372为“是”,程序在步骤S373在面板上显示堵纸消息,并在步骤S374进行等候,直到用户除去了堵纸。如果纸已经被除去,流程返回到步骤S321,且程序重新执行接收的页数据至带上的映象、视频输出以及纸排放—这些都已经在前面进行了描述。
注意,程序在步骤S369清除页管理表13上的页寄存。接收管理程序51证实该区已经被清除,并随后命令接收单元6接收数据写入位置的新的极限值。
(第三实施例的独特效果)(1)在本实施例中,驱动程序分析帧缓存器上的图象图案,且如果检测到以带为单位重复出现在的相同图案,驱动程序只把一个重复指令作为这种重复带部分的数据进行发送。随后,所要发送的图象数据量减小了。另外,发送时间能够得到缩短。另外,打印机侧上的接收缓存器的存储器容量能够得到减小。
(2)如上面利用图35所描述的,本实施例对于打印经常包括重复图案的表文件等是有效的。
(第四实施例)以下结合附图描述第四实施例。
(系统设置)在第四实施例中,当需要打印不能被存储在打印机的接收缓存器中的巨大图象时,接收缓存器被分成一些部分,且在一个分割部分中的图象部分得到输出而同时另一部分接收并存储另一图象部分,从而以此代替第一至第三实施例中描述的打印控制方法,从而通过重复上述操作而打印巨大的图象。
更具体地说,本实施例的系统是基于第三实施例的。在一个文件的所有数据都被作为图象数据而得到处理,打印机的大部分的RAM区被用作接收缓存器,且接收缓存器上用于一个巨大的图象页的数据直接受到图象展开和至图象展开/视频传送电路中的引擎单元的视频传送,从而打印出包括巨大的图象页的文件。由于第四实施例的组成元件、程序操作等基本与第三实施例的相同,所以在此主要描述它们的不同。
在以下的描述中,第三实施例中的打印模式将被称为“合成模式”。这是由于字符和图象数据在主机上分别地得到处理,且字符和图象数据得到“或”(合成)处理并输出到打印机上。用于输出巨大的图象的模式将被称为“简化的同步模式”。这是由于当一页的图象数据很大或者具有更大的量时,打印是通过被动地同步同步重复从主机以带为单位数据发送并在接收数据时把纸送进打印机,而得到实现的。
图59A、59B和60是用于说明简化的同步模式的原理的说明图。假定本实施例的打印机包括2MB的作为接收缓存器的存储器。图59A显示了即使在压缩的情况下仍然超过了接收缓存器的容量的巨大的图象。在主机上的打印机驱动程序把该巨大的图象分成一个单个的1MB块和多个100KB的块,并把这些块送到打印机,如图59B所示。
图60显示了一种状态,其中打印机接收并重新构成如图59B所示的发送图象块,并打印该图象。从主机接收的图象块以块为单位得到压缩并被存储在RAM9中。打印机一个一个地展开这些块,并打印出展开的数据。由于第二和随后的块并第一个块小并能够被迅速地展开,所以展开时间不会产生任何过度运行。在第四实施例中,上述的“合成模式”和“简化的同步模式”被结合起来。
图44是框图,显示了当控制单元3在“简化的同步模式”运行时的设置。当单元3运行在“合成模式”时该设置的框图对应于第二实施例的图18。图18与44之间的不同是RAM9的内部设置。
RAM的设置的这种不同,主要是由接收单元6和图象展开/视频传送电路73的打印数据处理步骤限定的,且RAM没有任何永久区。因此,容易根据数据处理步骤来有选择地采用图18和44中显示的RAM的设置。
以下具体结合接收缓存器来说明两种模式的不同。在“合成模式”中,RAM包括接收缓存器10、带A71、带B72、页管理表13、寄存字符管理表14、寄存字符数据区15、等等。如果RAM9具有2MB的容量,可用作接收缓存器10的区最多约1MB。在“简化的同步模式”中,在RAM9上只分配有接收缓存器10和页管理表13。如果RAM9具有2MB的容量,能够用作接收缓存器10的区可大至1.7MB。
假定600dpi的图片图象被粘贴到具有A4尺寸的整个页上,数据容量约为1.8MB—虽然它根据压缩方法而改变。如果接收缓存器10具有1.7MB的容量,一页的数据即使在文件包括非常大的图象的情况下也能够被存储在接收缓存器10中,并能够得到打印。即使当用于一页的数据略微超过了1.7MB时,由于“简化的同步模式”在接收数据的同时被动同步地输出数据,因而打印错误是罕见的。
然而,在只能保证1MB接收缓存器10的“合成模式”中,一页的数据不能被存储在接收缓存器10中,且根据不同的文件经常不能得到打印。
注意,图18中的图象展开电路16和字符展开电路17在图44中被省略了,且没有被用在“简化的同步模式”中。即,这些电路可以或可以不被设置。换言之,第四实施例的硬件构成元件可以与第二实施例的图18的相同。
图18和44的另一个不同,是所要从主机1发送到打印机2的数据在图18显示的“合成模式”中包括字符和图象数据,但在图44所示的“简化的同步模式”中只包括图象数据。
图45是将要从主机1发送到打印机2的字符数据和图象数据的指令结构的说明图。图45显示了用于一定的文件的打印任务数据,且第一页的数据以“合成模式”的页的形式而得到发送。虽然第二页的数据也以“合成模式”的页的形式发送,该页具有大的图象量且1MB接收缓存器10在只接收该页的数据时可能溢出。因此,第二页的数据被清除,并以“简化的同步模式”的页的形式重新被输出,从而结束任务。
图45中显示的指令基本上与在第三实施例的图36中的相同,只是以页为单位加上了页类型A指令91和页类型B指令92,且可在页数据的结束处加上页清除指令93。加有页清除指令93的页的数据不被打印,而是被清除。另一方面,加有页类型A指令91的打印的数据是“简化的同步”的数据,且加有页类型B指令92的打印的数据是“简化的同步模式”的数据。即,这些指令每一个都以页为单位选择图18和44所示的RAM9的环境。
在“简化的同步模式”的页的情况下,单个的带只包括一个单个图象块。此时,类型指令34可只表示5即图象块指令。
另外,在“简化的同步模式”的页的情况下,如果一页的压缩数据的大小在1MB之内,只需要发送一个带和一个图象块。对于超过1MB的部分,每当压缩数据超过100KB时,就形成一个带和一个图象块,且这种处理得到重复。
这种处理被包括在主机1上的驱动程序所进行的打印指令发生处理中,并能够借助被动同步而打印一个巨大的图象页—它可超过1.7MB。
控制单元3的ROM8中安装的程序的名称,可以与第二实施例的图21中显示的内容相同。本实施例的操作基本上与第二实施例中的相同,只是接收管理程序51和解释程序52不同。图象展开/视频传送电路73的操作与在第二实施例中的相同,且将省略对其的详细描述。以下结合流程图详细描述主机1上的驱动程序、接收单元6、接收管理程序51和解释程序52的操作。
图46A和46B用于说明页管理表13的结构。
表13有四项,即表示接收顺序的页码、接收页数据的开始地址、接收的页数据的结束地址、以及表示接收的页数据是否具有太大的量的标记。
解释程序52从号1开始其处理。在完成了解释和纸排放时,来自纸排放页的数据被清除,且页号2的数据被更新为号1。随后,开始对该页的解释。
图46A显示了“合成模式”的状态或其中即使在“简化的同步模式”下每打印的数据量也不超过接收缓存器10的容量的状态。图46B显示了其中每页的数据量已经超过—接收缓存器10的容量的状态。接收缓存器只存储一个巨大的页的数据,对其的接收正在进行,接收管理程序51命令解释程序52在被动同步模式下进行打印,且打印正在进行。
注意,接收管理程序51在巨大的页之前的所有打印的数据都被打印且相应的纸被排放之后发出一个打印命令。因此,接收缓存器只存储巨大的页的数据,如图46B所示。
当RAM9的环境在“合成模式”和“简化的同步模式”之间切换时,切换在所有打印的数据都被打印且相应的纸被排放之后完成。该是因为,由于切换包括接收缓存器10的大小的改变,如果在还有页数据时接收缓存器10的大小减小,某些打印数据可能会丢失。
(系统控制)下面结合流程图描述第四实施例的操作。
将描述驱动程序、接收单元6、接收管理程序51和解释程序52与第三实施例不同的操作。
(打印机驱动程序)图47至51是用于说明主机1上的打印机驱动程序的操作的流程图。该打印机驱动程序,从用户使用的应用软件程序产生的文件数据,产生如以上借助图45描述的字符和图象打印机指令,并将它们发送到打印机2。当用户从应用软件程序命令文件打印时,该打印机驱动程序在主机1中得到启动。
在启动时,驱动程序在主机1的存储器上保证一页的帧缓存器(未显示),并同时清除该帧缓存器。在驱动程序进行文件打印完成时,帧缓存器所用的存储器区域得到释放。
驱动程序在步骤S381把一个任务启动指令31发送到打印机2,在步骤S382设定所要打印的文件的页数之和的值并把一个变量m设定为1,并在步骤S383把表示正在处理的的页码的变量mp设定为1。驱动程序在步骤S384检查变量mp是否小于变量m。如果步骤S384为“否”,则对文件的所有页的处理完成,且驱动程序在步骤S385发送一个任务结束指令,从而结束其处理。
如果步骤S384为“是”,驱动程序在步骤S386向打印机2发送一个页启动指令32,在步骤S387从应用程序保存第mp页的字符打印命令,在步骤S388根据保存的字符打印命令的打印位置对它们进行分类,并在步骤S389把来自应用程序的第mp页的字符打印命令以外的画命令映象到主机1的帧缓存器上。字符打印命令以外的这些画命令包括带标尺的行和画图命令、图象粘贴命令、等等。同时,计算出总的图象粘贴面积。
在步骤S388根据字符打印命令的打印位置对它们进行分类时,字符打印命令按照它们沿着纸的长度方向的打印位置而得到分类,并随后按照它们沿着纸的宽度方向的打印位置得到分类。当A4纸被置于作画位置时,命令被从上向下位置地得到分类,并从左向右地得到分类。
驱动程序随后在步骤S390检查总图象粘贴面积是否已经超过了半页。如果步骤S390为“是”,即如果判定该页主要包括的是图象数据,流程跳到图50中的步骤S426,以启动“简化的同步模式”中的处理。如果步骤S390为“否”,即如果判定页包括的主要是字符数据,流程进行到步骤S391,且驱动程序把一个页类型A指令91发送到打印机2。
驱动程序借助图案识别来分析帧缓存器的内容以在步骤S392检查映象的图象是否包括以带为单位的重复图象图案,并随后在步骤S393检查是否发现了重复的图案。如果步骤S393为“否”,由于一页的图象被等分成16个带,在步骤S394适当的值被置入带管理表中由带号、带高度、和当重复图案时采用的带号组成的列中。特别地,-1被置入当重复一个图案时采用的带号的列。随后流程跳到步骤S398。
如果步骤S393为“是”,驱动程序在图48的步骤S395检查是否有其带高度已经超过最大高度即带A71或B72的高度的带。若步骤S395为“是”,在步骤S396驱动程序对该超过了最大高的带进行分割,从而使分割的带的高度变得等于或小于最大带高度。在此之后,流程进行到步骤S397。如果在步骤S395的判定结果为“否”,流程进行进行到步骤S397。在此情况下,由于带高度不相等而是以带为单位地任意设定的,在步骤S397适当的值被置入带管理表中由带号、带高度和当重复图案时采用的带号组成的列。随后流程进行到步骤S398。
注意,该带管理表被分配在主机1上,以便于驱动程序产生与带有关的打印指令,并包括三个项,即带号、带高度、以及当重复图象图案时采用的带号。
在步骤S398中,驱动程序把变量n设定为通过把总带数加1而获得的一个值。驱动程序在步骤S399把表示一个带号的变量np设定为1,并在步骤S40检查变量np是否小于变量n。如果步骤S400为“否”,这意味着对一页中所有带的处理都已经完成,且驱动程序在步骤S401把变量mp加1。随后,流程返回到步骤S384,以启动对下一个页的带输出处理。
如果步骤S400为“是”,驱动程序在步骤S402把一个带启动指令81发送到打印机2,在步骤S403发送一个带高度指令82,并在步骤S404发送一个重复带数指令83。如果当前的带不包括任何重复图象,发送设定为-1的指令83。
驱动程序在步骤S405从来自应用程序的保存的打印命令,拾取包括在第np个带中的字符打印命令,在步骤S406把一个变量s设定为通过把拾取的字符的数目加1而获得的一个值,并在步骤S407把一个变量sp设定为1。
注意,将要在步骤S405拾取的字符打印命令包括那些部分地包含在第np个带中的字符。因此,某些字符根据它们的打印位置而被打印在两个带上。
检查在图49的步骤S408检查变量sp是否小于变量s。如果步骤S408为“否”,则判定包括在第np个带中的字符数据都已经被传送,且在步骤409和随后的步骤开始传送第np个带的图象数据。即,驱动程序在步骤S409检查当前的带是否是一个重复的带。如果步骤S409为“是”,流程跳到步骤S417而不进行任何处理。
如果步骤S409为“否”,驱动程序在步骤S410从主机上的帧缓存器提取与第np个带的位置和大小相应的一个图象,并在步骤S411检查第np个带是否一个空白带。如果步骤S411为“是”,流程跳到步骤S417,而不进行任何处理。
如果步骤S411为“否”,驱动程序在步骤S412提取实际包括作为单个块的图象的一个矩形区,并在发送该块时在步骤S413检查每页的数据量是否超过接收缓存器的大小。如果步骤S413为“否”,驱动程序在步骤S415把一个表示该块的粘贴位置的位置移动指令33发送到打印机2,并在步骤S416把一个类型5指令序列即图象块指令45、46、47和48发送到打印机2。当然,该图象块数据是以压缩状态发送的。
驱动程序在步骤S417把变量sp加1,且流程返回到图48的步骤S400,以把下一个字符数据发送到打印机2。
如果步骤S413为“是”,驱动程序在步骤S414发送一个页清除指令93,以取消该页的纸排放。随后,流程跳到步骤S426以重新尝试在“简化的同步模式”下输出该页。
如果图49的步骤S408为“是”,驱动程序在步骤S418检查第sp个字符是否该文件中所要打印的第一个字符。如果步骤S418为“是”,驱动程序在步骤S419把一个表示打印位置的位置移动指令33发送到打印机2,并在步骤S420检查寄存字符的数目是否已经达到了打印机2侧上的一个极限。如果步骤S420为“是”,驱动程序在步骤S422把一个类型3指令序列即只字符图象打印43和44发送到打印机2,且流程跳到步骤S425。
如果步骤S420为“否”,驱动程序在步骤S421把一个类型2指令序列即字符寄存+打印指令41、42、43和44发送到打印机,且流程跳到步骤S425。当然,所要发送到打印机2的各个字符的图象是得到压缩的。
如果步骤S418为“否”,由于它表明该打印命令是该字符的第二或随后的打印命令,驱动程序在步骤S423把一个表示打印位置的位置移动指令33发送到打印机2,并还在步骤S424把一个类型4指令序列即字符编码打印指令41和42发送到打印机2。
驱动程序在步骤S425把变量sp加1,且流程返回到步骤S408以向打印机2发送下一个字符数据。
(打印机驱动程序简化的同步模式)以下结合图50的步骤S426和随后的步骤来描述基于“简化的同步模式”的页打印。
在步骤S426,驱动程序把一个页类型B指令92发送到打印机2。在步骤S427,驱动程序根据保存的字符打印命令对在帧缓存器中的数据与所有字符进行“或”运算,并将其写入帧缓存器。在步骤S428,驱动程序开始从帧缓存器上的开始地址起压缩图象数据。
驱动程序随后在步骤S429检查压缩的数据是否已经超过了1MB。如果步骤S429为“否”,驱动程序在步骤S430检查对一页数据的压缩是否完成。如果步骤S430为“否”,驱动程序在步骤S431继续进行数据压缩,且流程返回到步骤S429以形成一个环。即,驱动程序进行等候,直到对一页的压缩已经完成或者压缩的数据已经超过1MB。
如果步骤S429或步骤S430为“是”,流程进行到图51的步骤S432,且驱动程序把一个带启动指令81发送到打印机2。驱动程序随后在步骤S433把一个带高度指令82发送到打印机2,并在步骤S434把一个重复带数指令83发送到打印机2。在此情况下,由于带不是重复的带,设定为-1的指令得到发送。
驱动程序在步骤S435发送一个位置移动指令33,并在步骤S436把一个类型5指令序列即图象块指令45、46、47和48发送到打印机2。
驱动程序在步骤S437检查在帧缓存器中是否剩有未发送的图象数据。如果步骤S437为“否”,驱动程序在步骤S438把变量mp加1,且流程返回到步骤S384,以启动对下一个页的处理。
如果步骤S437为“是”,即如果仍然有图象数据,流程进行到步骤S439以开始对帧缓存器上的剩余图象数据的压缩。驱动程序在步骤S44检查压缩的数据是否已经超过了100KB。如果步骤S440为“否”,驱动程序在步骤S441检查对一页的压缩是否完成。如果步骤S441为“否”,驱动程序在步骤S444继续数据压缩,且流程返回到步骤S440以形成一个环。即,驱动程序进行等候,直到对一页的压缩已经完成或者压缩数据超过了100KB。
如果步骤S440或步骤S441为“是”,流程返回到步骤S432,以把带数据发送到打印机2。
(接收单元6)
图52和53是用于说明接收单元6的操作的流程图。虽然接收单元6是一个硬件电路且不同于通常的程序,其操作顺序仍然用流程图来说明。
已经借助第一实施例中的图11和12描述的接收单元继续接收从任务启动指令31至任务结束指令36的指令序列。即使当页启动指令32被插入到该指令序列中时,接收单元6仍然接收直到任务结束指令的指令而不中断接收,虽然它将其接收通知接收管理程序51。
然而,由于输出模式可能以页为单位地在“合成模式”与“简化的同步模式”之间切换,接收单元在页启动指令32到达时等候来自接收管理程序51的一个命令。
如果输出模式需要改变,接收管理程序51,在接收的页的所有数据都被打印且相应的纸被排放之后,把RAM9上的存储器映象切换到“合成模式”或“简化的同步模式”的存储器映象。随后,程序51命令接收单元6新的接收数据写入位置和新的极限值,并使其开始接收页数据。即,当输出模式切换时,接收缓存器的内容被暂时清除。
另一方面,当输出模式保持不变时,接收单元不需要等候到接收页的数据被打印且相应的纸被排放。更具体地说,接收单元不需要等到接收缓存器10被暂时清除。页数据能够被继续接收。然而,在此情况下,接收单元6也在它接收到接收数据的写入位置和极限值命令之后开始下一个页的数据的接收。
接收单元6在打印机2的电力开关被接通之后立即开始操作。在步骤451,接收单元6被置于操作状态—即“它能够从主机1接收数据但放弃所有的接收数据”。
随后在步骤S452检查用户是否已经关断了打印机2的电力开关。如果步骤S452为“是”,接收单元6结束其操作。如果步骤S452为“否”,则在步骤S453检查是否从接收数据检测到了一个页启动指令32。如果步骤S453为“否”,流程返回到步骤S452以等候来自主机1的页启动指令32。
如果步骤S453为“是”,在步骤S454接收被暂时停止,且接收单元6在步骤S455通知接收管理程序51检测到页启动指令32,以及下一个页类型即页类型A指令91或页类型B指令92的检测。注意,接收通过把打印机2设定成繁忙以拒绝从主机1的数据接收而得到暂时停止的。
在步骤S456,接收单元6进行等候,直到它接收到至接收缓存器10的写入开始位置和极限值命令。在接收到这些命令时,单元6在步骤S457开始并继续接收来自主机1的数据并将该数据写入接收缓存器10。
随后在步骤S458检查是否接收到一个任务结束指令。如果步骤S458为“是”,接收单元6在步骤S459暂时停止接收,并在步骤S460把任务结束指令和至接收缓存器10的写入结束位置的检测通知给接收管理程序51。随后,流程返回到步骤S451,以等候下一个页的数据的接收。
如果步骤S458为“否”,则在图53的步骤S461检查接收数据的写入位置是否已经达到了极限值。如果步骤S461为“是”,在步骤S463单元6暂时停止在步骤S462的接收并通知接收管理程序51极限值已经被达到。
在步骤S464检查是否从接收管理程序51接收到了新的写入位置和新的极限值。如果步骤S464为“否”,则在步骤S465检查是否从接收管理程序51接收到了一个写入结束命令。如果步骤S465为“否”,流程返回到步骤S464以形成一个环,从而进行等候直到在步骤S464或步骤S465判定出“是”。
如果步骤S465为“是”,由于它表明不再需要接收该页的数据流程返回到步骤S451,以等候接收下一个页的数据。
如果步骤S464为“是”,流程返回到步骤S457,以根据新的写入位置和极限值重新开始接收。
如果步骤S461为“否”,在步骤S466检查是否接收到一个页清除指令93。如果步骤S466为“是”,单元6通知接收管理程序51检测到页清除指令93。随后流程返回到步骤S451,以等候接收下一个页的数据。
如果步骤S466为“否”,在步骤S468检查是否检测到一个页启动指令32。如果步骤S468为“否”,流程返回到步骤S457,以继续接收页数据。如果步骤S468为“是”,在单元6在步骤S469暂时停止了接收之后,在步骤S470它通知接收管理程序51检测到了页启动指令32和下一个页类型即检测到了页类型A指令91或页类型B指令92。最后,流程返回到步骤S465以等候来自接收管理程序51的写入位置和极限值命令。在接收到这些命令时,开始把接收数据写入接收缓存器10。
(接收管理程序)
图54、55、和56是用于说明接收管理程序51的操作的流程图。如已经结合接收单元6提到的,接收管理程序51以页为单位进行管理, 并在每次从接收单元6接收到页启动指令32的检测信息时向接收单元6提供位置和极限值命令,从而使单元6开始接收数据的写入。
另外,程序51以页为单位检查输出模式是“合成模式”还是“简化的同步模式”,并根据需要以页为单位地把RAM 9的存储器映象切换到用于“合成模式”或“简化的同步模式”的存储器映象。
接收管理程序51是在打印机2的电力接通时启动。该程序在步骤S481将变量mem设定为0,并在步骤S482检查用户是否已经关断了打印机2的电力开关。如果步骤S482为“是”,程序结束其处理。如果步骤S482为“否”,程序在步骤S483检查它是否已经从接收单元6接收到了页启动指令的检测信息。如果步骤S483为“否”,流程返回到步骤S482以形成一个环,且程序等候到它从接收单元6接收到页启动信息。
如果步骤S483为“是”,程序在步骤S484检查该页的类型指令是否一个页类型A指令91。如果步骤S484为“是”,程序在步骤S485把一个变量mem_new设定为1;否则,它在步骤S486把变量mem_new设定为2。随后,流程进行到步骤S487,以检查变量mem是否等于变量mem_new。
如果步骤S487为“是”,RAM 9上的存储器映象不需要改变,即前面的页数据在“合成模式”下得到输出且当前的页数据也在“合成模式”下得到输出,或者前面的页数据在“简化的同步模式”下输出而当前的页数据也在“简化的同步模式”下输出。因此,流程跳到步骤S495,以启动原来的接收处理。
如果步骤S487为“否”,由于前面和当前的页数据具有不同的输出模式,程序在步骤S488和随后的步骤把RAM 9上的存储器映象改变成“合成模式”或“简化的同步模式”的存储器映象,且流程跳到图55中的步骤S495以启动原来的接收处理。
在此情况下,程序在步骤S488检查接收的页数据是否仍然剩余在接收缓存器10上。如果步骤S488为“是”,程序通过形成一个环而进行等候,直到所有剩余的页数据都被解释程序52所解释。
如果证实所有的接收的页数据都从接收缓存器10清除的,程序在步骤S489检查变量mem_new是否为1。如果步骤S489为“是”,在步骤S490程序分配带存储器71和72、页管理表13、寄存字符管理表14和RAM9上的寄存字符数据区15,作为用于“合成模式”的存储器映象,并清除这些区。注意“清除”在此并不总是表示“清除至0”而是表示“初始化”。在步骤S491,程序把变量mem设定为1,且流程跳到步骤S494。
如果步骤S489为“否”,在步骤S492程序只把接收缓存器10和页管理表13作为用于“简化的同步模式”的存储器映象进行分配并清除它们。程序在步骤S493把变量mem设定为2,且随后流程跳到步骤S494。
在步骤S494,程序命令接收单元6把接收缓存器10的开始位置作为新的写入位置并把接收缓存器10的结束位置作为新的极限值。随后流程跳到图55的步骤S495。
在图55的步骤S495,程序在页管理表13中设定将要在接收缓存器10上接收的页数据的开始地址。程序随后在步骤S496通知接收单元6写入位置和极限值,并在步骤S497等候0.2秒。在此间隔期间,接收单元6把接收数据写入接收缓存器10。
在步骤S498,接收管理程序51检查它是否从接收单元6接收到了某些信息。如果步骤S498为“否”,流程返回到步骤S497以形成一个环,从而等候来自接收单元6的信息。
如果程序在步骤S498判定它从接收单元6接收到了信息,程序在步骤S499和随后的步骤执行与信息的类型相应的各种处理。
程序在步骤S499检查来自接收单元6的信息是否表示页启动指令32的检测。如果步骤S499为“是”,程序在步骤S500检查是否有对其的接收正在进行的前面的页数据。如果步骤S500为“否”,则流程返回到步骤S484以开始新的页数据的接收。如果步骤S500为“是”,程序在页管理表13中设定其接收正在进行的前面的页数据的结束地址,且流程返回到步骤S484以开始新的页的接收。
如果步骤S499为“否”,程序在步骤S502检查来自接收单元6的信息是否表示页清除指令的检测。如果步骤S502为“是”,程序在步骤S503从页管理表13清除对其的接收正在进行的页的数据。随后,流程返回到步骤S482,以等候下一个页的开始信息。
如果步骤S504为“否”,由于这意味着来自接收单元6的信息表明接收数据至接收缓存器10的写入位置已经达到了极限值,程序在步骤S506检查页管理表,以检测接收缓存器10是否具有其中能够写入接收数据的空区。
如果步骤S506为“是”,由于能够设定新的极限值,流程跳到步骤S496,以通知接收单元6新的写入位置和新的极限值,且程序连续进行接收。
另一方面,如果在步骤S506判定“否”,程序在步骤S507检查如果在接收缓存器中只存储有对其的接收正在进行的页数据,且该页数据在其被写入接收缓存器10的整个区域之后仍然在继续,即一页的数据是否太大。如果步骤S507为“否”,程序在步骤S508等候1秒在此间隔期间,程序等候与接收的页数据对应的纸排放并借助解释程序52从接收缓存器10清除纸排放页数据。在步骤S508之后,流程返回到步骤S506以形成一个环,且程序等候解释程序52的解释和纸排放的完成。
如果在步骤S507判定一页的数据太大,程序在图59中的步骤S509检查变量mem是否为1。如果步骤S509为“是”,表明RAM9上的当前存储器映象是“合成模式”的,且在“合成模式”下不能输出太大的一页数据即巨大的页的数据。因此,程序在步骤S515和随后的步骤暂停接收。
如果步骤S509为“否”,在步骤S510和随后的步骤程序开始与解释程序52一起在“简化的同步模式”下巨大的页数据的纸排放/输出处理。
在程序在步骤S510把表示巨大页数据的标记置入页管理表13之后,在步骤S511它通知解释程序52正在接收巨大页数据以及在接收缓存器10上的写入结束位置。
程序在步骤S512形成一个环以等候来自解释程序52的信息。在此情况下来自解释程序52的信息具有三种内容之一,即表示空区中的下一个图象块的接收请求—因为接收的图象块已经被视频发送到了引擎单元—的信息、表示已经发生了堵纸错误的信息、或表示已经发生了“过度运行错误”—其中图象块的接收不能赶上至引擎的视频传送。
在接收到来自解释程序52的信息时,流程跳到步骤S513,以检查该信息内容是否表示错误。如果步骤S513为“否”,即如果该信息内容不表示错误而是下一个图象块的接收请求,程序在步骤S514正确页管理表13中的页开始地址,且随后流程返回到步骤S496,以控制接收巨大的页的图象块。
如果步骤S509或步骤S513为“是”,则进行页数据接收暂停处理。程序在步骤S515命令接收单元6结束写入,在步骤S516从页管理表13清除其接收正在进行的页数据,并在步骤S517清除RAM9上的缓存器、工作区等等。如果选择了“合成模式”,程序还清除带存储器、寄存字符管理表14和寄存字符数据区15。
在步骤S517之后,流程返回到步骤S482,且程序等候下一个页的启动信息。
(解释程序)图57和58是用于说明解释程序52的操作的流程图。在这些流程图中,在步骤S521和随后的步骤的处理被加到在第三实施例中借助图40至43描述的解释程序52的操作的开始。
只有所加的处理将结合图57和58而得到描述。由于其他的处理与图40至43中显示的相同,所以将省略对它们的详细描述。
解释程序52在打印机2的电力接通时立即启动。在步骤S321,程序检查用户是否已经关断了打印机2的电力开关。如果步骤S321为“是”,程序结束其处理。
如果步骤S321为“否”,程序在步骤S322检查接收缓存器10是否存储有一页的接收数据。如果步骤S322为“是”,流程进行到图40中的步骤S323和随后的步骤的处理。
如果步骤S322为“否”,程序在步骤S521检查来自接收管理程序51的信息是否表示存在有太大而不能被存储在接收缓存器10中的一个页。如果步骤S521为“否”,流程返回到步骤S321以形成一个环,从而等候页数据的接收的完成。
如果步骤S521为“是”,则在步骤S522和随后的步骤开始在“简化的同步模式”下输出不能被存储在接收缓存器10中的巨大的页。
程序在步骤S522向引擎单元4提供一个纸送进启动命令,并在步骤S523检查引擎单元4是否已经检测到了纸用完了状态。如果步骤S523为“是”,程序在步骤S524形成一个环并等候至用户设定了纸。在设定了纸之后或如果步骤S523为“否”,在步骤S525程序命令图象展开/视频传送电路展开在属于该页的第一个带的单个图象块中的压缩图象数据,并向引擎单元4进行视频传送。
程序在步骤S526检查视频传送是否完成。如果步骤S526为“是”,在步骤S527程序在视频传送完成时通知接收管理程序51接收缓存器10的空区。即,程序请求程序51接收带数据(将要在后面描述)。
随后程序在步骤S528检查一页的视频传送是否完成。如果步骤S528为“是”,程序在步骤S529清除页管理表13上用于纸排放的页的数据,且流程返回到步骤S321以开始解释下一个页。
如果步骤S528为“否”,程序在步骤S530检查接收缓存器10是否存储有下一个接收的带。如果步骤S530为“是”,在步骤S531程序命令图象展开/视频传送电路73展开跟着属于已经被发送到图象展开/视频传送电路73的带的一个带的单个图象块中的压缩图象数据,并向引擎单元4进行视频传送。流程随后返回到步骤S526以等候视频传送的完成。
如果步骤S530为“否”,由于一页的视频传送和下一个带的数据的接收都没有完成,在步骤S532在打印机2的面板上显示一个“过度运行错误”消息,且流程跳到步骤S535,以执行错误处理。
如果步骤S526为“否”,程序在步骤S533检查在引擎单元4中是否发生了堵纸。如果步骤S533为“否”,流程返回到步骤S526以形成一个环,从而等候视频传送的完成。
如果步骤S533为“是”,程序在步骤S534在面板上显示一个“堵纸”消息,并在步骤S535通知接收管理程序51一个“错误”。“错误”的类型包括“堵纸错误”和“过度运行错误”。
程序在步骤S536继续检查,直到用户除去堵塞的纸。随后,流程返回到步骤S321以开始下一个页的解释。
当然,如果在步骤S532发生了“过度运行错误”,由于没有发生堵纸,程序跳过在步骤S536的检查。当发生“过度运行错误”时,在发生了过度运行错误的带位置之下处为空白部分的一个页得到排放。
(第四实施例的独特效果)
(1)在本实施例中,由于打印机驱动程序自动确定和选择输出模式,即第三实施例的“合成模式”与“简化的同步模式”之一,用户不需要进行和切换。
(2)由于效果(1),主要包括字符数据的文件页数据能够得到迅速的打印和排放,由于大部分字符数据能够在“合成模式”下以编码的形式得到输出。
(3)由于效果(1),主要包括诸如照片的图象的文件页数据,即使当它超过了接收缓存器10的大小时,也能够在“简化的同步模式”下在极限容量之外得到打印和排放。
(第五实施例)作为第五实施例,以下将描述第一至第四实施例的方法与传统的方法的一种结合,其中在这些实施例的方法中主机上的驱动程序把字符数据与其他图象数据相分离,并把字符编码形式的字符数据和位映象图象数据形式的图象数据发送到打印机,而在该传统方法中所有的打印数据都以位映象图象数据的形式被发送到打印机。
图61、62A和62B是该实施例的打印机驱动程序的流程图。注意第一实施例的打印机能够由这种驱动程序来控制。
该打印机驱动程序,从由用户使用的应用软件程序产生的文件数据,产生借助图20描述的字符和图象打印机指令,并把它们发送到打印机2。当用户从应用软件程序命令文件打印时,打印机驱动程序在主机1中得到启动。
在启动时,驱动程序在主机1的存储器上保证一页的帧缓存器(未显示),并同时清除该帧缓存器。在驱动程序的文件打印完成时,用作帧缓存器的存储器区域得到释放。
在实际的处理中,驱动程序在步骤S6101向打印机2发送一个任务启动指令31,在步骤S6102把变量m设定为通过把所要打印的文件页数加1而得到的值,并在步骤S6103把表示感兴趣的页码的变量mp设定为1。驱动程序随后在步骤S6104检查变量mp是否小于变量m。如果步骤S6104为“否”,由于文件的所有页的处理都已经完成,驱动程序在步骤S6120发送一个任务结束指令,从而结束其处理。
另一方面,如果步骤S6104为“是”,驱动程序在步骤S6105把一个页启动指令32发送到打印机2,在步骤S6106保存来自应用程序的第mp页的字符打印命令,并在步骤S6107把保存的字符打印命令的数目与一个独立定义的预定值p相比较。如果字符打印命令的数目大于预定值p,流程进行到步骤S6108以根据保存的字符打印命令借助字符寄存和字符编码把出现在该页中的字符以及作为位映象图象数据的其他数据发送到打印机,如果字符打印命令的数目小于预定值p,流程进行到步骤S6121,且该页的所有画命令以及字符打印命令都被映象为位映象图象数据。随后流程进行到步骤S6122(将要在后面描述),以把映象的图象发送到打印机,在步骤S6108,驱动程序把来自应用程序的第mp页的字符打印命令以外的画命令映象到主机1上的帧缓存器上。字符打印命令以外的画命令包括带标尺的行和画图命令、图象粘贴命令等等。
驱动程序在步骤S6109把变量s设定为通过把保存的字符数目加1而获得的值,并在步骤S6110把表示一个带中感兴趣的字符的位置的变量sp设定为1。
随后,检查在步骤S6111检查变量sp是否小于变量s。如果步骤S6111为“否”,由于包括在第np个带中的字符数据的发送处理已经完成,驱动程序在步骤S6122和随后的步骤开始第np个带的图象数据的发送处理。即,在步骤S6122,驱动程序检查第np个带是否是一个空白带。如果步骤S6122为“是”,流程进行到步骤S6126而不进行任何处理。
如果步骤S6122为“否”,驱动程序在步骤S6123提取实际包括作为单个块的一个图象的一个矩形区,在步骤S6124把表示该块的粘贴位置的一个位置移动指令33发送到打印机2,并在步骤S6125把与类型5相应的指令即图象时钟指令45、46、47和48发送到打印机2。当然,图象块数据是在压缩之后发送的驱动程序在步骤S6126把变量np的内容加1,且流程返回到步骤S6104,以发送下一个页的数据。
如果步骤S6111为“是”,驱动程序在步骤S6116检查第sp个字符是否是该文件中所要打印的第一个字符。如果步骤S6116为“是”,驱动程序在步骤S6117把表示该字符的打印位置的一个位置移动指令33发送到打印机2,并在步骤S6114检查在打印机2侧寄存字符的数目是否已经达到了一个极限,如果步骤S6114为“是”,驱动程序在步骤S6119把与类型3对应的指令即只字符图象打印43和44发送到打印机2,且随后流程进行到步骤S6115。
然而,如果步骤S6117为“否”,驱动程序在步骤S6118把与类型2对应的指令即字符寄存+打印指令41、42、43和44发送到打印机2,且流程进行到步骤S6114。当然,要发送到打印机2的各个字符的点图象得到了压缩。
如果步骤S6112为“否”,由于它表示该打印命令是该字符的第二或随后的打印命令,驱动程序在步骤S6113把表示该字符的打印位置的一个位置移动指令33发送到打印机2,并还在步骤S6114把类型4的一个类型指令34即字符编码打印指令41和42发送到打印机2。
在步骤S6115,驱动程序把表示该字符的位置的变量sp的内容加1,且流程随后返回到步骤S6111,以执行下一个字符数据至打印机2的发送处理。
借助上述步骤,当包括在一页中的字符数目等于或大于预定值时,检查被从其他数据中分离出,借助字符寄存和字符编码而被发送到打印机,并被映象到该打印机上。另一方面,当包括在一页中的字符的数目小于该预定值时,该页的所有图象数据以及字符数据都以位映象图象的形式得到映象,且映象的图象被发送到打印机。借助这种处理,当页数据包括少量的字符时,在驱动程序和打印机上的处理开销,即字符提取、寄存、以及字符以外的数据在驱动程序上的映象,以及作为图象的字符数据在打印机上的映象,得到了减小。
由于上述第一至第四实施例的打印机能够适应其中所有打印数据都从主计算机以图象数据的形式进行接收的传统方法,打印机侧的处理步骤即使在两种方法都采用时也不需要改变。
上述步骤是以页为单位进行的。然而,如在第二实施例中那样,当打印数据从主计算机以带为单位地被发送到打印机时,数据发送方法可以象在上述描述中那样得到改变。
图63显示了根据这种方法的打印机驱动程序的控制步骤中的某些步骤。注意,第二实施例的打印机能够适当处理从这种打印机驱动程序发送来的数据。
由于在这种驱动程序的步骤中的多数步骤与第二实施例中的驱动程序的图22至24中的流程图中的步骤相同,与图22至24中的步骤相同的步骤用相同的标号表示,且省略对其的详细描述。与第二实施例的不同在于在图63中在步骤S146和步骤S147之间插入了步骤S6301和S6302。
在步骤S6301,驱动程序把保存的字符打印命令的数目与一个独立定义的预定值p相比较。如果字符打印命令的数目大于预定值p,流程进行到步骤S147,以根据保存的字符打印命令并借助字符寄存和字符编码发送出现在该页上的字符。如果字符打印命令的数目小于预定值p,流程进行到步骤S6302,且该页的所有画命令和字符打印命令被映象成位映象图象数据。最后流程进行到步骤S158,以把映象的图象发送到打印机。
借助打印机驱动程序的上述处理,当包括在一页中的字符的数目等于或大于该预定值时,字符被与其他的数据相分离,借助字符寄存和字符编码而被发送到打印机,并被映象到打印机上。另一方面,当包括在一页中的字符的数目小于预定值时,该页的所有图象数据以及字符数据被映象成位映象图象,且映象的图象被送到打印机。借助这种处理,当页数据包括少量的字符时,在驱动程序和打印机上的处理开销,即字符提取、寄存、以及字符以外的数据在驱动程序上的映象、以及字符数据以图象形式在打印机上的映象,能够得到减小。
在图63所示的步骤中,包括在一页中的字符的数目被与该预定值相比较。或者,包括在各个带中的字符数目被与该预定值相比较。在此情况下,如果包括在各带中的字符数目等于或大于该预定值,该带的字符数据以字符编码的形式得到发送,且其他数据以图象数据的形式被发送到打印机。否则,该带中的所有打印数据都以图象数据的形式被发送到打印机。
因此,如图64所示,在第二实施例的图23中的步骤S154和步骤S155之间插入了步骤S6401和步骤S6402。在步骤S6401,把第np个带的字符打印命令的数目与预定值p’相比较,且如果字符数目的数目大于预定值,流程进行到步骤S155;否则,该带的所有打印数据都以图象的形式得到映象,且映象的图象与在步骤S148映象到帧缓存器上的一个图象相合成。在此之后,流程进行到步骤S158,借助这种处理,根据本发明的打印控制方法和传统的打印控制方法能够以带为单位地、有选择地得到采用。
(其他实施例)注意,本发明可被应用到由多种设备(例如主计算机、接口装置、读取器、打印机等)组成的系统或由单个设备(例如复印机、传真机等)组成的设备上。
本发明的目的,也是通过向系统或设备提供一种存储介质—该介质记录了能够实现上述实施例的功能形成软件程序的程序编码,并借助系统或设备的计算机(或CPU或MPU)读出和执行存储在该存储介质中的程序编码,而得到实现的。
在此情况下,从存储介质读出的程序编码本身实现了上述实施例的功能,且存储程序编码的存储介质构成了本发明。
作为提供程序编码的存储介质,可采用例如软盘、硬盘、光盘、磁-光盘、CD-ROM、CD-R、磁带、非易失存储器卡、ROM等。
上述实施例的功能不仅能够通过由计算机执行读出的程序编码而实现,而且可借助由根据该程序编码的命令而在计算机上运行的操作系统执行的某些或所有实际处理操作所有实现。
另外,上述实施例的功能,可在从存储介质读出的程序编码被设置在功能扩展板或功能扩展单元的存储器之后,由该板或单元上的CPU等执行的某些或所有实际处理操作来实现,该功能扩展板或单元被插入或连接到计算机。
(本发明的效果)如上所述,根据本发明,由于多数字符部分是利用字符编码处理的,在主机的字符映象时间能够得到缩短,另外,由于数据量小,文件数据能够得到高速输出。
当设置了带存储器来代替帧存储器时,所需的存储器容量能够得到减小。
由于只有实际包括在带中的一个图象中的一个矩形部分被作为图象数据处理,且不包括图象的带没有图象数据被送到打印机,所要发送的图象数据量能够得到减小。
在输出不包括字符而只包括图象的带时,硬件电路展开压缩图象数据,并把展开的数据视频传送到引擎单元,从而不用把数据映象到带存储器上。以此方式,打印机的打印机的负荷能够得到减小,且诸如“过度运行”等的错误很少发生。
当作为主机上的图案分析的结果而判定带包括相同的图案时,表示带的该图象数据与已经发送的带的图象数据相同的一个指令被发送到打印机,从而减小所要发送的图象数据量。
当数据能够被存储在接收缓存器中时,通过把它们映象成打印机中的字符编码,而打印出字符。然而,当页数据包括大的图象且不能被存储在接收缓存器中时,图象数据被分成给定的块,并以带为单位而得到发送。在此情况下,打印机在每次接收到数据时自动选择打印数据的模式。以此方式,包括巨大的图象数据的页数据也能够得到输出。
由于在不脱离本发明的精神和范围的前提下可以实现本发明的很多看上去非常不同的实施例,因而应该理解的是本发明不仅限于其具体实施例,且只由所附的权利要求书限定。
权利要求
1.一种打印系统,用于利用一种打印设备打印出由主机设备产生的文件数据,所述主机设备包括第一发送装置,用于以出现在文件数据中的字符类型为单位向所述打印设备发送编码和字符图象;以及第二发送装置,用于把以字符编码形式出现在文件数据中的字符以及以图象数据形式出现的字符以外的部分发送到所述打印设备,且所述打印设备包括寄存装置,用于寄存从所述第一发送装置发送来的字符编码和字符图象;图象重新构成装置,用于根据由所述寄存装置寄存的编码和字符图象把从所述第二发送装置发送来的字符编码映象成图象数据,并把映象的图象数据与从所述第二发送装置发送来的图象相合成;以及用于打印出由所述图象重新构成装置获得的图象数据的装置。
2.根据权利要求1的系统,其中所述主机设备进一步包括压缩装置,并把字符图象和其他图象压缩并发送到所述打印设备,且所述打印设备进一步包括展开装置,并展开所述寄存装置寄存的字符图象和从所述第二发送装置发送来的图象。
3.根据权利要求1的系统,其中所述图象重新构成装置以按照打印顺序分割的带为单位重新构成所要合成的图象,并以重新构成的带为单位打印图象。
4.根据权利要求3的系统,其中所述第二发送装置以带为单位分割发送图象。
5.根据权利要求4的系统,其中所述第二发送装置以带为单位分割图象,并与一个空白带相应地发送表示该空白带的编码。
6.根据权利要求4的系统,其中所述第二发送装置以带为单位地分割发送图象,并发送表示与已经发送的带相同的数据的带相对应的重复的编码。
7.根据权利要求1的系统,其中所述主机设备进一步包括用于确定包括在文件数据中的图象数据的大小的判定装置,以及第三发送装置—该装置用于当所述判定装置判定该图象数据不能被存储在所述打印设备中时把图象数据分割多个部分并把分割的部分发送到所述打印设备,且所述图象重新构成装置在接收到来自所述第三发送装置的数据时以分割部分为单位重新构成图象,并在每次打印重新构成的图象时擦除重新构成的图象。
8.一种打印设备,用于接收以打印数据的形式并以出现在文件数据中的字符类型为单位的编码和字符图象、出现在该文件数据中的字符的字符编码、以及字符以外的图象数据—这些图象、编码和数据是从一个主机设备发送来的,并打印一个图象,包括寄存装置,用于寄存从所述主机设备接收的字符编码和字符图象;图象重新构成装置,用于根据所述寄存装置寄存的编码和字符图象把从所述主机设备接收到的字符编码映象成图象数据,并把映象的图象数据与从所述主机设备接收的一个图象相合成;以及用于打印由所述图象重新构成装置获得的图象数据的装置。
9.根据权利要求8的设备,进一步包括展开装置, 其中所述设备展开由所述寄存装置寄存的字符图象以及从所述主机设备接收的图象。
10.根据权利要求8的设备,其中所述图象重新构成装置以按照打印顺序分割的带为单位重新构成所要合成的图象,并以重新构成的带为单位打印这些图象。
11.一种打印控制设备,用于使一种打印设备打印所产生的文件数据,包括第一发送装置,用于以出现在该文件数据中的字符类型为单位把编码和字符图象发送到所述打印设备;以及第二发送装置,用于把以字符编码的形式出现在该文件数据中的字符发送至所述打印设备,并把字符以外的一个部分以图象数据的形式发送到所述打印设备。
12.根据权利要求11的设备,进一步包括压缩装置,且其中所述设备压缩字符图象和其他图象并把这些图象发送到所述打印设备。
13.根据权利要求11的设备,其中所述第二发送装置以带为单位地分割发送图象。
14.根据权利要求13的设备,其中所述第二发送装置以带为单位地分割图象,并与一种空白带相应地发送表示该空白带的编码。
15.根据权利要求13的设备,其中所述第二发送装置以带为单位地分割发送图象,并发送表示与已经发送的带相同的数据的带相对应的重复的编码。
16.根据权利要求11的系统,进一步包括用于确定包括在文件数据中的图象数据的大小的判定装置,以及第三发送装置—该装置用于当所述判定装置判定该图象数据不能被存储在所述打印设备中时把图象数据分割多个部分并把分割的部分发送到所述打印设备。
17.一种打印控制方法,用于打印从主机设备接收的打印数据,该主机设备以出现在文件数据中的字符类型为单位发送编码和字符图象,且该主机设备依次以字符编码的形式发送出现在文件数据中的字符并以图象数据的形式发送字符以外的部分,包括寄存步骤,用于寄存从所述主机设备接收到的字符编码和字符图象;图象重新构成步骤,用于根据寄存步骤中寄存的编码和字符图象把从所述主机设备接收的字符编码映象成图象数据,并把映象的图象数据与从所述主机设备接收的图象相合成;以及打印在图象重新构成步骤获得的图象数据的步骤。
18.根据权利要求17的方法,进一步包括展开步骤,且其中所述方法展开在寄存步骤中寄存的压缩的字符图象和从所述主机设备接收的图象。
19.根据权利要求17的方法,其中图象重新构成步骤包括以按照打印顺序分割的带为单位重新构成所要合成的图象并以重新构成的带为单位打印该图象的步骤。
20.用于打印所产生的文件数据的打印设备的控制方法,包括第一发送步骤,用于以出现在文件数据中的字符类型为单位把编码和字符图象发送到所述打印设备;第二发送步骤,用于以字符编码的形式把出现在文件数据中的字符发送到所述打印设备,并以图象数据的形式把字符以外的部分发送到所述打印设备。
21.根据权利要求20的方法,进一步包括压缩步骤,且其中所述方法压缩字符图象和其他图象并把这些图象发送到所述打印设备。
22.根据权利要求20的方法,其中第二发送步骤包括以带为单位分割发送图象的步骤。
23.根据权利要求22的方法,其中第二发送步骤包括以带为单位分割图象并与一个空白带相应地发送表示该空白带的编码的步骤。
24.根据权利要求22的方法,其中第二发送步骤包括这样的步骤—即该步骤以带为单位地分割发送图象,并发送表示与已经发送的带相同的数据的带相对应的重复的编码。
25.根据权利要求20的方法,进一步包括用于确定包括在文件数据中的图象数据的大小的步骤,以及第三发送步骤—该步骤用于当在所述判定步骤判定该图象数据不能被存储在所述打印设备中时把图象数据分割多个部分并把分割的部分发送到所述打印设备。
26.根据权利要求11的设备,进一步包括判定装置,用于判定出现在具有预定大小的文件数据中的字符数目是否大于一个预定值;以及,第三发送装置,用于把预定大小的所有文件数据以图象数据的形式发送到所述打印设备,且其中当所述判定装置判定字符数目大于该预定值时,所述第一和第二发送装置把文件数据发送到所述打印设备;否则,所述第三发送装置把文件数据发送到所述打印设备。
27.根据权利要求20的方法,进一步包括在第一发送步骤之前的判定步骤,用于判定出现在具有预定大小的文件数据中的字符数目是否大于一个预定值;以及,第三发送步骤,用于把预定大小的所有文件数据以图象数据的形式发送到所述打印设备,且其中当在判定步骤判定字符数目大于该预定值时,文件数据在第一和第二发送步骤被发送到所述打印设备;否则,该文件数据在第三发送步骤被发送到所述打印设备。
全文摘要
当一个主计算机进行文件打印时,主计算机上的驱动程序预先把在该文件中第一次出现的字符的字符编码和相应的字符图象发送到打印机,并寄存它们。在此处理之后,驱动程序向打印机发送字符编码形式的所要打印的字符,以及字符以外的映象图象形式的数据。打印机把一个图象映象到一个打印存储器上,参照寄存的字符编码和字符图象把字符映象成图象,并把映象的字符图象重叠到映象在页缓存器上的图象上。打印机把该图象打印到纸上。
文档编号G06K15/02GK1186273SQ97125690
公开日1998年7月1日 申请日期1997年12月26日 优先权日1996年12月27日
发明者古谷阳二, 铃木政义, 冈本义文, 土肥纯, 池野俊彦 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1