以下、本明細書の一部を構成する添付図面を参照して、詳細な説明を行う。しかしながら、本明細書中に記載されている配置は、例としてのみ記載されていることは理解されるべきである。このように、当業者であれば、他の配置および構成要素(例えば、機械、インターフェース、機能、機能の順序、など)が代わりにまたは加えて利用可能なことは、十分理解するだろう。さらに、本明細書中に記載されている構成要素の多くは、個別または分散された構成要素として、または他の構成要素と一緒に、および任意の適切な組み合わせおよび位置で実行されてもよい機能エンティティである。1以上のエンティティにより実行されるような本明細書中に記載されている様々な機能は、ハードウェア、ファームウェア、またはソフトウェア論理により実行されてもよい。例えば、本明細書中に記載されている様々な機能は、任意の適切なプログラミング言語で記述されてメモリに格納された命令を実行するプロセッサにより実行されてもよい。
本記述において、少なくとも2つの言葉が記述されたリストで接続詞「または」を使用するのは、リスト化された言葉の何れかまたはリスト化された言葉の任意の組み合わせを示すためである。「第1」、「第2」、「第3」などの序数の使用は、これらの構成要素の特定の順序を示すというよりは、それぞれの構成要素を区別するためである。
[1.概要]
印刷デバイスは、様々なタイプのハードウェアに依存し、文書を印刷する処理に関連しているタスクを実行する。ハードウェアの1つタイプには、特定用途向け集積回路(ASIC)が含まれる。ASICは特定のタスクを実行するように構成できる。ASICの1つのメリットは、ASICが多数のタスクを並行に実行できることである。例えば、ASICは、数千の静的変数を並行して評価することができる。その結果、ASICの計算能力により、印刷デバイスおよび他の関連装置は、優れた性能を発揮することができる。
しかしながら、ASICの欠点は、柔軟性に欠けることである。特に、ASICの機能性は、一旦構成されると、修正ができない。その結果、様々なタスクを実行するためにASICの構成を修正する必要がある場合、ASICを置き換える必要があるかもしれない。ASICの置き換えは、高価な、および/または時間のかかる可能性がある。ASICを再構成する必要がある理由には、プロトコル変更、機能性の向上、欠陥の補正、設計の修正、または他の理由が含まれる。
印刷する文書処理タスクを実行するために印刷デバイスが利用可能な代替タイプのハードウェアは、マイクロコントローラである。マイクロコントローラは、タスクを実行するように構成可能な低コストのハードウェア装置である。マイクロコントローラには、プロセッサ、メモリ、および入出力装置を含めてもよい。マイクロコントローラは、メモリに格納されたソフトウェア命令を実行するためにプロセッサを使用することにより構成された特定のタスクを完了させる。
マイクロコントローラの1つのメリットは、柔軟性である。特に、マイクロコントローラが様々なタスクを実行するためにマイクロコントローラの構成を修正する必要がある場合、構成は、マイクロコントローラに格納されたソフトウェアを修正することにより変更できる。例えば、マイクロコントローラをプロトコル変更、ソフトウェアのバグ補正、機能性の向上、設計の修正、またはある他の理由のために再構成する必要がある場合、マイクロコントローラを再構成可能な1つの方法は、マイクロコントローラにアップデートされたソフトウェアをダウンロードおよび/または格納することである。ハードウェアは、置き換える必要がないかもしれない。結果として、マイクロコントローラの構成変更は、安価になるかもしれない。このように、マイクロコントローラは、印刷デバイスにとって柔軟なハードウェア実装である。
マイクロコントローラの1つの欠点は、性能である。特に、マイクロコントローラによるタスクの実行は、本来順次的である。一方、ASICは、多数のタスクを並行して実行できる。その結果、リアルタイムで実行予定の多数のタスクを要求する操作にとって、ASICは、マイクロコントローラより著しく速くタスクを実行するかもしれない。それは、ASICがタスクを並行に実行できるのに対して、マイクロコントローラはタスクを直列に実行するためである。
本開示のシステムおよび方法は、マイクロコントローラによるタスクのリアルタイム性能を向上させる。具体的には、マイクロコントローラは、タスクをリアルタイムで実行するために2段階ソリューションを実行する。厳密に言えば、マイクロコントローラは、構成ステージを実行後、リアルタイムでランタイムステージを実行する。構成ステージはアプリケーションのリアルタイム実行より先に完了するため(例えば、ランタイムステージ)、マイクロコントローラのリアルタイム性能は、ランタイムステージに基づき測定できる。
構成ステージの間、マイクロコントローラは、静止状態、分岐、およびアクションを評価し、状態遷移リスト、事前評価された状態マスク、および事前評価された制御マスクを生成する。マイクロコントローラは、また、構成ステージの間に静的オブジェクトおよび/または変数を評価してもよい。ランタイムステージの間、マイクロコントローラは、生成された状態遷移リスト、状態マスク、および制御マスクに基づき所定のアクションを実行する。マイクロコントローラは、また、ランタイムステージの間に動的オブジェクトおよび/または変数を評価してもよい。動的変数は、装置状態のような、ランタイム間に評価される変数でもよい。構成ステージはランタイムステージより先に実行されるため、マイクロコントローラのリアルタイム性能は向上する。
開示されているシステムおよび方法が様々なコンピューティング・デバイスに適用できるのに対し、図1A乃至図6Cに示される実施形態において、システムおよび方法は、マイクロコントローラを使用した印刷デバイスに対して説明される。それと共に、図1A乃至図6Cに示される実施形態に対して、説明されているシステムおよび方法は、印刷デバイスに対してアプリケーションをレンダリングする2次元画像に適用される。しかしながら、他の実施形態においては、開示されたシステムおよび方法は、アプリケーションに適用してもよい。また、開示されたシステムおよび方法は、異なるコンピューティング・デバイスにより実行されてもよい。さらに、システムおよび方法は、マイクロコントローラ以外のハードウェアにより実行されてもよい。
図1Aは、ステートマシン100の状態遷移図を示す。図1Aのステートマシン100は、2段階実行することなく、リアルタイムで実行されてもよい。図1Aに示された実施形態において、ステートマシン100は、2次元画像をレンダリングする順序の処理に対応する。順序には、画像データを含む1以上のオブジェクトが含まれる。しかしながら、他の実施形態においては、ステートマシン100は、異なるオブジェクト、順序、および/またはアプリケーションに対するものである可能性がある。
ステートマシン100には、状態101乃至110、151乃至160、および171乃至192が含まれる。各状態は、斜線を施した楕円形として表される。状態101乃至110は、リアルタイムで実行される状態に対応する。状態151乃至160および171乃至192は、ステートマシン100のリアルタイム実行より先に事前評価できる状態に対応する。状態151乃至160は、状態103に続き得る状態で、図1Cにおいてさらに詳細に説明される。各状態に対して、ソフトウェア・コードの一部は、状態を実行するためのコンピューティング・デバイスのメモリに格納されてもよい。
図1Aの2つの状態間の矢印は、1つの状態から他の状態への可能性のある遷移を表している。例えば、状態179は3つの矢印を含み、そのうち1つは状態180を指し、別の1つは状態184に指し、最後の1つは状態185を指す。このように、状態179の実行によって、直後の状態は、状態180、状態184、または状態185になり得る。場合によっては、状態は、その状態から次の可能性のある状態を指し示す1つの矢印を有するのみでもよい。例えば、状態101は、状態101から状態102を指し示す1つの矢印を有するのみである。この矢印は、状態102は状態101に続き得る唯一の状態でもよいことを示している。このように、状態101が完了すると、実行は状態102に進む。
代わりに、2つの状態間の遷移は、斜線を施した円の重複により示してもよい。例えば、状態102および103は、重複する楕円形を有している。かかる場合には、状態102がはじめに実行された後、状態103が続く。状態が重なっている場合、その状態を指し示す矢印を有する状態が、重複している状態のうち最初に実行されてもよい。その状態から離れて指し示す矢印を含む状態が、重複している状態のうち2番目に実行されてもよい。このように、状態102および103、104および105、並びに106および107の重複するペアに関して、状態103、105、および107は、それぞれ状態102、104、および106の実行に続いてもよい。
図1Aは、ステートマシンのリアルタイム実行をASICからマイクロコントローラに変更する際の問題を説明するために利用できる。特に、ハードウェアの変更は、ステートマシン100のリアルタイム実行性能を著しく減少させるかもしれない。前述のように、ASICは、数千の静的オブジェクト変数を並行に評価するように構成できる。その結果、多数の状態および遷移を含む、図1Aにおけるステートマシンを、多数のタスクを並行に実行するASICは、リアルタイムで迅速に評価できる。具体的に言えば、評価する次の状態を決定するためにどの遷移を利用するかを決定するために、状態が評価されてもよい。例えば、状態179は、次の状態が状態180、状態184、または状態185かどうか決定するために評価されてもよい。ASICは、状態179、180、184、185、および/または他の状態を並行に評価できる。その結果、ステートマシン100のリアルタイム性能は向上する。
マイクロコントローラは、しかしながら、タスクを直列に実行する。このように、マイクロコントローラは、状態179を実行してもよい。状態179を実行する一方、マイクロコントローラは、続いて状態180、状態184、または状態185が状態179に続くかどうか決定してもよい。状態179を実行後、マイクロコントローラは、続いて、状態179の実行結果によって、状態180、状態184、または状態185のうち1つを実行する。状態180、状態184、または状態185のうち1つを実行する一方、マイクロコントローラは、また、状態180、状態184、または状態185の実行に続く状態を決定してもよい。この状態の直列実行は、ステートマシン100に表示される多数の、およびおそらく全ての状態および/または遷移に適用するだろう。その結果、マイクロコントローラによるステートマシン100のリアルタイムでの実行は、ASICによるステートマシン100のリアルタイム実行よりも極めて長くなるだろう。
図1Bは、状態103の状態アクション判定を表示する一例を示す。図1Bには、状態101、103、104、106、108、および151乃至160が含まれる。図1Bには、また、条件121乃至135およびタスク141乃至146が含まれる。実施形態によっては、図1Bには、図1Bに示されているよりも多い、少ない、および/または示されているものとは異なる状態、タスク、および/または条件が含まれてもよい。
図1Bに見られるように、現在の状態(例えば、状態103)に続くべき状態の決定には、多数の条件(例えば、条件121乃至135)の評価および1以上のタスク(例えば、タスク141乃至146)の実行が要求されてもよい。ASICに関しては、ASICは多数の条件およびタスクを並行に処理できるため、この評価は、リアルタイム性能を妨げないかもしれない。しかしながら、マイクロコントローラに関しては、マイクロコントローラはタスクおよび条件を直列に処理するため、次の状態を決定するための多数の条件およびタスクの処理により、リアルタイム性能が落ちるかもしれない。このように、マイクロコントローラによる個別の状態のリアルタイム実行は、ASICと比較すると性能が劣るかもしれない。
マイクロコントローラの低性能に対処する1つの方法は、リアルタイムでステートマシン100を実行するための2段階法を実行することである。具体的に言うと、第1ステージは、ステートマシン100の残りの状態および条件のリアルタイム実行より先に、様々な状態(例えば、状態101乃至110、151乃至160、および171乃至192)および条件(例えば、状態103に対する条件121乃至135)を事前評価するために利用できる。1以上の状態および条件を事前評価することにより、マイクロコントローラによるステートマシン100のリアルタイム実行を向上させることができる。
図1Cは、実行された2段階実行によるステートマシン100のリアルタイム実行を示し、これがステートマシン150となる。ステートマシン150には、ステートマシン100の状態101乃至110が含まれる。ステートマシン150には、ステートマシン100の状態151乃至160および状態171乃至192は含まれない。具体的に言うと、2段階実行を行う場合、リアルタイム実行に先立つ第1ステージの間に、状態151乃至160および状態171乃至192がステートマシン150のリアルタイム実行の間に実行されないことを決定してもよい。その結果、状態101乃至110のみがリアルタイムで実行される。このように、ステートマシン150には、状態101乃至110が含まれるのみである。実施形態によっては、1以上の状態101乃至110、151乃至160および状態171乃至192が、状態101乃至110のリアルタイム実行より先に部分的にまたは全て事前評価されてもよい。
2段階実行を行うことにより、マイクロコントローラのリアルタイム性能が向上する。具体的には、リアルタイムでステートマシン100の状態および遷移を実行する代わりに、マイクロコントローラは、ステートマシン150に表示された状態および遷移を実行するのみである。例えば、ステートマシン150は、実行すべき10の状態(状態101乃至110)を有するのみである一方、ステートマシン100は、実行すべき42の状態(状態101乃至110、151乃至160、および171乃至192)を潜在的に有する。このように、2段階実行を行うことは、リアルタイムで実行すべき状態および遷移の数が減少することにより、マイクロコントローラのリアルタイム性能を向上させることができる。
それと共に、2段階実行は、特定の状態に対するマイクロコントローラのリアルタイム性能を向上させることができる。図1Bを参照すると、1以上の条件121乃至135は、リアルタイム実行より先に事前評価されてもよい。それと共に、1以上のタスク141乃至146も、リアルタイム実行より先に完了してもよい。その結果、リアルタイムでの状態103の実行には、たとえあったとしても、条件121乃至135のうちより少ない条件の評価しか含まれないかもしれない。さらに、リアルタイムでの状態103の実行には、たとえあったとしても、タスク141乃至146のうちより少ないタスクの実行しか含まれないかもしれない。
図1Bを参照すると、一例において、第1ステージの間、条件121、123,124及び125は、「no」という結果として評価される一方、条件122は、「yes」という結果として評価されたかもしれない。それと共に、条件128は、「yes」の結果で評価されたかもしれない。その結果として、次の状態に進む前にリアルタイムで実行される必要があるかもしれないタスクは、タスク142および144のみであり、これは状態104である。実施形態によっては、タスク142および/または144は、リアルタイムで実行されてもよい。他の実施形態においては、タスク142および/または144は、第2ステージのリアルタイム実行より先に、第1ステージの間に実行されてもよい。このように、2段階実行の実施は、リアルタイムで処理する状態および遷移の数を減少させ、特定の状態に対して処理する条件および/またはタスクの数を減少させることにより、マイクロコントローラのリアルタイム性能を向上させることができる。
図1Aおよび図1Cは、ステートマシン100および150の実施形態を示したが、他の実施形態においては、ステートマシンには、より多い、より少ない、および/または異なる状態および/または遷移を含めてもよい。ステートマシンの他の構成も可能である。
[2.印刷デバイスのコンピューティング・デバイス構成要素の例]
図2は、印刷デバイス200の例示の実施形態をマイクロコントローラ201で示す。
マイクロコントローラ201には、プロセッサ202、メモリ204、および入出力部206を含めてもよく、これらの全ては、マイクロコントローラ・システムバス208または類似のメカニズムにより接続されてもよい。プロセッサ202は、1以上のプロセッサを表してもよい。
メモリ204は、次に、揮発性および/または非揮発性データ記憶部を備えてもよく、プロセッサ202に全体または一部統合させることができる。メモリ204は、プロセッサ202により実行可能なプログラム命令、およびその命令により操作されるデータを格納して、本明細書中に記載されている様々な方法、処理、または機能を実行してもよい。代わりに、これらの方法、処理、または操作は、ハードウェア、ファームウェア、および/またはハードウェア、ファームウェアおよびソフトウェアの任意の組み合わせにより定義できる。そのため、メモリ204には、有形で非一時的なコンピュータ読取可能な記録媒体を含めてもよく、この記憶媒体には、1以上のプロセッサによる実行の際に、本明細書または添付図面に開示された方法、処理、または機能の何れかをマイクロコントローラ201および/または印刷デバイス200に実行させるプログラム命令が格納されている。
入出力部206は、図1A乃至図6Cに記載されているようなプロセッサ202およびマイクロコントローラ201の操作を構成および/または制御するために役立ててもよい。入出力部206は、また、プロセッサ202により実行される操作に基づく出力を提供してもよい。
表示されていないが、印刷デバイス200には、それ自身の専用プロセッサ、メモリ、入出力部、および/またはシステムバスを含めてもよい。印刷デバイス・プロセッサには、1以上の汎用プロセッサおよび/または1以上の専用プロセッサ(例えば、特定用途向け集積回路(ASIC)またはデジタル・シグナル・プロセッサ(DSP)、など)のような1以上の中央処理装置(CPU)、および/または1以上のマイクロコントローラ(例えば、マイクロコントローラ201)を含めてもよい。印刷デバイス・プロセッサには、マイクロコントローラ201を含めてもよいが、他の実施形態においては、マイクロコントローラ201は、印刷デバイス・プロセッサとは分離させてもよい。印刷デバイス・プロセッサには、マイクロコントローラ201とは異なるマイクロコントローラを含めてもよい。印刷デバイス・プロセッサの他の構成も可能である。印刷デバイス200は、クライアント装置またはサーバのような、ネットワーク装置でもよい。表示されていないが、印刷デバイス200には、ネットワークを介した他の装置との通信をサポートするネットワークインターフェイスを含めてもよい。
これら例示の印刷デバイスは、例証目的に提供される。上記の例に加えおよび/または代わりに、プリンタとコンピュータ技術の他のコンビネーションおよび/またはサブコンビネーションは、いくつかある可能性の中でも特に、本明細書中の実施形態の要旨を逸脱しない範囲で存在してもよい。
[3.構成およびランタイムステージ]
図3は、例示のステートマシン実行のループ階層300を示す。図3において、処理タスクはループ階層300に基づき分類される。図3の処理タスクは、印刷デバイス200により実行されるジョブに関連付けられている。ジョブは、2次元画像をレンダリングするためのものでもよい。しかしながら、他の実施形態においては、他のジョブも可能でもよい。また、他の実施形態においては、異なるループ階層を利用してもよい。さらに、印刷デバイス200とは異なるコンピューティング・デバイスを、ジョブの実行のために利用してもよい。
図3に示された実施形態に関しては、印刷デバイス200は、1以上のページを含むジョブを処理してもよい。各ページは、1つのプリンタ定義言語(PDL)で記述されてもよい。各ページには、数千もの順序を含めてもよい。順序の例には、文字、多角形、三角形、またはベクトルが含まれる。他のタイプの順序も可能である。
各順序には、1以上のオブジェクトが含まれる。例示のオブジェクトには、スキャンライン・テーブル、フレーム、台形、または他のオブジェクトが含まれる。スキャンライン・テーブル・オブジェクトは、任意の形状を表す一方、フレーム・オブジェクトは矩形を表す。他のオブジェクトも可能である。
各オブジェクトには、1以上の平面が含まれる。平面の例には、テキスト平面、カラー平面(シアン、マゼンタ、イエロー、またはブラック)、透明性平面、ベクトル平面、画像平面、または作業平面が含まれる。各オブジェクトには、アクティブないくつかの平面および非アクティブな他の平面を含めてもよい。例えば、オブジェクトが白黒で描かれる場合、ブラックの平面のみがアクティブである一方、シアン、マゼンタ、およびイエローの平面は非アクティブでもよい。実施形態によっては、オブジェクトには、8つものアクティブな平面を含めてもよい。
各オブジェクトおよび各アクティブな平面には、オブジェクトを1以上の平面により定義されたように生成するための1以上のラインを含めてもよい。例えば、ブラックの部分および別々のシアンの部分を含むフレーム・オブジェクト(矩形)は、オブジェクトのブラックの部分に対応するブラックの平面により定義されて描かれたライン、およびオブジェクトのシアンの部分に対応するシアンの平面により定義されて描かれたラインを有してもよい。オブジェクトには、必要に応じた多数のラインを含めてもよい。例えば、場合によっては、オブジェクトには、何百もの線分を含めてもよい。しかしながら、オブジェクトには、より多い、またはより少ないラインを含めることができる。このように、オブジェクトを描くために、多数のラインがオブジェクトの1以上の平面により描かれ、定義されてもよい。
ジョブおよび/またはページに関連付けられている処理タスクは、コンピューティング・デバイスのCPUにより処理されてもよい。CPUタスクには、ジョブまたは1以上のページに対する、PDLの解釈、メモリの配分、および/または他のタスクを含めてもよい。特定の順序、オブジェクト、平面、またはラインに関連付けられている処理タスクは、印刷デバイス200のマイクロコントローラ201のような、マイクロコントローラにより処理されてもよい。他の実施形態においては、他のハードウェアおよび/またはコンピューティング・デバイスが、ジョブ、ページ、オブジェクト、平面、および/またはラインに関連付けられている処理タスクを処理してもよい。
図3は、マイクロコントローラ201により実行されるタスクに対するループ階層300を示す。例えば、特定の順序305に対し、マイクロコントローラ201は、まず順序を解析し(ブロック306参照)、続いて順序を構成してもよい(ブロック307参照)。一旦、順序が構成されると、順序のオブジェクトの全てが、構成された順序で処理されてもよい。上述のように、各順序には、1以上の平面を含めてもよい。このように、各オブジェクトに対し、平面が処理されてもよい。
特定の平面320に対し、マイクロコントローラは、最後の平面が処理されたかどうか判断する(ブロック321参照)。処理されていない場合、マイクロコントローラは、平面がアクティブな平面かどうか判断する(ブロック322参照)。平面が非アクティブな場合、マイクロコントローラは非アクティブな平面をスキップし(ブロック326参照)、次の残りの平面の処理に進む。代わって、平面が残っていない場合、マイクロコントローラは、次のオブジェクトを処理してもよい。特定の順序のオブジェクトの全てが処理された場合、マイクロコントローラは、次の順序の処理に進んでもよい。
特定の平面がアクティブな平面330である場合、アクティブな平面は、まずレンダリングされ(ブロック331参照)、続いて構成される(ブロック332参照)。一旦、平面が構成されると、ライン操作340が実行されてもよい。実行されるライン操作は、処理されるオブジェクトのタイプに依存してもよい。図3において、スキャンライン・テーブル・オブジェクト・ライン操作341は、スキャンライン・テーブル・オブジェクトに対して実行される。フレーム・オブジェクト・ライン操作342は、フレーム・オブジェクトに対して実行される一方、他のオブジェクト・ライン操作343は、他のオブジェクトに対して実行される。
図3に示される実施形態において、ライン操作340は、ランタイムステージの間にリアルタイムで実行されてもよい。さらに、アクティブな平面330、非アクティブな平面325、全ての平面320、および順序305に関連付けられているタスクは、リアルタイム実行より先に構成ステージの間に実行されてもよい。ランタイムステージのリアルタイム実行より先に構成ステージの間に順序305、平面320、325、および330に関連付けられている処理タスクを実行することにより、マイクロコントローラ201によるリアルタイム処理を向上させることができる。
図3の実施形態が順序、平面、およびラインに関連付けられている様々なタスク(例えば、タスク306、307、321、322、326、331、332、341、342、343)を示す一方、表示されていない他のタスクも、順序、平面、またはラインに関連付けられてもよい。それと共に、実施形態によっては、図3に示されるタスクは、実行される必要がなくてもよいし、異なる順序で実行されてもよい。それと共に、異なるループ階層も可能である。例えば、ループ階層には、オブジェクトベースごとに実行されるタスクを含めてもよい。
図4は、印刷デバイス200のマイクロコントローラ201により実行される2段階処理400の一例をブロック図にて示す。表示されている実施形態において、2段階処理400には、構成ステージ405およびランタイムステージ410が含まれる。ランタイムステージ410のリアルタイム実行より先に実行される構成ステージ405を含むことにより、マイクロコントローラ201のリアルタイム性能は、向上する。他の実施形態においては、2段階処理400には、表示されている2つのステージより多いステージを含めてもよい。特に、多数のステージは、ランタイムステージのリアルタイム実行より先に実行されてもよい。2段階処理400の他の実施形態も可能である。
構成ステージ405には、アプリケーションのリアルタイム実行より先に実行される複数のタスクが含まれ、これはランタイムステージ410に対応する。表示されている実施形態において、構成ステージ405には、中間変数判定415、状態遷移リスト構成420、およびマスク判定425が含まれる。それと共に、構成ステージ405には、スキャンライン・テーブル構成430、台形構成435、および反転マッピング構成440を含む、オプションのオブジェクト構成タスクを含めてもよい。実施形態によっては、構成ステージ405には、図4に示されるものより多い、少ない、および/または示されるものとは異なるタスクを含めてもよい。
中間変数は、特定のオブジェクトに対する構成ステージ405の中間変数判定415のタスクの間に決定される。中間変数には、ランタイムステージ410より先にマイクロコントローラにより評価される静的パラメータを含めてもよい。中間変数判定415のステップの間に評価される中間変数は、構成ステージ405の間の他のステップの間に利用されてもよい。例えば、状態遷移リスト構成420、マスク判定425、スキャンライン・テーブル構成430、台形構成435、および/または反転マッピング構成440のようなステップは、中間変数判定415のステップの間に評価される1以上の中間変数に依存してもよい。中間変数は、また、ランタイムステージ410の間に依存されてもよい。
状態遷移リスト構成420は、特定のオブジェクトに対する所定の状態の連結リストを生成する。連結リストには、特定のオブジェクトに対してランタイムステージ410の間に実行される複数の所定の状態を含めてもよい。状態遷移連結リストは、外側ループ、外側ループ・タスク、外側ループ条件、および/または他のループまたはループ部分を評価することにより、構成ステージ405の間に生成されてもよい。例えば、リストは、順序305ごとに、平面320ごとに、非アクティブな平面325ごとに、またはアクティブな平面330ごとに行われるタスクと見なされてもよいタスクを実行することにより、構成ステージ405の間に生成されてもよい(図3参照)。
他の例に関して、図1Bは、所定の状態遷移リストを生成するために構成ステージ405の間に事前評価されてもよい1以上の条件121乃至135および1以上のタスク141乃至146を示してもよい。前述のように、構成ステージ405の間に、条件121、123、124、125及び126は、「no」として事前評価され、条件122、127および128は、「yes」として事前評価されてもよい。その結果、状態104は状態103に続くであろう。図1Bの条件を事前評価することにより、所定の状態遷移リストには、ここで、状態103および104、および状態103が状態104に先行するという情報を含めてもよい。構成ステージ405の間、状態104は、続いて状態104に続くべき状態を事前に決定するために事前評価されてもよい。
他の例に関して、図1Cは、2段階実行を行うステートマシン150の状態遷移図を示す。具体的に言うと、図1Cの状態遷移リストには、以下の順序の以下の状態を含めてもよい:状態101、状態102、状態103、状態104、状態105、状態106、状態107、状態108、状態109、および状態110。図1Aに関して前述のように、各状態は、印刷デバイス200および/またはマイクロコントローラ201のメモリに格納されるソフトウェア・コードの一部を表してもよい。一実施形態においては、状態遷移リストは、連結リストとして格納される。しかしながら、他の実施形態においては、状態遷移リストは、異なる方法で格納されてもよい。それと共に、他の実施形態においては、より多い、より少ない、および/または異なる状態が、状態遷移リストの一部として格納されてもよい。それと共に、状態は、図1Cに示され、または説明されている順序とは異なる順序で格納されてもよい。
所定の状態遷移連結リストの各所定の状態は、各所定の状態に関連付けられている所定のアクションを有してもよい。例えば、マイクロコントローラによる、状態103のような、所定の状態の実行には、状態104のような、次の状態に遷移するより先に所定のアクションを実行することが要求されてもよい。図1Bを参照すると、状態103に対する所定のアクションは、状態104の実行より先にタスク143またはタスク144を実行することでもよい。実施形態によっては、状態103には、状態103に対する所定のアクションの一環として他のタスク(図示せず)を含めてもよい。代わりに、状態103には、実施形態によっては、多数の所定のアクションを含めてもよい。図1Bには示されないが、実施形態によっては、状態103に対するタスク141乃至146のうち1以上のような、特定の状態に対する所定のアクションは、状態103に対する条件121乃至135のような、状態に対する任意の条件を評価せずに実行されてもよい。所定のアクションは、ランタイムステージ410の間に実行されてもよい。しかしながら、特定の所定の状態に対する所定のアクションは、構成ステージ405の間に決定されてもよい。
実施形態によっては、所定の状態に対する所定のアクションには、1以上のタスクを含めてもよい。タスクは、1以上の装置に制御出力を送信するマイクロコントローラに対応してもよい。実施形態によっては、マイクロコントローラは、1以上の装置の第1サブセットは1以上の装置の第2サブセットに制御出力を送信する前に、準備できていると判断する。1以上の装置への制御出力の送信は、一実施形態においては所定の状態の所定のアクションであってよいが、他の実施形態においては、所定の状態に対する所定のアクションの一環として、追加のタスクが制御出力の送信に加えて実行されてもよい。代わりに、所定の状態に対する所定のアクションは、所定の状態に対する条件を評価することでもよい。例えば、実施形態によっては、所定のアクションは、図2Bの状態103のような、特定の状態に対する、図2Bの条件121乃至135のような、条件を評価することでもよい。所定の状態に対する他の所定のアクションも可能である。
状態遷移リストは、マイクロコントローラのような、ハードウェアに、オブジェクトに対する状態遷移リストの現在の所定の状態、1以上の次の所定の状態、および/または最終的な所定の状態を決定させてもよい。マイクロコントローラは、次の所定の状態に対する1以上の所定のアクションの実行に進む前に、所定の状態に対する1以上の所定のアクションをランタイムステージ410の間にリアルタイムで実行してもよい。実施形態によっては、マイクロコントローラは、生成された状態遷移リストの所定の状態に対応する所定のアクションをランタイムステージ410の間にリアルタイムで実行する。マイクロコントローラは、状態遷移リストを決定するために構成ステージ405の間、中間変数に依存してもよい。マイクロコントローラは、また、状態遷移リストの所定の状態の所定のアクションを実行する一方、ランタイムステージ410の間、中間変数に依存してもよい。
ランタイムステージ410の間、マイクロコントローラは、まず、状態遷移リストに基づきオブジェクトに対する現在の所定の状態を決定してもよい。マイクロコントローラは、続いて、次の所定の状態に進む前に、現在の所定の状態に対する所定のアクションを実行してもよい。一旦、マイクロコントローラが所定の状態に対する所定のアクションを完了させると、マイクロコントローラは、次の所定の状態を決定するために状態遷移リストを利用してもよい。一旦、次の所定の状態がマイクロコントローラにより決定されると、マイクロコントローラは、次の所定の状態を現在の状態として設定し、他の所定の状態に進む前に、新しい現在の状態に関連付けられている所定のアクションを実行してもよい。マイクロコントローラは、最終的な所定の状態に遭遇するまで、この処理を繰り返してもよい。マイクロコントローラは、オブジェクトの処理を完了させるため最終的な所定の状態に関連付けられている所定のアクションを実行してもよい。マイクロコントローラは、続いて、次のオブジェクトの処理に進んでもよい。順序の全てのオブジェクトが処理されると、マイクロコントローラは、次の順序の処理に進んでもよい。
構成ステージ405の間に状態遷移リストを生成することにより、マイクロコントローラは、順番に処理するためのリアルタイム性能を向上させることができる。具体的に言えば、マイクロコントローラは、未評価の条件に基づき今後の状態を決定することに時間をかけることなく、リアルタイムで所定の状態に対する所定のアクションを実行するための状態遷移リストを利用できる。その結果、マイクロコントローラのリアルタイム性能は、流線型のランタイムステージにより向上する。
マスク判定425は、状態遷移リストの各所定の状態に対するマスクを生成する。具体的に言えば、マスク判定425は、各所定の状態に対する状態マスクおよび制御マスクを生成してもよい。他の実施形態においては、マスク判定425は、記述されているマスクより多い、少ない、および/または記述されているマスクとは異なるマスクを生成してもよい。
状態マスクは、特定の状態に対して、どの装置が状態を監視するかを示すために利用されてもよい。同じく、制御マスクは、特定の状態に対して、どの装置に制御出力を送信するかを示すために利用されてもよい。一実施形態においては、状態マスクには、各ビットが特定の装置に対応する、1以上のビットを含めてもよい。装置を監視すべき場合、装置状態ビットは1に等しい一方、装置を監視すべきではない場合、装置状態ビットは0に等しくてもよい。同じく、制御マスクにも、各ビットが特定の装置に対応する、1以上のビットを含めてもよい。装置が制御出力を受信するべきである場合、対応する装置制御ビットは1に等しい一方、装置が制御出力を受信すべきではない場合、対応する装置制御ビットは0に等しくてもよい。
記述されている実施形態では、装置状態および装置制御に対して2進値を利用しているが、他の実施形態においては、装置状態および/または装置制御は、2つより多い可能性のある値を有してもよい。例えば、装置状態は、「ビジー」、「レディー」、および「エラー」の値を有する可能性がある。装置制御は、「オフ」、「ロー」、および「ハイ」の値を有してもよい。装置状態および制御に対する他の値も可能である。それと共に、他の実施形態においては、状態マスクおよび/または制御マスクは、異なる方法で実行されてもよい。例えば、「AND」操作および/または「XOR」操作(図5参照)は、マスクが2進ではない値を利用する場合、状態マスクおよび/または制御マスクに利用されなくてもよい。
ランタイムステージ410の間、状態マスクは、どの装置が状態を監視されるべきか決定するために利用されてもよい。特に、状態マスクは、装置状態入力ベクトルを用いた「AND」操作を経て、監視する装置を表すビットを含む出力ベクトルを生成できる。装置状態入力ベクトルには、各ビットが状態を監視する可能性のある装置を表す、1以上のビットを含めてもよい。装置状態入力ベクトルに対するビットの数は、状態マスクに対するビットの数と同一でもよい。さらに、状態マスクのビットは、装置状態入力ベクトルのビットによって表される装置と同一の装置に対応してもよい。
状態マスクおよび装置状態入力ベクトルを用いた「AND」操作を使用することにより、状態マスクは、装置の対応する装置状態ビットに対する0のエントリを有することによって、装置が監視されることを防ぐことができる。そうでなければ、装置に対応する状態マスク・ビットが1のエントリを有し、同一の装置に対応する装置状態入力ベクトルビットも1のエントリを有する場合、「AND」操作は、その特定の装置に対する1のエントリを用いてベクトルを作成してもよい。出力ベクトルの1は、特定の装置が状態を監視されるべきであることを示してもよい。しかしながら、監視する装置を決定する状態マスクを実行する他の実施形態も可能である
ランタイムステージ410の間、制御マスクは、どの装置が制御出力を受信すべきか決定するために利用されてもよい。具体的に言えば、制御マスクは、装置制御入力ベクトルを用いた「AND」操作を経て、制御する装置を表すビットを含む装置制御出力ベクトルを生成してもよい。装置制御入力ベクトルには、各ビットが制御する可能性のある装置を表す、1以上のビットを含めてもよい。装置制御入力ベクトルのビットの数は、制御マスクのビットの数と同一でもよい。制御マスクのビットは、装置制御入力ベクトルの制御ビットによって表される装置と同一の装置に対応してもよい。
制御マスクおよび装置制御入力ベクトルを用いた「AND」操作を使用することにより、制御マスクは、装置の対応する制御ビットに対する0のエントリを有することによって、装置が制御されることを防いでもよい。そうでなければ、制御マスクおよび装置制御入力ベクトルにおける装置の対応するビットが1のエントリを有する場合、「AND」操作は、その特定の装置に対する1のエントリを用いて装置制御出力ベクトルを作成してもよい。装置制御出力ベクトルの1は、特定の装置が制御されるべきであることを示してもよい。しかしながら、装置を制御する制御マスクを実行する他の実施形態も可能である。
状態マスクおよび制御マスクは、マイクロコントローラが外側ループ・タスクおよび条件を実行するのと同時に、構成ステージ405の間に決定されてもよい。具体的に言えば、状態遷移リストの各所定の状態に対して、マイクロコントローラは、マイクロコントローラに関連付けられている一連の装置の内、どの装置が状態を監視される必要があるか、および/または、どの装置が制御される必要があるかを判断してもよい。例えば、図1Bを参照すると、マイクロコントローラは、条件122が特定の装置状態の監視を要求する状態103に対する判断をしてもよい。その結果、マイクロコントローラは、構成ステージ405の間に、条件122の特定の装置に対応する状態マスク・ビットに対する1の値を含む状態103に対して、状態マスクを生成してもよい。他の例に関して、図1Bを参照すると、マイクロコントローラは、タスク145が選択された装置に制御出力を送信することを含む状態103に対する判断をしてもよい。このように、マイクロコントローラは、構成ステージ405の間に、選択された装置に対応する制御マスク・ビットに対する1の値を含む状態103に対して、制御マスクを生成してもよい。実施形態によっては、構成ステージ間の状態の評価は、1に等しい対応するビットを設定することにより監視および/または制御されるように指定される、より多い、より少ない、および/または異なる装置を状態マスクおよび/または制御マスクに備えさせてもよい。他の実施形態においては、制御マスクおよび状態マスクは、異なる方法で生成されてもよい。マイクロコントローラは、また、マスク判定425の間に中間変数を利用して、1以上のマスク(例えば、状態マスク、制御マスク)を決定してもよい。
状態マスクおよび制御マスクのような、マスクを生成することにより、特定の状態に対して、各状態のリアルタイム実行は短縮でき、これはマイクロコントローラのリアルタイム実行性能を向上させる。具体的に言えば、関連付けられている装置および状態マスクまたは制御マスク間の単一の「AND」操作は、特定の状態に対するどの装置が状態を監視、または制御される必要があるかを示している。その結果、マイクロコントローラは、要求された装置のみに関して、リアルタイムで装置状態を検索し、装置に制御出力を送信することができる。このように、マイクロコントローラのリアルタイム実行は、より効率的になる。そのため、マスクは、マイクロコントローラのリアルタイム性能を向上させることができる。
構成ステージ405の間、1以上のオブジェクト構成タスクもマイクロコントローラにより実行されてもよい。例えば、マイクロコントローラは、スキャンライン・テーブル・オブジェクトに対するスキャンライン・テーブル構成430、台形オブジェクトに対する台形構成435、または反転マッピング・オブジェクトに対する反転マッピング構成440を実行してもよい。フレームのような、他のオブジェクトも、構成ステージ405の間に構成されてもよい。
特定の状態に対してランタイムステージ410の間に実行されるタスクは、どのオブジェクトが処理されたかに依存するであろう。例えば、オブジェクトがスキャンライン・テーブルの場合、ランタイムステージ410には、スキャンライン・テーブル・オブジェクト445に対するタスクの実行が含まれるだろう。代わって、オブジェクトがフレーム・オブジェクトの場合、ランタイムステージ410には、フレーム・オブジェクト450に対するタスクの実行が含まれるだろう。代わって、ランタイムステージ410の間、タスクは、台形のような、他のオブジェクト455に対して実行されてもよい。タスクには、状態遷移リスト構成420の間に決定されるリストの1以上の所定の状態の実行、各所定の状態に対するマスク判定425の間に決定される状態マスクまたは制御マスクの適用、および/または他のタスクが含まれてもよい。ランタイムステージ410は、マイクロコントローラによりリアルタイムで実行されてもよい。他の実施形態においては、様々なタスクが、ランタイムステージ410の間に実行されてもよい。
[4.装置状態判定]
図5は、1以上の装置の装置状態の決定の一例をブロック図にて示す。装置状態は、ランタイムステージ410のリアルタイム実行の間に決定されてもよい。図5において、示された実施形態には、装置状態入力ベクトル505、極性510、状態マスク515、「XOR」操作520、「AND」操作525、および装置状態出力ベクトル530が含まれる。他の実施形態においては、ブロック図には、図5に示されているよりも多い、少ない、および/または示されているものとは異なる構成要素が含めてもよい。
極性510は、反転された装置自身の状態ビットを有する1以上の装置を示してもよい。極性510には、1以上のビットを含めてもよい。各ビットは、装置に対応してもよい。図5に示されている実施形態においては、極性510には、装置状態入力ベクトル505と同数のビットが含まれる。さらに、極性510のビットは、装置状態入力ベクトル505のビットと同一の装置に対応する。このように、極性510は、装置状態入力ベクトル505の何れの装置がその装置の反転された状態ビットを有すべきかを示してもよい。例えば、極性510に対し、対応する装置のビットは、装置状態ビットが装置状態入力ベクトル505の同一の対応する装置に対して反転されるべきである(例えば、0から1へ、または1から0へ)ことを示す、1に設定できる。極性510はいつ装置状態ビットを反転するべきかを示すため、極性は、「XOR」操作520を使用することにより装置状態入力ベクトル505に適用される。
なぜ状態ビットを反転してもよいかには、種々な理由がある。例えば、1つのアプリケーションにおいては、マイクロコントローラは、1以上の装置状態入力が1以上の装置は「レディー」であると示すことを決定した後、所定のアクションを実行してもよい。マイクロコントローラは、「AND」操作に依存して、1以上の装置が「レディー」であることを判断してもよい。その結果、各装置状態入力は、装置が「レディー」であることを示す1の装置状態ビットを有してもよい。
しかしながら、装置によっては、装置が「ビジー」であるか否かを示す装置状態を有してもよい。例えば、装置は、装置が「ビジー」であることを示す1の装置状態ビット、および装置が待機中または「レディー」であることを示す0の装置状態ビットを有してもよい。このように、マイクロコントローラは、1の装置状態ビットが装置は待機中または「レディー」であることに対応し、0に等しい装置状態ビットが装置は「ビジー」または利用できないことに対応するように、装置状態ビットを反転してもよい。かかる場合には、極性510は、どの装置が反転可能な装置状態ビットを有するかを示すことができる。
図5において、マイクロコントローラは、「XOR」操作520を装置状態入力ベクトル505および極性510に適用することにより、極性510に基づき装置状態入力ベクトル505の1以上のビットを反転させてもよい。「XOR」操作520の実行後、マイクロコントローラは、続いて、状態マスク515および「XOR」操作520の結果に「AND」操作525を適用し、装置状態出力ベクトル530を決定してもよい。装置状態出力ベクトル530は、どの装置状態の値が監視される必要があってもよいを示す。装置状態出力ベクトル530は、また、1の装置状態ビットが装置は「レディー」であることを示すように、装置状態ビットの方向を修正する。「XOR」操作520および「AND」操作525は、ソフトウェア(例えば、ランタイムステージ410コード)またはハードウェア(例えば、マイクロコントローラ・ハードウェア、コンピューティング・デバイス・ハードウェア、論理ゲート、および/または他のハードウェア)により実行されてもよい。
このように、ランタイムステージ410の間、マイクロコントローラは、特定の状態に対する装置状態入力ベクトル505、極性510、および状態マスク515を読み込み、装置状態入力ベクトル505および極性510に「XOR」操作520を適用し、状態マスク515および「XOR」操作520の結果に「AND」操作525を適用して、装置状態出力ベクトル530を生成してもよい。マイクロコントローラは、続いて、装置状態出力ベクトル530に基づき装置状態を検索する。マイクロコントローラは、また、装置状態出力ベクトル530に基づき、必要に応じて検索された装置状態ビットを反転させる。マイクロコントローラは、続いて、1以上の検索された装置状態の値を利用して、所定の状態の所定のアクションを実行してもよい。一旦、所定のアクションが実行されると、マイクロコントローラは、続いて、次の状態に進んでもよい。他の実施形態においては、装置状態、状態マスク、および/または極性は、図5に示されるものとは異なる方法で実行または利用されてもよい。
[5.方法の例]
図6Aは、マイクロコントローラ201のような、マイクロコントローラにより実行される方法600の一例をフローチャートにて示す。方法600は、2次元画像をレンダリングする1以上のオブジェクトを含む順序に対するオブジェクトのデータを処理する第1ステージの実行から開始され、各オブジェクトには、ブロック605により示されるような、2次元画像に対する画像データが含まれる。例えば、図4を参照すると、方法600の間に実行される第1ステージは、構成ステージ405に対応してもよい。処理される順序のオブジェクトは、スキャンライン・テーブル、フレーム、台形、またはいくつかの他のオブジェクトでもよい。方法600は、続いて、ブロック610により示されるような、オブジェクトのデータを処理する第2ステージの実行に進む。図4を参照すると、例えば、方法600の間に実行される第2ステージは、ランタイムステージ410に対応してもよい。ランタイムステージ410の間、方法600は、スキャンライン・テーブル・オブジェクト445、フレーム・オブジェクト450、またはいくつかの(台形を含む)他のオブジェクト455の処理を実行してもよい。
図6Aは方法600の複数のステップを示しているが、実施形態によっては、方法600には、図6Aに示されているよりも多い、少ない、および/または示されているものとは異なるステップを含めてもよい。例えば、方法600には、2次元画像をレンダリングする順序に対する画像データでオブジェクトを処理する2つより多いステージを含めてもよい。方法600には、図4の構成ステージ405に対応する第1ステージ605とは異なるステージ、および図4のランタイムステージ410に対応する第2ステージ610とは異なるステージを含めてもよい。実施形態によっては、方法600は、印刷デバイス200のような、コンピューティング・デバイスのマイクロコントローラ201により実行される。しかしながら、他のコンピューティング・デバイスに、方法600を実行するマイクロコントローラを含めてもよい。それと共に、マイクロコントローラ201以外のハードウェアが、方法600を実行してもよい。
図6Bは、図6Aの方法600の第1ステージ605を実行する、例示の方法611をフローチャートにて示す。例示の方法611は、図2に示されるように、印刷デバイス200に対するマイクロコントローラ201により実行されてもよい。図4を参照すると、方法611は、構成ステージ405に対応してもよい。方法611は、2次元画像をレンダリングする順序に対するオブジェクトの画像データを処理する方法600の一環として実行されてもよい。
方法611は、ブロック615により示されるように、複数の中間変数の決定から開始される。図4を参照すると、例えば、マイクロコントローラ201は、構成ステージ405の間に中間変数判定415を完了させてもよい。次に、方法611は、続いて、ブロック620により示されるように、オブジェクトに対して、複数の中間変数に基づき状態遷移リストを生成してもよく、状態遷移リストには、複数の所定の状態が含まれ、各所定の状態は、所定のアクションに関連付けられている。例えば、図4を参照すると、ブロック620は、状態遷移リスト構成420に対応してもよく、状態遷移リスト構成420は、マイクロコントローラ201により構成ステージ405の間に実行される。
方法611は、ブロック625に示されるように、各所定の状態に対して、プロセッサに関連付けられている1以上の装置から、装置状態を監視する装置の第1サブセットを決定することにより継続される。方法611は、ブロック630に示されるように、各所定の状態に対して、プロセッサに関連付けられている1以上の装置から、制御する装置の第2サブセットを決定することにより進行する。図4を参照すると、装置の第1および第2の両サブセットは、構成ステージ405の間のマスク判定425の間に決定されてもよい。プロセッサは、マイクロコントローラ201に対応してもよい。
図6Bは方法611の複数のステップを示しているが、実施形態によっては、方法611には、図6Bに示されているよりも多い、少ない、および/または示されているものとは異なるステップを含めてもよい。例えば、方法611には、各所定の状態に対する装置の第1サブセットの状態マスクの生成、および各所定の状態に対する装置の第2サブセットの制御マスクの生成のステップが含まれ得る。図4を参照すると、状態マスクおよび制御マスクの両方が、構成ステージ405の間のマスク判定425の間に決定されてもよい。さらに、図6Bのステップは、図6Bに示される順序とは異なる順序で実行されてもよい。実施形態によっては、方法611は、印刷デバイスのマイクロコントローラ(例えば、印刷デバイス200のマイクロコントローラ201)により実行される。しかしながら、他の実施形態においては、マイクロコントローラを含む異なるコンピューティング・デバイス、またはプロセッサが、方法611を実行してもよい。それと共に、マイクロコントローラ以外のハードウェアが、方法611を実行してもよい。
図6Cは、図6Aの方法600の第2ステージ610を実行する、例示の方法641をフローチャートにて示す。例示の方法641は、図2に示されるように、印刷デバイス200に対するマイクロコントローラ201により実行されてもよい。図4を参照すると、方法641は、ランタイムステージ410に対応してもよい。方法641は、2次元画像をレンダリングする順序に対するオブジェクトの画像データを処理する方法600の一環として実行されてもよい。
方法641は、ブロック650により示されるように、状態遷移リストに基づき現在の所定の状態を決定することにより開始される。次に、方法641は、ブロック655により示されるように、現在の所定の状態に対する装置の第1サブセットの装置状態を決定することにより継続される。方法641は、ブロック660により示されるように、現在の所定の状態に対する装置の第2サブセットに出力を送信することにより進行する。方法641は、続いて、ブロック665により示されるように、状態遷移リスト、および現在の所定の状態に対する装置の第1サブセットの装置状態に基づき、現在の所定の状態の所定のアクションの実行に進んでもよい。図4を参照すると、方法641のブロック650、655、660、および665は、ランタイムステージ410の間に実行されてもよい。
方法641は、続いて、ブロック670により示されるように、状態遷移リストに基づき次の所定の状態を決定してもよい。次に、方法641は、ブロック675により示されるように、現在の所定の状態の所定のアクションの実行完了後、次の所定の状態に進んでもよい。ブロック650、655、660、および665と同様に、ブロック670および675も、図4に示されるように、ランタイムステージ410の間に実行されてもよい。
図6Cは方法641の複数のステップを示しているが、実施形態によっては、方法641には、図6Cに示されているよりも多い、少ない、および/または示されているものとは異なるステップを含めてもよい。例えば、方法641には、さらに、現在の所定の状態の状態マスクに基づき、現在の所定の状態に対する装置の第1サブセットの装置状態を決定するステップを含めてもよい。それと共に、方法641には、現在の所定の状態の制御マスクに基づき、現在の所定の状態に対する装置の第2サブセットに出力を送信するステップを含めてもよい。図4を参照すると、これら追加のステップは、ランタイムステージ410の間に実行されてもよい。
さらに、図6Cのステップは、図6Cに示される順序とは異なる順序で実行されてもよい。実施形態によっては、方法641は、印刷デバイス200のマイクロコントローラ201のような、印刷デバイスのマイクロコントローラにより実行される。しかしながら、他の実施形態においては、マイクロコントローラを含む異なるコンピューティング・デバイス、またはプロセッサが、方法641を実行してもよい。それと共に、マイクロコントローラ以外のハードウェアが、方法641を実行してもよい。
[6.結論]
本出願において記述されている具体的な実施形態に関して、本開示は限定されるべきではなく、それらはいろいろな態様の実例として意図されている。当業者にとって明白であるように、本開示の主旨と範囲から逸脱することなく多くの変更および変形をすることが可能である。本記載に列挙されていることに加え、本開示の範囲内の機能的に等価な方法および装置は前述の記載から明白であろう。そのような変更および変形は、添付された請求項の範囲内に入るように意図されている。
図面における、任意のすなわち全てのラダー図、シナリオ、およびフローチャートに関しておよび本記載で述べられたように、各ブロックおよび/または通信は、例示の実施形態に従って情報を処理しおよび/または情報を送信することを表してもよい。他の実施形態もそのような例示の実施形態の範囲に含まれてもよい。さらに、より多くのもしくはより少ないブロックおよび/または機能が、本記載に記述されているどのラダー図、シナリオ、およびフローチャートと共に使用されてもよいし、また当該ラダー図、シナリオ、およびフローチャートは、部分的にもしくは全体的にお互いに結合されてもよい。
情報の処理を表すステップもしくはブロックは、本記載の方法もしくは技術の具体的な論理機能を実行するように構成することが可能な回路に相当してもよい。それに代えてまたはさらに、情報の処理を表すステップもしくはブロックは、モジュール、セグメント、もしくはプログラムコードの一部分(関連するデータを含めて)に相当してもよい。プログラムコードは、方法もしくは技術における具体的な論理機能もしくは動作を実行するための、処理部により実行可能な一つ以上の命令を含んでもよい。プログラムコードおよび/または関連するデータは、ディスクドライブ、ハードドライブ、もしくはその他の記憶媒体を含む記憶装置等の任意の種類のコンピュータ読み取り可能な媒体に格納してもよい。
コンピュータ読み取り可能な媒体は、また、レジスタメモリ、プロセッサキャッシュ、および/またはランダムアクセスメモリ(RAM)のような短期間データを格納するコンピュータ読み取り可能な媒体等の、非一時的でコンピュータ読み取り可能な媒体を含んでもよい。コンピュータ読み取り可能な媒体は、また、例えば、リードオンリーメモリー(ROM)、光学もしくは磁気ディスク、および/またはコンパクトディスク・リードオンリーメモリー(CD―ROM)のような、二次的もしくは持続的長期記憶装置等、より長期間プログラムコードおよび/またはデータを格納する非一時的でコンピュータ読み取り可能な媒体を含んでもよい。コンピュータ読み取り可能な媒体は、また、他の揮発性もしくは不揮発性記憶システムであってもよい。コンピュータ読み取り可能な媒体は、例えば、コンピュータ読み取り可能な記憶媒体および/または有形の記憶デバイスと考えてもよい。
加えて、本明細書、図面、請求項内のいずれの構成要素、ブロック、又はステップの列挙も、明確さを目的としたものである。従って、このような列挙は、これらの構成要素、ブロック、またはステップが特定の配置にこだわる、または特定の順序で実行されることを要求または意味すると解釈すべきではない。
本明細書中に記述されている配置は、例示の目的のためのみであることは理解されるべきである。そのように、当業者であれば、他の配置および他の構成要素(例えば、機械、インターフェース、機能、順序、機能のグルーピング、など)が代わりに利用され得ること、およびいくつかの構成要素が所望の結果に従って完全に省略されてもよいことは、理解するであろう。さらに、記載されている構成要素の多くは、個別または分散された構成要素として、または他の構成要素と一緒に、任意の適切な組み合わせおよび位置で実行されてもよい機能エンティティである。
本記載においてさまざまな態様および実施形態が開示されてきたが、他の態様および実施形態も当業者にとって明白であろう。本記載において開示されたさまざまな態様および実施形態は、例示目的であって限定することを意図するものではなく、真の範囲と主旨は以下の請求項により示されている。