專利名稱:一種能夠減少打印內(nèi)存需求的打印控制方法
技術(shù)領(lǐng)域:
本發(fā)明屬于打印控制技術(shù)領(lǐng)域,具體涉及一種能夠減少打印內(nèi)存需求的打印控制方法。
背景技術(shù):
現(xiàn)有技術(shù)中,通常的光柵打印設(shè)備打印一頁的整個(gè)工作流程可分為三部分首先從主機(jī)接收打印數(shù)據(jù);然后將打印數(shù)據(jù)光柵化成光柵點(diǎn)陣;最后將光柵點(diǎn)陣傳送到打印引擎輸出。
對于某些光柵打印設(shè)備如采用激光成像技術(shù)的打印機(jī),光柵點(diǎn)陣必須以固定的速度提供給打印機(jī)引擎,因?yàn)榇蛴C(jī)引擎必須以固定不變的速度將光柵點(diǎn)陣轉(zhuǎn)印到打印鼓上,一旦光柵點(diǎn)陣不能及時(shí)傳送到打印機(jī)引擎,則會(huì)發(fā)生所謂的打印越界(print overrun)的錯(cuò)誤,頁面不能正確的輸出到紙上。
通常,對于光柵點(diǎn)陣以固定速度提供給打印機(jī)引擎的光柵打印設(shè)備而言,打印控制方法有如下幾種(1)預(yù)先光柵化一頁點(diǎn)陣完畢,將光柵點(diǎn)陣存放在內(nèi)存中,然后再開始打印,采用此種方法,因?yàn)楣鈻劈c(diǎn)陣存在內(nèi)存中,可以保證不會(huì)發(fā)生print overrun的錯(cuò)誤,但是,這種方法不足之處在于對于高分辨率的光柵打印設(shè)備,通常需要很大的內(nèi)存,對于彩色打印機(jī)則更加如此,如存儲(chǔ)一個(gè)A4幅面,600DPI的CMYK彩色頁面,大約需要16MB的內(nèi)存,這會(huì)大大增加打印機(jī)的成本;另外,這種方法需要完成光柵化一個(gè)完整頁面后才能開始打印,這往往會(huì)降低打印速度。
(2)另外一種常見的方法是將一個(gè)頁面分為若干段,先將頁面數(shù)據(jù)解釋成為一種按段安排的中間格式,這種中間格式的數(shù)據(jù)比較容易轉(zhuǎn)化為最終的光柵點(diǎn)陣,而且這種中間格式的數(shù)據(jù)所占內(nèi)存通常大大小于頁面的光柵點(diǎn)陣,打印機(jī)先光柵化一段就可以開始打印,在上一段打印的過程中同時(shí)進(jìn)行下一段的光柵點(diǎn)陣實(shí)時(shí)產(chǎn)生,這樣既能提高打印速度,又不需要很大的內(nèi)存來存放一個(gè)完整頁面的光柵點(diǎn)陣,但是,這種方法的不足之處在于一旦有某一段的數(shù)據(jù)很復(fù)雜,打印機(jī)很可能不能夠在上一段打印的時(shí)間內(nèi)及時(shí)完成該段的光柵化,因而會(huì)產(chǎn)生print overrun的錯(cuò)誤,頁面將不能正確輸出。
為了防止打印越界錯(cuò)誤的產(chǎn)生,目前通常的方法是預(yù)先計(jì)算每一段所需要的光柵化時(shí)間,如有光柵化時(shí)間超過一段打印時(shí)間的段,則將這些段預(yù)先光柵化,再開始打印,這樣可以保證不會(huì)產(chǎn)生print overrun,但是,該方法的不足之處在于預(yù)先光柵化所有的超過一段打印時(shí)間的段需要占用一定的內(nèi)存來存放預(yù)先光柵化完畢的點(diǎn)陣,這會(huì)要求打印機(jī)有較大的內(nèi)存,也往往會(huì)引起控制器成本的增加。
在此基礎(chǔ)上,又出現(xiàn)了一些改進(jìn)的方法,如惠普公司在美國專利5129049中提出的方法,該方法的原理是如果某一段的內(nèi)容很簡單或者該段的內(nèi)容已經(jīng)預(yù)先光柵化完畢,則該段打印時(shí)并不需要一個(gè)段的打印時(shí)間來光柵化該段,其中的空閑時(shí)間則可以用來光柵化下一段,這樣,有可能下一段的光柵化時(shí)間可以大于一段打印時(shí)間而不需要預(yù)先光柵化,所以該方法能在一定程度上減少預(yù)先光柵化段的數(shù)目,但是,該方法只利用了相鄰的上一段的光柵化空閑時(shí)間,沒有充分利用所有簡單段及預(yù)先光柵化段的光柵化空閑時(shí)間,因此并不能保證需要預(yù)先光柵化段的數(shù)目為最少,從而不能最有效的減少打印內(nèi)存需求。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種更先進(jìn)的能夠減少打印內(nèi)存需求的打印控制方法,該方法可以在打印的同時(shí)最大限度地充分利用所有簡單段及預(yù)先光柵化段的光柵化空閑時(shí)間來光柵化復(fù)雜段,使打印開始前需要預(yù)先光柵化的段最少,降低了復(fù)雜頁面的內(nèi)存需求。
為達(dá)到以上目的,本發(fā)明采用的技術(shù)方案是一種能夠減少打印內(nèi)存需求的打印控制方法,包括以下步驟A).打印設(shè)備通過接口從主機(jī)接收打印數(shù)據(jù);B).根據(jù)頁面大小、打印速度等參數(shù)確定每頁所分的段的數(shù)目及每段打印時(shí)間TP;C).將打印數(shù)據(jù)解釋成按段組成的中間格式的數(shù)據(jù);D).計(jì)算每一段中間格式數(shù)據(jù)所需要的光柵化時(shí)間TR;E).對所有打印時(shí)間TP小于中間格式數(shù)據(jù)所需要的光柵化時(shí)間TR的段,定義為復(fù)雜段;F).對所有打印時(shí)間TP大于或等于中間格式數(shù)據(jù)所需要的光柵化時(shí)間TR的段,定義為簡單段;G).確定每個(gè)段的開始光柵化時(shí)刻,具體步驟是(1)初始化每一段的開始打印時(shí)刻為Tp乘以該段的段號減去1,其中Tp是指打印一個(gè)段需要的時(shí)間;(2)設(shè)置所有段的結(jié)束光柵化時(shí)刻為該段的開始打印的時(shí)刻,對于所有簡單段,設(shè)置其開始光柵化時(shí)刻為該段的結(jié)束光柵化時(shí)刻減去該段的光柵化時(shí)間TR;(3)初始化每個(gè)段的打印空閑時(shí)間為該段的打印時(shí)間TP;(4)對于除了第一段的所有的簡單段,從打印空閑時(shí)間里面減去光柵化該簡單段占用的時(shí)間,具體方法為從該簡單段的前一段的打印空閑時(shí)間里面減去該段的光柵化時(shí)間;(5)如果不存在還沒有被標(biāo)記的復(fù)雜段,則轉(zhuǎn)入步驟(10);(6)對于所有還沒有被標(biāo)記的復(fù)雜段,設(shè)置其開始光柵化時(shí)刻;(7)選擇開始光柵化時(shí)刻最大并且還沒有被標(biāo)記的一個(gè)段作為處理段,如果該段的開始光柵化時(shí)刻小于0,步驟結(jié)束;(8)更新處理段的結(jié)束光柵化時(shí)刻為在處理段之前最后一個(gè)打印空閑時(shí)間不為0的段的段號,對處理段作標(biāo)記;(9)從打印空閑時(shí)間信息中刪除處理段光柵化所占用的時(shí)間,轉(zhuǎn)入步驟(5);(10)更新所有復(fù)雜段的開始光柵化時(shí)刻;H).啟動(dòng)打印任務(wù),開始打印頁面直至打印結(jié)束。
更進(jìn)一步,上述步驟G中第(10)步中更新所有復(fù)雜段的開始光柵化時(shí)刻的方法包括以下步驟1)對于所有沒有被標(biāo)記的復(fù)雜段,設(shè)置其開始光柵化時(shí)刻為-1,表示需要預(yù)處理;2)初始化每個(gè)段的打印空閑時(shí)間為該段的打印時(shí)間;3)對于除了第一段的所有的簡單段,從打印空閑時(shí)間里面減去被它們占用的光柵化時(shí)間,具體方法為從該段的前一段的打印空閑時(shí)間里面減去該段的光柵化時(shí)間;4)如果不存在被標(biāo)記的復(fù)雜段,步驟結(jié)束,否則選擇被標(biāo)記的復(fù)雜段中結(jié)束光柵化時(shí)刻最大的段作為處理段;5)計(jì)算處理段的開始光柵化時(shí)刻;6)從空閑時(shí)間中刪除被處理段光柵化占用的時(shí)間,取消處理段的標(biāo)記,轉(zhuǎn)入步驟4)。
更進(jìn)一步,對于上述步驟G中第(6)步、步驟(10)中第5)步中所述的計(jì)算一個(gè)段的開始光柵化時(shí)刻,這里將要初始化的段稱為處理段,其詳細(xì)步驟如下a).初始化需要時(shí)間為處理段的光柵化時(shí)間,設(shè)置當(dāng)前段等于處理段;b).判斷當(dāng)前段的段號是否小于2,如是,則說明處理段必須被預(yù)處理,初始化處理段的開始光柵化時(shí)刻為-1,步驟結(jié)束,否則,繼續(xù)下一步驟;
c).從需要時(shí)間中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間;d).如果打印空閑時(shí)間大于0,設(shè)置新的當(dāng)前段為原來當(dāng)前段的前一段,轉(zhuǎn)入步驟b),否則,繼續(xù)下一步驟;e)設(shè)置處理段的開始光柵化時(shí)刻為當(dāng)前段的前一段開始打印時(shí)刻加上光柵化需要時(shí)間的絕對值。
更進(jìn)一步,上述步驟G中第(9)步、步驟(10)中第6)步中所述的刪除處理段光柵化所占用的時(shí)間,其詳細(xì)步驟如下a).初始化需要時(shí)間為處理段的光柵化時(shí)間,設(shè)置當(dāng)前段為處理段;b).從需要時(shí)間中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間;c).如果需要時(shí)間大于0,設(shè)置當(dāng)前段對應(yīng)前一段的打印空閑時(shí)間為0,設(shè)置新的當(dāng)前段為原來當(dāng)前段的前一段,轉(zhuǎn)入步驟b),否則,繼續(xù)下一步;d).設(shè)置當(dāng)前段對應(yīng)前一段的打印空閑時(shí)間為光柵化需要時(shí)間的絕對值。
進(jìn)一步,上述步驟H)中啟動(dòng)打印任務(wù),打印任務(wù)的主要用于完成打印工作,其詳細(xì)步驟如下(1)將所有開始光柵化時(shí)刻為-1的段預(yù)先光柵化;(2)如果存在開始光柵化時(shí)刻大于0的復(fù)雜段段,則啟動(dòng)一個(gè)優(yōu)先級低于主打印任務(wù)的輔助任務(wù)在每個(gè)復(fù)雜段的開始光柵化時(shí)刻開始光柵化相應(yīng)的復(fù)雜段;(3)將第1段光柵化并將光柵點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū);(4)啟動(dòng)打印機(jī)引擎打印當(dāng)前打印緩沖區(qū)中的段;(5)如果下一個(gè)要打印的段是簡單段,則主打印任務(wù)在該簡單段的開始光柵化時(shí)刻光柵化該段;(6)獲取下一段的光柵點(diǎn)陣,并將點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū);(7)打印引擎開始打印下一段;(8)重復(fù)步驟(5)、步驟(6)、步驟(7)直到頁面打印完畢。
本發(fā)明的效果在于采用本發(fā)明所述的打印控制方法,充分利用所有簡單段及預(yù)先光柵化段的光柵化空閑時(shí)間來光柵化復(fù)雜段,使打印開始前需要預(yù)先光柵化的段最少,從而降低了對打印內(nèi)存的需求。
圖1是打印控制方法原理圖;圖2是一個(gè)要打印的頁面及如何將它分為N段的示意圖;
圖3是打印處理步驟的流程框圖;圖4是本發(fā)明主要步驟確定光柵化時(shí)間的流程框圖;圖5是確定一個(gè)段的開始光柵化時(shí)刻圖;圖6是從空閑時(shí)間里面刪除被處理段光柵化占用時(shí)間圖;圖7是更新所有段的開始光柵化時(shí)刻圖;圖8是主打印任務(wù)示意圖;圖9是打印過程中主打印任務(wù)和輔助打印任務(wù)并行運(yùn)行的示意圖。
具體實(shí)施例方式
下面結(jié)合說明書附圖對本發(fā)明作進(jìn)一步地描述如圖1所示,圖1描述了一個(gè)本發(fā)明所涉及的打印控制方法的原理及激光打印機(jī)的各組成部分,它包括一個(gè)主機(jī)接口11,CPU13,ROM16,DRAM12及打印控制單元14,打印機(jī)引擎15等部分,主機(jī)接口11可以是并口,網(wǎng)絡(luò),USB等,打印機(jī)通過主機(jī)接口11從計(jì)算機(jī)10接收要打印的數(shù)據(jù),CPU13是打印機(jī)中的中央控制單元,ROM 16用來存放程序及字庫等,DRAM12則提供程序運(yùn)行空間及光柵點(diǎn)陣的緩沖,打印控制單元14負(fù)責(zé)控制打印機(jī)引擎15的進(jìn)行打印工作,打印機(jī)引擎15則可以將光柵點(diǎn)陣轉(zhuǎn)印到紙上。
如圖2所示,激光打印機(jī)將要打印的頁面在邏輯上按走紙的方向分為若干段,如N(N>=2)段,每一段包含相同的掃描線,如M線,如果一個(gè)頁面線數(shù)不是正好等于N*M,則最后一段線數(shù)小于M,容易得知這不影響本發(fā)明的有效性,假設(shè)打印機(jī)打印一頁的需要的時(shí)間為T秒,則可以計(jì)算出每一段的打印時(shí)間TP=T/N,可以認(rèn)為TP為留給打印機(jī)產(chǎn)生下一段光柵點(diǎn)陣的時(shí)間,如果在TP的時(shí)間內(nèi),不能得到下一段的光柵點(diǎn)陣,則會(huì)產(chǎn)生PrintOverrun錯(cuò)誤。
如圖3所示,本發(fā)明涉及的一種能夠減少打印內(nèi)存需求的打印控制方法,具體實(shí)現(xiàn)方案如下首先,打印機(jī)通過主機(jī)接口11從計(jì)算機(jī)10接收用頁面描述語言如PostScript或PCL來描述的頁面信息,這些信息存放在DRAM12。接著,存放在ROM16中的程序?qū)醋呒埛较颍鶕?jù)頁面大小,打印速度,內(nèi)存大小,CPU速度等參數(shù)來確定將要打印的頁面分為多少段,如N段,按走紙方向,每一段依次命名為段1,段2,段3......段N,并且根據(jù)打印一頁的時(shí)間T,計(jì)算出TP=T/N為一段的打印時(shí)間。接著,對頁面信息中的內(nèi)容如文字,圖形等進(jìn)行解釋,將它們變成一系列比較簡單的中間格式指令。從這些中間格式指令比較容易得出最終的光柵點(diǎn)陣,并且這些指令已經(jīng)按照它們在頁面上的位置被存放在不同的段中,通常,整個(gè)頁面的中間格式命令的大小會(huì)遠(yuǎn)遠(yuǎn)小于最終光柵點(diǎn)陣的大小。
下一步,對所有的段,根據(jù)該段中包含的中間格式命令內(nèi)容計(jì)算該段中中間格式命令光柵化為最終的光柵點(diǎn)陣需要的時(shí)間。對于第1段,這個(gè)時(shí)間表示為TR[I]。
對于所有的段I,比較該段的TR與TP,如果TP<TR[I],則將該段定義為復(fù)雜段,否則定義為簡單段并標(biāo)記。
接著,確定每個(gè)段將在什么時(shí)刻開始光柵化,確定的方法如圖4所示的詳細(xì)介紹。
最后,啟動(dòng)打印任務(wù),開始頁面打印,打印任務(wù)如圖6所示的詳細(xì)描述。
如圖4所示,上述方法中確定的每個(gè)段將在什么時(shí)刻開始光柵化,包含以下步驟(1)初始化每一段的開始打印時(shí)刻,記第一段開始打印時(shí)刻為0,其他段開始打印時(shí)刻為Tp乘以該段的段號減去1;(2)確定簡單段的開始光柵化時(shí)刻,對于所有簡單段,設(shè)置其結(jié)束光柵化時(shí)刻TendRaster為該段的開始打印的時(shí)刻,其開始光柵化時(shí)刻TbeginRaster為該段的結(jié)束光柵化時(shí)刻TendRaster減去該段的光柵化時(shí)間TR;(3)初始化空閑時(shí)間區(qū)域信息,首先,初始化每個(gè)段的打印空閑時(shí)間為該段的打印時(shí)間TP,對于除了第一段的所有的簡單段,從打印空閑時(shí)間里面減去被它們占用的光柵化時(shí)間,具體方法為從該段的前一段的打印空閑時(shí)間里面減去該段的光柵化時(shí)間;(4)初始化所有復(fù)雜段的結(jié)束光柵化時(shí)刻,結(jié)束光柵化時(shí)刻被初始化為該段開始打印的時(shí)刻;(5)檢查是否有復(fù)雜段還沒有被標(biāo)記,如果沒有,則轉(zhuǎn)入更新所有段的開始光柵化時(shí)刻;(6)如果存在復(fù)雜段還沒有被標(biāo)記,則初始化所有還沒有被標(biāo)記的復(fù)雜段的開始光柵化時(shí)刻,一個(gè)段的開始光柵化時(shí)刻TBeginRaster是指假設(shè)該段可以利用空閑時(shí)間區(qū)域信息里面的所有空閑時(shí)間,為了在該段的結(jié)束光柵化時(shí)刻TEndRaster之前完成光柵化,即它最遲應(yīng)該開始光柵化的時(shí)刻,其詳細(xì)方法如圖5的描述;(7)選擇還沒有被標(biāo)記的段中,開始光柵化時(shí)刻最大的段作為處理段;(8)如果處理段的開始光柵化時(shí)刻小于0,則轉(zhuǎn)入更新所有段的開始光柵化時(shí)刻;(9)否則,更新處理段的結(jié)束光柵化時(shí)刻TendRaster為在處理段之前最后一個(gè)打印空閑時(shí)間不為0的段的段號;(10)對處理段作標(biāo)記;
(11)更新空閑時(shí)間區(qū)域信息,從空閑時(shí)間區(qū)域中刪除被處理段占用的時(shí)間,該操作在圖6中詳細(xì)說明,然后轉(zhuǎn)到步驟(5)檢查是否還有段需要處理;上述過程計(jì)算有哪些段可能被安排在輔助任務(wù),在將所有能被插入到調(diào)度序列的段作標(biāo)記,開始更新所有段的開始光柵化時(shí)刻,該過程的詳細(xì)步驟將在圖7中描述。
如圖5所述,確定處理段的開始光柵化時(shí)間,其詳細(xì)步驟如下所述(1)初始化需要時(shí)間Time為處理段的光柵化時(shí)間;(2)設(shè)置當(dāng)前段等于處理段,然后,判斷當(dāng)前段的段號是否小于2,如果是,則設(shè)置處理段的開始光柵化時(shí)刻為-1,步驟結(jié)束,否則繼續(xù)進(jìn)入下一步驟;(3)從需要時(shí)間Time中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間;(4)判斷需要時(shí)間Time是否小于0,如果是,設(shè)置處理段的開始光柵化時(shí)刻為當(dāng)前段的前一段開始打印時(shí)刻加上需要時(shí)間Time的絕對值,否則,設(shè)置新的當(dāng)前段為原來當(dāng)前段的光柵化開始時(shí)刻前一段,判斷當(dāng)前段的段號是否小于2,如果是,則設(shè)置處理段的開始光柵化時(shí)刻為-1,步驟結(jié)束,否則繼續(xù)進(jìn)入步驟(3)。
如圖6所述,刪除被處理段占用的光柵化時(shí)間,其詳細(xì)步驟如下(1)初始化需要時(shí)間Time為處理段的光柵化時(shí)間;(2)設(shè)置當(dāng)前段等于處理段,然后從需要時(shí)間Time中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間;(3)判斷需要時(shí)間Time是否大于0,如果小于0,設(shè)置當(dāng)前段對應(yīng)前一段的打印空閑時(shí)間為需要時(shí)間Time的絕對值,步驟結(jié)束,否則,設(shè)置當(dāng)前段對應(yīng)前一段的打印空閑時(shí)間為0,設(shè)置新的當(dāng)前段為原來當(dāng)前段的前一段,從需要時(shí)間Time中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間,然后繼續(xù)。
如圖7所述,更新所有復(fù)雜段的開始光柵化時(shí)刻。該過程對于沒有被標(biāo)記的復(fù)雜段設(shè)置為預(yù)處理;對于被標(biāo)記的復(fù)雜段,按照圖4中確定的結(jié)束光柵化時(shí)刻的先后順序,安排復(fù)雜段的光柵化過程,所有調(diào)度序列中的復(fù)雜段在保證它后面的段有足夠光柵化時(shí)間的前提下盡可能遲的光柵化。一種可供參考的步驟如圖7所示(1)將所有沒有被標(biāo)記的復(fù)雜段標(biāo)記為需要預(yù)處理,將其開始光柵化時(shí)刻置為-1;(2)初始化空閑時(shí)間區(qū)域信息,其方法為首先,初始化每個(gè)段的打印空閑時(shí)間為該段的打印時(shí)間TP,對于除了第一段外的所有的簡單段,從打印空閑時(shí)間里面減去被它們占用的光柵化時(shí)間,具體方法為從該段的前一段的打印空閑時(shí)間里面減去該段的光柵化時(shí)間;(3)如果不存在被標(biāo)記的復(fù)雜段,則結(jié)束,否則,繼續(xù)下一步;(4)選擇被標(biāo)記的復(fù)雜段中結(jié)束光柵化時(shí)刻TendRaster最大的段作為處理段;(5)計(jì)算處理段開始光柵化時(shí)刻,具體方法在圖5中描述;(6)更新空閑時(shí)間信息,刪除被處理段光柵化所占用的時(shí)間,其具體方法在圖6中描述;(7)取消處理段的標(biāo)記,然后檢查是否還存在被標(biāo)記的復(fù)雜段。
如圖8所述,打印任務(wù)的詳細(xì)步驟如下(1)初始化,將所有標(biāo)記為預(yù)處理的段預(yù)先光柵化;(2)如果存在沒有被預(yù)處理的復(fù)雜段,則創(chuàng)建一個(gè)輔助任務(wù),由該輔助任務(wù)對沒有被預(yù)處理的復(fù)雜段進(jìn)行光柵化,該輔助任務(wù)的的優(yōu)先級低于主打印任務(wù),只能在主打印任務(wù)空閑時(shí)運(yùn)行;(3)光柵化第1段,并將點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū),啟動(dòng)打印引擎;(4)打印機(jī)引擎打印當(dāng)前打印緩沖區(qū)中的段;(5)判斷是否是最后一段,如是,則打印結(jié)束;否則,判斷下一段的類型是否是簡單段,如果是則等待到該段的開始光柵化時(shí)刻光柵化該段,再將光柵點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū),如果不是,則判斷下一段的類型是否是已經(jīng)預(yù)處理的復(fù)雜段,如是則從預(yù)先光柵化完畢的點(diǎn)陣中將光柵點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū),否則,等待輔助任務(wù)光柵化該段完畢,再將光柵點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū)。
圖9描述了一個(gè)本發(fā)明實(shí)施方案的簡單示例,給出了打印輸出過程中主打印任務(wù)和輔助打印任務(wù)及打印機(jī)引擎并行運(yùn)行的示意圖。
圖9所示的示例假設(shè)將頁面分為6段,其中第1,2,4段為簡單段,光柵化時(shí)間分別為0.5Tp,0.5Tp,1Tp,Tp為打印一個(gè)段需要的時(shí)間,第3,5,6段為復(fù)雜段,光柵化時(shí)間分別為1.25Tp,1.25Tp,3.25Tp。如果利用本發(fā)明所述的方法,第6段被標(biāo)示為預(yù)處理,第5段在輔助任務(wù)中于打印開始后的1.75個(gè)Tp的時(shí)刻開始光柵化,第3段在輔助任務(wù)中與打印開始后馬上開始光柵化。
打印開始時(shí),主打印任務(wù)啟動(dòng)一個(gè)優(yōu)先級低于主打印任務(wù)的輔助打印任務(wù)來光柵化第3,5段,主打印任務(wù)先光柵化所有不可實(shí)時(shí)光柵化段即第6段,然后光柵化第1段。
啟動(dòng)打印機(jī)引擎打印第1段,輔助打印任務(wù)開始光柵化第3段,在第一段開始打印后0.5個(gè)Tp,輔助打印任務(wù)被掛起,主打印任務(wù)開始光柵化第二段。
當(dāng)?shù)?段打印完畢,主打印任務(wù)已經(jīng)光柵化完第二段,啟動(dòng)打印機(jī)引擎打印第2段,輔助打印任務(wù)繼續(xù)光柵化第3段。第3段在第二段開始打印后的0.75個(gè)Tp的時(shí)刻完成光柵化,接著,輔助打印任務(wù)繼續(xù)光柵化第5段。
當(dāng)?shù)?段打印完畢,主打印任務(wù)則啟動(dòng)打印機(jī)引擎打印第3段,接著開始光柵化第4段。
當(dāng)?shù)?段打印完畢,主打印任務(wù)則啟動(dòng)打印機(jī)引擎打印第4段,因?yàn)榈?段為復(fù)雜段,其光柵化不在主打印任務(wù)中完成,主打印任務(wù)轉(zhuǎn)入空閑。
當(dāng)?shù)?段打印完畢,主打印任務(wù)則啟動(dòng)打印機(jī)引擎打印第5段,因?yàn)橄乱欢蔚?段為為復(fù)雜段,不在主打印任務(wù)中光柵化,主打印任務(wù)轉(zhuǎn)入空閑。
當(dāng)?shù)?段打印完畢,主打印任務(wù)則啟動(dòng)打印機(jī)引擎打印第6段。
當(dāng)?shù)?段打印完畢,頁面打印結(jié)束。
如圖6所示例,現(xiàn)有的打印技術(shù)通常需要將第1,3,5,6段都預(yù)先光柵化完畢才能開始打印,而采用本發(fā)明,只需要將第1,6段的光柵化即可開始打印,第3,5段的光柵化可以在打印的同時(shí)進(jìn)行,因而打印所需的內(nèi)存得到減少。
以上所述僅為本發(fā)明的其中一個(gè)實(shí)施例而已,并不用以限制本發(fā)明,如以上用激光打印機(jī)來描述本發(fā)明實(shí)施例,但本發(fā)明同樣適用于某些噴墨打印機(jī),激光照排機(jī)等采用光柵點(diǎn)陣進(jìn)行打印的打印設(shè)備,因而凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改,等同替換,改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種能夠減少打印內(nèi)存需求的打印控制方法,包括以下步驟A).打印設(shè)備通過接口從主機(jī)接收打印數(shù)據(jù);B).確定每頁所分的段的數(shù)目及每段打印時(shí)間;C).將打印數(shù)據(jù)解釋成按段組成的中間格式的數(shù)據(jù);D).計(jì)算每一段中間格式數(shù)據(jù)所需要的光柵化時(shí)間TR;E).對所有打印時(shí)間小于中間格式數(shù)據(jù)所需要的光柵化時(shí)間的段,定義為復(fù)雜段;F).對所有打印時(shí)間大于或等于中間格式數(shù)據(jù)所需要的光柵化時(shí)間的段,定義為簡單段;G).確定每個(gè)段的開始光柵化時(shí)刻,設(shè)定第一段開始打印時(shí)刻為0,包括以下步驟(1)初始化每一段的開始打印時(shí)刻為Tp乘以該段的段號減去1,其中Tp是指打印一個(gè)段需要的時(shí)間;(2)設(shè)置所有段的結(jié)束光柵化時(shí)刻為該段的開始打印的時(shí)刻,對于所有簡單段,設(shè)置其開始光柵化時(shí)刻為該段的結(jié)束光柵化時(shí)刻減去該段的光柵化時(shí)間TR;(3)初始化每個(gè)段的打印空閑時(shí)間為該段的打印時(shí)間;(4)對于除了第一段的所有的簡單段,從打印空閑時(shí)間里面減去光柵化該簡單段占用的時(shí)間,具體方法為從該簡單段的前一段的打印空閑時(shí)間里面減去該段的光柵化時(shí)間;(5)如果不存在還沒有被標(biāo)記的復(fù)雜段,則轉(zhuǎn)入步驟(10);(6)對于所有還沒有被標(biāo)記的復(fù)雜段,設(shè)置其開始光柵化時(shí)刻;(7)選擇開始光柵化時(shí)刻最大并且還沒有被標(biāo)記的一個(gè)段作為處理段,如果該段的開始光柵化時(shí)刻小于0,步驟結(jié)束;(8)更新處理段的結(jié)束光柵化時(shí)刻為在處理段之前最后一個(gè)打印空閑時(shí)間不為0的段的段號,對處理段作標(biāo)記;(9)從打印空閑時(shí)間信息中刪除處理段光柵化所占用的時(shí)間,轉(zhuǎn)入步驟(5);(10)更新所有復(fù)雜段的開始光柵化時(shí)刻;H).啟動(dòng)打印任務(wù),開始打印頁面直至打印結(jié)束。
2.如權(quán)利要求1所述的一種能夠減少打印內(nèi)存需求的打印控制方法,其特征在于步驟H)中啟動(dòng)打印任務(wù),打印任務(wù)主要用于完成打印工作,其詳細(xì)步驟如下(1)將所有開始光柵化時(shí)刻為-1的段預(yù)先光柵化;(2)如果存在開始光柵化時(shí)刻大于0的復(fù)雜段段,則啟動(dòng)一個(gè)優(yōu)先級低于主打印任務(wù)的輔助任務(wù)在每個(gè)復(fù)雜段的開始光柵化時(shí)刻開始光柵化相應(yīng)的復(fù)雜段;(3)將第1段光柵化并將光柵點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū);(4)啟動(dòng)打印機(jī)引擎打印當(dāng)前打印緩沖區(qū)中的段;(5)如果下一個(gè)要打印的段是簡單段,則主打印任務(wù)在該簡單段的開始光柵化時(shí)刻光柵化該段;(6)等待當(dāng)前段打印結(jié)束,獲取下一段的光柵點(diǎn)陣,并將點(diǎn)陣傳送到打印點(diǎn)陣緩沖區(qū);(7)打印引擎開始打印下一段;(8)重復(fù)步驟(5)、步驟(6)、步驟(7)直到頁面打印完畢。
3.如權(quán)利要求1所述的一種能夠減少打印內(nèi)存需求的打印控制方法,其特征在于步驟(10)中更新所有復(fù)雜段的開始光柵化時(shí)刻的方法包括以下步驟1)對于所有沒有被標(biāo)記的復(fù)雜段,設(shè)置其開始光柵化時(shí)刻為-1,表示需要預(yù)處理;2)初始化每個(gè)段的打印空閑時(shí)間為該段的打印時(shí)間;3)對于除了第一段的所有的簡單段,從打印空閑時(shí)間里面減去被它們占用的光柵化時(shí)間,具體方法為從該段的前一段的打印空閑時(shí)間里面減去該段的光柵化時(shí)間;4)如果不存在被標(biāo)記的復(fù)雜段,步驟結(jié)束,否則選擇被標(biāo)記的復(fù)雜段中結(jié)束光柵化時(shí)刻最大的段作為處理段;5)計(jì)算處理段的開始光柵化時(shí)刻;6)從空閑時(shí)間中刪除處理段光柵化占用的時(shí)間,取消處理段的標(biāo)記,轉(zhuǎn)入步驟4)。
4.如權(quán)利要求1或3所述的一種能夠減少打印內(nèi)存需求的打印控制方法,其特征在于步驟(6)、步驟(10)中第5)步所述的計(jì)算一個(gè)段的開始光柵化時(shí)刻,這里將要初始化的段稱為處理段,其詳細(xì)步驟如下a).初始化需要時(shí)間為處理段的光柵化時(shí)間,設(shè)置當(dāng)前段等于處理段;b).判斷當(dāng)前段的段號是否小于2,如是,則說明處理段必須被預(yù)處理,初始化處理段的開始光柵化時(shí)刻為-1,步驟結(jié)束,否則,繼續(xù)下一步驟;c).從需要時(shí)間中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間;d).如果打印空閑時(shí)間大于0,設(shè)置新的當(dāng)前段為原來當(dāng)前段的前一段,轉(zhuǎn)入步驟b),否則,繼續(xù)下一步驟;e)設(shè)置處理段的開始光柵化時(shí)刻為當(dāng)前段的前一段開始打印時(shí)刻加上光柵化需要時(shí)間的絕對值。
5.如權(quán)利要求1或3所述的一種能夠減少打印內(nèi)存需求的打印控制方法,其特征在于步驟(9)、步驟(10)中第6)所述的刪除處理段光柵化所占用的時(shí)間,其詳細(xì)步驟如下a).初始化需要時(shí)間為處理段的光柵化時(shí)間,設(shè)置當(dāng)前段為處理段;b).從需要時(shí)間中減去當(dāng)前段對應(yīng)的前一段的打印空閑時(shí)間;c).如果需要時(shí)間大于0,設(shè)置當(dāng)前段對應(yīng)前一段的打印空閑時(shí)間為0,設(shè)置新的當(dāng)前段為原來當(dāng)前段的前一段,轉(zhuǎn)入步驟b),否則,繼續(xù)下一步驟;d).設(shè)置當(dāng)前段對應(yīng)前一段的打印空閑時(shí)間為光柵化需要時(shí)間的絕對值。
全文摘要
本發(fā)明屬于打印控制技術(shù)領(lǐng)域,具體涉及一種能夠減少打印內(nèi)存需求的打印控制方法?,F(xiàn)有打印技術(shù)中,通常需要預(yù)先光柵化的復(fù)雜段會(huì)占用較多的內(nèi)存。而本發(fā)明所述的打印控制方法,是將頁面數(shù)據(jù)先解釋為分段的中間格式數(shù)據(jù),對每一段的中間格式數(shù)據(jù)計(jì)算其需要的光柵化時(shí)間,對于光柵化時(shí)間大于該段打印時(shí)間的段作預(yù)先的分析,把盡可能多的復(fù)雜段安排到打印任務(wù)的空閑時(shí)間里面光柵化。采用本發(fā)明所述的方法能減少打印時(shí)的預(yù)光柵化段的數(shù)量,從而減少打印的內(nèi)存需求。
文檔編號G06K15/00GK1622125SQ20051000058
公開日2005年6月1日 申請日期2005年1月7日 優(yōu)先權(quán)日2005年1月7日
發(fā)明者劉志紅, 林兆祥 申請人:北京北大方正電子有限公司, 北京大學(xué)