欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

打印系統(tǒng)的制作方法

文檔序號:6412606閱讀:224來源:國知局
專利名稱:打印系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種打印系統(tǒng)、打印設(shè)備、以及用于打印出從例如主機傳送來的打印數(shù)據(jù)的打印控制方法。
傳統(tǒng)上,專用于圖象輸出的頁打印機是已知的,并被稱為基于主機的打印機。
在這種打印機中,一個主機把一頁的映象圖象數(shù)據(jù)從該頁的開頭進行壓縮,并將壓縮的數(shù)據(jù)送到打印機的控制器單元。該控制器單元再把接收的壓縮數(shù)據(jù)展開,把展開的數(shù)據(jù)轉(zhuǎn)換成視頻信號,并將該視頻信號與一個引擎單元的紙排放時序相同步地輸出到該引擎單元。以此方式,實現(xiàn)了在紙上的一頁打印。
在這種打印機中,壓縮圖象數(shù)據(jù)至視頻信號的轉(zhuǎn)換和至引擎單元的視頻信號輸出是借助硬件電路來實現(xiàn)的。最終,控制器單元不要求任何CPU,且能夠提供成本非常低的頁打印機。
然而,采用傳統(tǒng)的基于主機的打印機的主計算機暫時把所有打印數(shù)據(jù)—諸如字符打印數(shù)據(jù)、制圖數(shù)據(jù)、圖象粘貼數(shù)據(jù)等—映象為圖象,隨后壓縮映象的圖象,并將壓縮數(shù)據(jù)傳送到打印機。因此,所要從主計算機傳送到打印機的數(shù)據(jù)量變得很大。另外,由于主計算機必須臨時地把所有數(shù)據(jù)映象成圖象,多頁的文件占據(jù)了很長的主計算機處理時間,從而使打印處理時間很長。
本發(fā)明的一個目的,是提供一種打印設(shè)備,它是圖象專用打印機并具有與基于主機的打印機類似的簡單結(jié)構(gòu),但能夠通過接收字符編碼形式的一個字符部分并將其映象成字符圖象,而減小主計算機中的字符映象處理時間和從主計算機傳送的數(shù)據(jù)量,另外還提供了一種打印系統(tǒng)和打印控制方法。
本發(fā)明的另一個目的,是提供一種能夠輸出包括具有大量數(shù)據(jù)的圖象數(shù)據(jù)的打印設(shè)備,以及一種打印系統(tǒng)和打印控制方法。
為了實現(xiàn)上述目的,本發(fā)明包括以下設(shè)置。
即,提供了一種打印系統(tǒng),用于利用一種打印設(shè)備打印由一種主機設(shè)備產(chǎn)生的文件數(shù)據(jù),該主機設(shè)備包括第一發(fā)送裝置,用于以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位把編碼和字符圖象發(fā)送到打印設(shè)備;以及第二發(fā)送裝置,用于把出現(xiàn)在該文件數(shù)據(jù)中的字符以字符編碼的形式并把字符以外的部分以圖象數(shù)據(jù)的形式發(fā)送到打印設(shè)備,且該打印設(shè)備包括寄存裝置,用于寄存從第一發(fā)送裝置發(fā)送的字符編碼和字符圖象;圖象重新構(gòu)成裝置,用于根據(jù)寄存裝置寄存的編碼和字符圖象以圖象數(shù)據(jù)的形式映象從第二發(fā)送裝置發(fā)送的字符編碼,并把映象的圖象數(shù)據(jù)與從第二發(fā)送裝置發(fā)送的圖象相合成;以及用于打印圖象重新構(gòu)成裝置獲得的圖象數(shù)據(jù)的裝置。
還提供了一種打印控制設(shè)備,用于打印從一個主機設(shè)備接收到的打印數(shù)據(jù)—該主機設(shè)備以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位地發(fā)送編碼和字符圖象并隨后以字符編碼的形式發(fā)送出現(xiàn)在文件數(shù)據(jù)中的字符并以圖象數(shù)據(jù)的形式發(fā)送字符以外的一個部分,包括寄存裝置,用于寄存從主機設(shè)備發(fā)送的字符編碼和字符圖象;圖象重新構(gòu)成裝置,用于根據(jù)寄存裝置寄存的編碼和字符圖象來把從主機設(shè)備發(fā)送的字符編碼成圖象數(shù)據(jù),并把映象的圖象數(shù)據(jù)與從第二發(fā)送裝置發(fā)送的圖象相合成;以及用于打印由圖象重新構(gòu)成裝置獲得的圖象數(shù)據(jù)的裝置。
還提供了一種打印控制設(shè)備,用于使一個打印設(shè)備打印出所產(chǎn)生的文件數(shù)據(jù),包括第一發(fā)送裝置,用于以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位把編碼和字符圖象發(fā)送到該打印設(shè)備;以及第二發(fā)送裝置,用于把出現(xiàn)在文件數(shù)據(jù)中的字符以字符編碼的形式并把字符以外的一個部分以圖象數(shù)據(jù)的形式發(fā)送到該打印設(shè)備。
還提供了一種打印控制方法,用于打印從一個主機設(shè)備接收的打印數(shù)據(jù)—該主機設(shè)備以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位發(fā)送編碼和字符圖象并隨后以字符編碼的形式發(fā)送出現(xiàn)在文件數(shù)據(jù)中的字符并以圖象數(shù)據(jù)的形式發(fā)送字符以外的一個部分,包括寄存步驟,用于寄存從主機設(shè)備發(fā)送的字符編碼和字符圖象;圖象重新構(gòu)成步驟,用于根據(jù)寄存步驟中寄存的編碼和字符圖象來把從主機設(shè)備發(fā)送的字符編碼映象成圖象數(shù)據(jù),并把映象的圖象數(shù)據(jù)與在第二發(fā)送步驟中發(fā)送的一個圖象相合成;以及打印在圖象重新構(gòu)成步驟中獲得的圖象數(shù)據(jù)的步驟。
還提供了一種打印設(shè)備的一種控制方法,用于提供所產(chǎn)生的文件數(shù)據(jù),包括第一發(fā)送步驟,用于以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位把編碼和字符圖象發(fā)送到打印設(shè)備;第二發(fā)送步驟,用于把出現(xiàn)在文件數(shù)據(jù)中的字符以字符編碼的形式并把字符以外的一個部分以圖象數(shù)據(jù)的形式發(fā)送到該打印設(shè)備。
還提供了一種計算機可讀取存儲介質(zhì),它根據(jù)從一個主機設(shè)備—該設(shè)備以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位發(fā)送編碼和字符圖象并隨后以字符編碼的形式發(fā)送出現(xiàn)在該文件數(shù)據(jù)中的字符并以圖象數(shù)據(jù)的形式發(fā)送字符以外的一個部分—接收到的打印數(shù)據(jù),存儲用于計算機執(zhí)行的程序寄存過程用于寄存從主機設(shè)備發(fā)送的字符編碼和字符圖象;圖象重新構(gòu)成過程用于根據(jù)寄存過程中寄存的編碼和字符圖象,把從主機設(shè)備發(fā)送的字符編碼映象成圖象數(shù)據(jù),并把映象的圖象數(shù)據(jù)與在第二發(fā)送過程中發(fā)送的一個圖象相合成;以及打印在圖象重新構(gòu)成過程中獲得的圖象數(shù)據(jù)的過程。
還提供了一種計算機可讀取存儲介質(zhì),該介質(zhì)存儲用于使計算機執(zhí)行的一個程序第一發(fā)送過程,用于以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位把編碼和字符圖象發(fā)送到一個打印設(shè)備;以及第二發(fā)送過程,用于把出現(xiàn)在文件數(shù)據(jù)中的字符以字符編碼的形式并把字符以外的一個部分以圖象數(shù)據(jù)的形式發(fā)送到該打印設(shè)備。
通過以下結(jié)合附圖的描述,本發(fā)明的其他特征和優(yōu)點將變得顯而易見。在附圖中相同的標(biāo)號表示了相同或類似的部分。
構(gòu)成說明書一部分的附圖顯示了本發(fā)明的實施例,并與描述一起用于解釋本發(fā)明的原理。


圖1是根據(jù)第一實施例的總體系統(tǒng)的設(shè)置的框圖;圖2是圖象數(shù)據(jù)和字符數(shù)據(jù)合成原理的說明圖;圖3是指令結(jié)構(gòu)的說明圖;圖4是指令序列的結(jié)構(gòu)的說明圖。
圖5顯示了安裝在一個ROM中的程序;圖6A和6B是一個接收緩存器的指針的說明圖;圖7是流程圖,顯示了打印機驅(qū)動程序的操作;圖8是流程圖,顯示了該打印機驅(qū)動程序的操作;圖9是流程圖,顯示了一種接收管理程序的操作;圖10是流程圖,顯示了該接收管理程序的操作;圖11是流程圖,顯示了一種接收單元的操作;圖12是流程圖,顯示了該接收單元的操作;圖13是流程圖,顯示了一種解釋程序的操作;圖14是流程圖,顯示了該解釋程序的操作;圖15是流程圖,顯示了一種寄存程序的操作;圖16是流程圖,顯示了一種打印程序的操作;圖17是流程圖,顯示了一種紙排放程序的操作;圖18是框圖,顯示了根據(jù)第二實施例的總體系統(tǒng)的設(shè)置;圖19是一種控制器單元的帶(band)處理的原理的說明圖;圖20是指令結(jié)構(gòu)的說明圖;圖21顯示了安裝在一個ROM中的程序;圖22是流程圖,顯示了一種打印機驅(qū)動程序的操作;圖23是流程圖,顯示了該打印機驅(qū)動程序的操作;圖24是流程圖,顯示了該打印機驅(qū)動程序的操作;圖25是流程圖,顯示了一種解釋程序的操作;圖26是流程圖,顯示了該解釋程序的操作;圖27是流程圖,顯示了該解釋程序的操作;圖28是流程圖,顯示了該解釋程序的操作;圖29是流程圖,顯示了一種打印程序的操作;圖30是在一個帶的視頻輸出時采用的變量的說明圖;圖31是流程圖,顯示了一種圖象展開/視頻傳送電路的操作;圖32是流程圖,顯示了該圖象展開/視頻傳送電路的操作;圖33是流程圖,顯示了該圖象展開/視頻傳送電路的操作;圖34是根據(jù)第三實施例的圖象帶的重復(fù)原理的說明圖;圖35是圖象帶的重復(fù)的一個例子的說明圖;圖36是指令結(jié)構(gòu)的說明圖;圖37是流程圖,顯示了一種打印機驅(qū)動程序的操作;圖38是流程圖,顯示了該打印機驅(qū)動程序的操作;圖39A和39B是流程圖,顯示了打印機驅(qū)動程序的操作;圖40是流程圖,顯示了一種解釋程序的操作;圖41是流程圖,顯示了該解釋程序的操作。圖42是流程圖,顯示了該解釋程序的操作。圖43是流程圖,顯示了該解釋程序的操作。圖44是框圖,顯示了根據(jù)第四實施例的總體系統(tǒng)的設(shè)置;圖45是指令結(jié)構(gòu)的說明圖;圖46A和46B是一種頁管理表的結(jié)構(gòu)的說明圖;圖47是流程圖,顯示了一種打印機驅(qū)動程序的操作;圖48是流程圖,顯示了該打印機驅(qū)動程序的操作;圖49是流程圖,顯示了該打印機驅(qū)動程序的操作;圖50是流程圖,顯示了該打印機驅(qū)動程序的操作;圖51是流程圖,顯示了該打印機驅(qū)動程序的操作;圖52是流程圖,顯示了一種接收單元的操作;圖53是流程圖,顯示了該接收單元的操作;圖54是流程圖,顯示了一種接收管理程序的操作;圖55是流程圖,顯示了該接收管理程序的操作;圖56是流程圖,顯示了該接收管理程序的操作;圖57是流程圖,顯示了一種解釋程序的操作;
圖58是流程圖,顯示了該解釋程序的操作;圖59A和59B顯示了用于輸出一個巨大圖象的程序的原理;圖60顯示了在輸出具有大量數(shù)據(jù)的圖象時打印機的狀態(tài)。
圖61是流程圖,顯示了根據(jù)第五實施例的打印機驅(qū)動程序的操作;圖62A和62B是流程圖,顯示了根據(jù)第五實施例的打印機驅(qū)動程序的操作;圖63是流程圖,顯示了根據(jù)第五實施例的打印機驅(qū)動程序的操作;且圖64是流程圖,顯示了根據(jù)第五實施例的打印機驅(qū)動程序的操作。
(第一實施例)以下借助附圖來描述第一實施例。
(打印系統(tǒng)的設(shè)置)圖1是框圖,用于說明總體系統(tǒng)的設(shè)置。一個主機1包括一個個人計算機,該個人計算機產(chǎn)生所要寄存的圖象數(shù)據(jù)、用于命令打印的字符編碼、以及壓縮圖象數(shù)據(jù),并將它們送到一個打印機,主機1通過借助一個CPU執(zhí)行從一個次級存儲器裝載到一個主存儲器中的程序而實施這種處理。在主機1,用戶能夠執(zhí)行其所希望的應(yīng)用程序。用戶根據(jù)來自一個輸入單元并顯示在一個顯示單元上的輸入控制這種程序。主機1經(jīng)過一個接口單元而與一個打印機2相連。
打印機2包括一個控制單元3和一個引擎單元4??刂茊卧?從主計算機接收字符數(shù)據(jù)和圖象數(shù)據(jù),產(chǎn)生一個視頻信號并將該視頻信號送到引擎單元4。引擎單元4通過利用從控制單元3接收的視頻信號而在打印紙上打印圖象并排放該打印紙。
控制單元3包括用于控制整個控制單元3的一個中央處理單元(以下稱為CPU)5;存儲描述CPU 5的處理操作的程序的一個只讀存儲器(以下稱為ROM)3;一個隨機存取存儲器(以下稱為RAM)9;用于接收來自主機1的字符和圖象數(shù)據(jù)并把接收數(shù)據(jù)置于RAM 9中分配的一個接收緩存器10的接收單元6;一個字符展開電路17,用于展開接收的壓縮字符數(shù)據(jù)并將展開的數(shù)據(jù)映象到一個幀緩存器11上;一個圖象展開電路16,用于展開接收的壓縮圖象數(shù)據(jù)并將展開的數(shù)據(jù)映象到幀緩存器11上;一個視頻傳送電路7,用于把映象到幀緩存器11上的圖象轉(zhuǎn)換成視頻信號,并將該視頻信號輸出到引擎單元4;等等。數(shù)據(jù)18表示已經(jīng)被接收并以頁為單位而被置于接收緩存器10中的字符數(shù)據(jù),且數(shù)據(jù)19表示已經(jīng)接收并以頁為單位地被置于接收緩存器10中的圖象數(shù)據(jù)。
另外,RAM9包括一個用于程序的工作區(qū)12,它包括一個頁管理表13,用于以頁為單位地管理接收在接收緩存器10中的字符和圖象數(shù)據(jù)18和19;一個寄存字符數(shù)據(jù)區(qū)15,用于以字符為單元地存儲壓縮的點圖象;一個寄存字符管理表14,用于管理寄存的字符數(shù)據(jù);等等。
應(yīng)該注意的是,接收的字符數(shù)據(jù)18的內(nèi)容包括寄存的字符和字符編碼。首先出現(xiàn)在將要在主機1上打印的文件中的字符得到壓縮,并以一個字符的點圖象即寄存字符的形式被發(fā)送到打印機2。對隨后的相同字符的打印以及第一個字符的位置由字符編碼指令。
臨時接收在接收緩存器10中的寄存字符被發(fā)送到并存儲在寄存字符數(shù)據(jù)區(qū)15中。當(dāng)一個字符編碼命令打印時,與該字符編碼對應(yīng)的寄存字符數(shù)據(jù)被從寄存字符數(shù)據(jù)區(qū)15讀出,被字符展開電路17展開,并被映象到幀緩存器11上。另一方面,壓縮圖象數(shù)據(jù)19被圖象展開電路16展開,并被映象到幀緩存器11上。
注意控制單元3的CPU5可采用具有不那樣高的處理性能的成本低廉的產(chǎn)品,因為它只需要利用RAM9中的接收緩存器10、頁管理表13、寄存字符管理表14等來進行存儲管理。
另一方面,引擎單元4包括CPU21和存儲器22。存儲器22包括存儲控制程序的一個ROM23和用于程序的工作區(qū)的RAM24。一個視頻接收單元25接收來自控制單元3的視頻信號,并利用一種顯影/定影單元27把圖象轉(zhuǎn)移到紙上。一個紙送進單元26從紙盒等送進空白的紙,顯影/定影單元27把圖象轉(zhuǎn)移并定影到紙上,且一個紙排放單元28把打印的紙排放出去。
注意,圖1中的粗箭頭表示字符數(shù)據(jù)、圖象數(shù)據(jù)、以及視頻信號的流動,或紙在引擎單元中的流動。細(xì)箭頭表示各個單元之間的控制交換過程??刂茊卧?的CPU5和引擎單元4的CPU21彼此交換信息。所要交換的信息與諸如視頻傳送、紙送進等的打印處理的控制有關(guān)。
圖2是控制單元3中的圖象和字符的合成原理的說明圖。如借助圖1已經(jīng)部分地描述的,主機1的驅(qū)動程序把所要打印的文件分成字符部分和字符以外的部分。字符以外的部分以圖象的形式被映象到主機1上。隨后,驅(qū)動程序以頁為單位地分別把字符數(shù)據(jù)部分和圖象數(shù)據(jù)部分發(fā)送到打印機2。在此情況下,字符數(shù)據(jù)部分是以這樣的方式傳送的一即相應(yīng)的字符的字符編碼和壓縮點圖案數(shù)據(jù)被傳送到并寄存在打印機中,且寄存的字符編碼序列隨后作為打印數(shù)據(jù)而得到發(fā)送。
控制單元3利用圖象展開電路16展開接收的壓縮圖象數(shù)據(jù)19,并把它映象到幀緩存器11上。在接收到字符數(shù)據(jù)18(即字符編碼序列)時,控制單元3利用字符展開電路17展開與各個接收字符編碼相應(yīng)地寄存的壓縮點圖案數(shù)據(jù),并將其映象到幀緩存器11上。在完成了一頁圖象和字符數(shù)據(jù)至幀緩存器11的映象時,視頻傳送電路7把所要打印的一種視頻信號傳送到引擎單元4。
注意,圖象和字符部分的“或(OR)”被寫入到幀緩存器11上。對于文件,這種“或”通常就足夠了。
一定的字符的字符點數(shù)據(jù)在每次打印文件時被寄存一次。即使當(dāng)相同的字符在不同的頁中重復(fù)出現(xiàn)時,該字符也只需要被寄存一次,且其打印被一個字符編碼所重復(fù)地命令。然而,在完成文件打印時,寄存的字符被從RAM9清除。即,寄存的字符在多個文件之間不是有效的。字符寄存以所要打印的文件為單位而得到重復(fù)。
圖3顯示了從主機1送到打印機2的諸如字符數(shù)據(jù)、圖象數(shù)據(jù)等的打印數(shù)據(jù)的指令結(jié)構(gòu)。打印數(shù)據(jù)依次包括任務(wù)啟動指令31、各頁的頁啟動指令32、表示打印位置的指針的位置移動指令33、類型指令34、以及一個指令序列35。類型指令34表示跟隨的指令序列35的類型。指令序列35具有幾種類型,用于進行字符寄存的類型、用于命令字符打印的類型、用于命令圖象打印的類型等等。指令序列35的類型將結(jié)合圖4而得到詳細(xì)描述。在頁啟動指令32之后的指令組與所要打印的文件的頁數(shù)相應(yīng)地重復(fù)出現(xiàn),且用于一個文件的打印指令響應(yīng)于一種任務(wù)結(jié)束指令36而結(jié)束。
在圖3中,位置移動指令33總是在類型指令34之前得到設(shè)置,并它不是總是必要的。例如,當(dāng)類型指令34和指令序列35只與字符的寄存有關(guān)時,就不需要位置移動指令33。
圖4是以類型指令34的值為單位的指令序列35的結(jié)構(gòu)的說明圖。
當(dāng)類型指令34表示類型1時,該指令是一個“只字符寄存”指令。該指令序列包括字體號41、字符編碼42、數(shù)據(jù)尺寸43、以及壓縮字符點圖象數(shù)據(jù)44。
所要寄存的字符數(shù)據(jù)被按照字體而被分類,并與字符編碼相應(yīng)地被寄存在RAM 9上的寄存字符數(shù)據(jù)區(qū)15中。更具體地說,這種分類和相關(guān)是在寄存字符管理表14上進行管理的。
當(dāng)類型指令34包括類型2時,該指令是一個“字符寄存+打印”指令,即同時命令字符的寄存和打印。此時指令序列35的格式與類型1的相同。在此情況下一個字符編碼42暗指所要寄存的字符的編碼分配,以及已經(jīng)寄存的字符的打印命令。
當(dāng)類型指令34表示類型3時,該指令是一個“只字符圖象打印”指令。即字符點圖象數(shù)據(jù)在沒有得到寄存的情況被打印。此時的指令序列35包括一個數(shù)據(jù)尺寸43和壓縮字符點圖象數(shù)據(jù)44。
當(dāng)類型指令34表示類型4時,該指令是一個“字符編碼打印”指令。此時的指令序列35包括一個字體號41和字符編碼42。控制單元3利用字體號41和字符編碼42查詢寄存字符管理表14,以從寄存字符數(shù)據(jù)區(qū)15找到目標(biāo)寄存字符數(shù)據(jù),利用字符展開電路17展開找到的數(shù)據(jù),并將其映象到幀緩存器11上。
當(dāng)類型指令34表示類型5時,該指令是一個“圖象塊粘貼”指令,且此時的指令序列35包括圖象塊的縱向和水平尺寸45和46、數(shù)據(jù)大小47、以及壓縮圖象塊數(shù)據(jù)48??刂茊卧?利用圖象展開電路16展開該壓縮圖象塊數(shù)據(jù),并將其映象到幀緩存器11上。這五個不同的類型指令34得到了采用。
圖5用于說明安裝在控制單元3的RAM8中的程序。
一個接收管理程序51,利用頁管理表13,以頁為單位地管理存儲在接收緩存器10中的字符和圖象數(shù)據(jù)。另外,程序51命令在接收緩存器10上的接收數(shù)據(jù)的寫入位置的接收單元6。
一個解釋程序52解釋存儲在接收緩存器10中的字符數(shù)據(jù)即字符寄存指令和字符打印指令,或圖象數(shù)據(jù)即圖象塊粘貼指令,并命令字符寄存的字符寄存程序53、命令把字符映象到幀緩存器11上的打印程序54、并把圖象貼到幀緩存器11上。
另外,在完成一定頁的所有字符和圖象數(shù)據(jù)至幀緩存器11上的映象時,解釋程序52命令在幀緩存器11上的圖象至引擎單元4的視頻傳送的紙排放程序55,并命令該引擎單元執(zhí)行紙排放。另外,程序52從接收緩存器10中刪除用于紙排放頁的數(shù)據(jù)。刪除是通過只從頁管理表13擦除用于紙排放頁的數(shù)據(jù),而進行的。即,程序52并不實際清除接收緩存器10上的任何數(shù)據(jù)。
以下結(jié)合流程圖(將在后面描述)來詳細(xì)描述各個程序的操作。
注意,接收管理程序51和解釋程序52是當(dāng)打印機的電力開關(guān)被接通時被同時啟動的,并等來自主機1的數(shù)據(jù)。這兩個程序繼續(xù)進行多任務(wù)操作,直到打印機的電力開關(guān)關(guān)斷。
圖6A和6B用于說明當(dāng)接收數(shù)據(jù)的寫入正在進行時指針之間的位置關(guān)系。接收緩存器10具有所謂的“環(huán)緩存器”結(jié)構(gòu)。
接收管理程序51預(yù)先命令限制指針61的接收單元6,且在接收緩存器10中直到限制指針61的位置的接收數(shù)據(jù)直接寫入得到了允許。其寫入位置—它是以字節(jié)為單位而遞增的—由接收單元6管理。
參見圖6A,在打印機2啟動之后,限制指針61立即匹配接收緩存器10的最大值位置,即接收緩存器10上的區(qū)的結(jié)束地址。然而,在圖6A中,限制指針61被設(shè)定在略微在接收緩存器10的最大值之前處,以進行描述。這種狀態(tài)表明接收數(shù)據(jù)已經(jīng)被接收單元6寫入到略微在限制指針61之前的位置。
接收數(shù)據(jù)又被解釋程序52所解釋,且引擎單元4從其字符和圖象數(shù)據(jù)已經(jīng)被映象到幀緩存器11上的頁開始排放打印好的紙。隨后,一個第一頁—其進行引擎單元4的紙排放命令還沒有完成—被一個解釋指針62所指。另外,其至引擎單元4的紙排放命令還沒有完成的一個第一頁被一個紙排放指針63所指。即,已經(jīng)接收但還沒有被解釋的數(shù)據(jù)被存儲在解釋指針62與最新的接收數(shù)據(jù)之間,且已經(jīng)被解釋但還沒有輸出的數(shù)據(jù)被存儲在紙排放指針63與解釋指針62之間。另外,對于在紙排放指針62的當(dāng)前地址之前的一個位置,由于相應(yīng)的紙已經(jīng)被排放,且存儲在其中的數(shù)據(jù)不是必要的,該部分被“擦除”,且新接收的數(shù)據(jù)能夠得到寫入。在“擦除”時,數(shù)據(jù)并不被實際清除,而是以新接收的數(shù)據(jù)覆蓋。
注意,解釋指針62和紙排放指針63是以頁為單位地設(shè)定的。解釋程序52能夠通過查詢由接收管理程序51產(chǎn)生和管理的頁管理表13,來檢測接收緩存器10上的頁邊界位置等。
圖6B顯示了一種狀態(tài)—其中接收數(shù)據(jù)已經(jīng)被寫入到接收緩存器10的最大值的位置。在圖6B中,接收管理程序51命令接收單元6把限制指針61移到接近接收緩存器10的開始地址的一個位置,且在圖6B所示的狀態(tài)下,由接收單元6進行的接收數(shù)據(jù)的寫入實際上正在略微接近開始地址位置處進行。即,進行了所謂的“環(huán)緩存器”操作。
限制指針61是按照以下步驟更新的。當(dāng)接收單元6已經(jīng)把接收數(shù)據(jù)寫入到直到限制指針61的位置時,它通知接收管理程序51“寫入已經(jīng)達到了極限且不能再寫入更多的數(shù)據(jù)”。即,接收單元6請求接收管理程序51更新限制指針61。接收管理程序51檢驗紙排放指針63,以檢查有無新的空白。隨后,程序51命令接收單元6把紙排放指針63的當(dāng)前位置作為限制指針61的新位置。以此方式,接收單元6能夠從限制指針61的老位置向新位置寫入接收數(shù)據(jù)。
注意,接收單元6不只是在“寫入位置已經(jīng)達到限制指針61”時才與接收管理程序51通信,而且在“它從接收數(shù)據(jù)檢測到任務(wù)啟動指令31、頁啟動指令32、任務(wù)結(jié)束指令36”等時也進行這種通信。借助這種通信接收管理程序51能夠在信任地讓接收單元6進行實際的接收工作—即信號線的控制和接收數(shù)據(jù)至存儲器的寫入—的同時,管理接收的頁。
注意,接收單元6具有用于把從主機1接收的數(shù)據(jù)高速寫入接收緩存器10的設(shè)置,即所謂的DMA(動態(tài)存儲器存取)接收電路。這種電路包括一個FIFO(先進先出)緩存器。從主機1送來的圖象數(shù)據(jù)被臨時存儲在該FIFO緩存器中,并隨后被寫入到由接收管理程序51指定的接收緩存器10上的寫入位置。由于這種電路是現(xiàn)有技術(shù),所以省略了對其的詳細(xì)描述。工作區(qū)12包括頁管理表13、寄存字符管理表14、寄存字符數(shù)據(jù)區(qū)15、等等,但將省略對它們的內(nèi)部結(jié)構(gòu)的詳細(xì)描述。然而,這些表和區(qū)具有有效的結(jié)構(gòu),從而不會消耗過量的存儲器容量。
(打印控制程序)以下結(jié)合流程圖描述根據(jù)本發(fā)明的第一實施例的打印系統(tǒng)的操作。
(打印機驅(qū)動程序)圖7是用于說明主機1上的打印機驅(qū)動程序的操作的流程圖。該打印機驅(qū)動程序,從包括字符和圖象數(shù)據(jù)并由用戶采用的應(yīng)用軟件程序產(chǎn)生的文件數(shù)據(jù),產(chǎn)生出借助圖3和4描述的字符和圖象打印指令,并把它們傳送到打印機2。當(dāng)用戶從應(yīng)用軟件程序命令文件打印時,主機1中的打印機驅(qū)動程序得到啟動。
在啟動時,驅(qū)動程序在主機1的存儲器上保證了一頁的幀緩存器(未顯示),并同時清理該幀緩存器。在驅(qū)動程序完成了文件打印時,用作該幀緩存器的存儲區(qū)被釋放。
在實際處理中,驅(qū)動程序在步驟S1把一個任務(wù)啟動指令31傳送到打印機2,并在步驟S2檢查是否從一個應(yīng)用程序接收到了某些命令。如果步驟S2為“否”,驅(qū)動程序形成一個環(huán)并等候接收命令。另一方面,如果步驟S為“是”,驅(qū)動程序在步驟S3檢查接收的命令是否文件結(jié)束命令。如果步驟S3為“是”,驅(qū)動程序在步驟S4檢查在文件結(jié)束之前的最后一頁中是否包括圖象數(shù)據(jù)。如果步驟S4為“是”,驅(qū)動程序在步驟S5傳送一個表示圖象塊的粘貼位置的位置移動指令33,并還在步驟S6傳送類型5的一個類型指令34即包括圖象塊的縱向和水平大小45和46、數(shù)據(jù)大小47、以及壓縮圖象塊數(shù)據(jù)48的指令。
在步驟S6傳送的圖象塊是包括作為單個圖象塊的整個最后頁的數(shù)據(jù)。一頁的圖象被映象到分配在主機1的存儲器上的用于一頁的幀緩存器上。在圖象指令在步驟S6得到傳送之后,驅(qū)動程序清除主機上的幀緩存器的內(nèi)容。
如果步驟S4為“否”,或步驟S6后,驅(qū)動程序在步驟S7把一個任務(wù)結(jié)束指令36傳送到打印機2,從而結(jié)束驅(qū)動程序處理程序例程。
如果步驟S3為“否”,驅(qū)動程序在步驟S8檢查是否從應(yīng)用程序接收到了一個頁啟動命令。如果步驟S8為“是”,驅(qū)動程序在步驟S9檢查前一頁是否出現(xiàn)在一個相同的文件中并包括一個圖象。換言之,它檢查一個圖象是否被映象到用于前一頁的幀緩存器上。如果步驟S9為“是”,驅(qū)動程序在步驟S10傳送表示一個圖象塊的粘貼位置的位置移動指令33,并還在步驟S11向打印機傳送類型5的一個類型指令34—即圖象塊指令45、46、47、和48。隨后,驅(qū)動程序清除主機1上的幀緩存器的內(nèi)容。
如果步驟S9為“否”,或者在步驟S11之后,驅(qū)動程序在步驟S12把一個頁啟動指令32發(fā)送給打印機2,且流程返回到步驟S2以等候來自應(yīng)用程序的下一個命令。
如果步驟S8為“否”,驅(qū)動程序在步驟S13檢查是否從應(yīng)用程序接收到了一個字符打印命令,且在此文件中是否出現(xiàn)有字符。如果步驟S13為“是”,流程進行到步驟S14,以向打印機2發(fā)送一個位置移動指令33。驅(qū)動程序隨后在步驟S15檢查寄存字符的數(shù)目是否超過了其極限。如果步驟S15為“否”,驅(qū)動程序在步驟S16向打印機2發(fā)送類型2的類型指令34即“字符寄存+打印”指令41、42、43、和44。另一方面,如果在步驟S15判定寄存字符的數(shù)目已經(jīng)超過了極限,驅(qū)動程序在步驟S17向打印機2發(fā)送一個類型3的類型指令34—即“只字符圖象打印”指令43和44。在步驟S16或步驟S17之后,流程返回到步驟S2,以等候來自應(yīng)用程序的下一個命令。
在步驟S17,驅(qū)動程序向打印機2發(fā)送一個字符點圖象。在此情況下,采用了只執(zhí)行點圖象的粘貼但不寄存它的指令。作為另一種方法,當(dāng)寄存字符的數(shù)目執(zhí)行超過了極限時,一個字符點圖象可被直接映象屬性主機1上的幀緩存器上。在此情況下,在步驟S6或S11,包括作為單個圖象塊的一個頁的數(shù)據(jù)的指令被發(fā)送給打印機2。
如果步驟S13為“否”,驅(qū)動程序在步驟S18檢查應(yīng)用程序是否命令該字符的第二或隨后的打印。如果步驟S18為“是”,驅(qū)動程序在步驟S19向打印機2發(fā)送表示打印位置的一個位置移動指令33,并在步驟S20向打印機2發(fā)送類型4的類型指令34—即字符編碼打印指令41和42。隨后,流程返回到步驟S2,以等候來自應(yīng)用程序的下一個命令。
如果步驟S18為“否”,則判定已經(jīng)從應(yīng)用程序接收到了標(biāo)尺線畫出命令、畫圖命令、圖象粘貼命令等,且驅(qū)動程序在步驟S21把這種接收到的數(shù)據(jù)以圖象的形式映象到主機1上的幀緩存器上。隨后,隨后,流程返回到步驟S2,以等候來自應(yīng)用程序的下一個命令。
主機1在上述步驟中把打印數(shù)據(jù)以指令序列的方式送到打印機。
(接收管理程序)圖9和10是流程圖,用于說明打印機2中的接收管理程序51的操作。該程序在打印機2的電力開關(guān)被接通之后立即啟動。
在步驟S31,程序清除接收緩存器10、幀緩存器11、頁管理表13以及工作區(qū)12中的寄存字符管理表14等的內(nèi)容。在步驟S32,程序指令接收單元6把接收單元6的接收數(shù)據(jù)寫入極限值—即圖6中描述的限制指針61的值—設(shè)定在接收緩存器的最大值。借助這種設(shè)定,接收單元6能夠?qū)懭胫钡浇邮站彺嫫鞯拇笮〉臄?shù)據(jù)。隨后,程序在步驟S33檢查用戶是否已經(jīng)關(guān)斷了打印機的電力開關(guān)。如果步驟S3為“是”,程序結(jié)束其處理。
如果步驟S33為“否”,程序在步驟S34檢查是否從接收單元6接收到了接收啟動信息。該接收啟動信息表示接收單元6是否從來自主機1的發(fā)送數(shù)據(jù)中檢測到了一個任務(wù)啟動指令31。如果步驟S34為“否”,流程返回到步驟S33,且程序形成一個環(huán)以等候從主機1發(fā)送的打印指令。
如果步驟S34為“是”,程序命令接收單元6把接收數(shù)據(jù)寫入接收緩存器10。
在檢測到任務(wù)啟動指令31時,接收單元6暫時停止從主機1的接收,并把任務(wù)啟動指令31的檢測信息提供給接收管理程序51。隨后接收單元6等候來自接收管理程序51的把接收數(shù)據(jù)寫入接收緩存器10的命令。這種處理與步驟S35對應(yīng)。另一方面,接收單元6放棄檢測到任務(wù)啟動指令31的所有接收數(shù)據(jù)。即,接收單元6從主機1接收數(shù)據(jù)但不把它們寫入接收緩存器10。
在步驟S35之后,程序在步驟S36等候1秒。在此1秒里,接收單元6把接收數(shù)據(jù)寫入接收緩存器10。隨后,程序在步驟S37檢查是否從接收單元6接收到了頁啟動指令32或任務(wù)結(jié)束指令36的檢測信息。如果步驟S37為“是”,程序在步驟S38把接收的頁寄存在頁管理表13中。此時,程序可經(jīng)常寄存到頁管理表13中的不僅是單個的頁,而且還可同時寄存多個頁。即,在步驟S37時,某些頁啟動指令和任務(wù)結(jié)束指令可能已經(jīng)排隊。
程序在步驟S39檢查來自接收單元6的信息的內(nèi)容是否包括一個任務(wù)結(jié)束指令36。如果步驟S39為“是”,程序命令接收單元6結(jié)束寫入,且流程返回到步驟S33。隨后,程序形成一個環(huán)并等候接收下一個任務(wù)。然而,如果步驟S39為“否”,流程返回到步驟S36,且程序形成一個環(huán)以繼續(xù)把接收數(shù)據(jù)寫入接收緩存器10。
注意,接收單元6在檢測到任務(wù)結(jié)束指令時暫時停止了數(shù)據(jù)接收。更具體地說,即使當(dāng)接收單元6依次接收了多個任務(wù)時,它也不把所有接收數(shù)據(jù)同時地隨機寫入接收緩存器10,而是響應(yīng)于來自接收管理程序51的命令而以任務(wù)為單位地把它們寫入接收緩存器10。
如果步驟S37為“否”,程序在步驟S40檢查是否從接收單元6接收到了表示接收數(shù)據(jù)的寫入位置已經(jīng)達到了指定的極限值的信息。如果步驟S40為“否”,流程返回到步驟S36,且程序形成一個環(huán)以繼續(xù)進行接收單元6的接收數(shù)據(jù)寫入。另一方面,如果步驟S40為“是”,程序在步驟S41檢查程序是否能夠通知接收單元6一個新的極限值。如果步驟S41為“是”,程序在步驟S42通知接收單元6一個新的極限值。隨后,流程返回到步驟S36,且程序形成一個環(huán)以繼續(xù)由接收單元6把接收數(shù)據(jù)寫入接收緩存器10。
如果步驟S41為“否”,程序在步驟S43檢查接收數(shù)據(jù)是否太大?!疤蟮臄?shù)據(jù)”指的是即使當(dāng)接收緩存器10被全部使用時也不能接收的一打印的數(shù)據(jù)。如果步驟S43為“是”,程序在步驟S44在打印機2的一個面板上顯示一個錯誤消息,并在步驟S45清除接收緩存器10、幀緩存器11、頁管理表13、以及工作區(qū)12中的寄存字符管理表14等中的內(nèi)容。在步驟S46,程序命令接收單元6把接收數(shù)據(jù)寫入極限值設(shè)定為接收緩存器的最大值。隨后,程序命令接收單元6結(jié)束寫入,且流程返回到步驟S33,以形成一個環(huán),從而等候下一個文件的任務(wù)啟動信息。借助這種處理,包括造成錯誤—該錯誤是由于數(shù)據(jù)太大而引起的—的頁的所有文件任務(wù)都被從該太大的頁中放棄了。
注意,在上述描述中在步驟S44“在打印機2的面板上顯示一個錯誤消息”,但在圖1的框圖中沒有描述或說明面板。然而,通常的打印機等在打印機2的前或上表面上都具有一個液晶面板、狀態(tài)顯示燈等,以表示“可打印”、“錯誤”、或“無紙”狀態(tài)。因此,省略了對其的詳細(xì)描述。
(接收單元6)
圖11和12是流程圖,用于說明接收單元6的操作。接收單元6的操作已經(jīng)在描述接收管理程序51的操作時在圖9和10中提到了,但將在下面借助這些流程圖進行詳細(xì)描述。雖然接收單元6是一個硬件電路且不同于通常的程序,以下將借助流程圖對其操作順序進行描述。
接收單元6在打印機2的電力開關(guān)接通的同時開始操作。在步驟S51,接收單元6臨時停止接收。更具體地說,接收單元6把打印機2設(shè)定為繁忙,以阻止從主機1的數(shù)據(jù)發(fā)送。隨后,在步驟S52,接收單元6等候來自接收管理程序51的接收緩存器10的寫入位置的極限值的命令。在接收到該命令時,在步驟S53,接收單元6被置于一個狀態(tài)—其中它能夠接收來自主機1的數(shù)據(jù)但放棄該接收的數(shù)據(jù)。
隨后在步驟S54檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S54為“是”,接收單元6結(jié)束其操作。如果步驟S54為“否”,則它在步驟S55檢查是否從接收數(shù)據(jù)檢測到了一個任務(wù)啟動指令31。如果步驟S55為“否”,流程返回到步驟S54,以等候來自主機1的任務(wù)啟動指令31。
如果步驟S55為“是”,接收單元6在步驟S56暫時停止接收,并在步驟S57把表示任務(wù)啟動指令31的檢測的信息提供給接收管理程序51。即,通過把打印機2設(shè)定為繁忙以阻止從主機1的數(shù)據(jù)接收,而暫時停止了接收。
在步驟S58,接收單元6等候來自接收管理程序51的至接收緩存器10的寫入啟動命令。在檢測到該命令時,單元6在步驟S59繼續(xù)從主機1接收數(shù)據(jù)并將從主機1接收的數(shù)據(jù)寫入接收緩存器10。它在步驟S60檢查是否檢測到了一個頁啟動指令32。如果步驟S60為“是”,單元6在步驟S61把頁啟動指令32的檢測信息提供給接收管理程序51。此時,接收管理程序51把接收的文件記錄在頁管理表13中。在步驟S61之后,流程返回到步驟S59,以執(zhí)行數(shù)據(jù)接收和寫入。
另一方面,如果步驟S60為“否”,則在步驟S62檢查是否檢測到了一個任務(wù)結(jié)束指令36。如果步驟S62為“是”,單元6在步驟S63暫時停止接收,并在步驟S64把任務(wù)結(jié)束指令36的檢測信息提供給接收管理程序51。此時,接收管理程序51把任務(wù)的結(jié)束記錄在頁管理表13上。
隨后,在步驟S65,接收單元6等候一個命令—該命令允許接收但放棄來自接收管理程序51的接收數(shù)據(jù)。在接收到該命令時,流程返回到步驟S53,以等候下一個文件的任務(wù)啟動指令31。
如果步驟S62為“否”,則在步驟S66檢查接收緩存器10的寫入位置是否已經(jīng)達到了極限值。如果步驟S66為“是”,單元6在步驟S67暫時停止接收,并在步驟S68將表示接收緩存器10上的寫入位置已經(jīng)達到極限值的信息提供給接收管理程序51。
隨后在步驟S69檢查是否從接收管理程序51接收到了接收緩存器10上的寫入位置的新的極限值的命令。如果步驟S69為“否”,則在步驟S70檢查是否從接收管理程序51接收到了一個寫入結(jié)束命令。如果步驟步驟S70為“否”,則流程返回到步驟S69以形成一個環(huán)。更具體地說,接收單元6等候來自接收管理程序51的寫入結(jié)束命令或新的極限值的命令。注意,當(dāng)由于一頁的數(shù)據(jù)太大—它即使在使用了接收緩存器10的所有區(qū)的情況下也不能被存儲在接收緩存器10中—而發(fā)生了錯誤時,在步驟S70判定從接收管理程序51接收到了寫入結(jié)束命令。
如果步驟S69為“否”,則流程返回到步驟S59以繼續(xù)數(shù)據(jù)接收或?qū)懭?。如果步驟S70為“是”,流程返回到步驟S53,且在此之后隨后的數(shù)據(jù)得到接收但被放棄,直到接收到下一個任務(wù)啟動指令31。即,造成了由于太大的數(shù)據(jù)引起的錯誤的文件的任務(wù)被放棄了。
另一方面,如果步驟S66為“否”,流程返回到步驟S59,以繼續(xù)數(shù)據(jù)接收和至接收緩存器的寫入。
(解釋程序)圖13和14是流程圖,用于說明解釋程序52的操作。解釋程序52是在打印機2的電力被接通時啟動的,并解釋由接收單元6寫入接收緩存器10中的打印指令。
在步驟S81,程序檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S81為“是”,該程序結(jié)束其處理。如果步驟S81為“否”,程序在步驟S82檢查接收緩存器10是否存儲一頁的接收數(shù)據(jù)。如果步驟S82為“否”,流程返回到步驟S81以形成一個環(huán),從而等候接收來自主機1的數(shù)據(jù)。在步驟S82,程序通過查詢頁管理表13而檢查接收到的頁數(shù)據(jù)的有/無。頁管理表13由接收管理程序51管理,如已經(jīng)結(jié)合圖9和10所描述的。
如果步驟S82為“是”,程序解釋并處理在該頁中的打印指令。程序在步驟S83檢查第一指令是否一個位置移動指令33。如果步驟S83為“是”,程序在步驟S84移動游標(biāo)。在此”游標(biāo)”是一個想象的指針,它表示了感興趣的字符或圖象在幀緩存器11上的映象位置。更具體地說,這種“游標(biāo)”是表示工作區(qū)12上的X和Y坐標(biāo)的變量。在步驟S84之后,流程跳到步驟S96。
如果步驟S83為“否”,程序在步驟S85檢查指令是否為類型1的類型指令34即字符寄存指令。如果步驟S85為“是”,則在步驟S86由字符寄存程序53進行字符寄存,且流程跳到步驟S96。字符寄存將結(jié)合圖15描述。
如果步驟S85為“否”,程序在步驟S87檢查該指令是否類型2的類型指令34,即字符寄存+打印指令。如果步驟S87為“是”,則在步驟S88進行字符寄存,且在步驟S89進行打印。隨后,流程跳到步驟S96。在步驟S88的字符寄存與在步驟S86的相同。在步驟S89的打印由打印程序54進行,并將在后面結(jié)合圖16進行描述。
如果步驟S87為“否”,則程序在步驟S90檢查該指令是否類型3的類型指令34,即一個字符圖象打印指令。如果步驟S90為“是”,則在步驟S91只進行字符圖象的打印,且流程跳到步驟S96。
如果步驟S90為“否”,程序在步驟S92檢查該指令是否類型4的類型指令34,即字符編碼指令。如果步驟S92為“是”,則在步驟S93進行打印,且隨后流程跳到步驟S96。步驟S93的打印與上述的步驟S89的相同。
如果步驟S92為“否”,程序在步驟S94檢查該指令是否類型5的類型指令,即一個圖象塊指令。如果步驟S94為“是”,程序在步驟S95利用圖象展開電路展開壓縮圖象數(shù)據(jù),并將展開的圖象塊粘貼到幀緩存器11上。流程隨后進行到步驟S96。
在步驟S84、S86、S89、S91、S93、或S95之后,或者在步驟S94為“否”時,流程進行到步驟S96。在步驟S96,程序檢查該頁的接收數(shù)據(jù)是否仍然包括未解釋的指令。如果步驟S96為“是”,流程返回到步驟S83以解釋該未解釋的指令。
另一方面,如果在步驟S96判定該頁中已經(jīng)沒有未解釋的指令,則在步驟S97由紙排放程序55執(zhí)行紙排放。紙排放將結(jié)合圖17進行描述。
程序在步驟S98清除頁管理表13上的紙排放頁的數(shù)據(jù),并在步驟S99清除幀緩存器11的內(nèi)容。程序隨后在步驟S100檢查該任務(wù)的所有頁的紙排放是否完成。如果步驟S100為“否”,則流程返回到步驟S81以等候該文件的隨后頁的數(shù)據(jù)接收。
如果步驟S100為“是”,程序在步驟S101清除寄存字符管理表14,且流程返回到步驟S81以等候下一個文件的任務(wù)的數(shù)據(jù)接收。
在步驟S98,程序清除頁管理表13上的頁寄存。接收管理程序51證實該區(qū)已經(jīng)被清除,并隨后命令接收單元6接收數(shù)據(jù)寫入位置的新的極限值。
(字符寄存程序)圖15是流程圖,用于詳細(xì)描述字符寄存程序53的操作。
該程序從解釋程序52調(diào)用。在步驟S111,程序把壓縮的字符點圖象數(shù)據(jù)傳送到寄存字符數(shù)據(jù)區(qū)15。在此之后,程序在步驟S112把寄存地址、字體號、字符編碼等記錄到寄存字符管理表14中,從而結(jié)束處理。
(打印程序)圖16是流程圖,用于詳細(xì)描述打印程序54的操作。該程序也是從解釋程序52調(diào)用的。
在步驟S121,程序從寄存字符數(shù)據(jù)區(qū)15獲得具有與接收字體號41匹配的字體號和與接收字符編碼42匹配的字符編碼的寄存字符的地址。該程序在步驟S122利用字符展開電路17展開在該地址的壓縮點圖象,并在步驟S123將展開的字符點圖象粘貼在幀緩存器11上的游標(biāo)位置。隨后, 該程序的處理結(jié)束。
(紙排放程序)圖17是詳細(xì)描述紙排放程序55的操作的流程圖。該程序也是從解釋程序52調(diào)用的。
在步驟S131,由視頻傳送電路7把幀緩存器11上的一頁的圖象轉(zhuǎn)換成視頻信號,且該視頻信號被提供給引擎單元4。在步驟S132,繼續(xù)檢查受到引擎單元的打印的的紙的排放是否肯定完成了。如果步驟S132為“是”,該程序的處理結(jié)束。另一方面,如果步驟S132為“否”,則檢查打印機2中是否發(fā)生了“堵紙”或“紙用完了”錯誤。如果這些錯誤都沒有發(fā)生,流程返回到步驟S132以形成一個環(huán),從而監(jiān)測紙排放的完成。
如果發(fā)生了“堵紙”或“紙用完了”錯誤,則在步驟S134在打印機的面板上顯示一個表示“堵紙,除去堵塞的紙”或“紙用完了,重新裝紙”的消息。在此之后,程序在步驟S135進行等候,直到用戶除去了堵塞的紙或重新裝上了紙。如果步驟S135為“是”,流程返回到步驟S131,以重新輸出用于一個相同的頁的視頻信號并等候紙排放的完成。
(第一實施例的獨特效果)借助上述設(shè)置,本實施例的打印系統(tǒng)能夠提供以下的獨特效果。
(1)在此實施例中,控制單元3的CPU不需要任何高性能的處理器,因為它只進行存儲器管理和寄存字符數(shù)據(jù)的傳送,從而降低了制作成本。數(shù)據(jù)接收和至存儲器的寫入、壓縮數(shù)據(jù)的展開、視頻信號的輸出等由硬件電路完成。因此,與只基于圖象傳送的基于主機的打印機相比,成本的增加得到了減小。
(2)由于主機幾乎不進行任何字符圖象的映象,主機上的打印機驅(qū)動程序的處理時間能夠得到縮短。送到其的所有數(shù)據(jù)都必須是圖象數(shù)據(jù)和字符數(shù)據(jù)形式的基于主機的打印機,要求長的主機字符映象時間。然而,根據(jù)本實施例,主機中的打印所要求的時間能夠得到縮短。
(3)由于多數(shù)字符能夠以字符編碼的形式傳送,所要傳送到打印機的數(shù)據(jù)的量能夠得到減小。送到其的所有數(shù)據(jù)都必須是圖象數(shù)據(jù)和字符數(shù)據(jù)形式的基于主機的打印機,必須支撐至打印機的大量的數(shù)據(jù)傳送,因此,打印所需的時間能夠得到縮短。
(4)由于控制器單元具有用于一頁的幀緩存器,且至紙上的打印是在一頁的字符和圖象至幀緩存器的映象完成時開始的,不會發(fā)生作為基于帶處理的打印機所獨有的問題的過度運行錯誤。
(5)基于主機的打印機具有一個小的接收緩存器,且該主機必須相繼地把分到帶中的圖象發(fā)送到打印機。在此情況下,由于主機給予數(shù)據(jù)發(fā)送最高優(yōu)先,主機上的其他應(yīng)用程序可被鎖定。然而,在本實施例中,由于控制器單元具有用于一頁的幀緩存器,且至紙上的打印是在一頁的字符和圖象至幀緩存器上的映象完成時開始的,所以在主機上不發(fā)生鎖定等。
(第二實施例)以下結(jié)合附圖描述第二實施例的打印系統(tǒng)。
(系統(tǒng)設(shè)置)在第一實施例中,字符和圖象數(shù)據(jù)被映象到RAM9上的幀緩存器11上,且隨后作為視頻信號而被傳遞到引擎單元4。然而,在第二實施例中,與第一實施例中不同,字符和圖象數(shù)據(jù)被交替地映象到RAM9上的兩個帶存儲器上,并以視頻信號的形式被發(fā)送到引擎單元4。
圖18是用于說明整個系統(tǒng)的設(shè)置的框圖。由于多數(shù)部件與圖1中的相同,所以下面只描述它們的不同。
帶A71和B72被指定為RAM9上的兩個帶存儲器,以代替幀緩存器11,且一個圖象展開/視頻傳送電路73代替了視頻傳送電路7。圖象展開/視頻傳送電路73交替地把帶A71和B72上的存儲器圖象轉(zhuǎn)換成視頻信號,并把轉(zhuǎn)換的視頻信號發(fā)送到引擎單元4。作為電路73的另一功能,當(dāng)從驅(qū)動程序送來的用于一定帶的數(shù)據(jù)是用于一個空白帶的數(shù)據(jù)時,用于該部分的視頻信號不被發(fā)送。作為電路73又一個功能,當(dāng)從驅(qū)動程序送來的、用于一定帶的壓縮圖象數(shù)據(jù)只包括單個的圖象塊時,壓縮圖象塊不被映象到該帶上,而是被展開成圖象數(shù)據(jù)并被轉(zhuǎn)換成將要被發(fā)送到引擎單元4的視頻信號。即,電路73具有三個不同的功能。
在存儲在第一實施例中的接收緩存器10中的數(shù)據(jù)中,字符和圖象數(shù)據(jù)是以頁為單位地排列的。然而,在本實施例中,頁被分割或分段成16個帶,且在各個帶中,字符和圖象數(shù)據(jù)得到排列。當(dāng)然,主機1上的打印機驅(qū)動程序把如此排列的數(shù)據(jù)輸出到打印機2。
圖19是控制單元3中的圖象和字符數(shù)據(jù)的視頻信號輸出的原理的說明圖。圖象和字符數(shù)據(jù)經(jīng)過四個路徑而被發(fā)送到引擎單元4。第一個路徑是只用于圖象數(shù)據(jù)的帶且沒有任何中介帶存儲器的路徑。當(dāng)只有圖象數(shù)據(jù)的帶被展開時,展開的數(shù)據(jù)被直接發(fā)送到打印機引擎。第二和第三路徑是包括字符數(shù)據(jù)的帶的路徑。這種帶的數(shù)據(jù)被暫時映象到帶A71或B72上,并從這些帶被交替地被傳送到引擎單元。第四個路徑是用于空白帶的路徑,且沒有視頻信號被傳送。以此方式,與圖象展開/視頻傳送電路73的功能相應(yīng)地提供了這四個路徑。
如已經(jīng)結(jié)合圖18部分地描述的,主機1上的驅(qū)動程序把所要打印分成一個字符部分和該字符部分以外的一個部分。字符部分以外的該部分作為一個圖象而被映象到主機1的幀緩存器上。字符和圖象數(shù)據(jù)部分,以分割一頁而獲得的16個帶為單位,而被分別地發(fā)送到打印機2。在此情況下,對于字符數(shù)據(jù)部分,出現(xiàn)在該部分中的字符的壓縮點圖案被送到或寄存在打印機中,且一個字符編碼序列隨后作為打印數(shù)據(jù)而被送到打印機。如在第一實施例中,字符在各個文件中只需要被寄存一次。在一個文件任務(wù)的打印完成時,寄存的字符得到清除。
16個分割的帶具有相等的高度。即,這些帶被相等地分割。
至于跨過兩個帶的字符,它們的打印編碼被從驅(qū)動程序發(fā)送到打印機2,而它們屬于這兩個帶。
一個大的字符被作為圖象而得到映象,且該圖象被從驅(qū)動程序發(fā)送到打印機2。能夠由字符展開電路17處理的字符的大小是有限的,且大于該界限的字符被作為圖象處理,如上所述。
映象到主機1的幀緩存器上的一個圖象,被分成16個帶,且從各個帶中只提取實際包括一個圖象的一個矩形部分。該矩形部分得到壓縮,并作為單個的圖象塊而從驅(qū)動程序發(fā)送到打印機2。在圖19中,只有由圖象數(shù)據(jù)的點線所界定的部分被實際作為圖象塊傳送。
當(dāng)一定的帶同時包括圖象塊和字符數(shù)據(jù)時,打印機2的控制單元3利用圖象展開電路16展開接收的壓縮圖象數(shù)據(jù)19,并將其映象到帶A71或B72上。另外,單元3以包括接收的字符數(shù)據(jù)18的字符編碼為單位展開寄存的字符點圖象數(shù)據(jù),并將展開的圖象數(shù)據(jù)映象到帶A71或B72上。字符和圖象數(shù)據(jù)受到“或”處理,且這些數(shù)據(jù)的“或”被寫入到帶上。
注意,奇數(shù)帶的數(shù)據(jù)被映象到帶A71上,且偶數(shù)帶的數(shù)據(jù)被映象到帶B72上。
在完成了字符和圖象數(shù)據(jù)至帶A71上的映象時,至引擎單元4的視頻傳送命令被輸入到圖象展開/視頻傳送電路73。在從電路73輸出視頻信號期間,字符和圖象數(shù)據(jù)被映象到帶B72上。當(dāng)至帶B72的映象已經(jīng)結(jié)束,且前面命令的從帶A71的視頻輸出已經(jīng)結(jié)束時,帶B72的視頻信號輸出命令被輸入到圖象展開/視頻傳送電路73。隨后,開始字符和圖象數(shù)據(jù)至帶A71的映象。
如上所述,一頁的打印是通過把字符和圖象數(shù)據(jù)映象到兩個帶存儲器上并從這些存儲器輸出視頻信號而進行的。只包括字符的一個帶的數(shù)據(jù)得到映象,并借助與上述的相類似的處理而得到打印。
在既不包括字符數(shù)據(jù)也不包括圖象數(shù)據(jù)的空白帶的情況下,圖象展開/視頻傳送電路73,在與一個帶的高度相對應(yīng)的期間里,停止至引擎單元4的視頻信號發(fā)送。
如果用于一定的帶的數(shù)據(jù)只包括一個圖象塊,該圖象塊的數(shù)據(jù)展開命令和至引擎單元4的視頻信號輸出命令被輸入到圖象展開/視頻傳送電路73。即,一個視頻信號被直接發(fā)送到引擎單元4,而不把圖象映象到帶存儲器上。
圖19顯示了經(jīng)過上述四個路徑輸出的視頻信號。一頁的打印是借助這些路徑的結(jié)合而進行的。
圖20是將要從主機1送到打印機2的字符和圖象數(shù)據(jù)的指令結(jié)構(gòu)的說明圖。與第一實施例的圖3的不同,在于帶啟動指令81被插入在頁啟動指令32之后。
每頁都反復(fù)地出現(xiàn)16個帶啟動指令81。即使對既不包括字符也不包括圖象數(shù)據(jù)的帶,也發(fā)出帶啟動指令81。
注意,以類型指令34為單位的指令序列35的結(jié)構(gòu)與第一實施例的圖4的相同,且在此省略了對其的詳細(xì)描述。
圖21用于說明安裝在控制單元3的ROM8中的程序。安裝在第一實施例中的紙排放程序55在圖21中被省略了,但解釋程序52以帶為單位地執(zhí)行解釋和視頻輸出,以及紙排放。接收管理程序51與字符寄存程序53同第一實施例中的相同,但后面將結(jié)合流程圖對解釋程序和打印程序54的運行進行詳細(xì)描述。
在第一實施例中,結(jié)合圖6A和6B,已經(jīng)描述了在正在把接收數(shù)據(jù)寫入接收緩存器10的情況下指針之間的位置關(guān)系。在第二實施例中,至接收緩存器的寫入,也是以與第一實施例相同的方式進行的,且對其的詳細(xì)描述因而被省略了。
工作區(qū)12包括頁管理表13、寄存字符管理表14、寄存字符數(shù)據(jù)區(qū)15等,且將省略對其的詳細(xì)描述,因為它們與第一實施例的相同。
(系統(tǒng)的控制步驟)以下結(jié)合流程圖描述根據(jù)本發(fā)明的第二實施例的運行。
圖22至24是用于說明主機1的打印機驅(qū)動程序的操作的流程圖。該打印機驅(qū)動程序從借助用戶采用的應(yīng)用軟件程序產(chǎn)生的文件數(shù)據(jù),產(chǎn)生出如上面借助圖20所描述的字符和圖象打印機指令,并將它們發(fā)送到打印機2。當(dāng)用戶從應(yīng)用軟件程序命令文件打印時,主機1中的打印機驅(qū)動程序得到啟動。
在啟動時,驅(qū)動程序在主機1的存儲器上保證一個一頁的幀緩存器(未顯示),并同時清除該幀緩存器。在借助驅(qū)動程序的文件打印完成時,幀緩存器所用的存儲器區(qū)得到釋放。
驅(qū)動程序在步驟S141把一個任務(wù)啟動指令31發(fā)送到打印機2,在步驟S142把一個變量m設(shè)定成通過把所要打印的文件的頁碼加1而獲得的值,并在步驟S143把一個變量mp設(shè)定成表示所感興趣的頁碼的1。該驅(qū)動程序隨后在步驟S144檢查變量mp是否小于變量m。如果步驟S144為“否”,由于對文件的所有頁的處理已經(jīng)完成,驅(qū)動程序在步驟S172發(fā)送一個任務(wù)結(jié)束指令,從而結(jié)束其處理。
另一方面,如果步驟S144為“是”,驅(qū)動程序在步驟S145向打印機2發(fā)送一個頁啟動指令32,在步驟S146保存來自應(yīng)用程序的第mp頁的字符打印命令,并在步驟S147根據(jù)它們的打印位置對保存的字符打印命令進行分類。因此,驅(qū)動程序在步驟S148把來自應(yīng)用程序的第mp頁的字符打印命令以外的畫命令映象到主機1上的幀緩存器上。字符打印命令以外的畫命令包括標(biāo)尺線和畫圖命令、圖象粘貼命令、等等。
在步驟S147根據(jù)打印位置對字符打印命令進行分類時,字符打印命令按照它們沿著紙的縱向的打印位置而分類,并隨后按照它們沿著紙的橫向的打印位置而分類。借助這種分類,字符打印命令被這樣地分類—即使得它們的被指令的打印位置在長度方向沿著縱向方向的紙上從上左位置向著下右位置依次排列。
隨后,驅(qū)動程序在步驟S149把一個變量n設(shè)定為17。值“17”是通過把表示紙的大小沿著其長度方向被等分成16個帶的值“16”加1而獲得的。因此,如果帶的數(shù)目不是16,n的值也相應(yīng)地確定。在步驟S150,驅(qū)動程序把表示感興趣的帶的變量np設(shè)定為1。驅(qū)動程序隨后在步驟S151檢查變量np是否小于變量n。如果步驟S151為“否”,由于它表示對一頁的16個帶的處理已經(jīng)完成,變量mp的內(nèi)容被加1,且流程返回到步驟S144,以開始下一頁的帶輸出處理。
如果步驟S151為“是”,驅(qū)動程序在步驟S153把一個帶啟動指令81發(fā)送到打印機2,并在步驟S154拾取字符打印命令—該命令被包括在來自應(yīng)用程序的保存打印命令的第np個帶中。驅(qū)動程序隨后在步驟S155設(shè)定一個值—該值是通過把變量合成中的拾取字符數(shù)加1而獲得的,并還在步驟S156把表示在一個帶中的感興趣的字符的位置的變量sp設(shè)定為1。
注意,在步驟S154所要拾取的字符打印命令包括包含在第np個帶中(雖然是部分地包含)的字符。因此,某些字符根據(jù)它們的打印位置而被打印在兩個帶上。
驅(qū)動程序在步驟S157檢查變量sp是否小于變量s。如果步驟S157為“否”,由于包括在第np帶中的字符數(shù)據(jù)發(fā)送處理已經(jīng)完成,驅(qū)動程序在步驟S158啟動第np個帶的圖象數(shù)據(jù)的發(fā)送處理和隨后的步驟。即,驅(qū)動程序在步驟S158從主機上的幀緩存器提取與第np個帶的位置和大小相應(yīng)的圖象,并在步驟S159檢查該第np個帶是否一個空白帶。如果步驟S159為“是”,流程跳到步驟S163而不進行任何處理。
另一方面,如果步驟S159為“否”,驅(qū)動程序在步驟S160提取實際包括單個塊形式的圖象的一個矩形區(qū)。驅(qū)動程序在步驟S161把表示提取的塊的粘貼位置的一個位置移動指令33發(fā)送到打印機2,并隨后在步驟S162把與類型5相應(yīng)的指令即圖象塊指令45、46、47、和48發(fā)送到打印機2。當(dāng)然,該圖象塊數(shù)據(jù)是在被壓縮之后發(fā)送的驅(qū)動程序在步驟S163把變量np的內(nèi)容加1,且隨后流程返回到步驟S151,以啟動下一個帶發(fā)送處理。
如果步驟S157為“是”,驅(qū)動程序在步驟S164檢查第sp個字符是否在此文件中所要打印的第一個字符。如果步驟S164為“是”,驅(qū)動程序在步驟S165把一個表示打印位置的位置移動指令33發(fā)送到打印機2,并在步驟S166檢查在打印機2側(cè)寄存的字符的數(shù)目是否已經(jīng)達到了一個極限, 如果步驟S166為“是”,驅(qū)動程序在步驟S167把一個與類型3相應(yīng)的指令即只字符圖象打印指令43和44發(fā)送到打印機2。隨后,流程進行到步驟S171。
如果步驟S166為“否”,驅(qū)動程序在步驟S168把與類型2相應(yīng)的一個指令—即字符寄存+打印指令41、42、43和44—發(fā)送到打印機2,且流程進行到步驟S171。當(dāng)然,將要發(fā)送到打印機2的各個字符的點圖象得到了壓縮。
如果步驟S164為“否”,由于它表示該打印命令是該字符的第二或隨后的打印命令,驅(qū)動程序在步驟S169把表示打印位置的一個位置移動指令33發(fā)送到打印機2,并還在步驟S170把類型4的類型指令34—即字符編碼打印指令41和42發(fā)送到打印機2。
在步驟S171,驅(qū)動程序把變量sp的內(nèi)容加1,且流程隨后返回到步驟S157,以執(zhí)行至打印機2的下一個字符數(shù)據(jù)發(fā)送處理。
圖25、26、27和28是用于說明解釋程序52的操作的流程圖。解釋程序52也是在打印機2的電力接通時啟動的,并隨后執(zhí)行接收單元6寫入接收緩存器10的打印指令的解釋和紙排放。
在步驟S181,該程序檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S181為“是”,該程序結(jié)束其處理。如果步驟S181為“否”,程序在步驟S182檢查一頁的接收數(shù)據(jù)是否被存儲在接收緩存器10中。如果步驟S182為“否”,流程返回到步驟S181,以形成一個環(huán),從而等候接收來自主機1的數(shù)據(jù)。
注意,程序在步驟S182查詢頁管理表13,以檢查接收頁的有/無。頁管理表13,由接收管理程序51通過以上借助第一實施例中的圖8的流程圖的操作,來進行管理。
如果步驟S182為“是”,程序依次對該頁的打印指令進行解釋和處理。在步驟S183,程序把變量n設(shè)定為17。值“17”是通過把每頁的分割帶的數(shù)目“16”加1而獲得的。在步驟S184,程序把變量np設(shè)定為1。程序隨后在步驟S185檢查變量np是否小于變量n。如果步驟S185為“否”,則表示對所有帶的處理已經(jīng)完成,且流程跳到步驟S223,以等候紙排放的結(jié)束。
如果步驟S185為“是”,程序在步驟S186檢查第np個帶是否既不連接字符數(shù)據(jù)也不包括圖象數(shù)據(jù),即是一個空白帶。如果步驟S186為“是”,則在程序在步驟S187把變量t設(shè)定為0之后,流程跳到步驟S193。
如果步驟S186為“否”,程序在步驟S188檢查第np個帶的數(shù)據(jù)是否包括字符數(shù)據(jù)。如果步驟S188為“是”,在步驟S189程序在變量np為奇數(shù)時把變量t設(shè)定為1,或者在變量np為偶數(shù)時把變量t設(shè)定為2。隨后,流程跳到步驟S193。
如果步驟S188為“否”,程序在步驟S190檢查第np個帶的數(shù)據(jù)是否包括多個圖象塊數(shù)據(jù)。如果步驟S190為“是”,在步驟S189程序在變量np為奇數(shù)時把變量t設(shè)定為1,或者在變量np為偶數(shù)時把變量t設(shè)定為2。隨后,流程跳到步驟S193。注意在以上結(jié)合圖22描述的驅(qū)動程序的操作中,一個以上的圖象塊從未出現(xiàn)在單個的帶中。
如果步驟S190為“否”,它表示單個的圖象塊以用于第np個帶的數(shù)據(jù)的形式出現(xiàn),且程序在步驟S192把變量t設(shè)定為3。隨后流程進行到步驟S193。
程序在步驟S193檢查變量t是1還是2。如果步驟S193為“是”,程序從標(biāo)頭數(shù)據(jù)開始依次解釋包含在第np個帶中的字符和圖象塊數(shù)據(jù),并在步驟S194和隨后的步驟中把它們映象到帶A71和B72中。在步驟S194,程序在變量t為1時清除帶A71,或者在變量t為2時清除帶B72。程序隨后在步驟S195檢查所要解釋的指令是否一個位置移動指令33。如果步驟S195為“是”,程序在步驟S196移動游標(biāo)。該“游標(biāo)”是表示字符或圖象在帶存儲器上的映象位置的想象指針。更具體地說,這種“游標(biāo)”是表示工作區(qū)12上的X和Y坐標(biāo)的變量。游標(biāo)位置以各個帶的左上端為原點。從驅(qū)動程序送來的位置移動指令33,是根據(jù)以各個帶的左上端為原點的相對位置而得到發(fā)送的。即,位置移動指令33并不以頁的左上端作為原點。在步驟S196之后,流程跳到步驟S208。
如果步驟S195為“否”,程序在步驟S197檢查該指令是否類型1的類型指令34。如果步驟S197為“是”,在字符寄存程序53在步驟S198進行了字符寄存之后,流程跳到步驟S208。由于該字符寄存與上面借助第一實施例的圖15的流程圖描述的相同,所以在此省略了對其的詳細(xì)描述。
如果步驟S197為“否”,程序在步驟S199檢查該指令是否為類型2的類型指令34。如果步驟S199為“是”,在步驟S200進行字符寄存,且在步驟S201進行打印。隨后流程跳到步驟S208。在步驟S200的字符寄存與在上述步驟S198進行的相同。另一方面,在步驟S201的打印是借助打印程序54進行的,且將結(jié)合圖29進行詳細(xì)描述。
如果步驟S199為“否”,程序在步驟S202檢查該指令是否為類型3的類型指令34。如果步驟S202為“是”,在步驟S203只打印了字符圖象之后,流程跳到步驟S208。
如果步驟S202為“否”,程序在步驟S204檢查該指令是否為類型4的類型指令34。如果步驟S204為“是”,在步驟S205進行了打印之后,流程跳到步驟S208。注意,在步驟S205的打印與在步驟S201的相同。
如果步驟S204為“否”,程序在步驟S206檢查該指令是否為類型5的類型指令34。如果步驟S206為“是”,在步驟S207程序利用圖象展開電路16展開壓縮的圖象數(shù)據(jù),并把展開的圖象塊粘貼到帶71或72上。在此情況下,如果變量t為1,程序把展開的數(shù)據(jù)粘貼到帶A71上;如果變量t為2,程序把它粘貼到帶B72上。隨后流程進行到步驟S208。
在步驟S196、S198、S201、S203、S205或S207之后,或者如果步驟S206為“否”,流程進行到步驟S208。在步驟S208,程序檢查為第np個帶接收的數(shù)據(jù)是否仍然包括未解釋的指令。如果步驟S208為“是”,流程返回到步驟S195,以解釋未解釋的指令。
如果步驟S193或步驟S208為“否”,流程跳到圖27的步驟S209。在步驟S209至S222,以帶為單位執(zhí)行至引擎單元4的視頻信號輸出處理。
在步驟S209,程序檢查變量np是否為1。即,程序檢查感興趣的帶是否一定頁的第一個帶。如果步驟S209為“是”,程序在步驟S21向引擎單元4提供紙送進啟動命令,并在步驟S211檢查引擎單元4是否已經(jīng)檢測到“紙用完了”狀態(tài)。如果步驟S211為“是”,程序進行等候,直到用戶在步驟S212加上了紙,且隨后,流程跳到步驟S215。如果步驟S211為“否”,即有紙,流程跳到步驟S215。
另一方面,如果在步驟S209判定感興趣的帶不是第一個帶,程序在步驟S213等候前一個帶的數(shù)據(jù)的視頻傳送的結(jié)束。在此等候期間,程序始終在步驟S214監(jiān)測是否發(fā)生了堵紙。如果發(fā)生了堵紙,流程從步驟S214跳到步驟S228,以從堵紙進行恢復(fù)。
如果步驟S213為“是”,即如果前一帶的數(shù)據(jù)視頻傳送完成,程序在步驟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在展開壓縮圖象數(shù)據(jù)的同時輸出包括在第np個帶中的單個圖象塊的一個視頻信號,且隨后流程進行到步驟S222。
在步驟S222,程序把變量np加1,且流程返回到步驟S185,以開始把下一個帶數(shù)據(jù)映象到帶存儲器上并進行視頻信號輸出處理。
如果步驟S185為“否”,所有帶的輸出處理都已經(jīng)完成,且程序在步驟S223和隨后的步驟等候打印的紙的排放的完成。在圖28的步驟S223,程序檢查紙排放是否完成。如果步驟S223為“否”,程序在步驟S227檢查是否發(fā)生了堵紙。如果步驟S227為“否”,流程返回到步驟S223,以形成一個環(huán),從而等候紙排放的完成。
如果程序在步驟S223判定紙排放已經(jīng)完成,程序在步驟S224清除頁管理表13上的紙排放頁的描述,并在步驟S225檢查任務(wù)的結(jié)束—即是否單個文件的所有頁都已經(jīng)被排放。如果步驟S225為“是”,程序在步驟S226清除寄存字符管理表14,且流程返回到步驟S181,以等候下一個文件任務(wù)的數(shù)據(jù)接收。
如果步驟S225為“否”,流程也返回到步驟S181,以等候該文件的隨后的頁的數(shù)據(jù)接收。
另一方面,如果步驟S227為“是”,程序在步驟S228在面板上顯示一個堵紙消息,并在步驟S229進行等候,直到用戶除去了堵塞的紙。如果紙已經(jīng)被除去,流程返回到步驟S181,且程序重新進行接收的頁數(shù)據(jù)至帶上的映象、視頻輸出、以及紙排放,這些都已經(jīng)在上面進行了描述。
注意,程序在步驟S224清除頁管理表13上的頁寄存。接收管理程序51證實該區(qū)域已經(jīng)被清除,并隨后命令接收單元6接收數(shù)據(jù)寫入位置的新的極限值。
圖29是用于詳細(xì)描述打印程序54的操作的流程圖。該程序也是從解釋程序52調(diào)用的。
在步驟S231,程序檢索寄存字符管理表14以獲得其字體號和字符編碼匹配的寄存字符在寄存字符數(shù)據(jù)區(qū)15上的地址。在步驟S232,程序利用字符展開電路17展開字符點圖象數(shù)據(jù)。在步驟S233,程序檢查所要粘貼的字符是否在帶邊界上。如果步驟S233為“是”,程序在步驟S234執(zhí)行字符圖象的邊界值處理并精細(xì)地調(diào)節(jié)游標(biāo)位置。隨后,流程進行到步驟S235。如果步驟S233為“否”,流程也進行到步驟S235。
在步驟S234的邊界值處理中,只有包括在當(dāng)前帶的區(qū)域中的一個部分被從一個字符的字符圖象中提取出。由于只有這種小的圖象部分被粘貼到帶區(qū)域中,游標(biāo)位置必須也得到精細(xì)的調(diào)節(jié),以移動到該帶區(qū)中的一個位置。
例如,假定一定的字符從當(dāng)前帶的上邊界延伸了其字符框的約上半部分。由于游標(biāo)位置位于該字符框的左上端,它此時出現(xiàn)在該帶區(qū)之外。邊界值處理只提取位于該帶區(qū)中的字符框的下半圖象。其結(jié)果,下半字符的字符框的左上端位置變成了新的游標(biāo)位置。這種位置位于該帶區(qū)的上邊界處。這是“游標(biāo)位置的精細(xì)調(diào)節(jié)”。
另外,當(dāng)一個字符框處于帶區(qū)的四個角之一時,包括在該帶區(qū)中的一個字符圖象部分也類似地得到提取,且游標(biāo)位置得到精細(xì)調(diào)節(jié)。
在步驟S235,程序把展開的字符點圖象粘貼在帶A71或B72上的游標(biāo)位置。如果圖25中描述的變量t為1,該點圖象被粘貼到帶A71上;如果變量t是2,圖象被粘貼到帶B72上。最后,該程序結(jié)束其處理。
以下結(jié)合圖30至33描述圖象展開/視頻傳送電路73的操作。雖然圖象展開/視頻傳送電路73是一個硬件電路且不是程序,其操作將借助圖31、32和33的流程圖進行描述。如上所述,解釋程序52命令圖象展開/視頻傳送電路73輸出一個視頻信號給引擎單元4。圖象展開/視頻傳送電路73的處理包括三個不同的處理操作,即空白帶處理,從帶A71或B72的視頻信號輸出處理,以及從壓縮圖象塊數(shù)據(jù)的壓縮圖象數(shù)據(jù)的直接展開以及展開數(shù)據(jù)的視頻信號輸出處理。
圖象展開/視頻傳送電路73包括用于在壓縮圖象數(shù)據(jù)被從圖象塊數(shù)據(jù)展開之后存儲展開的一行數(shù)據(jù)的行緩存器(未顯示)。電路73根據(jù)存儲在該行緩存器中的數(shù)據(jù)產(chǎn)生一種視頻信號,并將其輸出到引擎單元4。
以下結(jié)合圖30說明圖31、32和33的流程圖中采用的變量。
一個變量h表示帶的高度,它對應(yīng)于輸出視頻信號時的行數(shù)。變量1表示帶的寬度,它是字節(jié)為單位而設(shè)定。即,與8的倍數(shù)相應(yīng)的點被轉(zhuǎn)換成視頻信號的黑和白位,并被輸出。
變量ha表示從一定帶的第一行至一個圖象塊的頂空白。即,變量ha表示了不需要傳送視頻信號的行數(shù)。變量hb表示了一個圖象塊的高度,即塊的行數(shù)。
變量1a是圖象塊的左空白。在此部分中,不需要傳送視頻信號。變量1b表示一個圖象塊的寬度,它也是以字節(jié)為單位設(shè)定的。即,與8的倍數(shù)相應(yīng)的數(shù)目的點被轉(zhuǎn)換成視頻信號的黑和白位,并被輸出。
主機1的驅(qū)動程序的上述操作, 并不表明帶或圖象塊的寬度被調(diào)節(jié)到“以字節(jié)為單位的大小”,但這種至給定單位的調(diào)節(jié)對于利用硬件電路實現(xiàn)高速圖象輸出是必要的。驅(qū)動程序在這種條件下把打印指令發(fā)送到打印機2。
以下結(jié)合圖31、32和33來描述圖象展開/視頻傳送電路73的操作。
該電路在打印機2的電力開關(guān)被接通之后立即開始操作。在步驟S241,它檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S241為“是”,該電路結(jié)束操作。如果步驟S241為“否”,則在步驟S242檢查該電路是否已經(jīng)接收到了來自解釋程序52的視頻信號輸出命令。如果步驟S242為“否”,流程返回到步驟S241,以形成一個環(huán),從而等候來自解釋程序52的命令。
如果步驟S242為“是”,則在步驟S243把變量h設(shè)定為一個帶的高度,即該帶的總行數(shù)。該值是與來自解釋程序52的視頻信號輸出命令一起給出的。在步驟S244,檢查來自解釋程序52的命令是否一個空白帶輸出命令。如果步驟S244為“是”,則在步驟S245把變量t設(shè)定為0,且流程跳到步驟S250。
如果步驟S244為“否”,在步驟S246把變量1設(shè)定為帶的寬度值。該值也是與來自解釋程序52的視頻信號輸出命令一起給出的。隨后在步驟S247檢查來自解釋程序52的命令是否從帶A71或B72的視頻信號輸出命令。如果步驟S247為“是”,變量t被設(shè)定為1,且隨后流程跳到步驟S250。
如果步驟S247被判定為“否”,接收的命令表明在帶中出現(xiàn)有單個的圖象塊,且壓縮圖象塊數(shù)據(jù)借助圖象展開/視頻傳送電路73而得到展開,以輸出一個視頻信號。在步驟S249,變量t被設(shè)定為2,變量ha被設(shè)定為塊的頂空白,且變量hb被設(shè)定為塊的高度即總行數(shù),變量1a被設(shè)定為塊的左空白,且變量1b被設(shè)定為塊塊的寬度。這些值也是與來自解釋程序52的視頻信號輸出命令一起給出的。隨后流程進行到步驟S250。
在步驟S250,變量hp被設(shè)定為0。變量hp被作為表示將要從其輸出視頻信號的帶上的行的位置的計數(shù)值。隨后在步驟S251檢查變量t被設(shè)定為0還是1。如果變量t是0或1,則在步驟S252檢查電路是否已經(jīng)從引擎單元4接收到了一個視頻信號輸出請求。如果步驟S252為“否”,則形成一個環(huán)以等候該請求。如果接收到了視頻信號輸出請求,則在步驟S253檢查變量t是否為1。如果步驟S25 3為“否”,流程跳到步驟S255。如果步驟S253為“是”,在步驟S254在帶A71或B72上的第hp行被轉(zhuǎn)換成視頻信號,且該視頻信號被輸出到引擎單元4。隨后,流程進行到步驟S255。注意,在步驟S254,來自帶A71或B72的輸出命令是與來自解釋程序52的視頻信號輸出命令一起給出的。
在步驟S255,變量hp被加1。在步驟S256,檢查變量hp是否小于變量h。如果步驟S256為“是”,即如果帶仍然包括仍然有需要輸出的視頻信號的行,流程返回到步驟S252,以輸出下一個行的視頻信號。
如果步驟S256為“否”,即,如果帶中的所有行的視頻信號都得到了輸出,則在步驟S257表示命令的帶的視頻信號輸出的結(jié)束的信息被提供到解釋程序52。該信息還包括空白帶輸出處理的完成。隨后流程返回到步驟S241,以等候來自解釋程序52的下一個視頻信號輸出命令。
如果步驟S251為“否”,接收的命令是來自帶中的圖象塊數(shù)據(jù)的視頻信號輸出命令。在此情況下,在圖33的步驟S258,塊數(shù)據(jù)中的第一行的壓縮圖象數(shù)據(jù)被展開且展開的數(shù)據(jù)在步驟S258被置于圖象展開/視頻傳送電路73的內(nèi)部行緩存器中。預(yù)先展開壓縮數(shù)據(jù)能夠防止在輸出視頻信號時展開數(shù)據(jù)的視頻輸出時序延遲。
隨后,在步驟S259,形成了一個環(huán),以等候來自引擎單元4的視頻信號請求。如果接收到該視頻信號請求,則在步驟S260檢查變量hp是否小于變量ha。如果步驟S260為“是”,流程跳到步驟S267而不進行處理。這意味著沒有視頻信號被送到塊的頂空白部分。
如果步驟S260為“否”,在步驟S261檢查變量hp是否小于變量ha和hb之和。如果步驟S261為“否”,流程跳到步驟S267而不發(fā)送任何視頻信號。這意味著如果帶中的塊以下的部分是空白,即存在底空白,則不為此部分發(fā)送視頻信號。
如果步驟S261為“是”,在步驟S262沒有與變量1a的大小相應(yīng)的視頻信號發(fā)送。隨后,在步驟S263,在圖象展開/視頻傳送電路73的內(nèi)部行緩存器上的數(shù)據(jù)被轉(zhuǎn)換成與變量1b的大小相應(yīng)的視頻信號,且該視頻信號被輸出到引擎單元4。在步驟S264,變量hbp被設(shè)定為1與通過從變量hp減掉變量ha而獲得的值之和。
隨后,在步驟S265檢查變量hbp是否小于變量hb。如果步驟S265為“否”,即如果塊中的所有行的視頻信號都被輸出,流程跳到步驟S267而不作任何處理。
如果步驟S265為“是”,即如果該塊包括仍然有要輸出的視頻信號的行,在步驟S266由塊數(shù)據(jù)中的變量hbp指定的第hbp行的壓縮圖象被展開,且展開的數(shù)據(jù)被置于圖象展開/視頻傳送電路73的內(nèi)部行緩存器中。隨后流程進行到步驟S267。
在此處理中,預(yù)先展開壓縮數(shù)據(jù)同樣能夠防止在輸出視頻信號時展開數(shù)據(jù)的視頻輸出引起的時序延遲。
在步驟S267,變量hp被加1,且隨后在步驟S268檢查變量hp是否小于變量h。如果步驟S268為“是”,流程返回到步驟S259,以繼續(xù)帶中的下一行的視頻信號輸出處理。
如果步驟S268為“否”,在流程跳到圖32中的步驟S257以把表示視頻信號輸出的結(jié)束的信息提供給解釋程序52之后,流程返回到步驟S241,以等候來自解釋程序52的下一個視頻信號輸出命令。
在步驟S257,從圖象展開/視頻傳送電路73向解釋程序52提供表示視頻信號輸出結(jié)束的信息直到解釋程序52給圖象展開/視頻傳送電路73提供下一個帶的視頻信號輸出命令的間隔,必須是非常短的。如果該間隔變成長的時間滯后,由于在此間隔期間沒有視頻信號輸出,在打印出的紙上在該行的部分上就形成了一個白條。即在相鄰的帶之間形成了一個空隙。因此,在解釋程序52的紙排放時相鄰帶之間的處理必須非常迅速。
(第二實施例的獨特效果)借助上述設(shè)置,可獲得以下的效果。
(1)在此實施例中,由于用帶存儲器代替的幀緩存器且打印是借助帶處理而進行的,存儲器容量能夠得到減小,且設(shè)備的制作成本能夠得到降低。
(2)在此實施例中,打印是在接收緩存器接收到了一頁的數(shù)據(jù)之后開始的。因此,由于本實施例不象基于主機的打印機那樣把最高優(yōu)先給予數(shù)據(jù)發(fā)送,因而能夠防止主機上的其他應(yīng)用程序被鎖定。
(3)在本實施例中,由于主機上的驅(qū)動程序把實際包括帶區(qū)中的一個圖象的一個塊(矩形部分)—而不是具有帶本身的大小的圖象數(shù)據(jù)—發(fā)送給了打印機,所要發(fā)送的數(shù)據(jù)的量能夠得到減小。
(4)在本實施例中,當(dāng)存在空白帶時,由于控制器單元命令圖象展開/視頻傳送電路不發(fā)送任何視頻信號—而不是把該空白部分映象到帶存儲器上并把視頻信號發(fā)送到引擎單元,CPU的負(fù)荷能夠得到減小。
(5)在本實施例中,當(dāng)帶包括沒有字符的圖象時,控制器單元只命令壓縮圖象數(shù)據(jù)的展開、視頻信號的轉(zhuǎn)換、以及視頻信號至引擎單元的輸出,而不是把圖象映象到帶存儲器上并把視頻信號輸出到引擎單元。因此,CPU的負(fù)荷能夠得到減小。
(第三實施例)以下結(jié)合附圖描述第三實施例。
(系統(tǒng)設(shè)置)在第二實施例中,一頁被等分成16個帶。然而,在第三實施例中,帶的數(shù)目和各個帶的高度是可變設(shè)定的,且當(dāng)圖象數(shù)據(jù)包括以帶為單位的重復(fù)圖象圖案時,驅(qū)動程序向打印機發(fā)送一個帶重復(fù)指令,從而減小所要發(fā)送的圖象數(shù)據(jù)量。
然而,由于本實施例的組成元件、程序操作等與第二實施例的幾乎相同,以下將主要描述其不同點。
由于塊設(shè)置與第二實施例的圖18中描述的相同,對其的詳細(xì)描述將被省略。在第三實施例中,帶高度在圖18中的RAM9上分配的帶A71或B72的帶高度內(nèi)得到了任意的設(shè)定。
圖34是在本實施例中的打印的原理的說明圖。
主機1上的驅(qū)動程序把所要打印的文件分成字符和圖象數(shù)據(jù),并象在第一和第二實施例中那樣把它們發(fā)送到打印機2。
在本實施例中,驅(qū)動程序,在它把圖象數(shù)據(jù)送到打印機2之前,在映象到主機1上的幀緩存器上的一頁的圖象中以帶為單位地進行圖案識別,并檢查帶是否表示重復(fù)的圖案。在此情況下,帶高度可被任意改變。至于圖案識別技術(shù),由于對于本領(lǐng)域的技術(shù)人員來說各種方法是已知的,所以將省略對其的詳細(xì)描述。
在圖34的左圖象中,由包括波形圖的圖象A、空白帶和包括鏈形圖的圖象B的帶組成的帶組,出現(xiàn)了三次。在此情況下,對于出現(xiàn)于第二和隨后次的圖象A和B的帶,表示這些帶數(shù)據(jù)與第一次出現(xiàn)的圖象A和B的帶數(shù)據(jù)相同的打印指令被發(fā)送到打印機2。字符數(shù)據(jù)部分的處理與第二實施例中的相同。
圖34所示的例子在實際文件中是罕見的,但圖35中重復(fù)的圖象帶的例子則在實際文件中是經(jīng)常出現(xiàn)的。
在此例中,假定只有表的一個帶標(biāo)尺的行圖象部分—從其除去了字符部分。如圖35的左圖象所示,該圖象可被分成第一至第六帶,第一、第二和第六帶的圖象數(shù)據(jù)作為打印指令而被直接發(fā)送到打印機2,但判定第三、第四和第五帶包括第二帶中的重復(fù)圖象,且命令“第二帶重復(fù)”的打印指令被發(fā)送到打印機2。
圖36是從主機1傳送到打印機2的字符和圖象數(shù)據(jù)的指令結(jié)構(gòu)的說明圖。圖36顯示的指令結(jié)構(gòu)基本上與第二實施例的圖20中顯示的相同,只是在帶啟動指令81之后加上了帶高度指令82和重復(fù)帶數(shù)目83。
任意數(shù)目的帶啟動指令81在每頁中重復(fù)出現(xiàn)。帶高度指令82也是以帶為單位而被任意設(shè)定在帶A71或B72的帶高度內(nèi)的。重復(fù)帶數(shù)目83表示了出現(xiàn)在該頁中的帶的順序,且1表示該頁的開頭的帶。當(dāng)該帶不包括任何重復(fù)圖象即新的圖象時,-1被設(shè)定為帶號。
安裝在控制單元3的ROM8中的程序的名稱與第二實施例的圖2中顯示的相同。這些程序的操作基本上與第二實施例中的相同,只是解釋程序52除外。由于接收單元6的操作與第一實施例中的相同,且圖象展開/視頻傳送電路73的操作與第二實施例中的相同,將省略對其的詳細(xì)描述。解釋程序52的操作基本上與第二實施例中的相同,并將在后面結(jié)合圖40至43的流程圖而進行詳細(xì)描述。
主機1上的驅(qū)動程序的操作基本上與第二實施例的相同,但將在下面結(jié)合圖37、38、39A和39B的流程圖而得到描述。
(系統(tǒng)控制)下面借助流程圖描述根據(jù)本發(fā)明的第三實施例的操作。驅(qū)動程序和解釋程序52與第二實施例中的不同操作將在下面得到描述。
圖37、38、39A和39B是用于說明主機1上的打印機驅(qū)動程序的操作的流程圖。打印機驅(qū)動程序,從用戶采用的應(yīng)用軟件程序產(chǎn)生的文件數(shù)據(jù),產(chǎn)生上面借助圖36描述的字符和圖象打印指令,并把它們發(fā)送到打印機2。當(dāng)用戶從應(yīng)用軟件程序命令文件打印時,打印機驅(qū)動程序在主機1中得到啟動。
在啟動時,驅(qū)動程序在主機1的存儲器上保持一頁的幀緩存器(未顯示),并同時清除該幀緩存器。在驅(qū)動程序的文件打印完成時,被用作幀緩存器的存儲區(qū)得到釋放。
驅(qū)動程序在步驟S271把一個任務(wù)啟動指令31發(fā)送到打印機2,在步驟S272把該值設(shè)定為所要打印的文件的頁數(shù)之和并把一個變量m設(shè)定為1,并在步驟S273把一個變量mp設(shè)定為1。驅(qū)動程序在步驟S274檢查變量mp是否小于變量m。如果步驟S274為“否”,對文件的所有頁的處理完成,且驅(qū)動程序在步驟S311發(fā)送一個任務(wù)結(jié)束指令,從而結(jié)束其處理。
如果步驟S274為“是”,驅(qū)動程序在步驟S275把一個頁啟動指令32發(fā)送到打印機2,在步驟S276保存來自應(yīng)用程序的第mp頁的字符打印命令,在步驟S277根據(jù)保存的字符打印命令的打印位置對它們進行分類,并在步驟S278把來自應(yīng)用程序的第mp頁的字符打印命令以外的畫命令映象到主機1上的幀緩存器上。字符打印命令以外的畫命令包括帶標(biāo)尺的行和畫圖命令、圖象粘貼命令等。
在步驟S277根據(jù)字符打印命令的打印位置而對它們進行分類時,這些字符打印命令根據(jù)它們沿著紙上的長度方向的打印位置而得到分類,并隨后根據(jù)它們沿著紙上的寬度方向的打印位置而得到分類。當(dāng)一個A4紙被置于成象位置時,命令從上向下位置地得到分類,并隨后被從左向右分類。
驅(qū)動程序借助圖案識別來分析幀緩存器的內(nèi)容,以在步驟S279檢查映象的圖象是否包括以帶為單位的重復(fù)圖象圖案,并隨后在步驟S280檢查是否發(fā)現(xiàn)了重復(fù)圖案。如果步驟S280為“否”,由于一頁的圖象被等分成16個帶,在步驟S281適當(dāng)?shù)闹当恢萌霂Ч芾肀碇杏蓭?、帶高度、和?dāng)重復(fù)圖案時采用的帶號組成的列中。特別地,當(dāng)重復(fù)一個圖案時采用的帶號的列被設(shè)定為-1。隨后,流程跳到圖38的步驟S285。
如果步驟S280為“是”,在步驟S282和步驟S283,其帶高度超過了最大高度即帶A71或B72或高度的一個帶被這樣地分割—即使得分割的帶高度等于或小于最大帶高度。隨后,流程進行到步驟S284。如果步驟S282被判定為“否”,流程也進行到步驟S284。在此情況下,由于帶高度沒有被設(shè)定為相等而是以帶為單位的任何值,在步驟S284帶管理表中由帶號、帶高度、以及當(dāng)重復(fù)一個圖案時采用的一個帶號組成的列被設(shè)定了適當(dāng)?shù)闹?。隨后流程進行到步驟S285。
注意帶管理表被分配在主機1,以方便驅(qū)動程序產(chǎn)生與帶有關(guān)的打印指令,并包括三個項一即帶號、帶高度、在重復(fù)一個圖象圖案時采用的號碼列。
參見圖38,在步驟S285驅(qū)動程序把變量n設(shè)定為一個值—它是通過給帶的總數(shù)加1而獲得的。驅(qū)動程序在步驟S286把變量np設(shè)定為1,并在步驟S287檢查變量np是否小于變量n。如果步驟S287為“否”,這意味著一頁中所有帶的處理都已經(jīng)完成,且驅(qū)動程序在步驟S288把變量mp加1。隨后,流程返回到步驟S274以啟動對下一頁的帶輸出處理。
如果步驟S287為“是”,驅(qū)動程序在步驟S289把一個帶啟動指令81,在步驟S290把一個帶高度指令82,且在步驟S291把一個重復(fù)帶數(shù)指令83發(fā)送到打印機2。如果當(dāng)前帶不包括任何重復(fù)圖象,指令83被設(shè)定為-1,并得到發(fā)送。
驅(qū)動程序在步驟S292從來自應(yīng)用程序的保存的打印命令拾取包括在第np個帶中的字符打印命令,在步驟S293把一個變量s設(shè)定為一個值—該值是通過把拾取字符的數(shù)目加1而獲得,且在步驟S294把一個變量sp設(shè)定為1。
注意,將要在步驟S292拾取的字符打印命令包括包括在第np個帶中(雖然是部分地)的那些字符。因此,某些字符根據(jù)它們的打印位置而被打印在兩個帶上。
驅(qū)動程序在步驟S295檢查變量sp是否小于變量s。如果步驟S295為“否”,則判定包括在第np個帶中的所有字符數(shù)據(jù)都已經(jīng)得到發(fā)送,且在步驟S296開始對第np個帶的圖象數(shù)據(jù)的發(fā)送。即驅(qū)動程序在步驟S296檢查當(dāng)前帶是否一個重復(fù)帶。如果步驟S296為“是”,流程跳到步驟S302而不進行任何處理。
如果步驟S296為“否”,驅(qū)動程序在步驟S297從主機1上的幀緩存器提取與第np個帶的大小和位置相應(yīng)的圖象,并在步驟S298檢查第np個帶是否一個空白帶。如果步驟S298為“是”,流程跳到步驟S302而不進行任何處理。
如果步驟S298為“否”,驅(qū)動程序在步驟S299提取實際包括作為單個塊的一個圖象的一個矩形區(qū)。驅(qū)動程序在步驟S300把表示該塊的粘貼位置的一個位置移動指令33發(fā)送到打印機2,并在步驟S301把類型5的一個指令序列即圖象塊指令45、46、47和48發(fā)送到打印機2。當(dāng)然,圖象塊數(shù)據(jù)是在壓縮的情況下發(fā)送的驅(qū)動程序在步驟S302把變量np的內(nèi)容加1,且隨后流程返回到步驟S287,以開始下一個帶發(fā)送處理。
如果步驟S29 5為“是”,驅(qū)動程序在步驟S303檢查第sp個字符是否在此文件中所要打印的第一個字符。如果步驟S303為“是”,驅(qū)動程序在步驟S304把表示打印位置的一個位置移動指令33發(fā)送到打印機2,并在步驟S305檢查打印機2側(cè)上的寄存字符的數(shù)目是否已經(jīng)達到了一個極限,如果步驟S305為“是”,驅(qū)動程序在步驟S307把類型3的一個指令序列即只字符圖象打印指令43和44發(fā)送到打印機2,且流程跳到步驟S310。
如果步驟S305為“否”,驅(qū)動程序在步驟S306把類型2的一個指令序列即字符寄存+打印指令41、42、43、和44發(fā)送到打印機,且流程跳到步驟S310。當(dāng)然,所要發(fā)送到打印機2的各個字符的點圖象得到了壓縮。
如果步驟S303為“否”,由于它表示該打印命令是該字符的第二或隨后的打印命令,驅(qū)動程序在步驟S308把表示該打印位置的一個位置移動指令33發(fā)送到打印機2,且還在步驟S309把一個類型4的指令序列即字符編碼打印指令41和42發(fā)送到打印機2。
驅(qū)動程序在步驟S310把變量sp加1,且流程返回到步驟S295,以把下一個字符數(shù)據(jù)發(fā)送到打印機2。
圖40至43是用于說明解釋程序52的操作的流程圖,在打印機2的電力接通時,解釋程序52也開始執(zhí)行接收單元6寫入接收緩存器10的打印指令的解釋和紙排放。
程序在步驟S321檢查用戶是否關(guān)斷了打印機2的電力開關(guān)。如果步驟S321為“是”,程序結(jié)束其處理。如果步驟S321為“否”,驅(qū)動程序在步驟S322檢查接收的一頁的數(shù)據(jù)是否被存儲在接收緩存器10中。如果步驟S322為“否”,流程返回到步驟S321,以形成一個環(huán),從而等候從主機1接收數(shù)據(jù)。
注意,程序在步驟S322查詢頁管理表13,以檢查有/無接收到的頁。頁管理表13,是由接收管理程序51,通過上面借助第一實施例中的圖9和10的流程圖所描述的操作,而進行管理的。
如果步驟S322為“是”,程序依次解釋和處理該頁的打印指令。程序在步驟S323把一個變量n設(shè)定為“帶的總數(shù)+1”,在步驟S324把一個變量np設(shè)定為1,并在步驟S325把一個變量hb設(shè)定為帶高度。程序隨后在步驟S326檢查變量np是否小于變量n。如果步驟S326為“否”,則表明對所有帶的處理完成,且流程跳到步驟S368,以等候紙排放的完成。
如果步驟S326為“是”,程序在步驟S327檢查第np個帶是否既不包括字符數(shù)據(jù)也不包括圖象數(shù)據(jù),即是一個空白帶。如果步驟S327為“是”,程序在步驟S328把變量t設(shè)定為0。隨后流程跳到步驟S344。
如果步驟S327為“否”,程序在步驟S329檢查第np個帶是否包括字符數(shù)據(jù)。如果步驟S329為“是”,在步驟S330程序在變量np為奇數(shù)的情況下把變量t設(shè)定為1,“或”在變量np為偶數(shù)的情況下把變量np設(shè)定為2。隨后,流程跳到步驟S334。
如果步驟S329為“否”,程序在步驟S331檢查用于第np個帶的數(shù)據(jù)是否包括多個圖象塊數(shù)據(jù)。如果步驟S331為“是”,程序在步驟S322在變量np為奇數(shù)的情況下把變量t設(shè)定為1,或者在變量np為偶數(shù)的情況下把變量t設(shè)定為2。隨后,流程跳到步驟S334。注意,在以上結(jié)合圖37、38、39A和39B描述的驅(qū)動程序操作中,在單個帶中從來沒有出現(xiàn)過多個圖象塊。
如果步驟S331為“否”,則表明存在有單個的圖象塊,作為第np個帶的數(shù)據(jù)。程序在步驟S33把變量t設(shè)定為3,且流程進行到步驟S334。
程序在步驟S334檢查變量t是否1或2。如果步驟S334為“是”,程序在步驟S335和隨后的步驟從標(biāo)頭數(shù)據(jù)依次解釋包括在第np個帶中的字符和圖象塊數(shù)據(jù),并把它們映象到帶A71和B72上。在步驟S335,程序在變量t為1的情況下清除帶A 71或者在變量t為2的情況下清除帶B72。
程序然后在步驟S336檢查當(dāng)前帶的重復(fù)帶數(shù)指令83是否為-1以外的值。如果步驟S336為“否”,流程進行到步驟S338而不進行處理;否則,在步驟S337進行處理且隨后流程進行到步驟S338。在步驟S337,程序利用圖象展開電路16把借助重復(fù)帶數(shù)目指定的帶中的單個圖象塊粘貼到帶存儲器上。在此情況下,圖象塊被粘貼到帶A71上;如果變量t為2,圖象塊被粘貼到帶B72上。
該程序隨后在步驟S338檢查所要解釋的指令是否位置移動指令33。如果步驟S338為“是”,程序在步驟S339移動游標(biāo)?!坝螛?biāo)”是表示字符或圖象在帶存儲器上的映象位置的一個想象指針。更具體地說,這種“游標(biāo)”是表示工作區(qū)12上的X和Y坐標(biāo)的變量。該游標(biāo)位置以各個帶的左上端作為原點。從驅(qū)動程序發(fā)送來的位置移動指令33是根據(jù)以各個帶的左上端作為原點的相對位置而傳送的。即,位置移動指令33并不以頁的左上端作為原點。在步驟S339之后,流程跳到步驟S351。
如果步驟S338為“否”,程序在步驟S340檢查該指令是否類型1的類型指令34。如果步驟S340為“是”,則在步驟S341借助字符寄存程序53進行字符寄存,且流程跳到步驟S351。由于該字符寄存與上面借助第一實施例的圖15的流程圖描述的相同,所以省略了對其的詳細(xì)描述。
如果步驟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展開壓縮圖象數(shù)據(jù),并把展開的圖象塊粘貼到帶A71或B72上。在此情況下,如果變量t為1,程序把展開的數(shù)據(jù)粘貼到帶A71上;如果變量t為2,程序把它粘貼到帶B72上。在此之后,流程跳到步驟S351。
在步驟S339、S341、S344、S346、S348或S350之后,或者如果步驟S349為“否”,流程進行到步驟S351。在步驟S351,程序檢查第np個帶的接收數(shù)據(jù)是否仍然包括未解釋的指令。如果步驟S351為“是”,流程返回到步驟S338以解釋未解釋的指令。
如果步驟S334或步驟S351為“否”,流程跳到圖42的步驟S352。
在步驟S352至S367,至引擎單元4的視頻信號輸出處理以帶為單位地進行。
程序在步驟S352檢查變量np是否為1。即,程序檢查感興趣的帶是否一定的頁的第一個帶。如果步驟S352為“是”,程序在步驟S353把一個紙送進啟動命令送到引擎單元4,并在步驟S354檢查引擎單元4是否已經(jīng)檢測到一個紙用完了狀態(tài)。如果步驟S354為“是”,程序在步驟S355進行等候,直到用戶加入了紙,且流程跳到步驟S358。如果步驟S354為“否”,即如果紙已經(jīng)設(shè)好,流程跳到步驟S358。
另一方面,如果在步驟S352判定感興趣的帶不是第一個帶,程序在步驟S356等候前一帶的視頻數(shù)據(jù)發(fā)送的結(jié)束。在此等候期間,程序在步驟S357始終監(jiān)測著是否發(fā)生了堵紙。如果發(fā)生了堵紙,流程從步驟S357跳到步驟S373,以從堵紙進行恢復(fù)。
如果步驟S356為“是”,即如果前一帶的視頻數(shù)據(jù)發(fā)送已經(jīng)完成,程序在步驟S358檢查變量t是否為0。如果步驟S358為“是”,程序在步驟S359把空白帶輸出處理命令與作為帶高度的變量hbp的值一起發(fā)送到圖象展開/視頻傳送電路73,且隨后流程跳到步驟S367。
如果步驟S358為“否”,程序在步驟S360檢查變量t是否為1。如果步驟S360為“是”,程序在步驟S361把來自帶A71的一個視頻信號輸出命令與作為帶高度的變量hbp的值一起送到圖象展開/視頻傳送電路73,且隨后流程跳到步驟S367。
如果步驟S360為“否”,程序在步驟S362檢查變量t是否為2。如果步驟S362為“是”,程序在步驟S363把來自帶B72的一個視頻信號輸出命令與作為帶高度的變量hbp的值一起送到圖象展開/視頻傳送電路73,且隨后流程跳到步驟S367。
如果步驟S362為“否”,程序在步驟S364檢查重復(fù)帶數(shù)目是否為-1以外的值。如果步驟S364為“是”,在步驟S365程序命令圖象展開/視頻傳送電路73輸出一個視頻信號并同時展開在由該重復(fù)帶數(shù)目指定的、具有作為帶高度的變量hbp的值的一個帶中的一個單個圖象塊的壓縮圖象數(shù)據(jù)。
如果步驟S364為“否”,在步驟S366程序命令圖象展開/視頻傳送電路73輸出一個視頻信號并同時展開包括在具有作為帶高度的變量hbp的值的第np個帶中的單個圖象塊。隨后,流程進行到步驟S367。
在步驟S367,程序把變量np加1,且流程隨后返回到步驟S326,以開始把下一個帶數(shù)據(jù)映象到帶存儲器并進行視頻信號輸出處理。
如果步驟S326為“否”,所有帶的輸出處理都已經(jīng)完成,且程序在步驟S368和隨后的步驟等候打印的紙的排放的完成。程序在步驟S368檢查紙排放是否完成。如果步驟S368為“否”,程序在步驟S372檢查是否發(fā)生了堵紙。如果步驟S372為“否”,流程返回到步驟S368以形成一個環(huán),從而等候紙排放的完成。
如果程序在步驟S368判定紙排放已經(jīng)完成,程序在步驟S369清除在頁管理表13上的紙排放頁的描述,并在步驟S370檢查任務(wù)的結(jié)束即是否單個文件的所有頁都已經(jīng)被排放。如果步驟S370為“是”,程序在步驟S371清除寄存字符管理表14,且流程返回到步驟S321以等候下一個文件任務(wù)的數(shù)據(jù)接收。
另一方面,如果步驟S370為“否”,流程也返回到步驟S321,以等候該文件的隨后的頁的數(shù)據(jù)接收。
如果步驟S372為“是”,程序在步驟S373在面板上顯示堵紙消息,并在步驟S374進行等候,直到用戶除去了堵紙。如果紙已經(jīng)被除去,流程返回到步驟S321,且程序重新執(zhí)行接收的頁數(shù)據(jù)至帶上的映象、視頻輸出以及紙排放—這些都已經(jīng)在前面進行了描述。
注意,程序在步驟S369清除頁管理表13上的頁寄存。接收管理程序51證實該區(qū)已經(jīng)被清除,并隨后命令接收單元6接收數(shù)據(jù)寫入位置的新的極限值。
(第三實施例的獨特效果)(1)在本實施例中,驅(qū)動程序分析幀緩存器上的圖象圖案,且如果檢測到以帶為單位重復(fù)出現(xiàn)在的相同圖案,驅(qū)動程序只把一個重復(fù)指令作為這種重復(fù)帶部分的數(shù)據(jù)進行發(fā)送。隨后,所要發(fā)送的圖象數(shù)據(jù)量減小了。另外,發(fā)送時間能夠得到縮短。另外,打印機側(cè)上的接收緩存器的存儲器容量能夠得到減小。
(2)如上面利用圖35所描述的,本實施例對于打印經(jīng)常包括重復(fù)圖案的表文件等是有效的。
(第四實施例)以下結(jié)合附圖描述第四實施例。
(系統(tǒng)設(shè)置)在第四實施例中,當(dāng)需要打印不能被存儲在打印機的接收緩存器中的巨大圖象時,接收緩存器被分成一些部分,且在一個分割部分中的圖象部分得到輸出而同時另一部分接收并存儲另一圖象部分,從而以此代替第一至第三實施例中描述的打印控制方法,從而通過重復(fù)上述操作而打印巨大的圖象。
更具體地說,本實施例的系統(tǒng)是基于第三實施例的。在一個文件的所有數(shù)據(jù)都被作為圖象數(shù)據(jù)而得到處理,打印機的大部分的RAM區(qū)被用作接收緩存器,且接收緩存器上用于一個巨大的圖象頁的數(shù)據(jù)直接受到圖象展開和至圖象展開/視頻傳送電路中的引擎單元的視頻傳送,從而打印出包括巨大的圖象頁的文件。由于第四實施例的組成元件、程序操作等基本與第三實施例的相同,所以在此主要描述它們的不同。
在以下的描述中,第三實施例中的打印模式將被稱為“合成模式”。這是由于字符和圖象數(shù)據(jù)在主機上分別地得到處理,且字符和圖象數(shù)據(jù)得到“或”(合成)處理并輸出到打印機上。用于輸出巨大的圖象的模式將被稱為“簡化的同步模式”。這是由于當(dāng)一頁的圖象數(shù)據(jù)很大或者具有更大的量時,打印是通過被動地同步同步重復(fù)從主機以帶為單位數(shù)據(jù)發(fā)送并在接收數(shù)據(jù)時把紙送進打印機,而得到實現(xiàn)的。
圖59A、59B和60是用于說明簡化的同步模式的原理的說明圖。假定本實施例的打印機包括2MB的作為接收緩存器的存儲器。圖59A顯示了即使在壓縮的情況下仍然超過了接收緩存器的容量的巨大的圖象。在主機上的打印機驅(qū)動程序把該巨大的圖象分成一個單個的1MB塊和多個100KB的塊,并把這些塊送到打印機,如圖59B所示。
圖60顯示了一種狀態(tài),其中打印機接收并重新構(gòu)成如圖59B所示的發(fā)送圖象塊,并打印該圖象。從主機接收的圖象塊以塊為單位得到壓縮并被存儲在RAM9中。打印機一個一個地展開這些塊,并打印出展開的數(shù)據(jù)。由于第二和隨后的塊并第一個塊小并能夠被迅速地展開,所以展開時間不會產(chǎn)生任何過度運行。在第四實施例中,上述的“合成模式”和“簡化的同步模式”被結(jié)合起來。
圖44是框圖,顯示了當(dāng)控制單元3在“簡化的同步模式”運行時的設(shè)置。當(dāng)單元3運行在“合成模式”時該設(shè)置的框圖對應(yīng)于第二實施例的圖18。圖18與44之間的不同是RAM9的內(nèi)部設(shè)置。
RAM的設(shè)置的這種不同,主要是由接收單元6和圖象展開/視頻傳送電路73的打印數(shù)據(jù)處理步驟限定的,且RAM沒有任何永久區(qū)。因此,容易根據(jù)數(shù)據(jù)處理步驟來有選擇地采用圖18和44中顯示的RAM的設(shè)置。
以下具體結(jié)合接收緩存器來說明兩種模式的不同。在“合成模式”中,RAM包括接收緩存器10、帶A71、帶B72、頁管理表13、寄存字符管理表14、寄存字符數(shù)據(jù)區(qū)15、等等。如果RAM9具有2MB的容量,可用作接收緩存器10的區(qū)最多約1MB。在“簡化的同步模式”中,在RAM9上只分配有接收緩存器10和頁管理表13。如果RAM9具有2MB的容量,能夠用作接收緩存器10的區(qū)可大至1.7MB。
假定600dpi的圖片圖象被粘貼到具有A4尺寸的整個頁上,數(shù)據(jù)容量約為1.8MB—雖然它根據(jù)壓縮方法而改變。如果接收緩存器10具有1.7MB的容量,一頁的數(shù)據(jù)即使在文件包括非常大的圖象的情況下也能夠被存儲在接收緩存器10中,并能夠得到打印。即使當(dāng)用于一頁的數(shù)據(jù)略微超過了1.7MB時,由于“簡化的同步模式”在接收數(shù)據(jù)的同時被動同步地輸出數(shù)據(jù),因而打印錯誤是罕見的。
然而,在只能保證1MB接收緩存器10的“合成模式”中,一頁的數(shù)據(jù)不能被存儲在接收緩存器10中,且根據(jù)不同的文件經(jīng)常不能得到打印。
注意,圖18中的圖象展開電路16和字符展開電路17在圖44中被省略了,且沒有被用在“簡化的同步模式”中。即,這些電路可以或可以不被設(shè)置。換言之,第四實施例的硬件構(gòu)成元件可以與第二實施例的圖18的相同。
圖18和44的另一個不同,是所要從主機1發(fā)送到打印機2的數(shù)據(jù)在圖18顯示的“合成模式”中包括字符和圖象數(shù)據(jù),但在圖44所示的“簡化的同步模式”中只包括圖象數(shù)據(jù)。
圖45是將要從主機1發(fā)送到打印機2的字符數(shù)據(jù)和圖象數(shù)據(jù)的指令結(jié)構(gòu)的說明圖。圖45顯示了用于一定的文件的打印任務(wù)數(shù)據(jù),且第一頁的數(shù)據(jù)以“合成模式”的頁的形式而得到發(fā)送。雖然第二頁的數(shù)據(jù)也以“合成模式”的頁的形式發(fā)送,該頁具有大的圖象量且1MB接收緩存器10在只接收該頁的數(shù)據(jù)時可能溢出。因此,第二頁的數(shù)據(jù)被清除,并以“簡化的同步模式”的頁的形式重新被輸出,從而結(jié)束任務(wù)。
圖45中顯示的指令基本上與在第三實施例的圖36中的相同,只是以頁為單位加上了頁類型A指令91和頁類型B指令92,且可在頁數(shù)據(jù)的結(jié)束處加上頁清除指令93。加有頁清除指令93的頁的數(shù)據(jù)不被打印,而是被清除。另一方面,加有頁類型A指令91的打印的數(shù)據(jù)是“簡化的同步”的數(shù)據(jù),且加有頁類型B指令92的打印的數(shù)據(jù)是“簡化的同步模式”的數(shù)據(jù)。即,這些指令每一個都以頁為單位選擇圖18和44所示的RAM9的環(huán)境。
在“簡化的同步模式”的頁的情況下,單個的帶只包括一個單個圖象塊。此時,類型指令34可只表示5即圖象塊指令。
另外,在“簡化的同步模式”的頁的情況下,如果一頁的壓縮數(shù)據(jù)的大小在1MB之內(nèi),只需要發(fā)送一個帶和一個圖象塊。對于超過1MB的部分,每當(dāng)壓縮數(shù)據(jù)超過100KB時,就形成一個帶和一個圖象塊,且這種處理得到重復(fù)。
這種處理被包括在主機1上的驅(qū)動程序所進行的打印指令發(fā)生處理中,并能夠借助被動同步而打印一個巨大的圖象頁—它可超過1.7MB。
控制單元3的ROM8中安裝的程序的名稱,可以與第二實施例的圖21中顯示的內(nèi)容相同。本實施例的操作基本上與第二實施例中的相同,只是接收管理程序51和解釋程序52不同。圖象展開/視頻傳送電路73的操作與在第二實施例中的相同,且將省略對其的詳細(xì)描述。以下結(jié)合流程圖詳細(xì)描述主機1上的驅(qū)動程序、接收單元6、接收管理程序51和解釋程序52的操作。
圖46A和46B用于說明頁管理表13的結(jié)構(gòu)。
表13有四項,即表示接收順序的頁碼、接收頁數(shù)據(jù)的開始地址、接收的頁數(shù)據(jù)的結(jié)束地址、以及表示接收的頁數(shù)據(jù)是否具有太大的量的標(biāo)記。
解釋程序52從號1開始其處理。在完成了解釋和紙排放時,來自紙排放頁的數(shù)據(jù)被清除,且頁號2的數(shù)據(jù)被更新為號1。隨后,開始對該頁的解釋。
圖46A顯示了“合成模式”的狀態(tài)或其中即使在“簡化的同步模式”下每打印的數(shù)據(jù)量也不超過接收緩存器10的容量的狀態(tài)。圖46B顯示了其中每頁的數(shù)據(jù)量已經(jīng)超過—接收緩存器10的容量的狀態(tài)。接收緩存器只存儲一個巨大的頁的數(shù)據(jù),對其的接收正在進行,接收管理程序51命令解釋程序52在被動同步模式下進行打印,且打印正在進行。
注意,接收管理程序51在巨大的頁之前的所有打印的數(shù)據(jù)都被打印且相應(yīng)的紙被排放之后發(fā)出一個打印命令。因此,接收緩存器只存儲巨大的頁的數(shù)據(jù),如圖46B所示。
當(dāng)RAM9的環(huán)境在“合成模式”和“簡化的同步模式”之間切換時,切換在所有打印的數(shù)據(jù)都被打印且相應(yīng)的紙被排放之后完成。該是因為,由于切換包括接收緩存器10的大小的改變,如果在還有頁數(shù)據(jù)時接收緩存器10的大小減小,某些打印數(shù)據(jù)可能會丟失。
(系統(tǒng)控制)下面結(jié)合流程圖描述第四實施例的操作。
將描述驅(qū)動程序、接收單元6、接收管理程序51和解釋程序52與第三實施例不同的操作。
(打印機驅(qū)動程序)圖47至51是用于說明主機1上的打印機驅(qū)動程序的操作的流程圖。該打印機驅(qū)動程序,從用戶使用的應(yīng)用軟件程序產(chǎn)生的文件數(shù)據(jù),產(chǎn)生如以上借助圖45描述的字符和圖象打印機指令,并將它們發(fā)送到打印機2。當(dāng)用戶從應(yīng)用軟件程序命令文件打印時,該打印機驅(qū)動程序在主機1中得到啟動。
在啟動時,驅(qū)動程序在主機1的存儲器上保證一頁的幀緩存器(未顯示),并同時清除該幀緩存器。在驅(qū)動程序進行文件打印完成時,幀緩存器所用的存儲器區(qū)域得到釋放。
驅(qū)動程序在步驟S381把一個任務(wù)啟動指令31發(fā)送到打印機2,在步驟S382設(shè)定所要打印的文件的頁數(shù)之和的值并把一個變量m設(shè)定為1,并在步驟S383把表示正在處理的的頁碼的變量mp設(shè)定為1。驅(qū)動程序在步驟S384檢查變量mp是否小于變量m。如果步驟S384為“否”,則對文件的所有頁的處理完成,且驅(qū)動程序在步驟S385發(fā)送一個任務(wù)結(jié)束指令,從而結(jié)束其處理。
如果步驟S384為“是”,驅(qū)動程序在步驟S386向打印機2發(fā)送一個頁啟動指令32,在步驟S387從應(yīng)用程序保存第mp頁的字符打印命令,在步驟S388根據(jù)保存的字符打印命令的打印位置對它們進行分類,并在步驟S389把來自應(yīng)用程序的第mp頁的字符打印命令以外的畫命令映象到主機1的幀緩存器上。字符打印命令以外的這些畫命令包括帶標(biāo)尺的行和畫圖命令、圖象粘貼命令、等等。同時,計算出總的圖象粘貼面積。
在步驟S388根據(jù)字符打印命令的打印位置對它們進行分類時,字符打印命令按照它們沿著紙的長度方向的打印位置而得到分類,并隨后按照它們沿著紙的寬度方向的打印位置得到分類。當(dāng)A4紙被置于作畫位置時,命令被從上向下位置地得到分類,并從左向右地得到分類。
驅(qū)動程序隨后在步驟S390檢查總圖象粘貼面積是否已經(jīng)超過了半頁。如果步驟S390為“是”,即如果判定該頁主要包括的是圖象數(shù)據(jù),流程跳到圖50中的步驟S426,以啟動“簡化的同步模式”中的處理。如果步驟S390為“否”,即如果判定頁包括的主要是字符數(shù)據(jù),流程進行到步驟S391,且驅(qū)動程序把一個頁類型A指令91發(fā)送到打印機2。
驅(qū)動程序借助圖案識別來分析幀緩存器的內(nèi)容以在步驟S392檢查映象的圖象是否包括以帶為單位的重復(fù)圖象圖案,并隨后在步驟S393檢查是否發(fā)現(xiàn)了重復(fù)的圖案。如果步驟S393為“否”,由于一頁的圖象被等分成16個帶,在步驟S394適當(dāng)?shù)闹当恢萌霂Ч芾肀碇杏蓭?、帶高度、和?dāng)重復(fù)圖案時采用的帶號組成的列中。特別地,-1被置入當(dāng)重復(fù)一個圖案時采用的帶號的列。隨后流程跳到步驟S398。
如果步驟S393為“是”,驅(qū)動程序在圖48的步驟S395檢查是否有其帶高度已經(jīng)超過最大高度即帶A71或B72的高度的帶。若步驟S395為“是”,在步驟S396驅(qū)動程序?qū)υ摮^了最大高的帶進行分割,從而使分割的帶的高度變得等于或小于最大帶高度。在此之后,流程進行到步驟S397。如果在步驟S395的判定結(jié)果為“否”,流程進行進行到步驟S397。在此情況下,由于帶高度不相等而是以帶為單位地任意設(shè)定的,在步驟S397適當(dāng)?shù)闹当恢萌霂Ч芾肀碇杏蓭?、帶高度和?dāng)重復(fù)圖案時采用的帶號組成的列。隨后流程進行到步驟S398。
注意,該帶管理表被分配在主機1上,以便于驅(qū)動程序產(chǎn)生與帶有關(guān)的打印指令,并包括三個項,即帶號、帶高度、以及當(dāng)重復(fù)圖象圖案時采用的帶號。
在步驟S398中,驅(qū)動程序把變量n設(shè)定為通過把總帶數(shù)加1而獲得的一個值。驅(qū)動程序在步驟S399把表示一個帶號的變量np設(shè)定為1,并在步驟S40檢查變量np是否小于變量n。如果步驟S400為“否”,這意味著對一頁中所有帶的處理都已經(jīng)完成,且驅(qū)動程序在步驟S401把變量mp加1。隨后,流程返回到步驟S384,以啟動對下一個頁的帶輸出處理。
如果步驟S400為“是”,驅(qū)動程序在步驟S402把一個帶啟動指令81發(fā)送到打印機2,在步驟S403發(fā)送一個帶高度指令82,并在步驟S404發(fā)送一個重復(fù)帶數(shù)指令83。如果當(dāng)前的帶不包括任何重復(fù)圖象,發(fā)送設(shè)定為-1的指令83。
驅(qū)動程序在步驟S405從來自應(yīng)用程序的保存的打印命令,拾取包括在第np個帶中的字符打印命令,在步驟S406把一個變量s設(shè)定為通過把拾取的字符的數(shù)目加1而獲得的一個值,并在步驟S407把一個變量sp設(shè)定為1。
注意,將要在步驟S405拾取的字符打印命令包括那些部分地包含在第np個帶中的字符。因此,某些字符根據(jù)它們的打印位置而被打印在兩個帶上。
檢查在圖49的步驟S408檢查變量sp是否小于變量s。如果步驟S408為“否”,則判定包括在第np個帶中的字符數(shù)據(jù)都已經(jīng)被傳送,且在步驟409和隨后的步驟開始傳送第np個帶的圖象數(shù)據(jù)。即,驅(qū)動程序在步驟S409檢查當(dāng)前的帶是否是一個重復(fù)的帶。如果步驟S409為“是”,流程跳到步驟S417而不進行任何處理。
如果步驟S409為“否”,驅(qū)動程序在步驟S410從主機上的幀緩存器提取與第np個帶的位置和大小相應(yīng)的一個圖象,并在步驟S411檢查第np個帶是否一個空白帶。如果步驟S411為“是”,流程跳到步驟S417,而不進行任何處理。
如果步驟S411為“否”,驅(qū)動程序在步驟S412提取實際包括作為單個塊的圖象的一個矩形區(qū),并在發(fā)送該塊時在步驟S413檢查每頁的數(shù)據(jù)量是否超過接收緩存器的大小。如果步驟S413為“否”,驅(qū)動程序在步驟S415把一個表示該塊的粘貼位置的位置移動指令33發(fā)送到打印機2,并在步驟S416把一個類型5指令序列即圖象塊指令45、46、47和48發(fā)送到打印機2。當(dāng)然,該圖象塊數(shù)據(jù)是以壓縮狀態(tài)發(fā)送的。
驅(qū)動程序在步驟S417把變量sp加1,且流程返回到圖48的步驟S400,以把下一個字符數(shù)據(jù)發(fā)送到打印機2。
如果步驟S413為“是”,驅(qū)動程序在步驟S414發(fā)送一個頁清除指令93,以取消該頁的紙排放。隨后,流程跳到步驟S426以重新嘗試在“簡化的同步模式”下輸出該頁。
如果圖49的步驟S408為“是”,驅(qū)動程序在步驟S418檢查第sp個字符是否該文件中所要打印的第一個字符。如果步驟S418為“是”,驅(qū)動程序在步驟S419把一個表示打印位置的位置移動指令33發(fā)送到打印機2,并在步驟S420檢查寄存字符的數(shù)目是否已經(jīng)達到了打印機2側(cè)上的一個極限。如果步驟S420為“是”,驅(qū)動程序在步驟S422把一個類型3指令序列即只字符圖象打印43和44發(fā)送到打印機2,且流程跳到步驟S425。
如果步驟S420為“否”,驅(qū)動程序在步驟S421把一個類型2指令序列即字符寄存+打印指令41、42、43和44發(fā)送到打印機,且流程跳到步驟S425。當(dāng)然,所要發(fā)送到打印機2的各個字符的圖象是得到壓縮的。
如果步驟S418為“否”,由于它表明該打印命令是該字符的第二或隨后的打印命令,驅(qū)動程序在步驟S423把一個表示打印位置的位置移動指令33發(fā)送到打印機2,并還在步驟S424把一個類型4指令序列即字符編碼打印指令41和42發(fā)送到打印機2。
驅(qū)動程序在步驟S425把變量sp加1,且流程返回到步驟S408以向打印機2發(fā)送下一個字符數(shù)據(jù)。
(打印機驅(qū)動程序簡化的同步模式)以下結(jié)合圖50的步驟S426和隨后的步驟來描述基于“簡化的同步模式”的頁打印。
在步驟S426,驅(qū)動程序把一個頁類型B指令92發(fā)送到打印機2。在步驟S427,驅(qū)動程序根據(jù)保存的字符打印命令對在幀緩存器中的數(shù)據(jù)與所有字符進行“或”運算,并將其寫入幀緩存器。在步驟S428,驅(qū)動程序開始從幀緩存器上的開始地址起壓縮圖象數(shù)據(jù)。
驅(qū)動程序隨后在步驟S429檢查壓縮的數(shù)據(jù)是否已經(jīng)超過了1MB。如果步驟S429為“否”,驅(qū)動程序在步驟S430檢查對一頁數(shù)據(jù)的壓縮是否完成。如果步驟S430為“否”,驅(qū)動程序在步驟S431繼續(xù)進行數(shù)據(jù)壓縮,且流程返回到步驟S429以形成一個環(huán)。即,驅(qū)動程序進行等候,直到對一頁的壓縮已經(jīng)完成或者壓縮的數(shù)據(jù)已經(jīng)超過1MB。
如果步驟S429或步驟S430為“是”,流程進行到圖51的步驟S432,且驅(qū)動程序把一個帶啟動指令81發(fā)送到打印機2。驅(qū)動程序隨后在步驟S433把一個帶高度指令82發(fā)送到打印機2,并在步驟S434把一個重復(fù)帶數(shù)指令83發(fā)送到打印機2。在此情況下,由于帶不是重復(fù)的帶,設(shè)定為-1的指令得到發(fā)送。
驅(qū)動程序在步驟S435發(fā)送一個位置移動指令33,并在步驟S436把一個類型5指令序列即圖象塊指令45、46、47和48發(fā)送到打印機2。
驅(qū)動程序在步驟S437檢查在幀緩存器中是否剩有未發(fā)送的圖象數(shù)據(jù)。如果步驟S437為“否”,驅(qū)動程序在步驟S438把變量mp加1,且流程返回到步驟S384,以啟動對下一個頁的處理。
如果步驟S437為“是”,即如果仍然有圖象數(shù)據(jù),流程進行到步驟S439以開始對幀緩存器上的剩余圖象數(shù)據(jù)的壓縮。驅(qū)動程序在步驟S44檢查壓縮的數(shù)據(jù)是否已經(jīng)超過了100KB。如果步驟S440為“否”,驅(qū)動程序在步驟S441檢查對一頁的壓縮是否完成。如果步驟S441為“否”,驅(qū)動程序在步驟S444繼續(xù)數(shù)據(jù)壓縮,且流程返回到步驟S440以形成一個環(huán)。即,驅(qū)動程序進行等候,直到對一頁的壓縮已經(jīng)完成或者壓縮數(shù)據(jù)超過了100KB。
如果步驟S440或步驟S441為“是”,流程返回到步驟S432,以把帶數(shù)據(jù)發(fā)送到打印機2。
(接收單元6)
圖52和53是用于說明接收單元6的操作的流程圖。雖然接收單元6是一個硬件電路且不同于通常的程序,其操作順序仍然用流程圖來說明。
已經(jīng)借助第一實施例中的圖11和12描述的接收單元繼續(xù)接收從任務(wù)啟動指令31至任務(wù)結(jié)束指令36的指令序列。即使當(dāng)頁啟動指令32被插入到該指令序列中時,接收單元6仍然接收直到任務(wù)結(jié)束指令的指令而不中斷接收,雖然它將其接收通知接收管理程序51。
然而,由于輸出模式可能以頁為單位地在“合成模式”與“簡化的同步模式”之間切換,接收單元在頁啟動指令32到達時等候來自接收管理程序51的一個命令。
如果輸出模式需要改變,接收管理程序51,在接收的頁的所有數(shù)據(jù)都被打印且相應(yīng)的紙被排放之后,把RAM9上的存儲器映象切換到“合成模式”或“簡化的同步模式”的存儲器映象。隨后,程序51命令接收單元6新的接收數(shù)據(jù)寫入位置和新的極限值,并使其開始接收頁數(shù)據(jù)。即,當(dāng)輸出模式切換時,接收緩存器的內(nèi)容被暫時清除。
另一方面,當(dāng)輸出模式保持不變時,接收單元不需要等候到接收頁的數(shù)據(jù)被打印且相應(yīng)的紙被排放。更具體地說,接收單元不需要等到接收緩存器10被暫時清除。頁數(shù)據(jù)能夠被繼續(xù)接收。然而,在此情況下,接收單元6也在它接收到接收數(shù)據(jù)的寫入位置和極限值命令之后開始下一個頁的數(shù)據(jù)的接收。
接收單元6在打印機2的電力開關(guān)被接通之后立即開始操作。在步驟451,接收單元6被置于操作狀態(tài)—即“它能夠從主機1接收數(shù)據(jù)但放棄所有的接收數(shù)據(jù)”。
隨后在步驟S452檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S452為“是”,接收單元6結(jié)束其操作。如果步驟S452為“否”,則在步驟S453檢查是否從接收數(shù)據(jù)檢測到了一個頁啟動指令32。如果步驟S453為“否”,流程返回到步驟S452以等候來自主機1的頁啟動指令32。
如果步驟S453為“是”,在步驟S454接收被暫時停止,且接收單元6在步驟S455通知接收管理程序51檢測到頁啟動指令32,以及下一個頁類型即頁類型A指令91或頁類型B指令92的檢測。注意,接收通過把打印機2設(shè)定成繁忙以拒絕從主機1的數(shù)據(jù)接收而得到暫時停止的。
在步驟S456,接收單元6進行等候,直到它接收到至接收緩存器10的寫入開始位置和極限值命令。在接收到這些命令時,單元6在步驟S457開始并繼續(xù)接收來自主機1的數(shù)據(jù)并將該數(shù)據(jù)寫入接收緩存器10。
隨后在步驟S458檢查是否接收到一個任務(wù)結(jié)束指令。如果步驟S458為“是”,接收單元6在步驟S459暫時停止接收,并在步驟S460把任務(wù)結(jié)束指令和至接收緩存器10的寫入結(jié)束位置的檢測通知給接收管理程序51。隨后,流程返回到步驟S451,以等候下一個頁的數(shù)據(jù)的接收。
如果步驟S458為“否”,則在圖53的步驟S461檢查接收數(shù)據(jù)的寫入位置是否已經(jīng)達到了極限值。如果步驟S461為“是”,在步驟S463單元6暫時停止在步驟S462的接收并通知接收管理程序51極限值已經(jīng)被達到。
在步驟S464檢查是否從接收管理程序51接收到了新的寫入位置和新的極限值。如果步驟S464為“否”,則在步驟S465檢查是否從接收管理程序51接收到了一個寫入結(jié)束命令。如果步驟S465為“否”,流程返回到步驟S464以形成一個環(huán),從而進行等候直到在步驟S464或步驟S465判定出“是”。
如果步驟S465為“是”,由于它表明不再需要接收該頁的數(shù)據(jù)流程返回到步驟S451,以等候接收下一個頁的數(shù)據(jù)。
如果步驟S464為“是”,流程返回到步驟S457,以根據(jù)新的寫入位置和極限值重新開始接收。
如果步驟S461為“否”,在步驟S466檢查是否接收到一個頁清除指令93。如果步驟S466為“是”,單元6通知接收管理程序51檢測到頁清除指令93。隨后流程返回到步驟S451,以等候接收下一個頁的數(shù)據(jù)。
如果步驟S466為“否”,在步驟S468檢查是否檢測到一個頁啟動指令32。如果步驟S468為“否”,流程返回到步驟S457,以繼續(xù)接收頁數(shù)據(jù)。如果步驟S468為“是”,在單元6在步驟S469暫時停止了接收之后,在步驟S470它通知接收管理程序51檢測到了頁啟動指令32和下一個頁類型即檢測到了頁類型A指令91或頁類型B指令92。最后,流程返回到步驟S465以等候來自接收管理程序51的寫入位置和極限值命令。在接收到這些命令時,開始把接收數(shù)據(jù)寫入接收緩存器10。
(接收管理程序)
圖54、55、和56是用于說明接收管理程序51的操作的流程圖。如已經(jīng)結(jié)合接收單元6提到的,接收管理程序51以頁為單位進行管理, 并在每次從接收單元6接收到頁啟動指令32的檢測信息時向接收單元6提供位置和極限值命令,從而使單元6開始接收數(shù)據(jù)的寫入。
另外,程序51以頁為單位檢查輸出模式是“合成模式”還是“簡化的同步模式”,并根據(jù)需要以頁為單位地把RAM 9的存儲器映象切換到用于“合成模式”或“簡化的同步模式”的存儲器映象。
接收管理程序51是在打印機2的電力接通時啟動。該程序在步驟S481將變量mem設(shè)定為0,并在步驟S482檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S482為“是”,程序結(jié)束其處理。如果步驟S482為“否”,程序在步驟S483檢查它是否已經(jīng)從接收單元6接收到了頁啟動指令的檢測信息。如果步驟S483為“否”,流程返回到步驟S482以形成一個環(huán),且程序等候到它從接收單元6接收到頁啟動信息。
如果步驟S483為“是”,程序在步驟S484檢查該頁的類型指令是否一個頁類型A指令91。如果步驟S484為“是”,程序在步驟S485把一個變量mem_new設(shè)定為1;否則,它在步驟S486把變量mem_new設(shè)定為2。隨后,流程進行到步驟S487,以檢查變量mem是否等于變量mem_new。
如果步驟S487為“是”,RAM 9上的存儲器映象不需要改變,即前面的頁數(shù)據(jù)在“合成模式”下得到輸出且當(dāng)前的頁數(shù)據(jù)也在“合成模式”下得到輸出,或者前面的頁數(shù)據(jù)在“簡化的同步模式”下輸出而當(dāng)前的頁數(shù)據(jù)也在“簡化的同步模式”下輸出。因此,流程跳到步驟S495,以啟動原來的接收處理。
如果步驟S487為“否”,由于前面和當(dāng)前的頁數(shù)據(jù)具有不同的輸出模式,程序在步驟S488和隨后的步驟把RAM 9上的存儲器映象改變成“合成模式”或“簡化的同步模式”的存儲器映象,且流程跳到圖55中的步驟S495以啟動原來的接收處理。
在此情況下,程序在步驟S488檢查接收的頁數(shù)據(jù)是否仍然剩余在接收緩存器10上。如果步驟S488為“是”,程序通過形成一個環(huán)而進行等候,直到所有剩余的頁數(shù)據(jù)都被解釋程序52所解釋。
如果證實所有的接收的頁數(shù)據(jù)都從接收緩存器10清除的,程序在步驟S489檢查變量mem_new是否為1。如果步驟S489為“是”,在步驟S490程序分配帶存儲器71和72、頁管理表13、寄存字符管理表14和RAM9上的寄存字符數(shù)據(jù)區(qū)15,作為用于“合成模式”的存儲器映象,并清除這些區(qū)。注意“清除”在此并不總是表示“清除至0”而是表示“初始化”。在步驟S491,程序把變量mem設(shè)定為1,且流程跳到步驟S494。
如果步驟S489為“否”,在步驟S492程序只把接收緩存器10和頁管理表13作為用于“簡化的同步模式”的存儲器映象進行分配并清除它們。程序在步驟S493把變量mem設(shè)定為2,且隨后流程跳到步驟S494。
在步驟S494,程序命令接收單元6把接收緩存器10的開始位置作為新的寫入位置并把接收緩存器10的結(jié)束位置作為新的極限值。隨后流程跳到圖55的步驟S495。
在圖55的步驟S495,程序在頁管理表13中設(shè)定將要在接收緩存器10上接收的頁數(shù)據(jù)的開始地址。程序隨后在步驟S496通知接收單元6寫入位置和極限值,并在步驟S497等候0.2秒。在此間隔期間,接收單元6把接收數(shù)據(jù)寫入接收緩存器10。
在步驟S498,接收管理程序51檢查它是否從接收單元6接收到了某些信息。如果步驟S498為“否”,流程返回到步驟S497以形成一個環(huán),從而等候來自接收單元6的信息。
如果程序在步驟S498判定它從接收單元6接收到了信息,程序在步驟S499和隨后的步驟執(zhí)行與信息的類型相應(yīng)的各種處理。
程序在步驟S499檢查來自接收單元6的信息是否表示頁啟動指令32的檢測。如果步驟S499為“是”,程序在步驟S500檢查是否有對其的接收正在進行的前面的頁數(shù)據(jù)。如果步驟S500為“否”,則流程返回到步驟S484以開始新的頁數(shù)據(jù)的接收。如果步驟S500為“是”,程序在頁管理表13中設(shè)定其接收正在進行的前面的頁數(shù)據(jù)的結(jié)束地址,且流程返回到步驟S484以開始新的頁的接收。
如果步驟S499為“否”,程序在步驟S502檢查來自接收單元6的信息是否表示頁清除指令的檢測。如果步驟S502為“是”,程序在步驟S503從頁管理表13清除對其的接收正在進行的頁的數(shù)據(jù)。隨后,流程返回到步驟S482,以等候下一個頁的開始信息。
如果步驟S504為“否”,由于這意味著來自接收單元6的信息表明接收數(shù)據(jù)至接收緩存器10的寫入位置已經(jīng)達到了極限值,程序在步驟S506檢查頁管理表,以檢測接收緩存器10是否具有其中能夠?qū)懭虢邮諗?shù)據(jù)的空區(qū)。
如果步驟S506為“是”,由于能夠設(shè)定新的極限值,流程跳到步驟S496,以通知接收單元6新的寫入位置和新的極限值,且程序連續(xù)進行接收。
另一方面,如果在步驟S506判定“否”,程序在步驟S507檢查如果在接收緩存器中只存儲有對其的接收正在進行的頁數(shù)據(jù),且該頁數(shù)據(jù)在其被寫入接收緩存器10的整個區(qū)域之后仍然在繼續(xù),即一頁的數(shù)據(jù)是否太大。如果步驟S507為“否”,程序在步驟S508等候1秒在此間隔期間,程序等候與接收的頁數(shù)據(jù)對應(yīng)的紙排放并借助解釋程序52從接收緩存器10清除紙排放頁數(shù)據(jù)。在步驟S508之后,流程返回到步驟S506以形成一個環(huán),且程序等候解釋程序52的解釋和紙排放的完成。
如果在步驟S507判定一頁的數(shù)據(jù)太大,程序在圖59中的步驟S509檢查變量mem是否為1。如果步驟S509為“是”,表明RAM9上的當(dāng)前存儲器映象是“合成模式”的,且在“合成模式”下不能輸出太大的一頁數(shù)據(jù)即巨大的頁的數(shù)據(jù)。因此,程序在步驟S515和隨后的步驟暫停接收。
如果步驟S509為“否”,在步驟S510和隨后的步驟程序開始與解釋程序52一起在“簡化的同步模式”下巨大的頁數(shù)據(jù)的紙排放/輸出處理。
在程序在步驟S510把表示巨大頁數(shù)據(jù)的標(biāo)記置入頁管理表13之后,在步驟S511它通知解釋程序52正在接收巨大頁數(shù)據(jù)以及在接收緩存器10上的寫入結(jié)束位置。
程序在步驟S512形成一個環(huán)以等候來自解釋程序52的信息。在此情況下來自解釋程序52的信息具有三種內(nèi)容之一,即表示空區(qū)中的下一個圖象塊的接收請求—因為接收的圖象塊已經(jīng)被視頻發(fā)送到了引擎單元—的信息、表示已經(jīng)發(fā)生了堵紙錯誤的信息、或表示已經(jīng)發(fā)生了“過度運行錯誤”—其中圖象塊的接收不能趕上至引擎的視頻傳送。
在接收到來自解釋程序52的信息時,流程跳到步驟S513,以檢查該信息內(nèi)容是否表示錯誤。如果步驟S513為“否”,即如果該信息內(nèi)容不表示錯誤而是下一個圖象塊的接收請求,程序在步驟S514正確頁管理表13中的頁開始地址,且隨后流程返回到步驟S496,以控制接收巨大的頁的圖象塊。
如果步驟S509或步驟S513為“是”,則進行頁數(shù)據(jù)接收暫停處理。程序在步驟S515命令接收單元6結(jié)束寫入,在步驟S516從頁管理表13清除其接收正在進行的頁數(shù)據(jù),并在步驟S517清除RAM9上的緩存器、工作區(qū)等等。如果選擇了“合成模式”,程序還清除帶存儲器、寄存字符管理表14和寄存字符數(shù)據(jù)區(qū)15。
在步驟S517之后,流程返回到步驟S482,且程序等候下一個頁的啟動信息。
(解釋程序)圖57和58是用于說明解釋程序52的操作的流程圖。在這些流程圖中,在步驟S521和隨后的步驟的處理被加到在第三實施例中借助圖40至43描述的解釋程序52的操作的開始。
只有所加的處理將結(jié)合圖57和58而得到描述。由于其他的處理與圖40至43中顯示的相同,所以將省略對它們的詳細(xì)描述。
解釋程序52在打印機2的電力接通時立即啟動。在步驟S321,程序檢查用戶是否已經(jīng)關(guān)斷了打印機2的電力開關(guān)。如果步驟S321為“是”,程序結(jié)束其處理。
如果步驟S321為“否”,程序在步驟S322檢查接收緩存器10是否存儲有一頁的接收數(shù)據(jù)。如果步驟S322為“是”,流程進行到圖40中的步驟S323和隨后的步驟的處理。
如果步驟S322為“否”,程序在步驟S521檢查來自接收管理程序51的信息是否表示存在有太大而不能被存儲在接收緩存器10中的一個頁。如果步驟S521為“否”,流程返回到步驟S321以形成一個環(huán),從而等候頁數(shù)據(jù)的接收的完成。
如果步驟S521為“是”,則在步驟S522和隨后的步驟開始在“簡化的同步模式”下輸出不能被存儲在接收緩存器10中的巨大的頁。
程序在步驟S522向引擎單元4提供一個紙送進啟動命令,并在步驟S523檢查引擎單元4是否已經(jīng)檢測到了紙用完了狀態(tài)。如果步驟S523為“是”,程序在步驟S524形成一個環(huán)并等候至用戶設(shè)定了紙。在設(shè)定了紙之后或如果步驟S523為“否”,在步驟S525程序命令圖象展開/視頻傳送電路展開在屬于該頁的第一個帶的單個圖象塊中的壓縮圖象數(shù)據(jù),并向引擎單元4進行視頻傳送。
程序在步驟S526檢查視頻傳送是否完成。如果步驟S526為“是”,在步驟S527程序在視頻傳送完成時通知接收管理程序51接收緩存器10的空區(qū)。即,程序請求程序51接收帶數(shù)據(jù)(將要在后面描述)。
隨后程序在步驟S528檢查一頁的視頻傳送是否完成。如果步驟S528為“是”,程序在步驟S529清除頁管理表13上用于紙排放的頁的數(shù)據(jù),且流程返回到步驟S321以開始解釋下一個頁。
如果步驟S528為“否”,程序在步驟S530檢查接收緩存器10是否存儲有下一個接收的帶。如果步驟S530為“是”,在步驟S531程序命令圖象展開/視頻傳送電路73展開跟著屬于已經(jīng)被發(fā)送到圖象展開/視頻傳送電路73的帶的一個帶的單個圖象塊中的壓縮圖象數(shù)據(jù),并向引擎單元4進行視頻傳送。流程隨后返回到步驟S526以等候視頻傳送的完成。
如果步驟S530為“否”,由于一頁的視頻傳送和下一個帶的數(shù)據(jù)的接收都沒有完成,在步驟S532在打印機2的面板上顯示一個“過度運行錯誤”消息,且流程跳到步驟S535,以執(zhí)行錯誤處理。
如果步驟S526為“否”,程序在步驟S533檢查在引擎單元4中是否發(fā)生了堵紙。如果步驟S533為“否”,流程返回到步驟S526以形成一個環(huán),從而等候視頻傳送的完成。
如果步驟S533為“是”,程序在步驟S534在面板上顯示一個“堵紙”消息,并在步驟S535通知接收管理程序51一個“錯誤”?!板e誤”的類型包括“堵紙錯誤”和“過度運行錯誤”。
程序在步驟S536繼續(xù)檢查,直到用戶除去堵塞的紙。隨后,流程返回到步驟S321以開始下一個頁的解釋。
當(dāng)然,如果在步驟S532發(fā)生了“過度運行錯誤”,由于沒有發(fā)生堵紙,程序跳過在步驟S536的檢查。當(dāng)發(fā)生“過度運行錯誤”時,在發(fā)生了過度運行錯誤的帶位置之下處為空白部分的一個頁得到排放。
(第四實施例的獨特效果)
(1)在本實施例中,由于打印機驅(qū)動程序自動確定和選擇輸出模式,即第三實施例的“合成模式”與“簡化的同步模式”之一,用戶不需要進行和切換。
(2)由于效果(1),主要包括字符數(shù)據(jù)的文件頁數(shù)據(jù)能夠得到迅速的打印和排放,由于大部分字符數(shù)據(jù)能夠在“合成模式”下以編碼的形式得到輸出。
(3)由于效果(1),主要包括諸如照片的圖象的文件頁數(shù)據(jù),即使當(dāng)它超過了接收緩存器10的大小時,也能夠在“簡化的同步模式”下在極限容量之外得到打印和排放。
(第五實施例)作為第五實施例,以下將描述第一至第四實施例的方法與傳統(tǒng)的方法的一種結(jié)合,其中在這些實施例的方法中主機上的驅(qū)動程序把字符數(shù)據(jù)與其他圖象數(shù)據(jù)相分離,并把字符編碼形式的字符數(shù)據(jù)和位映象圖象數(shù)據(jù)形式的圖象數(shù)據(jù)發(fā)送到打印機,而在該傳統(tǒng)方法中所有的打印數(shù)據(jù)都以位映象圖象數(shù)據(jù)的形式被發(fā)送到打印機。
圖61、62A和62B是該實施例的打印機驅(qū)動程序的流程圖。注意第一實施例的打印機能夠由這種驅(qū)動程序來控制。
該打印機驅(qū)動程序,從由用戶使用的應(yīng)用軟件程序產(chǎn)生的文件數(shù)據(jù),產(chǎn)生借助圖20描述的字符和圖象打印機指令,并把它們發(fā)送到打印機2。當(dāng)用戶從應(yīng)用軟件程序命令文件打印時,打印機驅(qū)動程序在主機1中得到啟動。
在啟動時,驅(qū)動程序在主機1的存儲器上保證一頁的幀緩存器(未顯示),并同時清除該幀緩存器。在驅(qū)動程序的文件打印完成時,用作幀緩存器的存儲器區(qū)域得到釋放。
在實際的處理中,驅(qū)動程序在步驟S6101向打印機2發(fā)送一個任務(wù)啟動指令31,在步驟S6102把變量m設(shè)定為通過把所要打印的文件頁數(shù)加1而得到的值,并在步驟S6103把表示感興趣的頁碼的變量mp設(shè)定為1。驅(qū)動程序隨后在步驟S6104檢查變量mp是否小于變量m。如果步驟S6104為“否”,由于文件的所有頁的處理都已經(jīng)完成,驅(qū)動程序在步驟S6120發(fā)送一個任務(wù)結(jié)束指令,從而結(jié)束其處理。
另一方面,如果步驟S6104為“是”,驅(qū)動程序在步驟S6105把一個頁啟動指令32發(fā)送到打印機2,在步驟S6106保存來自應(yīng)用程序的第mp頁的字符打印命令,并在步驟S6107把保存的字符打印命令的數(shù)目與一個獨立定義的預(yù)定值p相比較。如果字符打印命令的數(shù)目大于預(yù)定值p,流程進行到步驟S6108以根據(jù)保存的字符打印命令借助字符寄存和字符編碼把出現(xiàn)在該頁中的字符以及作為位映象圖象數(shù)據(jù)的其他數(shù)據(jù)發(fā)送到打印機,如果字符打印命令的數(shù)目小于預(yù)定值p,流程進行到步驟S6121,且該頁的所有畫命令以及字符打印命令都被映象為位映象圖象數(shù)據(jù)。隨后流程進行到步驟S6122(將要在后面描述),以把映象的圖象發(fā)送到打印機,在步驟S6108,驅(qū)動程序把來自應(yīng)用程序的第mp頁的字符打印命令以外的畫命令映象到主機1上的幀緩存器上。字符打印命令以外的畫命令包括帶標(biāo)尺的行和畫圖命令、圖象粘貼命令等等。
驅(qū)動程序在步驟S6109把變量s設(shè)定為通過把保存的字符數(shù)目加1而獲得的值,并在步驟S6110把表示一個帶中感興趣的字符的位置的變量sp設(shè)定為1。
隨后,檢查在步驟S6111檢查變量sp是否小于變量s。如果步驟S6111為“否”,由于包括在第np個帶中的字符數(shù)據(jù)的發(fā)送處理已經(jīng)完成,驅(qū)動程序在步驟S6122和隨后的步驟開始第np個帶的圖象數(shù)據(jù)的發(fā)送處理。即,在步驟S6122,驅(qū)動程序檢查第np個帶是否是一個空白帶。如果步驟S6122為“是”,流程進行到步驟S6126而不進行任何處理。
如果步驟S6122為“否”,驅(qū)動程序在步驟S6123提取實際包括作為單個塊的一個圖象的一個矩形區(qū),在步驟S6124把表示該塊的粘貼位置的一個位置移動指令33發(fā)送到打印機2,并在步驟S6125把與類型5相應(yīng)的指令即圖象時鐘指令45、46、47和48發(fā)送到打印機2。當(dāng)然,圖象塊數(shù)據(jù)是在壓縮之后發(fā)送的驅(qū)動程序在步驟S6126把變量np的內(nèi)容加1,且流程返回到步驟S6104,以發(fā)送下一個頁的數(shù)據(jù)。
如果步驟S6111為“是”,驅(qū)動程序在步驟S6116檢查第sp個字符是否是該文件中所要打印的第一個字符。如果步驟S6116為“是”,驅(qū)動程序在步驟S6117把表示該字符的打印位置的一個位置移動指令33發(fā)送到打印機2,并在步驟S6114檢查在打印機2側(cè)寄存字符的數(shù)目是否已經(jīng)達到了一個極限,如果步驟S6114為“是”,驅(qū)動程序在步驟S6119把與類型3對應(yīng)的指令即只字符圖象打印43和44發(fā)送到打印機2,且隨后流程進行到步驟S6115。
然而,如果步驟S6117為“否”,驅(qū)動程序在步驟S6118把與類型2對應(yīng)的指令即字符寄存+打印指令41、42、43和44發(fā)送到打印機2,且流程進行到步驟S6114。當(dāng)然,要發(fā)送到打印機2的各個字符的點圖象得到了壓縮。
如果步驟S6112為“否”,由于它表示該打印命令是該字符的第二或隨后的打印命令,驅(qū)動程序在步驟S6113把表示該字符的打印位置的一個位置移動指令33發(fā)送到打印機2,并還在步驟S6114把類型4的一個類型指令34即字符編碼打印指令41和42發(fā)送到打印機2。
在步驟S6115,驅(qū)動程序把表示該字符的位置的變量sp的內(nèi)容加1,且流程隨后返回到步驟S6111,以執(zhí)行下一個字符數(shù)據(jù)至打印機2的發(fā)送處理。
借助上述步驟,當(dāng)包括在一頁中的字符數(shù)目等于或大于預(yù)定值時,檢查被從其他數(shù)據(jù)中分離出,借助字符寄存和字符編碼而被發(fā)送到打印機,并被映象到該打印機上。另一方面,當(dāng)包括在一頁中的字符的數(shù)目小于該預(yù)定值時,該頁的所有圖象數(shù)據(jù)以及字符數(shù)據(jù)都以位映象圖象的形式得到映象,且映象的圖象被發(fā)送到打印機。借助這種處理,當(dāng)頁數(shù)據(jù)包括少量的字符時,在驅(qū)動程序和打印機上的處理開銷,即字符提取、寄存、以及字符以外的數(shù)據(jù)在驅(qū)動程序上的映象,以及作為圖象的字符數(shù)據(jù)在打印機上的映象,得到了減小。
由于上述第一至第四實施例的打印機能夠適應(yīng)其中所有打印數(shù)據(jù)都從主計算機以圖象數(shù)據(jù)的形式進行接收的傳統(tǒng)方法,打印機側(cè)的處理步驟即使在兩種方法都采用時也不需要改變。
上述步驟是以頁為單位進行的。然而,如在第二實施例中那樣,當(dāng)打印數(shù)據(jù)從主計算機以帶為單位地被發(fā)送到打印機時,數(shù)據(jù)發(fā)送方法可以象在上述描述中那樣得到改變。
圖63顯示了根據(jù)這種方法的打印機驅(qū)動程序的控制步驟中的某些步驟。注意,第二實施例的打印機能夠適當(dāng)處理從這種打印機驅(qū)動程序發(fā)送來的數(shù)據(jù)。
由于在這種驅(qū)動程序的步驟中的多數(shù)步驟與第二實施例中的驅(qū)動程序的圖22至24中的流程圖中的步驟相同,與圖22至24中的步驟相同的步驟用相同的標(biāo)號表示,且省略對其的詳細(xì)描述。與第二實施例的不同在于在圖63中在步驟S146和步驟S147之間插入了步驟S6301和S6302。
在步驟S6301,驅(qū)動程序把保存的字符打印命令的數(shù)目與一個獨立定義的預(yù)定值p相比較。如果字符打印命令的數(shù)目大于預(yù)定值p,流程進行到步驟S147,以根據(jù)保存的字符打印命令并借助字符寄存和字符編碼發(fā)送出現(xiàn)在該頁上的字符。如果字符打印命令的數(shù)目小于預(yù)定值p,流程進行到步驟S6302,且該頁的所有畫命令和字符打印命令被映象成位映象圖象數(shù)據(jù)。最后流程進行到步驟S158,以把映象的圖象發(fā)送到打印機。
借助打印機驅(qū)動程序的上述處理,當(dāng)包括在一頁中的字符的數(shù)目等于或大于該預(yù)定值時,字符被與其他的數(shù)據(jù)相分離,借助字符寄存和字符編碼而被發(fā)送到打印機,并被映象到打印機上。另一方面,當(dāng)包括在一頁中的字符的數(shù)目小于預(yù)定值時,該頁的所有圖象數(shù)據(jù)以及字符數(shù)據(jù)被映象成位映象圖象,且映象的圖象被送到打印機。借助這種處理,當(dāng)頁數(shù)據(jù)包括少量的字符時,在驅(qū)動程序和打印機上的處理開銷,即字符提取、寄存、以及字符以外的數(shù)據(jù)在驅(qū)動程序上的映象、以及字符數(shù)據(jù)以圖象形式在打印機上的映象,能夠得到減小。
在圖63所示的步驟中,包括在一頁中的字符的數(shù)目被與該預(yù)定值相比較?;蛘?,包括在各個帶中的字符數(shù)目被與該預(yù)定值相比較。在此情況下,如果包括在各帶中的字符數(shù)目等于或大于該預(yù)定值,該帶的字符數(shù)據(jù)以字符編碼的形式得到發(fā)送,且其他數(shù)據(jù)以圖象數(shù)據(jù)的形式被發(fā)送到打印機。否則,該帶中的所有打印數(shù)據(jù)都以圖象數(shù)據(jù)的形式被發(fā)送到打印機。
因此,如圖64所示,在第二實施例的圖23中的步驟S154和步驟S155之間插入了步驟S6401和步驟S6402。在步驟S6401,把第np個帶的字符打印命令的數(shù)目與預(yù)定值p’相比較,且如果字符數(shù)目的數(shù)目大于預(yù)定值,流程進行到步驟S155;否則,該帶的所有打印數(shù)據(jù)都以圖象的形式得到映象,且映象的圖象與在步驟S148映象到幀緩存器上的一個圖象相合成。在此之后,流程進行到步驟S158,借助這種處理,根據(jù)本發(fā)明的打印控制方法和傳統(tǒng)的打印控制方法能夠以帶為單位地、有選擇地得到采用。
(其他實施例)注意,本發(fā)明可被應(yīng)用到由多種設(shè)備(例如主計算機、接口裝置、讀取器、打印機等)組成的系統(tǒng)或由單個設(shè)備(例如復(fù)印機、傳真機等)組成的設(shè)備上。
本發(fā)明的目的,也是通過向系統(tǒng)或設(shè)備提供一種存儲介質(zhì)—該介質(zhì)記錄了能夠?qū)崿F(xiàn)上述實施例的功能形成軟件程序的程序編碼,并借助系統(tǒng)或設(shè)備的計算機(或CPU或MPU)讀出和執(zhí)行存儲在該存儲介質(zhì)中的程序編碼,而得到實現(xiàn)的。
在此情況下,從存儲介質(zhì)讀出的程序編碼本身實現(xiàn)了上述實施例的功能,且存儲程序編碼的存儲介質(zhì)構(gòu)成了本發(fā)明。
作為提供程序編碼的存儲介質(zhì),可采用例如軟盤、硬盤、光盤、磁-光盤、CD-ROM、CD-R、磁帶、非易失存儲器卡、ROM等。
上述實施例的功能不僅能夠通過由計算機執(zhí)行讀出的程序編碼而實現(xiàn),而且可借助由根據(jù)該程序編碼的命令而在計算機上運行的操作系統(tǒng)執(zhí)行的某些或所有實際處理操作所有實現(xiàn)。
另外,上述實施例的功能,可在從存儲介質(zhì)讀出的程序編碼被設(shè)置在功能擴展板或功能擴展單元的存儲器之后,由該板或單元上的CPU等執(zhí)行的某些或所有實際處理操作來實現(xiàn),該功能擴展板或單元被插入或連接到計算機。
(本發(fā)明的效果)如上所述,根據(jù)本發(fā)明,由于多數(shù)字符部分是利用字符編碼處理的,在主機的字符映象時間能夠得到縮短,另外,由于數(shù)據(jù)量小,文件數(shù)據(jù)能夠得到高速輸出。
當(dāng)設(shè)置了帶存儲器來代替幀存儲器時,所需的存儲器容量能夠得到減小。
由于只有實際包括在帶中的一個圖象中的一個矩形部分被作為圖象數(shù)據(jù)處理,且不包括圖象的帶沒有圖象數(shù)據(jù)被送到打印機,所要發(fā)送的圖象數(shù)據(jù)量能夠得到減小。
在輸出不包括字符而只包括圖象的帶時,硬件電路展開壓縮圖象數(shù)據(jù),并把展開的數(shù)據(jù)視頻傳送到引擎單元,從而不用把數(shù)據(jù)映象到帶存儲器上。以此方式,打印機的打印機的負(fù)荷能夠得到減小,且諸如“過度運行”等的錯誤很少發(fā)生。
當(dāng)作為主機上的圖案分析的結(jié)果而判定帶包括相同的圖案時,表示帶的該圖象數(shù)據(jù)與已經(jīng)發(fā)送的帶的圖象數(shù)據(jù)相同的一個指令被發(fā)送到打印機,從而減小所要發(fā)送的圖象數(shù)據(jù)量。
當(dāng)數(shù)據(jù)能夠被存儲在接收緩存器中時,通過把它們映象成打印機中的字符編碼,而打印出字符。然而,當(dāng)頁數(shù)據(jù)包括大的圖象且不能被存儲在接收緩存器中時,圖象數(shù)據(jù)被分成給定的塊,并以帶為單位而得到發(fā)送。在此情況下,打印機在每次接收到數(shù)據(jù)時自動選擇打印數(shù)據(jù)的模式。以此方式,包括巨大的圖象數(shù)據(jù)的頁數(shù)據(jù)也能夠得到輸出。
由于在不脫離本發(fā)明的精神和范圍的前提下可以實現(xiàn)本發(fā)明的很多看上去非常不同的實施例,因而應(yīng)該理解的是本發(fā)明不僅限于其具體實施例,且只由所附的權(quán)利要求書限定。
權(quán)利要求
1.一種打印系統(tǒng),用于利用一種打印設(shè)備打印出由主機設(shè)備產(chǎn)生的文件數(shù)據(jù),所述主機設(shè)備包括第一發(fā)送裝置,用于以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位向所述打印設(shè)備發(fā)送編碼和字符圖象;以及第二發(fā)送裝置,用于把以字符編碼形式出現(xiàn)在文件數(shù)據(jù)中的字符以及以圖象數(shù)據(jù)形式出現(xiàn)的字符以外的部分發(fā)送到所述打印設(shè)備,且所述打印設(shè)備包括寄存裝置,用于寄存從所述第一發(fā)送裝置發(fā)送來的字符編碼和字符圖象;圖象重新構(gòu)成裝置,用于根據(jù)由所述寄存裝置寄存的編碼和字符圖象把從所述第二發(fā)送裝置發(fā)送來的字符編碼映象成圖象數(shù)據(jù),并把映象的圖象數(shù)據(jù)與從所述第二發(fā)送裝置發(fā)送來的圖象相合成;以及用于打印出由所述圖象重新構(gòu)成裝置獲得的圖象數(shù)據(jù)的裝置。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中所述主機設(shè)備進一步包括壓縮裝置,并把字符圖象和其他圖象壓縮并發(fā)送到所述打印設(shè)備,且所述打印設(shè)備進一步包括展開裝置,并展開所述寄存裝置寄存的字符圖象和從所述第二發(fā)送裝置發(fā)送來的圖象。
3.根據(jù)權(quán)利要求1的系統(tǒng),其中所述圖象重新構(gòu)成裝置以按照打印順序分割的帶為單位重新構(gòu)成所要合成的圖象,并以重新構(gòu)成的帶為單位打印圖象。
4.根據(jù)權(quán)利要求3的系統(tǒng),其中所述第二發(fā)送裝置以帶為單位分割發(fā)送圖象。
5.根據(jù)權(quán)利要求4的系統(tǒng),其中所述第二發(fā)送裝置以帶為單位分割圖象,并與一個空白帶相應(yīng)地發(fā)送表示該空白帶的編碼。
6.根據(jù)權(quán)利要求4的系統(tǒng),其中所述第二發(fā)送裝置以帶為單位地分割發(fā)送圖象,并發(fā)送表示與已經(jīng)發(fā)送的帶相同的數(shù)據(jù)的帶相對應(yīng)的重復(fù)的編碼。
7.根據(jù)權(quán)利要求1的系統(tǒng),其中所述主機設(shè)備進一步包括用于確定包括在文件數(shù)據(jù)中的圖象數(shù)據(jù)的大小的判定裝置,以及第三發(fā)送裝置—該裝置用于當(dāng)所述判定裝置判定該圖象數(shù)據(jù)不能被存儲在所述打印設(shè)備中時把圖象數(shù)據(jù)分割多個部分并把分割的部分發(fā)送到所述打印設(shè)備,且所述圖象重新構(gòu)成裝置在接收到來自所述第三發(fā)送裝置的數(shù)據(jù)時以分割部分為單位重新構(gòu)成圖象,并在每次打印重新構(gòu)成的圖象時擦除重新構(gòu)成的圖象。
8.一種打印設(shè)備,用于接收以打印數(shù)據(jù)的形式并以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位的編碼和字符圖象、出現(xiàn)在該文件數(shù)據(jù)中的字符的字符編碼、以及字符以外的圖象數(shù)據(jù)—這些圖象、編碼和數(shù)據(jù)是從一個主機設(shè)備發(fā)送來的,并打印一個圖象,包括寄存裝置,用于寄存從所述主機設(shè)備接收的字符編碼和字符圖象;圖象重新構(gòu)成裝置,用于根據(jù)所述寄存裝置寄存的編碼和字符圖象把從所述主機設(shè)備接收到的字符編碼映象成圖象數(shù)據(jù),并把映象的圖象數(shù)據(jù)與從所述主機設(shè)備接收的一個圖象相合成;以及用于打印由所述圖象重新構(gòu)成裝置獲得的圖象數(shù)據(jù)的裝置。
9.根據(jù)權(quán)利要求8的設(shè)備,進一步包括展開裝置, 其中所述設(shè)備展開由所述寄存裝置寄存的字符圖象以及從所述主機設(shè)備接收的圖象。
10.根據(jù)權(quán)利要求8的設(shè)備,其中所述圖象重新構(gòu)成裝置以按照打印順序分割的帶為單位重新構(gòu)成所要合成的圖象,并以重新構(gòu)成的帶為單位打印這些圖象。
11.一種打印控制設(shè)備,用于使一種打印設(shè)備打印所產(chǎn)生的文件數(shù)據(jù),包括第一發(fā)送裝置,用于以出現(xiàn)在該文件數(shù)據(jù)中的字符類型為單位把編碼和字符圖象發(fā)送到所述打印設(shè)備;以及第二發(fā)送裝置,用于把以字符編碼的形式出現(xiàn)在該文件數(shù)據(jù)中的字符發(fā)送至所述打印設(shè)備,并把字符以外的一個部分以圖象數(shù)據(jù)的形式發(fā)送到所述打印設(shè)備。
12.根據(jù)權(quán)利要求11的設(shè)備,進一步包括壓縮裝置,且其中所述設(shè)備壓縮字符圖象和其他圖象并把這些圖象發(fā)送到所述打印設(shè)備。
13.根據(jù)權(quán)利要求11的設(shè)備,其中所述第二發(fā)送裝置以帶為單位地分割發(fā)送圖象。
14.根據(jù)權(quán)利要求13的設(shè)備,其中所述第二發(fā)送裝置以帶為單位地分割圖象,并與一種空白帶相應(yīng)地發(fā)送表示該空白帶的編碼。
15.根據(jù)權(quán)利要求13的設(shè)備,其中所述第二發(fā)送裝置以帶為單位地分割發(fā)送圖象,并發(fā)送表示與已經(jīng)發(fā)送的帶相同的數(shù)據(jù)的帶相對應(yīng)的重復(fù)的編碼。
16.根據(jù)權(quán)利要求11的系統(tǒng),進一步包括用于確定包括在文件數(shù)據(jù)中的圖象數(shù)據(jù)的大小的判定裝置,以及第三發(fā)送裝置—該裝置用于當(dāng)所述判定裝置判定該圖象數(shù)據(jù)不能被存儲在所述打印設(shè)備中時把圖象數(shù)據(jù)分割多個部分并把分割的部分發(fā)送到所述打印設(shè)備。
17.一種打印控制方法,用于打印從主機設(shè)備接收的打印數(shù)據(jù),該主機設(shè)備以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位發(fā)送編碼和字符圖象,且該主機設(shè)備依次以字符編碼的形式發(fā)送出現(xiàn)在文件數(shù)據(jù)中的字符并以圖象數(shù)據(jù)的形式發(fā)送字符以外的部分,包括寄存步驟,用于寄存從所述主機設(shè)備接收到的字符編碼和字符圖象;圖象重新構(gòu)成步驟,用于根據(jù)寄存步驟中寄存的編碼和字符圖象把從所述主機設(shè)備接收的字符編碼映象成圖象數(shù)據(jù),并把映象的圖象數(shù)據(jù)與從所述主機設(shè)備接收的圖象相合成;以及打印在圖象重新構(gòu)成步驟獲得的圖象數(shù)據(jù)的步驟。
18.根據(jù)權(quán)利要求17的方法,進一步包括展開步驟,且其中所述方法展開在寄存步驟中寄存的壓縮的字符圖象和從所述主機設(shè)備接收的圖象。
19.根據(jù)權(quán)利要求17的方法,其中圖象重新構(gòu)成步驟包括以按照打印順序分割的帶為單位重新構(gòu)成所要合成的圖象并以重新構(gòu)成的帶為單位打印該圖象的步驟。
20.用于打印所產(chǎn)生的文件數(shù)據(jù)的打印設(shè)備的控制方法,包括第一發(fā)送步驟,用于以出現(xiàn)在文件數(shù)據(jù)中的字符類型為單位把編碼和字符圖象發(fā)送到所述打印設(shè)備;第二發(fā)送步驟,用于以字符編碼的形式把出現(xiàn)在文件數(shù)據(jù)中的字符發(fā)送到所述打印設(shè)備,并以圖象數(shù)據(jù)的形式把字符以外的部分發(fā)送到所述打印設(shè)備。
21.根據(jù)權(quán)利要求20的方法,進一步包括壓縮步驟,且其中所述方法壓縮字符圖象和其他圖象并把這些圖象發(fā)送到所述打印設(shè)備。
22.根據(jù)權(quán)利要求20的方法,其中第二發(fā)送步驟包括以帶為單位分割發(fā)送圖象的步驟。
23.根據(jù)權(quán)利要求22的方法,其中第二發(fā)送步驟包括以帶為單位分割圖象并與一個空白帶相應(yīng)地發(fā)送表示該空白帶的編碼的步驟。
24.根據(jù)權(quán)利要求22的方法,其中第二發(fā)送步驟包括這樣的步驟—即該步驟以帶為單位地分割發(fā)送圖象,并發(fā)送表示與已經(jīng)發(fā)送的帶相同的數(shù)據(jù)的帶相對應(yīng)的重復(fù)的編碼。
25.根據(jù)權(quán)利要求20的方法,進一步包括用于確定包括在文件數(shù)據(jù)中的圖象數(shù)據(jù)的大小的步驟,以及第三發(fā)送步驟—該步驟用于當(dāng)在所述判定步驟判定該圖象數(shù)據(jù)不能被存儲在所述打印設(shè)備中時把圖象數(shù)據(jù)分割多個部分并把分割的部分發(fā)送到所述打印設(shè)備。
26.根據(jù)權(quán)利要求11的設(shè)備,進一步包括判定裝置,用于判定出現(xiàn)在具有預(yù)定大小的文件數(shù)據(jù)中的字符數(shù)目是否大于一個預(yù)定值;以及,第三發(fā)送裝置,用于把預(yù)定大小的所有文件數(shù)據(jù)以圖象數(shù)據(jù)的形式發(fā)送到所述打印設(shè)備,且其中當(dāng)所述判定裝置判定字符數(shù)目大于該預(yù)定值時,所述第一和第二發(fā)送裝置把文件數(shù)據(jù)發(fā)送到所述打印設(shè)備;否則,所述第三發(fā)送裝置把文件數(shù)據(jù)發(fā)送到所述打印設(shè)備。
27.根據(jù)權(quán)利要求20的方法,進一步包括在第一發(fā)送步驟之前的判定步驟,用于判定出現(xiàn)在具有預(yù)定大小的文件數(shù)據(jù)中的字符數(shù)目是否大于一個預(yù)定值;以及,第三發(fā)送步驟,用于把預(yù)定大小的所有文件數(shù)據(jù)以圖象數(shù)據(jù)的形式發(fā)送到所述打印設(shè)備,且其中當(dāng)在判定步驟判定字符數(shù)目大于該預(yù)定值時,文件數(shù)據(jù)在第一和第二發(fā)送步驟被發(fā)送到所述打印設(shè)備;否則,該文件數(shù)據(jù)在第三發(fā)送步驟被發(fā)送到所述打印設(shè)備。
全文摘要
當(dāng)一個主計算機進行文件打印時,主計算機上的驅(qū)動程序預(yù)先把在該文件中第一次出現(xiàn)的字符的字符編碼和相應(yīng)的字符圖象發(fā)送到打印機,并寄存它們。在此處理之后,驅(qū)動程序向打印機發(fā)送字符編碼形式的所要打印的字符,以及字符以外的映象圖象形式的數(shù)據(jù)。打印機把一個圖象映象到一個打印存儲器上,參照寄存的字符編碼和字符圖象把字符映象成圖象,并把映象的字符圖象重疊到映象在頁緩存器上的圖象上。打印機把該圖象打印到紙上。
文檔編號G06K15/02GK1186273SQ97125690
公開日1998年7月1日 申請日期1997年12月26日 優(yōu)先權(quán)日1996年12月27日
發(fā)明者古谷陽二, 鈴木政義, 岡本義文, 土肥純, 池野俊彥 申請人:佳能株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蓬安县| 韶山市| 金川县| 开鲁县| 许昌县| 天津市| 视频| 定安县| 嘉黎县| 临沂市| 东源县| 渝北区| 盐边县| 从江县| 广西| 义乌市| 高雄市| 望奎县| 宣化县| 宁海县| 姜堰市| 灵宝市| 苏州市| 静海县| 乌拉特前旗| 北碚区| 建湖县| 眉山市| 汪清县| 新乐市| 和政县| 繁峙县| 夏河县| 化德县| 永州市| 南华县| 易门县| 洪江市| 西贡区| 陆丰市| 新昌县|