專利名稱:通信控制方法和裝置及通信系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于連接裝置(如主機和打印機)的通信控制方法和裝置。
近年來,IEEE1394接口被用于連接計算機和外圍裝置或者外圍裝置間連接。與握手方案(hand-shake scheme)如集中(Centronics)接口相比,IEEE1394接口允許高速雙向的通信。同樣,IEEE1394接口是一種存儲總線模式接口(memory bus model interface),并且通過IEEE1394接口連接的設(shè)備能夠從被連接設(shè)備的指定地址處讀入數(shù)據(jù)而且能夠在指定地址處寫數(shù)據(jù)。
IEEE1394定義了在許多應(yīng)用中采用的物理和鏈路層的協(xié)議,但是沒有定義設(shè)備部件中的詳細協(xié)議。為此,采用IEEE1394作為物理和鏈路層的傳輸層協(xié)議如SBP(串行總線協(xié)議)-2已經(jīng)提交建議。傳輸層為應(yīng)用提供了數(shù)據(jù)傳輸功能,并且使用此傳輸層的應(yīng)用能夠彼此交換數(shù)據(jù)。
協(xié)議SBP-2利用IEEE1394的存儲總線模式特征,并且使用此協(xié)議,當(dāng)其資源可以使用時,數(shù)據(jù)接收方能夠接收數(shù)據(jù)。
在SBP-2中,當(dāng)數(shù)據(jù)需要傳輸時,傳輸方執(zhí)行稱為注冊的操作,以便與通信方(communication partner)建立一通道。在此情況下,注冊方被稱為始發(fā)者(initiator),并且通信方被稱為目標(biāo)。數(shù)據(jù)傳輸以這樣的方式進行目標(biāo)根據(jù)來自始發(fā)者的指令,讀入/寫入數(shù)據(jù)從/到始發(fā)者中。在此方案中,始發(fā)者在注冊之后產(chǎn)生一ORB(操作請求塊),該ORB包括被傳輸數(shù)據(jù)的存儲地址、大小等等;并且通知該ORB的地址給目標(biāo)。目標(biāo)以寫入ORB中的地址和大小為基礎(chǔ)從始發(fā)者中讀出數(shù)據(jù)并且處理讀出的數(shù)據(jù),或者當(dāng)其資源可以使用時,寫入數(shù)據(jù)。在此處理之后,目標(biāo)產(chǎn)生一狀態(tài)塊將處理狀態(tài)通知給始發(fā)者。
當(dāng)采用基于IEEE1394構(gòu)造的SBP-2進行通信時,特別是當(dāng)SBP-2被應(yīng)用于從作為始發(fā)者的數(shù)據(jù)源如主機等中傳輸數(shù)據(jù)到作為目標(biāo)的外圍裝置如打印機裝置時,引起如下兩個問題(1)由于全雙工通信使得過程復(fù)雜在SBP-2中,數(shù)據(jù)傳輸主要由始發(fā)者管理,并且目標(biāo)不能異步地傳輸數(shù)據(jù)到始發(fā)者。在SBP-2中,當(dāng)目標(biāo)要傳輸數(shù)據(jù)到始發(fā)者時,其發(fā)送一使用自發(fā)狀態(tài)的數(shù)據(jù)讀請求到始發(fā)者。始發(fā)者產(chǎn)生一ORB以響應(yīng)該請求,并且將產(chǎn)生的ORB增加到未處理的ORB(包括從始發(fā)者到目標(biāo)的數(shù)據(jù)傳輸請求等)列表的末尾。從最早的一個開始依次處理這些ORB。為此,僅當(dāng)始發(fā)者方的ORB處理已經(jīng)進行并且始發(fā)者處理為響應(yīng)來自目標(biāo)的數(shù)據(jù)讀請求而產(chǎn)生的ORB時,目標(biāo)才能夠傳輸數(shù)據(jù)到始發(fā)者。也就是,從目標(biāo)到始發(fā)者的數(shù)據(jù)傳輸?shù)臅r間并不是從目標(biāo)到始發(fā)者的讀請求發(fā)布的時間,而是比此時間延遲了處理未處理ORB所需的時間。結(jié)果,不能實現(xiàn)雙向的異步數(shù)據(jù)傳輸。當(dāng)從目標(biāo)傳輸?shù)绞及l(fā)者的數(shù)據(jù)被異步地產(chǎn)生時,例如,當(dāng)目標(biāo)為打印機并且該打印機中出現(xiàn)一個錯誤時,要立即傳輸?shù)绞及l(fā)者的數(shù)據(jù)不能被實時傳輸。
為此,為了實時地傳輸打印機異步產(chǎn)生的數(shù)據(jù)到主機,打印機必須象始發(fā)者那樣執(zhí)行一個注冊過程,并且必須將主機作為目標(biāo)進行數(shù)據(jù)傳輸。
在此方式中,當(dāng)主機和打印機彼此相互注冊,并且兩者互為始發(fā)者和目標(biāo)時,它們兩者必須均象始發(fā)者和目標(biāo)那樣進行處理。打印機也必須執(zhí)行一次注冊。
處理圖象的外圍裝置如打印機為進行圖象處理需消耗龐大的存儲容量和處理器資源。為此,通過簡化裝置布局以便減小成本,同時盡可能地減小圖象處理之外所使用的資源以便獲得較快的處理速度。然而,如上所述,當(dāng)打印機必須運行許多處理時,使得許多資源被消耗,從而干擾了成本的降低和有效的處理。
另一方面,在主機和打印機之間流動的數(shù)據(jù)象打印數(shù)據(jù)和其處理狀態(tài)那樣彼此相關(guān)。如果通過獨立的注冊處理以兩種方式設(shè)置通道,那么其數(shù)據(jù)和響應(yīng)必須彼此相關(guān),因此必須增加一新的處理協(xié)議。
在此方式中,在主機和打印機之間的通信中直接應(yīng)用IEEE1394和SBP-2是不合適的,并且難于在各自裝置中降低所需的資源以及改善效率。
(2)不能實現(xiàn)多通道最近,結(jié)合了不同功能的多功能機器被廣泛地用作外圍裝置。例如,允許主機將其作為掃描儀、打印機和傳真機使用的數(shù)字多功能機器已經(jīng)為人所知。當(dāng)使用這樣的裝置時,如果通過功能部件中的多個獨立通道進行通信的話,那么多種功能能夠同時使用。
然而,由于SBP-2不提供多通道,所以難于同時使用這樣的部件功能。
SBP-2之外的一些協(xié)議能夠異步傳輸產(chǎn)生的數(shù)據(jù)并且能夠?qū)崿F(xiàn)多通道。然而,這樣的協(xié)議不能夠利用IEEE1394的特征如存儲總線模式。也就是,當(dāng)這樣的協(xié)議應(yīng)用于主機和打印機之間的通信時,打印機不能最方便地執(zhí)行數(shù)據(jù)傳輸,并且主機必須在監(jiān)視打印機狀態(tài)的同時進行數(shù)據(jù)傳輸。
本發(fā)明是在參考上述的現(xiàn)有技術(shù)下作出的,其目的在于提供通信控制方法和裝置--使得能夠通過單個注冊過程進行全雙工通信(異步雙向通信),并且能夠有效地利用數(shù)據(jù)交換所需的資源如處理器、存儲空間等等,以及使用該方法的打印機裝置。
本發(fā)明的另一目的在于提供通信控制方法和裝置--使得一旦其資源可以使用時就允許目標(biāo)讀出始發(fā)者準(zhǔn)備的數(shù)據(jù),并且能夠防止始發(fā)者被目標(biāo)隨意的數(shù)據(jù)傳輸所占據(jù),以及使用該方法的打印機裝置。
本發(fā)明的再一目的在于提供能夠?qū)崿F(xiàn)多通道的通信控制方法和裝置,以及使用該方法的打印機。
為了達到上述目的,本發(fā)明包括如下的布局。
也就是,基于從目標(biāo)中訪問始發(fā)者的存儲區(qū)域,提供了交換數(shù)據(jù)的通信控制方法,其中始發(fā)者將對應(yīng)于存儲區(qū)域的讀寫訪問的命令傳輸?shù)侥繕?biāo),使得不超出目標(biāo)所能保留的讀寫命令數(shù),并且目標(biāo)在不同的隊列中保留接收到的讀寫命令并且單獨處理保留的命令。
基于從目標(biāo)中訪問始發(fā)者的存儲區(qū)域,也提供了交換數(shù)據(jù)的通信控制方法,其中目標(biāo)檢查被傳輸?shù)臄?shù)據(jù)大小是否超出了預(yù)定大小,當(dāng)傳輸?shù)臄?shù)據(jù)大小超出了預(yù)定大小時,請求始發(fā)者在存儲區(qū)域中發(fā)布一寫命令,以及當(dāng)傳輸?shù)臄?shù)據(jù)大小沒有超出預(yù)定大小時,發(fā)送數(shù)據(jù)到始發(fā)者,并且基于從目標(biāo)處接收的寫命令發(fā)布請求,始發(fā)者發(fā)布一寫命令。
基于從目標(biāo)中訪問始發(fā)者的存儲區(qū)域,也提供了用于數(shù)據(jù)交換的通信系統(tǒng),其中始發(fā)者將對應(yīng)于存儲區(qū)域的讀寫訪問的命令傳輸?shù)侥繕?biāo),使得不超出目標(biāo)所能保留的讀寫命令數(shù),并且目標(biāo)在不同的隊列中保留接收到的讀寫命令并且單獨處理保留的命令。
基于從目標(biāo)中訪問始發(fā)者的存儲區(qū)域,也提供了用于交換數(shù)據(jù)的通信系統(tǒng),其中目標(biāo)檢查被傳輸?shù)臄?shù)據(jù)大小是否超出了預(yù)定大小,當(dāng)傳輸?shù)臄?shù)據(jù)大小超出了預(yù)定大小時,請求始發(fā)者在存儲區(qū)域中發(fā)布一寫命令,以及當(dāng)傳輸?shù)臄?shù)據(jù)大小沒有超出預(yù)定大小時,發(fā)送數(shù)據(jù)到始發(fā)者,并且基于從目標(biāo)處接收的寫命令發(fā)布請求,始發(fā)者發(fā)布一寫命令。
基于從通過通信連接的目標(biāo)中訪問存儲器中的存儲區(qū)域,也提供了與目標(biāo)交換數(shù)據(jù)的通信控制方法,其包括接收來自目標(biāo)的自發(fā)請求和在隊列中將請求排隊的排隊步驟;以及產(chǎn)生和傳輸讀寫命令到存儲區(qū)域的命令產(chǎn)生步驟,以響應(yīng)來自應(yīng)用或目標(biāo)的請求,使得不超出目標(biāo)所能保留的讀寫命令數(shù)。
基于訪問通過通信連接的始發(fā)者的存儲區(qū)域,也提供了與始發(fā)者交換數(shù)據(jù)的通信控制方法,其包括將從始發(fā)者處接收的讀命令在一具有預(yù)定大小的隊列中排隊的排隊步驟;從隊列中獲得和執(zhí)行一讀命令的排隊執(zhí)行步驟;在接收之后立即執(zhí)行從始發(fā)者處接收的寫命令的立即執(zhí)行步驟;并且發(fā)布數(shù)據(jù)傳輸請求給始發(fā)者的傳輸請求步驟。
通過存儲區(qū)域也提供了用于與目標(biāo)交換數(shù)據(jù)的通信控制裝置,其包括用于與目標(biāo)通信的裝置;包括存儲區(qū)域的存儲器;用于將來自目標(biāo)的自發(fā)請求進行排隊的隊列管理裝置;用于產(chǎn)生和傳輸對應(yīng)于存儲區(qū)域的讀寫命令的命令產(chǎn)生裝置,以響應(yīng)來自應(yīng)用或目標(biāo)的請求,使得不超出目標(biāo)所能保留的讀寫命令數(shù)。
通過訪問始發(fā)者的存儲區(qū)域,也提供了用于與始發(fā)者交換數(shù)據(jù)的通信控制裝置,其包括用于與始發(fā)者通信的裝置;保留從始發(fā)者處接收到的讀命令并且具有預(yù)定大小的隊列;用于從隊列中獲得和執(zhí)行讀命令的排隊執(zhí)行裝置;用于在接收之后立即執(zhí)行從始發(fā)者處接收的寫命令的立即執(zhí)行裝置;以及發(fā)布數(shù)據(jù)傳輸請求給始發(fā)者的傳輸請求裝置。
從通過通信連接的目標(biāo)中訪問存儲區(qū)域,也提供了一計算機可讀存儲介質(zhì),該介質(zhì)存儲用于交換數(shù)據(jù)的通信控制程序,該程序包括
用于將來自目標(biāo)的自發(fā)請求進行排隊的隊列管理方法;用于產(chǎn)生和傳輸對應(yīng)于存儲區(qū)域的讀寫命令的命令產(chǎn)生方法,以響應(yīng)來自應(yīng)用或目標(biāo)的請求,使得不超出目標(biāo)所能保留的讀寫命令數(shù)。
訪問通過通信連接的始發(fā)者的存儲區(qū)域,也提供了一計算機可讀存儲介質(zhì),該介質(zhì)存儲用于交換數(shù)據(jù)的通信控制程序,該程序包括用于將從始發(fā)者處接收的讀命令排隊到具有預(yù)定容量的隊列中的隊列管理方法;用于從隊列中獲得和執(zhí)行一讀命令的排隊執(zhí)行裝置;用于在接收之后立即執(zhí)行從始發(fā)者處接收的寫命令的立即執(zhí)行方法;以及發(fā)布數(shù)據(jù)傳輸請求給始發(fā)者的傳輸請求方法。
也提供了使用通信控制方法的打印系統(tǒng),該方法中始發(fā)者將對應(yīng)于讀寫訪問存儲區(qū)域的命令傳輸?shù)侥繕?biāo),使得不超出目標(biāo)所能保留的讀寫命令數(shù),并且目標(biāo)將接收到的讀寫命令保留在不同的隊列中并單獨處理保留的命令。其中作為始發(fā)者的主機裝置被連接到作為目標(biāo)的打印機裝置,打印機裝置從主機裝置處接收打印數(shù)據(jù)并且將接收到的打印數(shù)據(jù)打印出來,同時主機裝置接收打印機裝置的狀態(tài)信息。
在通信控制方法中,也提供了用于將打印數(shù)據(jù)傳輸?shù)侥繕?biāo)和從目標(biāo)處接收狀態(tài)信息的打印控制裝置。該控制方法包括從目標(biāo)處接收自發(fā)請求和將請求在隊列中進行排隊的排隊步驟和命令產(chǎn)生步驟-產(chǎn)生和傳輸讀寫命令到存儲區(qū)域,以響應(yīng)來自應(yīng)用或目標(biāo)的請求使得不超出目標(biāo)所能保留的讀寫命令數(shù)。
通過通信控制方法,也提供了用于從始發(fā)者處接收打印數(shù)據(jù)和將狀態(tài)信息傳輸?shù)绞及l(fā)者的打印裝置。該控制方法包括將始發(fā)者處接收到的讀命令在具有預(yù)定大小的隊列中進行排隊的排隊步驟和從隊列中獲得和執(zhí)行一讀命令的排隊執(zhí)行步驟,和在接收之后立即執(zhí)行從始發(fā)者處接收到的寫命令的立即執(zhí)行步驟以及發(fā)布數(shù)據(jù)傳輸請求給始發(fā)者的傳輸請求步驟。
在下面的描述和其相應(yīng)的附圖中,本發(fā)明的其它特征和優(yōu)點是很顯然的。附圖中相同的參考文字在整個附圖中指定了同樣的或相似的部分。
構(gòu)成說明書一部分的相應(yīng)
了本發(fā)明的實施方式,并與描述一起用于解釋本發(fā)明的原理圖1是目標(biāo)(打印機)的框圖;圖2是始發(fā)者(主機)的框圖;圖3A和3B顯示了ORB的一般格式;圖4顯示了隊列深度命令ORB的格式;圖5顯示了數(shù)據(jù)發(fā)送命令ORB的格式;圖6顯示了請求讀命令ORB的格式;圖7顯示了直接狀態(tài)響應(yīng)命令ORB的格式;圖8A和8B顯示了獲取設(shè)備資源E命令ORB的格式;圖9顯示了數(shù)據(jù)資源釋放命令ORB的格式;圖10顯示了基本設(shè)備狀態(tài)命令ORB的格式;圖11A和11B顯示了狀態(tài)塊的一般格式;圖12顯示了隊列深度狀態(tài)塊的格式;圖13顯示了數(shù)據(jù)發(fā)送狀態(tài)塊的格式;圖14的流程圖顯示了始發(fā)者為響應(yīng)產(chǎn)生的數(shù)據(jù)傳輸請求而執(zhí)行的處理過程;圖15的流程圖顯示了基于在門鈴寄存器中的寫入,目標(biāo)的獲取代理執(zhí)行的處理過程;圖16的流程圖顯示了基于從獲取代理處接收的ORB消息,執(zhí)行代理所執(zhí)行的處理過程;圖17的流程圖顯示了為響應(yīng)產(chǎn)生的數(shù)據(jù)傳輸請求目標(biāo)所執(zhí)行的處理過程;
圖18的流程圖顯示了基于在狀態(tài)寄存器中的寫入,始發(fā)者所執(zhí)行的處理過程;圖19顯示了從始發(fā)者(主機)到目標(biāo)(打印機)的數(shù)據(jù)傳輸序列;圖20顯示了使用讀請求狀態(tài)從目標(biāo)到始發(fā)者的數(shù)據(jù)傳輸序列;圖21顯示了使用直接狀態(tài)從目標(biāo)到始發(fā)者的數(shù)據(jù)傳輸序列;圖22是提供多通道的目標(biāo)的框圖;圖23是提多通道的始發(fā)者的框圖;圖24顯示了多通道數(shù)據(jù)發(fā)送命令ORB的格式;圖25顯示了多通道請求讀命令ORB的格式;圖26顯示了多通道直接狀態(tài)響應(yīng)命令ORB的格式;圖27A和27B顯示了多通道獲取設(shè)備資源E命令ORB的格式;圖28顯示了多通道釋放設(shè)備資源命令ORB的格式;圖29顯示了多通道放棄設(shè)備資源應(yīng)答命令ORB的格式;圖30顯示了多通道基本設(shè)備狀態(tài)命令ORB的格式;圖31A和31B顯示了打開通道請求響應(yīng)的格式;圖32A和32B顯示了關(guān)閉通道請求響應(yīng)的格式;圖33A到33C顯示了多通道狀態(tài)塊的一般格式;圖34顯示了多通道數(shù)據(jù)發(fā)送狀態(tài)塊的格式;圖35顯示了多通道直接狀態(tài)塊的格式;圖36顯示了多通道設(shè)備資源獲取狀態(tài)塊的格式;圖37顯示了多通道放棄設(shè)備資源狀態(tài)塊的格式;圖38顯示了多通道基本設(shè)備狀態(tài)塊的格式;圖39A的流程圖顯示了基于在狀態(tài)寄存器中的寫入,多通道始發(fā)者所執(zhí)行的處理過程;圖39B的流程圖顯示了基于在門鈴寄存器中的寫入,多通道目標(biāo)所執(zhí)行的處理過程;圖40的流程圖顯示了使用IEEE1394接口的打印機系統(tǒng)的硬件布局。
第一實施方式通過IEEE1394連接主機和打印機的打印系統(tǒng)將作為本發(fā)明的第一實施方式在下面進行描述。在此系統(tǒng)中,數(shù)據(jù)傳輸依據(jù)本發(fā)明的協(xié)議(此后稱為HPT)進行,該協(xié)議使用構(gòu)造在IEEE1394之上的SBP-2。圖40顯示了該打印系統(tǒng)中的硬件布局。
《系統(tǒng)的硬件布局》在圖40中,主機200包括CPU1--以存儲在ROM 3中的程序ROM區(qū)域內(nèi)的文檔處理程序為基礎(chǔ),處理包括圖形、圖象、文字、表(包括表計算等)等等的文檔。CPU1系統(tǒng)地控制與系統(tǒng)總線4連接的各個設(shè)備。ROM3的程序ROM區(qū)域存儲用于CPU1等設(shè)備的控制程序,ROM3的字體ROM區(qū)域存儲在文檔處理中使用的字體數(shù)據(jù)等等,ROM3的數(shù)據(jù)ROM區(qū)域存儲在執(zhí)行文檔處理等中使用的各種數(shù)據(jù)。RAM2作為CPU1的主存儲器、工作區(qū)域等等。程序可以存儲在RAM2中。在RAM2上,確保了用于存儲ORB的傳輸數(shù)據(jù)緩沖區(qū)和系統(tǒng)存儲器。
鍵盤控制器(KBC)5控制鍵盤9和指示設(shè)備(pointingdevice)(沒有顯示)的按鍵輸入。CRT控制器(CRTC)6控制在CRT顯示器(CRT)10上的顯示。存儲控制器(MC)7控制對外部存儲器11如硬盤(HD)、軟盤(FD)等等的訪問,外部存儲器存儲了啟動程序、各種應(yīng)用程序、字體數(shù)據(jù)、用戶文件、編輯文件等等。根據(jù)IEEE1394標(biāo)準(zhǔn),1394接口8被連接到打印機100,并且實現(xiàn)與打印機100的通信控制。注意例如,CPU1將輪廓字體數(shù)據(jù)映射(光柵處理)到定位于RAM2中的顯示信息RAM區(qū)域,以在CRT10上實現(xiàn)“所見即所得”(WYSIWYG)環(huán)境。CPU1以鼠標(biāo)(沒有顯示)等所指定的命令為基礎(chǔ),打開各種已注冊的窗口并且執(zhí)行各種數(shù)據(jù)處理。
在打印機100中,打印機CPU12以存儲在ROM13的程序ROM區(qū)域中的控制程序或者存儲在外部存儲器14中的控制程序為基礎(chǔ),系統(tǒng)地控制對與系統(tǒng)總線15相連接的各種設(shè)備的訪問并且將圖象信號作為輸出信息輸出到通過打印機裝置接口16連接的打印機裝置(打印機引擎)17中。ROM13的程序ROM區(qū)域也存儲用于CPU12的控制程序,其實現(xiàn)各種代理(在后面描述)。ROM13的字體ROM區(qū)域存儲在產(chǎn)生輸出信息中使用的字體數(shù)據(jù)等,ROM13的數(shù)據(jù)ROM區(qū)域在打印機沒有外部存儲器14如硬盤等的情況下存儲在主機上使用的信息等。CPU12能夠通過1394接口18與主機通信,并且能夠?qū)⒋蛴C中的信息等通知給主機200。
RAM19作為CPU12的主存儲器、工作區(qū)域等,并且使用連接到擴充端口(沒有顯示)的可選RAM,其存儲容量能夠被擴充。注意RAM19被用作輸出信息映射區(qū)域、環(huán)境數(shù)據(jù)存儲區(qū)域、NVRAM等等。
存儲控制器(MC)20控制對上述外部存儲器14如硬盤(HD)、IC卡等等的訪問。外部存儲器14作為選項連接,并且存儲字體數(shù)據(jù)、仿真程序、表格數(shù)據(jù)等等??刂泼姹P(控制臺)1002提供了操作開關(guān)、LED指示器等等。外部存儲器數(shù)并不限于一個,并且打印機可以包括多個外部存儲器,使得包括除了內(nèi)部字體外可選字體的可選字體卡的多個外部存儲器、存儲用于解釋其它打印機控制語言等的程序的外部存儲器可能被連接。進一步地,可以增加NVRAM(沒有顯示),并且可以從控制面盤1002中存儲打印機模式設(shè)置信息。
《始發(fā)者的布局》圖1和圖2顯示了在上述的硬件布局中使用打印機100作為目標(biāo)、主機200作為始發(fā)者的通信系統(tǒng)。在此實施方式中,當(dāng)主機和打印機中的CPU執(zhí)行預(yù)定程序時,就實現(xiàn)了這樣的布局。首先描述在圖2中顯示的始發(fā)者。
在圖2中,將主機作為始發(fā)者,作為應(yīng)用的打印機驅(qū)動器209通過HPT處理器203發(fā)布一數(shù)據(jù)傳輸請求給打印機,并且從打印機處接收一響應(yīng)(應(yīng)答)。
HPT處理器203包括ORB管理器206。ORB管理器206管理在系統(tǒng)存儲器208中產(chǎn)生的ORB。一ORB是存儲了從主機到打印機(或者相反)之間傳輸?shù)臄?shù)據(jù)緩沖區(qū)的地址、大小等等的塊。ORB被依次鏈接成ORB列表。對于這些ORB,定義了如下的處理規(guī)則(1)ORB列表中的ORB以先進先出(FIFO)的次序依次進行處理。根據(jù)接收到的完成消息(狀態(tài)塊),從ORB列表中將對應(yīng)的ORB刪除。
(2)新產(chǎn)生的ORB被增加到ORB列表的末尾。
(3)能被鏈接到ORB列表的ORB的最大數(shù)目與打印機中的兩條隊列的總?cè)萘肯嗤?,這將在后面描述。
為了實現(xiàn)第三條,ORB管理器206準(zhǔn)備對應(yīng)于打印機兩條隊列的兩個計數(shù)器。一個計數(shù)器命名為CurrentQuedQUE,指示打印機的預(yù)取隊列(在后面描述)中當(dāng)前的空位置號。另一計數(shù)器命名為CurrentImmediateQUE,在此實施方式中對應(yīng)于此計數(shù)器的隊列容量是1,并且僅僅一個被處理的條目能夠被排隊。這些計數(shù)器內(nèi)容的增加/減小對應(yīng)于ORB的產(chǎn)生/刪除。
當(dāng)主機產(chǎn)生一ORB時,其在稱為門鈴寄存器的寄存器中寫入一任意值以通知打印機已產(chǎn)生一ORB。這一過程在SBP-2中指定,并且在其手冊等中描述。
HPT處理器203包括狀態(tài)隊列204和隊列處理器205。通過1394接口接收到的狀態(tài)由狀態(tài)標(biāo)識符202標(biāo)識,并且根據(jù)狀態(tài)的類型,將其直接發(fā)送到ORB管理器206或增加到狀態(tài)隊列204中。隊列處理器205以先進先出的次序處理添加到狀態(tài)隊列204中的狀態(tài)。有兩種狀態(tài)類型。
(1)正常狀態(tài)……此狀態(tài)是一狀態(tài)塊,在主機和打印機之間通報數(shù)據(jù)傳輸結(jié)果,并且被直接發(fā)送到ORB管理器206。
(2)自發(fā)(unsolicited)狀態(tài)……此狀態(tài)是一狀態(tài)塊,指示從打印機傳輸?shù)街鳈C的異步數(shù)據(jù)已經(jīng)產(chǎn)生,并且被增加到狀態(tài)隊列204中。通常,此狀態(tài)由打印機自發(fā)地發(fā)布。
這些狀態(tài)類型通過寫入狀態(tài)塊中的值來區(qū)分。
狀態(tài)寄存器210是一寄存器,打印機將數(shù)據(jù)寫入到該寄存器中以指示被主機讀取的數(shù)據(jù)已經(jīng)提供。
作為始發(fā)者的主機具有上述的功能布局。
《目標(biāo)的布局》圖1的框圖顯示了作為目標(biāo)的打印機的功能布局。
在圖1中,主機將數(shù)據(jù)寫入到門鈴寄存器108中。在門鈴寄存器中寫入任意值意味著一新ORB的產(chǎn)生。命令獲取代理103通過1394接口101讀入ORB,并且根據(jù)其類型,將讀入的ORB附加到預(yù)取隊列104的末尾或者發(fā)送到立即執(zhí)行代理106處。命令類型的確定將參考指示立即或排隊執(zhí)行的域來確定。然而,此域?qū)嶋H上對應(yīng)于命令的功能。例如,在此實施方式中,用于從目標(biāo)到始發(fā)者的數(shù)據(jù)傳輸?shù)拿?請求讀命令)和獲取目標(biāo)狀態(tài)的命令均是立即執(zhí)行命令,而用于將打印數(shù)據(jù)從始發(fā)者傳輸?shù)侥繕?biāo)的命令等是排隊執(zhí)行命令。
排隊執(zhí)行代理105和立即執(zhí)行代理106根據(jù)命令獲取代理103讀入的ORB的內(nèi)容,從主機的緩沖區(qū)中讀入數(shù)據(jù)或者將數(shù)據(jù)處理器107提供的數(shù)據(jù)寫入。此后,這些代理將正常狀態(tài)返回給主機。
進一步地,立即執(zhí)行代理106發(fā)送自發(fā)狀態(tài)給主機以響應(yīng)來自數(shù)據(jù)處理器107的數(shù)據(jù)傳輸請求,該數(shù)據(jù)處理器107通過解釋和執(zhí)行PDL為產(chǎn)生的光柵數(shù)據(jù)進行光柵處理以及進行設(shè)備管理??偩€接口102用于從打印機100中訪問主機200的系統(tǒng)存儲器208上的所需存儲位置。
在此實施方式的系統(tǒng)中,排隊執(zhí)行代理用于從主機到打印機的數(shù)據(jù)傳輸ORB,并且立即執(zhí)行代理用于從打印機到主機的數(shù)據(jù)傳輸ORB。
已經(jīng)簡要地解釋了始發(fā)者和目標(biāo)的布局及操作。在其詳細描述之前,將在下面詳細解釋ORB的內(nèi)容。
《命令ORB(操作請求塊)的內(nèi)容》圖3A和3B顯示了ORB的一般格式。在圖3A中,“下一個ORB”(鏈接)域301存儲了到下一ORB的鏈接。如果沒有下一ORB的話,則存儲指示該情況的預(yù)定值。注意第一個ORB由預(yù)定的地址寄存器指示。“數(shù)據(jù)描述符”(數(shù)據(jù)地址)域302指示數(shù)據(jù)緩沖區(qū)中的地址。“d”(方向)域303指示從主機到打印機(0寫入)的數(shù)據(jù)傳輸或者從打印機到主機(1讀入)的數(shù)據(jù)傳輸。“數(shù)據(jù)大小”(數(shù)據(jù)大小)域304指示地址域302所指的數(shù)據(jù)緩沖區(qū)的大小。從“下一個ORB”域301到“數(shù)據(jù)大小”域304的這些域均為SBP-2中指定的那些域,并且下面描述對HPT唯一的域305到308在處理中的使用。
如圖3B中所示,“i”(立即位)域305指示該ORB是否被目標(biāo)中的立即或排隊執(zhí)行代理執(zhí)行。如果該域值為“0”,也就是排隊執(zhí)行代理,那么ORB被放到預(yù)取隊列中;如果該域值為“1”,那么由立即執(zhí)行代理處理該ORB?!肮δ堋?功能)域306指示ORB的含義,這將在后面詳細描述。“命令塊長度”(命令長度)域307指示“控制塊”(控制塊)域308的長度??刂茐K域308存儲對應(yīng)于功能域306中值的各種值。
ORB的內(nèi)容將在功能單元中解釋。
(隊列深度命令)圖4顯示了功能=0的隊列深度命令ORB。此命令用于獲得目標(biāo)的預(yù)取隊列104的深度。立即位被設(shè)置為“1”。
此命令的控制塊包括兩個域,也就是“資源ID”(資源ID)域401和“狀態(tài)隊列深度”(狀態(tài)隊列深度)域402。資源ID域存儲在始發(fā)者中已經(jīng)注冊的過程的標(biāo)識符。在圖2顯示的例子中,已注冊的過程是打印機驅(qū)動器。
增加此域是為了當(dāng)多個過程已經(jīng)注冊時允許目標(biāo)標(biāo)識需要應(yīng)答的過程。狀態(tài)隊列深度域402將始發(fā)者狀態(tài)隊列204的深度通知給目標(biāo)。
狀態(tài)隊列深度域用于管理在目標(biāo)的狀態(tài)隊列中排隊的自發(fā)狀態(tài)塊數(shù)目。以始發(fā)者管理預(yù)取隊列的同樣方式,目標(biāo)根據(jù)自發(fā)狀態(tài)的產(chǎn)生/處理完成消息來管理狀態(tài)隊列的深度。
基于接收到的隊列深度命令,目標(biāo)在計數(shù)器CurrentUnsolicitedQUE中存儲狀態(tài)隊列的長度,并且將預(yù)取隊列長度返回給始發(fā)者。以此命令獲得的預(yù)取隊列的隊列深度為基礎(chǔ),始發(fā)者根據(jù)ORB的產(chǎn)生和刪除來管理在目標(biāo)中排隊的ORB數(shù)目。
(數(shù)據(jù)發(fā)送命令)圖5顯示了功能=1的數(shù)據(jù)發(fā)送命令。此命令應(yīng)用于從始發(fā)者傳輸數(shù)據(jù)到目標(biāo)。“頁表已提供”位501指示提供了一頁表。當(dāng)提供了頁表時,頁表所引用的頁大小在“頁大小”域502中被設(shè)置。被傳輸?shù)臄?shù)據(jù)緩沖區(qū)由此頁表、地址503和數(shù)據(jù)大小504指示。
基于接收到的數(shù)據(jù)發(fā)送命令,目標(biāo)根據(jù)方向域中的值在指定的數(shù)據(jù)緩沖區(qū)中寫數(shù)據(jù)或者從其中讀出數(shù)據(jù)。
(請求讀命令)圖6顯示了功能=2的請求讀命令。當(dāng)“讀請求狀態(tài)”時,此命令為打印機提供了將數(shù)據(jù)寫入的數(shù)據(jù)緩沖區(qū),也就是,作為目標(biāo)的打印機中的數(shù)據(jù)傳輸請求被從目標(biāo)中發(fā)送到主機。“序列號”(序列號)域601設(shè)置成與附加到對應(yīng)的讀請求狀態(tài)的序列號相同的值,其促使此命令的發(fā)布。該值使得請求讀狀態(tài)和請求讀命令彼此相對應(yīng)。其它域的格式與數(shù)據(jù)發(fā)送命令中的相同。在此命令中,立即位設(shè)置為“1”,并且方向位也設(shè)置為“1”(讀)。立即位設(shè)置為“1”的原因是為了立即響應(yīng)目標(biāo)所發(fā)布的讀請求狀態(tài)。緩沖區(qū)大小使用由讀請求狀態(tài)指定的值。
基于接收到的數(shù)據(jù)發(fā)送命令,目標(biāo)確保在始發(fā)者的系統(tǒng)存儲器上指定的數(shù)據(jù)緩沖區(qū)中寫數(shù)據(jù)。
(直接狀態(tài)響應(yīng)命令)圖7顯示了功能=3的直接狀態(tài)響應(yīng)命令ORB。當(dāng)始發(fā)者使得目標(biāo)放棄一讀請求時,為響應(yīng)讀請求狀態(tài)發(fā)布此命令??蛇x地,為響應(yīng)來自目標(biāo)的直接狀態(tài),此命令被用作對目標(biāo)的應(yīng)答。“序列號”(序列號)域701設(shè)置成與附加到對應(yīng)的讀請求狀態(tài)或直接狀態(tài)的序列號相同的值,其促使此命令的發(fā)布。其它域的格式與數(shù)據(jù)發(fā)送命令中的相同。在此命令中,立即位設(shè)置為“1”。
基于接收到的直接狀態(tài)響應(yīng)命令,如果已經(jīng)發(fā)布了具有對應(yīng)的序列號的讀請求狀態(tài),那么目標(biāo)放棄讀請求。
(獲取設(shè)備資源命令)圖8A顯示了功能=8的獲取設(shè)備資源命令ORB?!百Y源ID”(資源ID)域801的含義如圖8B中所示。值“0”依賴于使用的設(shè)備類型和邏輯裝置特征。在此系統(tǒng)中,“0”指示打印機為一種設(shè)備類型并且打印服務(wù)作為邏輯裝置特征。
基于接收到的獲取設(shè)備資源命令,目標(biāo)指派由資源ID指定的資源給作為此命令發(fā)送者的始發(fā)者。
(釋放設(shè)備資源命令)圖9顯示了功能=9的釋放設(shè)備資源命令?!百Y源ID”(資源ID)域801的含義如圖8B中所示。
基于接收到的釋放設(shè)備資源命令,目標(biāo)釋放由資源ID指定的資源。
(基本設(shè)備狀態(tài)命令)圖10顯示了功能=A(十六進制)的基本設(shè)備狀態(tài)命令ORB。
接收到的此命令后,目標(biāo)將其自身狀態(tài)回答給始發(fā)者,同時將其封裝在一基本設(shè)備狀態(tài)塊中。通過發(fā)布此命令,始發(fā)者能夠識別打印機狀態(tài)。在打印機中,例如,與打印機相關(guān)的各種狀態(tài)信息如紙張大小、仿真支持等等被作為基本狀態(tài)從目標(biāo)中發(fā)送回來。
《狀態(tài)塊的內(nèi)容》圖11A和11B顯示了從作為目標(biāo)的打印機中發(fā)送回到作為始發(fā)者的主機的狀態(tài)塊。為每個上述的命令ORB準(zhǔn)備一個對應(yīng)的狀態(tài)塊。目標(biāo)的排隊和立即執(zhí)行代理發(fā)布該狀態(tài)塊。
在圖11A中,第一個域到“ORB_offset_lo”域均在SBP-2中指定,并且包括用于指示對應(yīng)于狀態(tài)的命令ORB的域等等?!癷”(立即位)域1101指示排隊和立即執(zhí)行代理中的哪一個發(fā)布此狀態(tài)。如果值為“0”,其指示排隊執(zhí)行代理發(fā)布該狀態(tài);如果值為“1”,其指示立即執(zhí)行代理發(fā)布該狀態(tài)?!癶pt狀態(tài)”(hpt狀態(tài))域1102指示狀態(tài)塊的類型,如圖11B中所示?!癶pt狀態(tài)_dependent”域1103依賴于hpt狀態(tài)給出其值。“狀態(tài)長度”(狀態(tài)長度)域1104指示響應(yīng)塊1105的長度。狀態(tài)塊將在下面的類型單元中解釋。
(隊列深度狀態(tài)塊)圖12顯示了hpt狀態(tài)=0的隊列深度狀態(tài)。目標(biāo)為響應(yīng)隊列深度命令而應(yīng)答隊列深度狀態(tài),目標(biāo)在“預(yù)取隊列深度”域1201中設(shè)置預(yù)取隊列104的深度并且將狀態(tài)發(fā)送回始發(fā)者。使用此狀態(tài),始發(fā)者能夠檢測預(yù)取隊列的大小,并且管理對應(yīng)于該大小所產(chǎn)生的ORB的數(shù)目。
(數(shù)據(jù)發(fā)送狀態(tài)塊)圖13顯示了hpt狀態(tài)=1的數(shù)據(jù)發(fā)送狀態(tài)。目標(biāo)為響應(yīng)數(shù)據(jù)發(fā)送命令而應(yīng)答數(shù)據(jù)發(fā)送狀態(tài),并且目標(biāo)基于數(shù)據(jù)發(fā)送命令ORB的處理完成來發(fā)布此狀態(tài)?;诮邮盏降拇藸顟B(tài),始發(fā)者能夠檢測一ORB已經(jīng)從目標(biāo)的隊列中處理和刪除。
(讀請求狀態(tài)塊)此狀態(tài)為hpt狀態(tài)=2(其格式?jīng)]有顯示),并且具有由始發(fā)者在響應(yīng)塊中確保的數(shù)據(jù)緩沖區(qū)大小。通常,目標(biāo)發(fā)布此狀態(tài)并非為了響應(yīng)命令ORB,而是自發(fā)地發(fā)布。始發(fā)者發(fā)布上述的請求讀命令ORB以響應(yīng)此讀請求狀態(tài)。這一處理的過程將在后面描述。
(直接狀態(tài)塊)此狀態(tài)為hpt狀態(tài)=3(其格式?jīng)]有顯示),并且包括響應(yīng)塊中的應(yīng)用層(也就是,目標(biāo)中的數(shù)據(jù)處理器)的狀態(tài)。更為特別地,應(yīng)用層上的數(shù)據(jù)交換通常使用ORB和鏈接的數(shù)據(jù)緩沖區(qū)來實現(xiàn)。然而,當(dāng)數(shù)據(jù)非常小并且處在響應(yīng)塊的上限之內(nèi)(在此實施方式中為24字節(jié))時,應(yīng)用層的應(yīng)答被封裝在一HPT-層應(yīng)答中。為響應(yīng)此狀態(tài),始發(fā)者發(fā)布直接狀態(tài)響應(yīng)命令ORB。
(設(shè)備資源獲取狀態(tài)塊)此狀態(tài)為hpt狀態(tài)=8(其格式?jīng)]有顯示),并且由已經(jīng)接收到獲取設(shè)備資源E命令并對其處理的目標(biāo)來發(fā)布此狀態(tài)。
(設(shè)備資源釋放狀態(tài)塊)
此狀態(tài)為hpt狀態(tài)=9(其格式?jīng)]有顯示),并且由已經(jīng)接收到釋放設(shè)備資源命令并對其處理的目標(biāo)來發(fā)布此狀態(tài)。
(BASIC DEVICE狀態(tài)塊)此狀態(tài)為hpt狀態(tài)=A(十六進制)(其格式?jīng)]有顯示),并且基于基本設(shè)備狀態(tài)命令的接收,目標(biāo)發(fā)布此狀態(tài)。這一狀態(tài)被設(shè)置成預(yù)定的設(shè)備狀態(tài)。
已經(jīng)描述了本實施方式的打印系統(tǒng)中使用的命令和狀態(tài)塊。始發(fā)者和目標(biāo)中的數(shù)據(jù)交換過程將在下面解釋。
《來自始發(fā)者的數(shù)據(jù)傳輸請求處理》圖14顯示了為響應(yīng)從主機到打印機(或反之亦然)的數(shù)據(jù)傳輸請求,在主機中用于將命令ORB的產(chǎn)生通知給打印機的過程。
來自應(yīng)用如打印機驅(qū)動器等的數(shù)據(jù)傳輸請求在步驟S1401中監(jiān)視。數(shù)據(jù)傳輸請求可能是將從應(yīng)用如打印機驅(qū)動器中直接傳輸?shù)臄?shù)據(jù)的出現(xiàn)通知給主機或者可能是根據(jù)來自打印機的數(shù)據(jù)讀請求而產(chǎn)生的。注意打印機發(fā)送到主機的并與主機異步的狀態(tài)此后稱為自發(fā)狀態(tài)。另一方面,從主機中作為命令ORB的處理完成消息返回的狀態(tài)此后將稱為正常狀態(tài)。
基于數(shù)據(jù)傳輸請求的檢測,在步驟1402中確定數(shù)據(jù)傳輸是由排隊執(zhí)行命令執(zhí)行還是由立即執(zhí)行命令執(zhí)行。如果數(shù)據(jù)傳輸由立即執(zhí)行命令執(zhí)行,那么ORB的立即位被設(shè)置。當(dāng)為響應(yīng)來自打印機的自發(fā)狀態(tài)而發(fā)布ORB時,數(shù)據(jù)傳輸由立即執(zhí)行命令執(zhí)行;當(dāng)為響應(yīng)來自主機應(yīng)用的數(shù)據(jù)傳輸請求而發(fā)布ORB時,數(shù)據(jù)傳輸由排隊執(zhí)行命令執(zhí)行。
在排隊執(zhí)行的情況中,在步驟S1403中檢查計數(shù)器CurrentQuedQUE是否為“0”?;陔娫创蜷_或重新設(shè)置,隊列深度命令讀取打印機的預(yù)取隊列深度,并且設(shè)置為計數(shù)器CurrentQuedQUE的缺省值。更為具體地,計數(shù)器CurrentQuedQUE對預(yù)取隊列中的當(dāng)前空位置號進行計數(shù)。如果在步驟S1403中確定空位置號為“0”,由于目標(biāo)的預(yù)取隊列非空,那么控制一直等到該隊列具有一空位置。如果發(fā)現(xiàn)空位置,那么計數(shù)器CurrentQuedQUE的值在步驟S1404中減1,并且在步驟S1407中產(chǎn)生數(shù)據(jù)傳輸ORB并將之鏈接進ORB列表。此后,在步驟S1408中往打印機的門鈴寄存器108中寫入任意值,從而將新ORB的產(chǎn)生通知給目標(biāo)。
另一方面,如果在步驟S1402中確定由立即執(zhí)行命令來執(zhí)行數(shù)據(jù)傳輸,那么在步驟S1405中檢查計數(shù)器CurrentImmediateQUE的值是否大于“0”。注意沒有為目標(biāo)的立即執(zhí)行代理準(zhǔn)備隊列,因此該計數(shù)器的最大值為“1”。否則,重新設(shè)置時將計數(shù)器CurrentImmediateQUE設(shè)置為“1”。如果計數(shù)器CurrentImmediateQUE的值大于“0”,那么在步驟S1406中將計數(shù)器值減1。接著,將ORB鏈接到ORB列表并寫門鈴寄存器。
基于以此方式寫入門鈴寄存器,獲取代理在圖15顯示的過程中將ORB放入目標(biāo)。
《獲取代理進行的處理》圖15顯示了基于對門鈴寄存器108的寫,目標(biāo)的獲取代理所執(zhí)行的處理過程。
基于對門鈴寄存器108的寫,在系統(tǒng)存儲器中的第一鏈接ORB的地址在步驟S1601中被設(shè)置在讀指針中。
在步驟S1602中,由讀指針指示的ORB的立即位被測試以檢查其為立即執(zhí)行命令還是排隊執(zhí)行命令。如果相關(guān)的ORB為排隊執(zhí)行命令,那么在步驟S1603中獲得預(yù)取隊列104的尾地址(NextWritePointer)。由于主機在已經(jīng)確定預(yù)取隊列的空位置之后會寫門鈴寄存器,所以隊列確實具有一空位置。
讀指針?biāo)甘镜腛RB在步驟S1604中被復(fù)制到預(yù)取隊列的末尾,并且在步驟S1605中獲取代理將ORB接收通知給排隊執(zhí)行代理。在步驟S1606中接著檢查由讀指針?biāo)甘镜腛RB的“下一個ORB”域(指向下一ORB的鏈接域)是否為空,也就是,是否提供了鏈接的ORB。如果該域為空,那么流程結(jié)束;否則,該鏈接ORB的地址被設(shè)置在讀指針中并重復(fù)從步驟S1602開始的流程。
另一方面,如果在步驟S1602中確定ORB為立即執(zhí)行命令,那么在步驟S1608中將該ORB復(fù)制到立即執(zhí)行代理預(yù)先所指定的地址中。此后,獲取代理在步驟S1609中將ORB接收通知給立即執(zhí)行代理,并且流程前進到步驟S1606。
在此方式中,ORB被放入目標(biāo)以將ORB接收通知給每個執(zhí)行代理。接著,ORB由圖16中顯示的過程來執(zhí)行。
《執(zhí)行代理進行的處理》存在兩種執(zhí)行代理,即立即和排隊執(zhí)行代理,但是它們使用相同的過程來處理ORB。因此,將使用圖16來同時描述其處理。
當(dāng)將來自獲取代理的ORB接收通知給執(zhí)行代理時,在步驟S1701中其抽取出Nextreadpointer所指示的ORB的數(shù)據(jù)地址域、方向位和數(shù)據(jù)大小域的值。注意Nextreadpointer是一存儲在隊列中并指示執(zhí)行代理將要處理的ORB的指針。在排隊執(zhí)行代理的情況中,該指針指示預(yù)取隊列中的第一ORB。
在步驟S1702中檢查抽取出來的數(shù)據(jù)大小是否為“0”。如果大小不為“0”,那么在步驟S1703中檢查方向位(Direction位)指示寫還是讀。如果方向位指示寫,那么在步驟S1704中,執(zhí)行代理從該始發(fā)者的系統(tǒng)存儲器中讀出由數(shù)據(jù)地址和大小指定的數(shù)據(jù)并且將讀出的數(shù)據(jù)傳遞到數(shù)據(jù)處理器107。
數(shù)據(jù)處理器在步驟S1705到步驟S1707中處理傳遞來的數(shù)據(jù)。例如,在打印機中解釋PDL數(shù)據(jù)并對其進行光柵處理。在步驟S1707中,將處理結(jié)束通知給執(zhí)行代理。
基于數(shù)據(jù)處理器中處理結(jié)束的通知,在步驟S1708中,執(zhí)行代理產(chǎn)生一數(shù)據(jù)發(fā)送狀態(tài)塊(正常狀態(tài))作為指示相關(guān)ORB處理結(jié)束的消息,并且在步驟S1709中將該消息寫入狀態(tài)寄存器210中以將該狀態(tài)通知給始發(fā)者。
另一方面,如果在步驟S1703中確定ORB的方向位指示讀,那么,在步驟S1710中,執(zhí)行代理將數(shù)據(jù)寫入由ORB的數(shù)據(jù)地址域和數(shù)據(jù)大小域所指定的數(shù)據(jù)緩沖區(qū)中。由目標(biāo)寫的數(shù)據(jù)被稱為逆向數(shù)據(jù)(reverse data)。被寫的逆向數(shù)據(jù)已經(jīng)由數(shù)據(jù)處理器107等產(chǎn)生并且存儲在一緩沖區(qū)中。例如,逆向數(shù)據(jù)為大于24字節(jié)的數(shù)據(jù)如打印機內(nèi)置的字體列表。
在步驟S1711中,存儲已經(jīng)被寫的數(shù)據(jù)的緩沖區(qū)被釋放。
基于處理的完成,在步驟S1713中,執(zhí)行代理產(chǎn)生處理完成消息的狀態(tài)塊(正常狀態(tài)),并且在步驟S1714中將一預(yù)定的值寫入狀態(tài)寄存器以將狀態(tài)塊消息通知給主機。
最后,在步驟S1715中,執(zhí)行代理將計數(shù)器CurrentUnSolicitedQUE的值增加1?;陉犃猩疃让畹慕邮眨鎯υ谄洹盃顟B(tài)隊列深度”域中的值被設(shè)置為計數(shù)器CurrentUnSolicitedQUE的缺省值。對應(yīng)于自發(fā)狀態(tài)塊的傳輸和其處理完成消息的此計數(shù)器內(nèi)容的增加/減小將指示狀態(tài)隊列204的空位置數(shù)目。計數(shù)器CurrentUnSolicitedQUE在下面的條件下進行計數(shù)-計數(shù)減小的條件(1)基于自發(fā)狀態(tài)塊的傳輸,計數(shù)器減1。在始發(fā)者中,自發(fā)狀態(tài)單獨在狀態(tài)隊列204中排隊。
-計數(shù)增加的條件(1)基于請求讀ORB的處理完成狀態(tài)塊的傳輸,計數(shù)器增加1?;诖藸顟B(tài)的接收,始發(fā)者從狀態(tài)隊列204中移去該已處理的狀態(tài)塊。
(2)基于用于具有數(shù)據(jù)大小=0的ORB的處理完成狀態(tài)塊的傳輸,計數(shù)器增加1。換言之,基于用于直接狀態(tài)響應(yīng)ORB的狀態(tài)塊的傳輸,計數(shù)器增加1。基于此狀態(tài)的接收,始發(fā)者從狀態(tài)隊列204中移去該已處理的狀態(tài)塊(直接狀態(tài))。
如果在步驟S1702中確定數(shù)據(jù)大小為“0”,由于沒有數(shù)據(jù)需要處理,在步驟S1713中,執(zhí)行代理將沒有進行任何處理的狀態(tài)塊返回以發(fā)送一處理完成消息。
使用前面提及的過程,由始發(fā)者產(chǎn)生的ORB以及其處理,和由目標(biāo)產(chǎn)生的狀態(tài)塊均被執(zhí)行。為響應(yīng)從打印機傳輸?shù)街鳈C的自發(fā)狀態(tài)的數(shù)據(jù)傳輸將在下面參考圖17和圖18進行解釋。
《目標(biāo)中自發(fā)狀態(tài)的發(fā)布》一些信息種類必須立即從打印機通知給主機,例如,當(dāng)缺紙、夾紙等等錯誤在打印機中出現(xiàn)時。在這種情況下,打印機自發(fā)地傳輸數(shù)據(jù)到主機,與來自主機的命令傳輸異步。如果從打印機發(fā)送的數(shù)據(jù)產(chǎn)生,那么數(shù)據(jù)處理器將該數(shù)據(jù)的出現(xiàn)通知給立即執(zhí)行代理,從而啟動圖17中的處理。
在步驟S1801中檢查傳輸給主機的數(shù)據(jù)是否超出24字節(jié)。注意24字節(jié)為能夠存儲在狀態(tài)塊的響應(yīng)塊中的數(shù)據(jù)容量的上限。
如果數(shù)據(jù)超出該上限值,那么在步驟S1802中產(chǎn)生一讀請求狀態(tài)塊(自發(fā)狀態(tài)),并且在步驟S1803中逆向數(shù)據(jù)的存儲地址被設(shè)置在該狀態(tài)塊的“ORB offset”域中。此時,逆向數(shù)據(jù)的大小也被寫入狀態(tài)塊中。
在步驟S1804中檢查計數(shù)器CurrentUnSolicitedQUE的值是否大于“0”,也就是,狀態(tài)隊列具有空位置。如果在步驟S1804中為NO,那么控制一直等到隊列具有空位置,計數(shù)器CurrentUnSolicitedQUE的值在步驟S1805中減1,并且在步驟S1806中將一合適值寫入狀態(tài)寄存器中。
另一方面,如果數(shù)據(jù)等于或者小于24字節(jié),由于該數(shù)據(jù)能夠發(fā)送到主機,同時被封裝在狀態(tài)塊中,直接狀態(tài)(自發(fā)狀態(tài))被產(chǎn)生,并且逆向數(shù)據(jù)被存儲在其命令集依賴域。此后,流程分支到步驟S1804。
在此方式中,自發(fā)狀態(tài)被發(fā)送到始發(fā)者。
基于狀態(tài)的接收,始發(fā)者通過圖18所示的過程處理它。
《始發(fā)者執(zhí)行的狀態(tài)處理》此過程由在狀態(tài)寄存器中設(shè)置預(yù)定值所產(chǎn)生的中斷來啟動。允許多個中斷,并且每次在狀態(tài)寄存器中設(shè)置值時就產(chǎn)生一中斷。
在步驟S1501中,檢查狀態(tài)為正常狀態(tài)還是自發(fā)狀態(tài)。如果狀態(tài)為自發(fā)狀態(tài),那么,在步驟S1502中,從目標(biāo)中讀出狀態(tài)塊,并且將其復(fù)制到狀態(tài)隊列的末尾。在步驟S1503中檢查相關(guān)塊是否已經(jīng)移動到隊列的頭位置。如果在步驟S1503中已經(jīng)移動到隊列的頭位置,那么在步驟S1504中存儲逆向數(shù)據(jù)的緩沖區(qū)被確定,并且在步驟S1505中檢查狀態(tài)為讀請求ED狀態(tài)還是直接狀態(tài)。
如果狀態(tài)為讀請求ED狀態(tài),那么在步驟S1506中產(chǎn)生讀請求ED命令ORB。產(chǎn)生的ORB被設(shè)置成“立即”標(biāo)志,并且其方向標(biāo)志指示讀。同樣,存儲要讀出的數(shù)據(jù)的緩沖區(qū)的地址被寫入ORB中。此后,在步驟S1507中,圖14中所示過程被告知請求數(shù)據(jù)傳輸?shù)氖录呀?jīng)產(chǎn)生。如圖14中所示過程發(fā)送在步驟S1506中產(chǎn)生的ORB到目標(biāo),并且來自目標(biāo)的數(shù)據(jù)被寫入數(shù)據(jù)緩沖區(qū)中,從而實現(xiàn)數(shù)據(jù)傳輸。
如果在步驟S1505中確定狀態(tài)為直接狀態(tài),那么該狀態(tài)中的逆向數(shù)據(jù)被復(fù)制到步驟S1508中確定的緩沖區(qū)中,并且在步驟S1509中被傳遞到主機如應(yīng)用等。此后,在步驟S1510中產(chǎn)生直接狀態(tài)響應(yīng)ORB(立即位設(shè)置成“立即”)。此時,數(shù)據(jù)大小=0被指定。
另一方面,如果在步驟S1501中確定狀態(tài)為正常狀態(tài),那么在步驟S1511中檢查對應(yīng)于該狀態(tài)的ORB的方向位指示讀還是寫。如果方向位指示寫,也就是,將數(shù)據(jù)從始發(fā)者傳輸?shù)侥繕?biāo),那么對應(yīng)的ORB從列表中刪除(步驟S1512),由該ORB使用的數(shù)據(jù)緩沖區(qū)被釋放(步驟S1513),并且指示預(yù)取隊列空大小的計數(shù)器CurrentQuedQUE的值增加1(步驟S1514)。
另一方面,如果方向位指示讀,也就是,數(shù)據(jù)從目標(biāo)傳輸?shù)绞及l(fā)者,由于該狀態(tài)為請求讀命令ORB的應(yīng)答,那么在步驟S1515中,將讀結(jié)束通知給主機過程如打印機驅(qū)動器等。在步驟S1516中將對應(yīng)的ORB從列表中刪除,并且計數(shù)器CurrentQuedQUE的值增加1。也就是,立即執(zhí)行代理已準(zhǔn)備好發(fā)送下一ORB。
在此方式中,基于對狀態(tài)寄存器的寫,始發(fā)者處理該狀態(tài)。也就是,自發(fā)狀態(tài)被依次排隊和處理,但是正常狀態(tài)被立即處理。自發(fā)狀態(tài)被排隊的原因是其產(chǎn)生一ORB。產(chǎn)生和鏈接到ORB列表的ORB數(shù)目被限制在低于目標(biāo)執(zhí)行代理的處理容量和預(yù)取隊列大小的總和。ORB的數(shù)目以這樣的方式限制以確保在ORB產(chǎn)生消息之后被立即執(zhí)行的ORB被立即處理。立即執(zhí)行命令只要傳遞給目標(biāo)就被立即執(zhí)行代理立即處理。然而,如果ORB被自由地產(chǎn)生,那么ORB列表本身不必要地成為立即執(zhí)行代理所處理的ORB的隊列,并且該產(chǎn)生的ORB不傳遞到目標(biāo)。結(jié)果,立即執(zhí)行沒有被確保。由于鏈接的ORB的數(shù)目被限制為放置在目標(biāo)的預(yù)取隊列中的ORB的數(shù)目和執(zhí)行代理所執(zhí)行的ORB的數(shù)目的總值,所以始發(fā)者產(chǎn)生的ORB能立即被傳遞給目標(biāo)。為此,甚至基于自發(fā)狀態(tài)的接收,由于對ORB數(shù)目上的限制,始發(fā)者也不能經(jīng)常產(chǎn)生一新ORB。因此,自發(fā)狀態(tài)被臨時放置在狀態(tài)隊列中。
《消息序列的例子》在上述過程中始發(fā)者和目標(biāo)之間交換的消息序列的例子將在下面參考圖19到21來解釋。
(到目標(biāo)的數(shù)據(jù)傳輸序列)圖19顯示了將數(shù)據(jù)從始發(fā)者(主機)傳輸?shù)侥繕?biāo)(打印機)的序列的例子。
注意圖19中的SBP-2代表SBP-2標(biāo)準(zhǔn)所指定的數(shù)據(jù),也就是,處理層處理圖3A和3B中所示的命令中SBP-2所指定的域和圖11A和11B中所示的狀態(tài)。同樣,HPT代表執(zhí)行功能單元中定義的而沒有在SBP-2中指定的處理的處理層。HPT執(zhí)行上述流程圖的過程。SBP-2實現(xiàn)鏈接ORB的功能、寫門鈴、傳遞ORB或狀態(tài)給HPT等等。
始發(fā)者上的應(yīng)用產(chǎn)生數(shù)據(jù),并且其HPT產(chǎn)生一ORB(在此情況下,為數(shù)據(jù)傳輸ORB),空隊列計數(shù)器(CurrentQuedQUE)的值減1,并且ORB鏈接請求被發(fā)布給SBP-2(1901)。SBP-2將產(chǎn)生的ORB鏈接到列表,并且發(fā)布一寫請求給門鈴寄存器(1902)。1394接口在門鈴寄存器中寫一門鈴(1903),并且目標(biāo)的SBP-2接著接收該消息(1904)。
基于該消息的接收,SBP-2發(fā)布一ORB讀請求給1394接口(1905),并且從系統(tǒng)存儲器中讀出該ORB(1906)。HPT依據(jù)其內(nèi)容在對應(yīng)的隊列中存儲讀出的ORB(1907)。在此情況中,由于ORB為一數(shù)據(jù)傳輸命令ORB,所以將數(shù)據(jù)讀請求發(fā)布給1394接口(1908)。為響應(yīng)此請求,數(shù)據(jù)從指定地址中讀出并且被傳遞到一應(yīng)用(1909)。例如,在此情況中的應(yīng)用為用于映射圖象的光柵處理器,并且被映射的圖象由打印機引擎打印出來。
在該數(shù)據(jù)讀出之后,狀態(tài)塊傳輸請求被發(fā)布給目標(biāo)的SBP-2(1910),并且一狀態(tài)塊(數(shù)據(jù)傳輸狀態(tài))被發(fā)送回始發(fā)者(1911)。基于狀態(tài)的接收,始發(fā)者的HPT從鏈接中刪除對應(yīng)的ORB,并且將空隊列計數(shù)器(CurrentQuedQUE)增加1(1912)。
使用上述的序列,將數(shù)據(jù)從始發(fā)者傳輸?shù)侥繕?biāo)。
(到始發(fā)者的數(shù)據(jù)傳輸序列)圖20顯示了讀請求狀態(tài)序列。
當(dāng)目標(biāo)上的應(yīng)用產(chǎn)生數(shù)據(jù)時,自發(fā)狀態(tài)(讀請求狀態(tài))被產(chǎn)生,狀態(tài)隊列計數(shù)器(CurrentUnSolicitedQUE)減1,并且自發(fā)狀態(tài)傳輸請求被發(fā)布(2001)?;诖苏埱蟮慕邮?,SBP-2傳輸一自發(fā)狀態(tài)塊到始發(fā)者(2002)?;诖藸顟B(tài)的接收,始發(fā)者的SBP-2層傳輸一自發(fā)狀態(tài)塊到HPT層(2003)。HPT層復(fù)制自發(fā)狀態(tài)塊到狀態(tài)隊列。
對于狀態(tài)隊列頭位置處的狀態(tài),HPT層準(zhǔn)備數(shù)據(jù)緩沖區(qū)和讀請求ORB并且請求SBP-2層鏈接該產(chǎn)生的ORB(2004)。SBP-2層發(fā)布一寫請求給門鈴寄存器(2005),并且1394接口寫一門鈴(2006)。將門鈴寫消息從1394接口發(fā)送到SBP-2(2007),并且ORB的讀請求的發(fā)布(2008)和ORB的讀(2009)被立即執(zhí)行。讀出的ORB被傳遞給目標(biāo)的HPT層,并且HPT層在指定的隊列中存儲該ORB(2010)。此后,HPT層解釋ORB的內(nèi)容以識別一數(shù)據(jù)讀請求,并且將數(shù)據(jù)寫請求發(fā)布給1394接口(2011)。
為響應(yīng)此請求,逆向數(shù)據(jù)被寫入始發(fā)者準(zhǔn)備的數(shù)據(jù)緩沖區(qū)中(2012)。
基于此過程的完成,目標(biāo)發(fā)布一狀態(tài)塊產(chǎn)生請求,并且將狀態(tài)隊列的空位置數(shù)增加1(2013)。為響應(yīng)該請求,一正常狀態(tài)塊被發(fā)送回始發(fā)者(2014)。當(dāng)為響應(yīng)該狀態(tài)而發(fā)布一ORB鏈接刪除請求給HPT時,對應(yīng)的ORB被刪除,并且立即執(zhí)行代理的隊列的空位置(必須為0)的數(shù)目增加1,從而釋放使用的數(shù)據(jù)緩沖區(qū)(2015)。
使用此序列,將數(shù)據(jù)從目標(biāo)傳輸?shù)绞及l(fā)者。
(到始發(fā)者的數(shù)據(jù)傳輸序列)圖21顯示了從目標(biāo)到始發(fā)者的數(shù)據(jù)傳輸?shù)男蛄?。與圖20的序列不同,由于被傳輸?shù)臄?shù)據(jù)較小,所以使用直接狀態(tài)。
當(dāng)目標(biāo)上的應(yīng)用產(chǎn)生數(shù)據(jù)時,自發(fā)狀態(tài)(直接狀態(tài))被產(chǎn)生,狀態(tài)隊列計數(shù)器(CurrentUnSolicitedQUE)減1,并且自發(fā)狀態(tài)傳輸請求被發(fā)布(2101)?;诖苏埱蟮慕邮?,SBP-2傳輸一自發(fā)狀態(tài)塊給始發(fā)者(2102)?;诖藸顟B(tài)的接收,始發(fā)者的SBP-2層傳輸一自發(fā)狀態(tài)塊到HPT層(2103)。HPT層復(fù)制自發(fā)狀態(tài)塊到狀態(tài)隊列。
對于狀態(tài)隊列頭位置處的狀態(tài),HPT層將封裝在此狀態(tài)中的應(yīng)用層上的數(shù)據(jù)讀出,并準(zhǔn)備數(shù)據(jù)緩沖區(qū)和直接狀態(tài)響應(yīng)ORB,以及請求SBP-2層鏈接該產(chǎn)生的ORB(2104)。SBP-2層發(fā)布一寫請求給門鈴寄存器(2105),并且1394接口寫一門鈴(2106)。將門鈴寫消息從1394接口發(fā)送到SBP-2(2107),并且ORB的讀請求的發(fā)布(2108)和ORB的讀(2109)被立即執(zhí)行。
讀出的ORB被傳遞給目標(biāo)的HPT層,并且HPT層在指定的隊列中存儲該ORB(2110)。此后,HPT層解釋ORB的內(nèi)容。如果確認ORB為直接狀態(tài)響應(yīng)ORB,那么目標(biāo)發(fā)布一對應(yīng)的狀態(tài)塊產(chǎn)生請求,并且將狀態(tài)隊列的空位置數(shù)增加1(2111)。為響應(yīng)此請求,將一正常狀態(tài)塊發(fā)送回始發(fā)者(2112)。當(dāng)為響應(yīng)該狀態(tài)而發(fā)布一ORB鏈接刪除請求給HPT時,對應(yīng)的ORB被刪除,并且立即執(zhí)行代理的隊列的空位置的數(shù)目增加1,從而釋放使用的數(shù)據(jù)緩沖區(qū)(2113)。
使用此序列,將數(shù)據(jù)從目標(biāo)傳輸?shù)绞及l(fā)者。在此序列中,與圖20中所示相比,數(shù)據(jù)寫請求(2011)和逆向數(shù)據(jù)寫(2012)這兩個步驟被省略。
《此系統(tǒng)唯一的功能》此系統(tǒng)的布局和操作已經(jīng)如上所述。對此系統(tǒng)唯一的功能、布局、優(yōu)點等總結(jié)如下(1)在目標(biāo)中準(zhǔn)備了兩個執(zhí)行代理,也就是,排隊和立即執(zhí)行代理,并且對應(yīng)于這些執(zhí)行代理提供了命令代理。在此方式中,來自始發(fā)者的數(shù)據(jù)傳輸請求ORB被依次排隊和處理(排隊執(zhí)行),但是來自目標(biāo)的讀請求狀態(tài)在對應(yīng)的請求讀ORB發(fā)布之后,被立即處理(立即執(zhí)行)。由于鏈接到ORB列表的ORB數(shù)的上限被限制在用于寫ORB的排隊執(zhí)行隊列的大小,以及被限制在用于寫ORB的立即執(zhí)行隊列的大小(此種情況中為1),所以確保了立即執(zhí)行。
另一方面,來自目標(biāo)的讀請求狀態(tài)在始發(fā)者中被排隊。為此,來自始發(fā)者的數(shù)據(jù)傳輸請求被附加到預(yù)取隊列的末尾,并且來自目標(biāo)的數(shù)據(jù)傳輸請求(讀請求)被增加到狀態(tài)隊列。使用此控制,能夠在始發(fā)者和目標(biāo)上的應(yīng)用之間提供全雙工通信通道。也就是,與數(shù)據(jù)傳輸方向無關(guān),被附加到隊列中的請求以先進先出的次序被處理,并且在一個方向上的數(shù)據(jù)傳輸不會影響另一方向上的數(shù)據(jù)傳輸,因此,提供了彼此互不干擾的獨立通道。換言之,在始發(fā)者或目標(biāo)中產(chǎn)生的數(shù)據(jù)能夠?qū)崿F(xiàn)從始發(fā)者到目標(biāo)或反過來從目標(biāo)到始發(fā)者的異步傳輸。
(2)由于始發(fā)者和目標(biāo)均監(jiān)視彼此隊列的空大小,那么傳輸?shù)腛RB或狀態(tài)塊能夠被可靠地接收。
(3)由單一的注冊過程提供全雙工通信通道。也就是,由于當(dāng)始發(fā)者和打印機的資源如目標(biāo)那樣缺乏時能夠使用計算機及其資源來進行數(shù)據(jù)交換,打印機資源,尤其是所需的內(nèi)存容量能夠被禁止。
(4)由于使用了IEEE1394接口,當(dāng)目標(biāo)隨著其資源可以使用而讀出數(shù)據(jù)時,到目標(biāo)的數(shù)據(jù)傳輸被執(zhí)行,并且能夠防止始發(fā)者被目標(biāo)隨意的數(shù)據(jù)傳輸所占據(jù)。如果打印機作為目標(biāo),那么當(dāng)其資源可以使用時其能夠讀出計算機傳遞來的數(shù)據(jù)。為此,主機在確定打印機已準(zhǔn)備好接收數(shù)據(jù)之后,不需要執(zhí)行監(jiān)視和啟動數(shù)據(jù)傳輸?shù)奶幚?。也就是,主機能夠在不考慮打印機的狀態(tài)下發(fā)送數(shù)據(jù)到打印機,并且不需要在打印機可以使用之后傳輸數(shù)據(jù)。
(5)由于使用了SBP-2,ORB被單獨在目標(biāo)中排隊,并且被傳輸?shù)臄?shù)據(jù)本身在處理等待時間內(nèi)被存儲在始發(fā)者中。為此,目標(biāo)的存儲器資源能夠被減小。
(6)使用直接狀態(tài),應(yīng)用層的數(shù)據(jù)能夠封裝在HPT層的狀態(tài)中,并且能夠從目標(biāo)傳輸?shù)绞及l(fā)者。為此,能夠縮短數(shù)據(jù)傳輸序列。
注意此實施方式的系統(tǒng)并不限于主機和打印機,而可以應(yīng)用于各種裝置。上述特征不僅對主機和打印機之間的關(guān)系有用,而且能夠用于使用較少的資源連接主機和外圍裝置以及外圍裝置之間的連接。
第二實施方式同時提供了多個邏輯通道的系統(tǒng)將作為本發(fā)明的第二實施方式來解釋。在此情況中,在目標(biāo)方,結(jié)合了打印機、傳真和圖像掃描儀的數(shù)字多功能機器被用于替代單一的打印機。
《系統(tǒng)布局》圖23是此實施方式的始發(fā)者的框圖。在圖23中,僅解釋不同于圖2的地方,并且公共部件的描述將被省略。圖23的典型特征是狀態(tài)標(biāo)識符212不僅標(biāo)識狀態(tài)類型而且標(biāo)識邏輯通道,并且以通道為單位配上狀態(tài)塊,而且具有為多個通道(圖23中的2)的每個通道附帶系統(tǒng)存儲器和HPT處理器的布局。
注意狀態(tài)標(biāo)識符212根據(jù)包括在狀態(tài)塊中的通道ID來標(biāo)識通道。這將在后面描述。例如,當(dāng)使用數(shù)字多功能機器時,不同的應(yīng)用可以被指派給不同的通道,也就是,一個通道被打印機驅(qū)動器使用而其它通道被圖像掃描儀使用,或者一個單一應(yīng)用可以使用多個通道。
圖22是目標(biāo)的框圖。不同于圖1的地方在于命令獲取代理113以通道為單位配上命令ORB。每個通道象圖1那樣具有相同的布局,并且具有一個預(yù)取隊列和兩個執(zhí)行代理(排隊和立即執(zhí)行代理)。
注意ORB指示一邏輯通道,并且命令獲取代理標(biāo)識引用它的通道。
《命令ORB的格式》圖24到32B顯示了命令ORB格式的例子。圖24顯示了數(shù)據(jù)傳輸命令ORB,圖25顯示了請求讀命令ORB,圖26顯示了直接狀態(tài)響應(yīng)命令ORB,圖27A和27B顯示了獲取設(shè)備資源E命令ORB,圖28顯示了釋放設(shè)備資源命令ORB,以及圖30顯示了基本設(shè)備狀態(tài)命令ORB。除了它們具有通道ID域外,這些命令ORB實際上與第一實施方式中的那些命令相同。
圖29顯示了放棄設(shè)備資源應(yīng)答命令ORB,該命令是對來自目標(biāo)的放棄設(shè)備資源請求的應(yīng)答。由于目標(biāo)缺乏資源,所以當(dāng)使用多個通道時和當(dāng)多個應(yīng)用在運行時,處理的資源可能變得缺乏。在此情況中,目標(biāo)發(fā)布放棄設(shè)備資源請求。
圖31A顯示了用于發(fā)布一通道打開請求的打開通道請求命令,并且圖31B顯示了對應(yīng)于該命令的打開通道請求狀態(tài)。使用這些命令和狀態(tài),所需的邏輯通道被打開。
圖32A顯示了用于發(fā)布一通道關(guān)閉請求的關(guān)閉通道請求命令,并且圖32B顯示了對應(yīng)于該命令的關(guān)閉通道請求狀態(tài)。使用這些命令和狀態(tài),所需的邏輯通道被關(guān)閉。
《狀態(tài)塊的格式》圖33A到38顯示了狀態(tài)塊的格式。圖33A到33顯示了狀態(tài)的一般格式,圖34顯示了讀請求狀態(tài),圖35顯示了直接狀態(tài),圖36顯示了獲取設(shè)備資源狀態(tài),并且圖38顯示了基本設(shè)備狀態(tài)。除了它們包括通道ID外,這些狀態(tài)的格式實際上與第一實施方式中的那些狀態(tài)相同。
圖37顯示了放棄設(shè)備資源狀態(tài)塊,該狀態(tài)塊在資源ID域3701中存儲用于請求始發(fā)者放棄的資源ID。由于此狀態(tài)是目標(biāo)所發(fā)布的請求,所以其作為自發(fā)狀態(tài)傳輸?shù)绞及l(fā)者。
《始發(fā)者和目標(biāo)中的命令/狀態(tài)處理過程》圖39A和39B顯示了此實施方式的始發(fā)者和目標(biāo)中的處理過程。圖39A顯示了對應(yīng)于第一實施方式圖18的處理過程,在始發(fā)者中,該過程基于在狀態(tài)寄存器中寫被啟動。當(dāng)處理被啟動時,在步驟S3901中通道ID被區(qū)分。此后,為此區(qū)分出來的通道執(zhí)行如步驟S1501中同樣的處理和圖18中的后續(xù)步驟。
圖39B顯示了對應(yīng)于第一實施方式圖15的處理過程,在目標(biāo)中,該過程基于在門鈴寄存器中寫被啟動。當(dāng)處理被啟動時,在步驟S3911中通道ID被區(qū)分。此后,為此區(qū)分出來的通道執(zhí)行如步驟S1601中同樣的處理和圖15中的后續(xù)步驟。
此外,為響應(yīng)數(shù)據(jù)傳輸請求而啟動的處理(圖14),由目標(biāo)代理執(zhí)行的處理(圖16)和對從打印機傳輸?shù)街鳈C的數(shù)據(jù)的產(chǎn)生的處理(圖17)與第一實施方式中的那些處理相同。然而,在這些處理之前,必須打開通道。
同樣,來自目標(biāo)的放棄資源請求請求以使用來自目標(biāo)的直接狀態(tài)的數(shù)據(jù)傳輸?shù)耐瑯有蛄斜话l(fā)布。
在此實施方式中,由上述過程執(zhí)行數(shù)據(jù)傳輸。除了使用多個邏輯通道外,此實施方式的系統(tǒng)實際上與第一實施方式中的相同。
此系統(tǒng)能夠為多個邏輯通道的每個提供全雙工通信。為此,甚至能夠為具有多個設(shè)備的裝置如數(shù)字多功能機器提供雙向通信。因此,在第一實施方式中描述的功能(1)到(6)也能夠為多個通道提供。
其它實施方式注意本發(fā)明既可以應(yīng)用于由多個裝置(如主機、接口設(shè)備、讀入器、打印機等等)構(gòu)成的系統(tǒng),也可以應(yīng)用于包括單個裝置(如復(fù)印機、傳真裝置等等)的裝置。
通過提供記錄軟件程序的程序代碼(也就是在圖14到18和圖39A和39B中顯示的過程的程序)的存儲介質(zhì)和由系統(tǒng)或裝置的計算機(或者CPU、MPU等等)讀出及執(zhí)行存儲在存儲介質(zhì)中的程序代碼也能達到本發(fā)明的目的,其中軟件程序能夠?qū)崿F(xiàn)上述系統(tǒng)或裝置的實施方式的功能。
在此情況中,從存儲介質(zhì)中讀出的程序代碼本身實現(xiàn)了上述實施方式的功能,并且存儲程序代碼的存儲介質(zhì)組成了本發(fā)明。
用于提供程序代碼的存儲介質(zhì),例如,軟盤、硬盤、光盤、磁光盤、CD-ROM、CD-R、磁帶、非逸失性存儲卡、ROM等等均可以使用。
上述實施方式的功能不僅可以通過由計算機執(zhí)行讀出的程序代碼來實現(xiàn),而且可以以程序代碼的指令為基礎(chǔ),通過由計算機上運行的OS(操作系統(tǒng))所執(zhí)行的一些或全部的實際處理操作來實現(xiàn)。
進一步地,在從存儲介質(zhì)中讀出的程序代碼被寫入擴展板或裝置的存儲器中之后,上述實施方式的功能可以通過由安排在功能擴展板或功能擴展裝置中的CPU等執(zhí)行的一些或全部的實際處理操作來實現(xiàn),這些擴展板被插入計算機或與計算機連接。
根據(jù)本發(fā)明重申允許異步雙向通信的全雙工通信能夠通過單一的注冊過程來實現(xiàn),并且數(shù)據(jù)交換所需的資源如處理器、存儲器等能夠被有效地使用。
由于始發(fā)者和目標(biāo)監(jiān)視彼此隊列的空閑大小,所以傳輸?shù)腛RB或狀態(tài)塊能夠可靠地接收。
由于使用了IEEE1394接口,所以當(dāng)目標(biāo)隨其資源可以使用而讀出數(shù)據(jù)時,就能執(zhí)行到目標(biāo)的數(shù)據(jù)傳輸,并且能夠防止始發(fā)者被目標(biāo)隨意的傳輸數(shù)據(jù)所占據(jù)。
由于使用了SBP-2,在目標(biāo)中單獨為ORB排隊,并且在處理等待時間中被傳輸?shù)臄?shù)據(jù)本身被存儲在始發(fā)者中。為此,目標(biāo)的存儲資源能夠減小。
使用直接狀態(tài),應(yīng)用層的數(shù)據(jù)被封裝在HPT層的狀態(tài)中,并且能夠從目標(biāo)傳輸?shù)绞及l(fā)者。為此,數(shù)據(jù)傳輸序列能夠縮短。
同樣,能夠?qū)崿F(xiàn)多通道。
同樣地,只要不偏離本發(fā)明中的原理和范圍,本發(fā)明的許多明顯地、廣泛地不同實施方式均可實現(xiàn),應(yīng)該理解的是本發(fā)明不僅限于附加的權(quán)利要求中定義的特定的實施方式。
權(quán)利要求
1.通過從一個目標(biāo)(100)訪問始發(fā)者(200)的存儲區(qū)域(208)來交換數(shù)據(jù)的通信控制方法,其特征在于所述始發(fā)者(200)將對應(yīng)于讀寫訪問所述存儲區(qū)域(208)的命令傳輸?shù)剿瞿繕?biāo)(100),使得不超出所述目標(biāo)(100)能夠保留的讀寫命令數(shù),并且所述目標(biāo)(100)異步處理接收到的讀寫命令。
2.根據(jù)權(quán)利要求1的方法,其特征在于所述目標(biāo)(100)將寫命令保留在容量為1的隊列中,并且處理隊列(104)中的命令。
3.根據(jù)權(quán)利要求1的方法,其特征在于在所述存儲區(qū)域(208)中接收到從所述目標(biāo)(100)來的數(shù)據(jù)寫請求后,所述始發(fā)者(200)在隊列中保留該請求,并且發(fā)布一寫命令給所述目標(biāo)(100)。
4.根據(jù)權(quán)利要求3的方法,其特征在于所述目標(biāo)(100)發(fā)布寫請求給所述始發(fā)者(200),使得不超出所述始發(fā)者(200)的所述隊列所能保留的請求數(shù)。
5.根據(jù)權(quán)利要求1到4中的任一個的方法,其特征在于所述始發(fā)者(200)在所述存儲區(qū)域(208)中發(fā)布一寫命令以響應(yīng)來自所述目標(biāo)(100)的請求。
6.根據(jù)權(quán)利要求5的方法,其特征在于當(dāng)待傳輸?shù)剿鍪及l(fā)者(200)的數(shù)據(jù)小于預(yù)定的大小時,所述目標(biāo)(100)不要求所述始發(fā)者(200)在所述存儲區(qū)域中寫,并且在所述始發(fā)者(200)中的所述存儲區(qū)域(208)的預(yù)定區(qū)域中直接寫入數(shù)據(jù)。
7.根據(jù)權(quán)利要求1到6的任一個的方法,其特征在于所述目標(biāo)(100)和始發(fā)者(200)指派通道標(biāo)識符給讀寫命令,并且按通道標(biāo)識符來單獨處理命令。
8.通過一個從目標(biāo)訪問始發(fā)者的存儲區(qū)域來交換數(shù)據(jù)的通信系統(tǒng),其特征在于所述始發(fā)者將對應(yīng)于讀寫訪問所述存儲區(qū)域的命令傳輸?shù)剿瞿繕?biāo),使得不超出所述目標(biāo)能夠保留的讀寫命令數(shù),并且所述目標(biāo)將接收到的讀寫命令保留在不同的隊列中,并且單獨處理保留的命令。
9.根據(jù)權(quán)利要求8的系統(tǒng),其特征在于所述目標(biāo)將寫命令保留在容量為1的隊列中,并且處理隊列中的命令。
10.根據(jù)權(quán)利要求8或9的系統(tǒng),其特征在于在所述存儲區(qū)域中接收到從所述目標(biāo)來的數(shù)據(jù)寫請求后,所述始發(fā)者在隊列中保留該請求,并且發(fā)布一寫命令給所述目標(biāo)。
11.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述目標(biāo)發(fā)布寫請求給所述始發(fā)者,使得不超出所述隊列所能保留的請求數(shù)。
12.根據(jù)權(quán)利要求8到11中的任一個的系統(tǒng),其特征在于所述始發(fā)者在所述存儲區(qū)域中發(fā)布一寫命令以響應(yīng)來自所述目標(biāo)的請求。
13.根據(jù)權(quán)利要求12的系統(tǒng),其特征在于當(dāng)待傳輸?shù)剿鍪及l(fā)者的數(shù)據(jù)小于預(yù)定的大小時,所述目標(biāo)不要求所述始發(fā)者在所述存儲區(qū)域中寫,并且在所述始發(fā)者中的所述存儲區(qū)域的預(yù)定區(qū)域中直接寫入數(shù)據(jù)。
14.根據(jù)權(quán)利要求8到13的任一個的系統(tǒng),其特征在于所述目標(biāo)和始發(fā)者指派通道標(biāo)識符給讀寫命令,并且按通道標(biāo)識符來單獨處理命令。
15.用于通過存儲區(qū)域與目標(biāo)交換數(shù)據(jù)的通信控制裝置,其特征在于用于與目標(biāo)通信的裝置;包括所述存儲區(qū)域的存儲器;用于將來自目標(biāo)的自發(fā)請求進行排隊的隊列管理裝置;以及用于產(chǎn)生和傳輸對應(yīng)于所述存儲區(qū)域的讀寫命令的命令產(chǎn)生裝置,以響應(yīng)來自應(yīng)用或所述目標(biāo)的請求,使得不超出所述目標(biāo)所能保留的讀寫命令數(shù)。
16.根據(jù)權(quán)利要求15的裝置,其特征在于進一步包括用于使用通道標(biāo)識符區(qū)分對應(yīng)于來自所述目標(biāo)的請求的通道的通道區(qū)分裝置,并且在該所述命令傳輸裝置中將對應(yīng)于不同通道的通道標(biāo)識符或?qū)?yīng)于應(yīng)用的通道指派給該命令。
17.用于通過訪問所述始發(fā)者的存儲區(qū)域與始發(fā)者交換數(shù)據(jù)的通信控制裝置,其特征在于包括用于與所述始發(fā)者通信的裝置;用于保留從所述始發(fā)者處接收到的讀命令并且具有預(yù)定大小的隊列;用于從所述隊列中獲得和執(zhí)行讀命令的排隊執(zhí)行裝置;用于在接收之后立即執(zhí)行從所述始發(fā)者處接收的寫命令的立即執(zhí)行裝置;以及發(fā)布數(shù)據(jù)傳輸請求到所述始發(fā)者的傳輸請求裝置。
18.根據(jù)權(quán)利要求17的裝置,其特征在于進一步包括用于使用通道標(biāo)識符區(qū)分對應(yīng)于來自所述始發(fā)者的命令的通道的通道區(qū)分裝置,用于將被指配了一個對應(yīng)于不同通道的通道標(biāo)識符的應(yīng)答發(fā)送回所述始發(fā)者的應(yīng)答裝置,并且在該所述傳輸請求裝置中將對應(yīng)于不同通道的通道標(biāo)識符或?qū)?yīng)于應(yīng)用的通道指派給該請求。
19.根據(jù)權(quán)利要求18的裝置,其中當(dāng)所述始發(fā)者的數(shù)據(jù)大小大于預(yù)定大小時,所述傳輸請求裝置請求所述始發(fā)者發(fā)布一數(shù)據(jù)寫命令給所述存儲區(qū)域,并且當(dāng)數(shù)據(jù)大小小于預(yù)定大小時,直接將數(shù)據(jù)寫入所述存儲區(qū)域的預(yù)定區(qū)域。
20.使用權(quán)利要求1到7的任一個的通信控制方法的打印系統(tǒng),其特征在于作為始發(fā)者的主機裝置被連接到作為目標(biāo)的打印機裝置,所述打印機裝置從所述主機裝置中接收打印數(shù)據(jù)并且將接收的打印數(shù)據(jù)打印出來,并且所述主機裝置接收所述打印機裝置的狀態(tài)。
21.通過權(quán)利要求15的通信控制方法,用于傳輸打印數(shù)據(jù)到目標(biāo)以及用于接收來自所述目標(biāo)的狀態(tài)信息的打印控制裝置。
22.通過權(quán)利要求17的通信控制方法,用于從始發(fā)者中接收打印數(shù)據(jù)以及用于傳輸狀態(tài)信息到所述始發(fā)者的打印裝置。
全文摘要
通過從一個目標(biāo)(100)訪問始發(fā)者(200)的存儲區(qū)域(208)來交換數(shù)據(jù)的通信控制方法,所述始發(fā)者(200)將對應(yīng)于讀寫訪問所述存儲區(qū)域(208)的命令傳輸?shù)剿瞿繕?biāo)(100),使得不超出所述目標(biāo)(100)能夠保留的讀寫命令數(shù),并且所述目標(biāo)(100)異步處理接收到的讀寫命令。
文檔編號G06F13/12GK1219705SQ9811913
公開日1999年6月16日 申請日期1998年9月9日 優(yōu)先權(quán)日1997年9月9日
發(fā)明者磯田隆司, 志村明弘 申請人:佳能株式會社