JP3957825B2 - 印字制御システム及びスキャナ制御システム - Google Patents
印字制御システム及びスキャナ制御システム Download PDFInfo
- Publication number
- JP3957825B2 JP3957825B2 JP22359797A JP22359797A JP3957825B2 JP 3957825 B2 JP3957825 B2 JP 3957825B2 JP 22359797 A JP22359797 A JP 22359797A JP 22359797 A JP22359797 A JP 22359797A JP 3957825 B2 JP3957825 B2 JP 3957825B2
- Authority
- JP
- Japan
- Prior art keywords
- control
- command
- data
- register
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/028—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers by thermal printers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1801—Input data handling means
- G06K15/1803—Receiving particular commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1801—Input data handling means
- G06K15/181—Receiving print data characterized by its formatting, e.g. particular page description languages
- G06K15/1814—Receiving print data characterized by its formatting, e.g. particular page description languages including print-ready data, i.e. data already matched to the printing process
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
- Facsimiles In General (AREA)
Description
【発明の属する技術分野】
本発明は、パーソナルコンピュータとプリンタとが接続され、ホストがプリンタを制御して印字を行うような印字制御システムに関するものである。
【0002】
【従来の技術】
従来、ホスト(パーソナルコンピュータ)とプリンタとはインターフェース(セントロニクスなど)を介して接続され、ホストから送られる印字データ、印字指示をプリンタが順次処理することにより印字を行っていた。印字データ、印字指示はプリンタ固有のコントロールコードで、プリンタドライバーによって作成され、プリンタへと送られる。
【0003】
プリンタではホストから送られてくるコントロールコードを解析し印字データであれば印字データを印字できる分だけ蓄える。印字データのコントロールコードはラスタ形式をしているものがあり、蓄えられた印字データに対してイメージ加工処理や変換処理を行いプリンタに搭載する印字ヘッドで印字可能な形式にイメージデータを再構成し、印字ヘッドにイメージデータを送ることで印字を行っていた。コントロールコードでは給・排紙、フィードなどの各種コントロールコードに対する処理を行っていた。マイクロソフト社のウィンドウズシステムでの印字手順については図31で説明する。
【0004】
また、ホスト(パーソナルコンピュータ)とスキャナとはインターフェース(SCSIなど)を介して接続され、ホストから送られるスキャンコントロールコードをスキャナが順次処理し、スキャンしたイメージデータをホストへ送信することによりスキャンを行っていた。スキャンコントロールコードはスキャナ固有のコントロールコードで、スキャナアプリケーションによって作成され、スキャナへと送られる。スキャナではホストから送られてくるコントロールコードを解析しスキャン動作とイメージデータの送信とを行っている。スキャンコントロールコードでは給・排紙、フィードなどの各種コントロールコードに対する処理を行っていた。
【0005】
【発明が解決しようとする課題】
しかしながら、従来例ではホストはアプリケーションからの印字指示により印刷イメージを作り、印刷イメージからプリンタへと送る印字データと印字指示のコントロールコードを作成していた。また、ホストとプリンタとが完全に独立しているため、プリンタは印字のためにコントロールコードの解析処理、イメージの展開処理、イメージの加工処理などを行うために中央処理装置CPU、処理手順を保持するROM、データを蓄えるRAMなどの多くの資源を有していた。また、プリンタに対してホストの性能は飛躍的に向上しており、従来プリンタで行っていた処理をホストで処理する方が有利な状況も起こってきた。
【0006】
そこで、本発明の目的は、従来プリンタで処理していた処理をプリンタよりも高性能なホストで行うことにより、従来プリンタが内蔵していた資源を簡素化しコストを低く押さえたプリンタ装置とホストでの印字制御システムを提供することにある。
【0007】
また、従来例ではホストはスキャンのコントロールコードを作成し送信しているだけであった。また、ホストとスキャナとが完全に独立しているため、スキャナはスキャンのためにコントロールコードの解析処理、スキャン動作制御、イメージデータの加工処理などを行うために中央処理装置CPU、処理手順を保持するROM、データを蓄えるRAMなどの多くの資源を有していた。また、スキャナに対してホストの性能は飛躍的に向上しており、従来スキャナで行っていた処理をホストで処理する方が有利な状況も起こってきた。
【0008】
そこで、本発明の目的は従来スキャナで処理していた処理をスキャナよりも高性能なホストで行うことにより、従来スキャナが内蔵していた資源を簡素化しコストを低く押さえたスキャナ装置とホストでのスキャナ制御システムを提供することにある。
【0009】
また、上述したホストベースプリントシステムにおいては、ホストでのプリンタの制御を実現するためにマイクロソフト社のウィンドウズ、ウィンドウズプリンティングシステムやプリンタドライバーに変更を加える必要があった。
【0010】
そこで、本発明の目的は従来プリンタで処理していた処理をプリンタよりも高性能なホストで行うことにより、従来プリンタが内蔵していた資源を簡素化しコストを低く押さえたプリンタ装置とホストでのプリンタ制御に関する方法を提供することにある。また、従来からのプリンタドライバーからのコントロールコードを入力として利用するため、ウィンドウズ、ウィンドウズプリンディングシステムやプリンタドライバに変更を加える必要がない印字制御システムを提供することにある。
【0011】
また、従来例のようなシステムでは、ホストはアプリケーションからの印刷指示により印刷イメージを作り、印刷イメージからプリンタへ送る印字データと印字コマンドのコントロールコードを作成する必要があった。
【0012】
また、プリンタでは印字のためにコマンドの解析処理、イメージの展開処理、イメージの加工処理などを行うために中央処理装置CPU、処理手順を保持するROM、データを蓄えるRAMなどの多くの資源を有していた。
【0013】
また、プリンタに対してホストの性能は飛躍的に向上しており、従来プリンタで行っていた処理をホストで処理する方が有利な状況も起こってきた。
【0014】
そこで、本発明の目的は従来プリンタで処理していた処理をプリンタよりも高性能なホストで行うことにより、従来プリンタが内蔵していた資源を簡素化しコストを低く押さえたプリンタとホストでの、プリンタ制御(時間管理)システムを提供することにある。
【0015】
【課題を解決するための手段】
上記課題を解決するために、本発明のプリンタは、
ホストコンピュータより受信したコントロールI/Oコマンドを記憶するメモリと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、印字ユニットのプリントを制御するコントローラとを有し、
前記I/Oレジスタは、前記印刷ユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とする。
【0016】
また、本発明のスキャナは、
ホストコンピュータより受信したコントロールI/Oコマンドを記憶するメモリと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、スキャンユニットのスキャンを制御するコントローラとを有し、
前記I/Oレジスタは、前記スキャンユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とする。
【0017】
また、本発明のプリント方法は、
ホストコンピュータより受信したコントロールI/Oコマンドをメモリに記憶するステップと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、印字ユニットのプリントを制御する制御ステップとを有し、
前記I/Oレジスタは、前記印刷ユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とする。
【0018】
また、本発明のスキャン方法は、
ホストコンピュータより受信したコントロールI/Oコマンドをメモリに記憶するステップと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、スキャンユニットのスキャンを制御する制御ステップとを有し、
前記I/Oレジスタは、前記スキャンユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とする。
【0020】
【発明の実施の形態】
(実施の形態1)
図1は本発明の実施の形態であるホスト部とプリンタ部が一体となった携帯型パーソナルコンピュータ(以下パソコンと略す)を示す斜視図である。
【0021】
パソコン1は、装置本体101、キーボード102、表示部103、及びプリンタユニット2の各部によって構成されている。
【0022】
上カバー104は、装置本体101に対して、その後縁の両端に設けられたヒンジ104aを介して回動可能に取りつけられている。
【0023】
これにより本装置の使用時には、上カバー104は、その回動によって表示部103が見やすくなる位置まで開けられ、また不使用時には閉じられていてカバーとして機能することができる。
【0024】
また、デバイスの一例として表示部103の表示素子としては、表示部を薄く構成できることから液晶表示素子(LCD)を用いている。
【0025】
プリンタユニット2は、操作者が開閉可能な開口部を持ち、記録ヘッドの交換が可能なようになっている。
【0026】
記録紙は図示されていないが、キーボード102の下部に設けられた給紙口101aから挿入され、装置本体101内を貫通する搬送路内を搬送されて装置後方の排紙口から排出される。
【0027】
キーボード102は、装置本体101の両側に設けられたヒンジ102aを介して回動可能に取りつけられている。
【0028】
キーボード102の下部に記録紙の搬送路が設けられているため、記録紙をセットした状態でもキーボード102や表示部103の操作が可能である。
【0029】
図2はパソコンの内部構成を示す概略ブロック図であり、本発明の実施の形態でのホストコンピュータ部(以下ホスト部と略す)はPC/AT互換機と同等のシステムで構成されている。
【0030】
まず、ホスト部で主制御をつかさどっているのが中央処理装置(CPU)であり、その基本的な制御を指示するのがBIOS−ROMである。
【0031】
数値演算プロセッサ(FPU)はCPU−busに接続され、浮動小数点演算や対数計算などの演算命令を拡張するもので有る。
【0032】
フロッピーディスクドライブ(FDD)やハードディスクドライブ(HDD)からフロッピーディスクコントローラ(FDC)やハードディスクコントローラ(HDC)を経由してアプリケーションプログラムやデータファイルを読み出し、システムメモリ(SYSTEM RAM)を利用してアプリケーションプログラムの実行を行なう。
【0033】
この時の画面の表示は、ビデオコントローラ(VGA)と表示メモリ(VRAM)により液晶表示器(LCD)にキャラクタやグラフィック等の表示を行ない、キーボード(KB)からのキー入力は、キーボードコントローラ(KBC)を経由して取り込まれる。
【0034】
リアルタイムクロック(RTC)は、現在時刻を示すタイマである。
【0035】
DMAコントローラ(DMAC)は、メモリ−メモリ間、メモリ−I/O間において、CPUの介在なしでデータ転送を行なう。
【0036】
割り込みコントローラ(IRQC)は、各I/Oからの割り込みを受け付け、優先順位に従って処理を行なう。
【0037】
システムタイマ(TIMER)は、数チャンネルのフリーランニングタイマを持ち、種々の時間管理を行なう。
【0038】
その他に外部コネクタにつながるポートブロックとして、RS−232C仕様のシリアルポート(SIO)、セントロニクス仕様のパラレルポート(PIO)、ISA仕様の拡張ポート(EIO)があり、それぞれSI/Fコネクタ、PI/Fコネクタ、EI/Fコネクタにつながる。
【0039】
またユーザに対して動作状況を伝えるLED出力ポートや、操作スイッチ入力ポートがつながる、PANELもある。
【0040】
本発明の実施の形態におけるプリンタ部は、ホスト部に対してISA−busで直接つながれた形態になっていて、ISA−busのI/Oレジスタを介してデータのやり取りを行うことができる。
【0041】
図3に本発明の実施の形態におけるホスト部RAMのメモリマップの配置を示す。
【0042】
RAMは標準領域として00000H〜BFFFFHの640KBと、拡張領域として100000H〜FDFFFFHの15MBがあり、RAMはこれらの領域に配置されるようにメモリマッピングされる。
【0043】
RAMの標準領域の先頭部分00000H〜003FFHには、割り込み用のベクタを保存する領域が有り、この中に割り込みに対する各処理のエントリーアドレスが保存される。
【0044】
ビデオRAM領域、及びビデオBIOS領域は、ビデオコントローラの内部に配置され、ビデオBIOS領域にはビデオ制御のためのプログラムが保存され、ビデオRAM領域にはビデオ表示データが保存される。
【0045】
拡張ボードROM領域はC8000H〜DFFFFHまでの領域に配置され、拡張ポートに繋がるデバイスにより使用される。
【0046】
システムBIOS領域はF0000H〜FFFFFHに配置され、各種I/Oの処理を行うBIOSプログラムを保持している。
【0047】
図4に本発明の実施の形態におけるホスト部のI/Oアドレスマップを示す。
【0048】
ここで示したI/Oアドレスは、ハードウエアで設定されている各デバイスのI/Oアドレスのレジスタを介して、データのやり取り(READ・WRITE)をホストと各デバイスの間で行うものであるが、特にプリンタ部に関連する部分について説明する。
【0049】
パラレルポート1〜3(PIO/IO)はホスト部からPI/Fに繋がった外部デバイスに対して汎用のパラレルデータを送出するためのレジスタである。
【0050】
図20に従来のプリンタ制御部のシステム構成を示す。
【0051】
I/Fコントローラは、ホストのパラレルポートに対してケーブルを介して繋がり、ホストから送出される印字動作を行うためのコントロールコードを受け取るブロックである。
【0052】
P−CPUは、プリンタ制御部の中で主制御を司るCPUであり、I/Fコントローラからのコントロールコードの取り込み処理と、プリンタの印字動作を行うための処理を、時間配分しながら制御を行う。
【0053】
P−ROMは、P−CPUの動作プログラムの格納されたROMである。
【0054】
P−PAMは、P−CPUが動作プログラムの実行に際してワークメモリとして使ったり、I/Fコントローラから送られてきたコントロールコードを一時保管する受信メモリとして使ったり、コントロールコードを実際の記録ヘッドに転送するデータの形態に変換したイメージデータを一時保管する印字メモリとして使ったりするRAMである。
【0055】
プリンタI/0コントローラは、プリンタユニットを動作させるための制御ブロックで、P−CPUがPRT−busに対してプリンタI/Oコントローラに割り当てられた任意アドレスのレジスタに対するアクセス処理を行うことにより、プリンタユニットのキャリアモータやフィードモータの相切り替えや、印字ヘッドに対するイメージデータの転送などを行うブロックである。
【0056】
すなわち、従来のプリンタ制御部による印字処理は、ホストから送られてくる印刷のためのコントロールコードをP−CPUが遂次解釈しながら、キャリアを水平方向に走査して印字ヘッドに対してイメージデータを転送し印字を行っていた。
【0057】
また、従来のプリンタ制御部による画像読み取り処理は、プリンタユニットのキャリア上に印字ヘッドの代わりに画像読み取り用のスキャナヘッドが載った状態で、ホストからのスキャン実行を指示するコントロールコードを受けると、キャリアを走査しながらスキャナヘッドで画像データを読み取り、パラレルインターフェイスのニブルモード等を利用してホストに画像データを遂次転送していた。
【0058】
本発明の実施の形態で用いているプリンタ制御部は、汎用のパラレルポートを用いずにプリンタ制御部の専用ポート(PRT/IO)を用いて印字動作を行うシステムとなっている。
【0059】
PRT/IOのアドレス設定等を行うのが100H〜107Hのセットアップレジスタ(SET/IO)でPRT/IOを構成するスーパーバイザコマンドレジスタ(SVA/IO・SVD/IO)と制御I/Oコマンドレジスタ(BAT/IO)のベースアドレスとポートイネーブルの設定を行うものである。
【0060】
図5はセットアップレジスタ(SET/IO)の構成を示す図である。
【0061】
0102番地のセットアップレジスタ2は、PRT/IOのイネーブルビットがビット0に設けられ、イネーブルビットが“1”の時にのみホスト部からプリンタポートへのアクセスを可能としている。
【0062】
0103〜0104番地のセットアップレジスタ3・4は、PRT・IOのベースアドレスを設定するレジスタで、設定されたアドレスから連続した8バイトをホスト部とプリンタ部の間のデータのやり取りをポートに設定するレジスタである。
【0063】
ベースアドレスは0000H〜03F8Hまでの範囲内において、8バイト単位で任意に設定することができる。
【0064】
図6はプリンタ部ポート(PRT・IO)の構成を示す図である。
【0065】
プリンタ部ポートの構成は、セットアップレジスタ(SET/IO)で設定されたベースアドレスから連続した8バイトのうち、最初の1バイト目がスーパーバイザコマンド・アドレスレジスタ(SVA/IO)、2バイト目がスーパーバイザコマンド・データレジスタ(SVD/IO)でこれらは8ビットアクセスであり、3〜4バイト目が制御I/Oコマンド・データレジスタ(BAT/IO)でこれは16ビットアクセス専用のレジスタとなる。
【0066】
スーパーバイザコマンドはホストからプリンタ制御部のPRT−busに対して直後アクセスを行うことができるレジスタであり、直接制御I/Oコマンドとも呼ぶ。
【0067】
SVA/IOはPRT−busへのアクセスアドレスを設定するレジスタで、PA〔7:0〕の8ビットを任意に設定するスーパーバイザコマンド・アドレスレジスタである。
【0068】
SVD/IOはPRT−busへのデータ入出力を行うレジスタで、PD〔7:0〕の8ビットを使って操作するスーパーバイザコマンド・データレジスタである。
【0069】
BAT/IOはMEM−busへのデータ入出力を行うレジスタで、MD〔15:0〕の16ビットでアクセスする制御I/Oコマンド・データレジスタである。
【0070】
図7は本発明の実施の形態におけるプリンタ制御部の内部構成を示すブロック図である。
【0071】
プリンタ部の主要ロジックは、ホスト部のISA−busからステートマシンコントローラ(STATE MACHINE CONTROLLER)を経由して、プリンタバス(PRT−bus)に繋がるプリンタI/Oコントローラ(PRINTER I/O CONTROLLER)と、メモリバス(MEM−bus)に繋がるプリンタメモリ(PRINTER MEMORY)によって構成されている。
【0072】
プリンタユニットに繋がるプリンタI/Oコントローラの入力側には、プリンタユニットからのセンサ情報を読み取ったプリンタステータス信号(Printer Status)がとりこまれ、その情報をもとに出力側のモータコントロール信号(Motor Cont.)やヘッドコントロール信号(Head Cont.)によってプリンタユニット(PRINTER UNIT)のモータやインクヘットを駆動し印字動作を行う。
【0073】
またプリンタユニットのキャリアにスキャナヘッドの載ったシステムの場合は、スキャナヘッドで読み出した画像データをプリンタI/Oコントローラを経由してプリンタメモリに書き込むことでスキャン動作を行う。
【0074】
ここで、図20に示した従来のプリンタ制御部と構成を対比させてみると、本発明の実施の形態ではプリンタ側にCPUとROMが存在しない点が大きな特徴であるといえる。
【0075】
図8はステートマシンコントローラの内部構成を示すブロック図である。
【0076】
ステートマシンコントローラはホスト部のISA−busを経由してプリンタユニットの動作をつかさどるための制御ブロックであり、セットアップレジスタで設定したプリンタ部ポートの各々のレジスタによってアクセスを行うことができる。
【0077】
スーパーバイザコマンドレジスタは、ホスト部からプリンタI/OコントローラへのI/OアクセスをPRT−busを介して行ったり、制御I/Oコマンドの起動・停止コマンドの発行を行うためのレジスタで、スーパーバイザコマンド・アドレスレジスタ(SVA/IO)で設定したPRT−busのアドレス(PA)に対してスーパーバイザコマンド・データレジスタ(SVD/IO)を使ってデータ(PD)の読み書きを行うことを行う。
【0078】
制御I/Oコマンド・データレジスタ(BAT/IO)は、ホスト部からプリンタ部メモリをMEM−busを介して直接アクセスするための機能であり、「アドレス+データ」のセットでデータ書き込み動作を行うとメモリアドレスカウンタのライトアドレスに対応したプリンタ部メモリのアドレス(MA)に2バイトのデータ(MD)が書き込まれ、書き込まれた後にはライトアドレスが毎回+2インクリメントされる。
【0079】
制御I/Oコマンド・データレジスタを使ったデータの読み出し動作も同様で、リードアドレスに対応したプリンタ部メモリのデータが2バイト読み出され、読み出し動作後には毎回リードアドレスが+2インクリメントされる。
【0080】
制御I/Oコマンド・データレジスタによってメモリに書き込まれたデータは制御I/Oコマンドを実行するために使われるデータであり、スーパーバイザコマンドレジスタによる制御I/Oコマンドの起動コマンドとしてBP−startに“1”を書き込む事により、プリンタ部メモリから制御I/Oアドレスカウンタのリードアドレスで示されたデータを2バイトずつ読み出し、読み出したデータの下位バイトがアドレス・上位バイトがデータを表しているので、PRT−busに読み出したアドレスとデータを出力してプリンタI/Oコントローラのレジスタへのデータライトアクセス動作を行うことで制御I/Oコマンドの実行を行う。
【0081】
この制御I/Oコマンドの実行により読み出されたリードアドレスは+2ずつ毎回インクリメントされ、制御I/Oコマンドの停止コマンド(Bp−end)が発行されてBP−startが“0”になるまで、制御I/Oコマンド実行動作が繰り返される。
【0082】
リフレッシュコントロールは、D−RAMのリフレッシュ動作をつかさどる制御ブロックで、8msの間に512回のリフレッシュアクセスを行うようになっていて、その時のアドレスを毎回インクリメントさせるのがリフレッシュアドレスカウンタである。
【0083】
メモリアドレスコントロールは、プリンタ部メモリに対して各アクセス要求に優先順位をつけて処理を行うブロックで、制御I/Oコマンドの実行が第一優先・リフレッシュが第二優先・ホスト部からのメモリアクセスが第三優先となっている。
【0084】
これは制御I/Oコマンドの実行時間が変動するのを防ぐための優先順序となっている。
【0085】
図9は、プリンタ部でスーパーバイザコマンドや制御I/Oコマンドを実行する際に必要となるステートマシンコントローラ内のレジスタのアドレスマップである。
【0086】
これら00番地から1F番地までのレジスタにおいて、制御I/Oコマンドの実行に必要となるスーパーバイザコマンドでのみで使用するレジスタとして00〜0F番地・18〜1A番地と、制御I/Oコマンド上でのみ使用するレジスタの10〜15番地・1C〜1E番地がある。
【0087】
また20番地以降についてはプリンタI/Oコントローラに対してスーパーバイザコマンドや制御I/Oコマンドによるアクセスを行うレジスタであるが詳しくは後述する。
【0088】
00番地から1F番地までの各レジスタの機能について個々に説明すると、00番地は制御I/Oコマンドの実行開始を指示する制御I/Oコマンドコントロールレジスタ(BP−start)であり、スーパーバイザコマンドのライトアクセスにより実行される。
【0089】
このレジスタは、制御I/Oコマンドが実行中は常に“1”になっているので、“0”であるかどうかをスーパーバイザコマンドにより読み出して確認することで、ホスト側で制御I/Oコマンドの実行が完了したことを検出するのに使うことも可能である。
【0090】
01番地はシステム内のレジスタを全てリセットするリセットトリガ(CRES)であり、スーパーバイザコマンドのライトアクセスにより実行される。
【0091】
08〜0A番地はホストからプリンタメモリの読み出しアドレス(MRA)を設定するレジスタであり、スーパーバイザコマンドにより設定を行いホストからのメモリデータの読み出しにより+2インクリメイントされる。
【0092】
0C〜0E番地はホストからのプリンタメモリへの書き込みアドレス(MWA)を設定するレジスタであり、スーパーバイザコマンドにより設定を行いホストからのメモリデータの書き込みにより+2インクリメントされる。
【0093】
10番地は制御I/Oコマンドの実行停止を指示するコマンドエンドトリガ(BP−end)であり、制御I/Oコマンドにより実行される。
【0094】
12番地は制御I/Oコマンドによりレジスタデータをメモリに書き込む動作を行うためのレジスタライトトリガ(REGWR)であり、制御I/Oコマンドにより実行される。
【0095】
13番地は制御I/Oコマンドによりレジスタデータをメモリに書き込む際のレジスタアドレス(RWA)を設定するレジスタであり、制御I/Oコマンドにより実行される。
【0096】
14番地はウエイト処理を行うタイマレジスタの下位バイト(WAITL)を設定するレジスタであり、制御I/Oコマンドの実行において0.5μs単位でウエイトを挿入する際に使用するレジスタで、0.5μs(01H)から127.5μs(FFH)まで設定することができる。
【0097】
15番地はウエイト処理を行うタイマレジスタの上位バイト(WAITH)を設定するレジスタであり、制御I/Oコマンドの実行において128μs単位でウエイトを挿入する際に使用するレジスタで、128μs(01H)から32640μs(FFH)まで設定することができる。
【0098】
18〜1A番地は制御I/Oコマンドのプリンタメモリからの実行読み出しアドレス(BRA)を設定するレジスタであり、制御I/Oコマンドの実行開始アドレスをスーパーバイザコマンドで設定した後に、制御I/Oコマンドの実行に伴ってメモリデータの読み出しごとに+2インクリメントされる。
【0099】
1C−1E番地はレジスタデータのプリンタメモリへの書き込みアドレス(BWA)を設定するレジスタであり、13番地のレジスタライトトリガによるレジスタデータのメモリへの書き込み動作によって+2インクリメントされる。
【0100】
図10は制御I/Oコマンドの動作を示すタイミングチャートである。
【0101】
制御I/Oコマンドの実行サイクルはプログラムカウンタの基本クロック(CLKPRG)に同期していて決められた時間間隔で実行されるが、本発明の実施の形態では500ns単位でひとつの制御I/Oコマンドが実行される様になっている。
【0102】
始めに一連の制御I/Oコマンドがプリンタメモリに書き込まれた状態において、起動コマンドとしてスーパーバイザコマンドでBP−startに“1”が書き込まれるとCLKPRGが動作を開始する。
【0103】
1クロック目(BRA:#00)は、MEM−busから読み出した制御I/Oコマンドのアドレスが通常のプリンタI/Oコントローラへアクセス(20番地以降)の場合で、読み出したアドレスに対してデータをPRT−busに書き込む処理を行い、CLKPRGの立ち下がりに同期して制御I/Oコマンドのリードアドレスカウンタ(BRA)が+2インクリメントされる。
【0104】
2クロック目(BRA:#02)は、MEM−busから読み出した制御I/OコマンドのアドレスとデータがPRT−busへのアクションではなくメモリ書き込み処理を行うレジスタライトコマンド(12番地)であった場合で、制御I/Oコマンドアドレスカウンタのレジスタライトアドレスに対応したメモリアドレス(MRA)に所望のレジスタのデータを書き込み、その後CLKPRGの立ち下がりに同期して制御I/Oコマンドのリードアドレスカウンタ(BRA)が+2インクリメントされる。
【0105】
3クロック目(BRA:#04)は、MEM−busから読み出した制御I/Oコマンドがコマンドエンドトリガ(BP〜end:10番地)であった場合で、PRT〜busの10番地に書き込む処理でBP−endが発行されたことをステータスコントローラが検知し、次のCLKPRGの立ち下がりのタイミングでBP−startを“0”にセットしてCLKPRGクロックを停止させ、制御I/Oコマンドのリードアドレスカウンタを+2インクリメントして制御I/Oコマンドの動作実行を完了する。
【0106】
図21は、制御I/Oコマンドの中のウエイトコマンドの動作を示すタイミングチャートである。
【0107】
1クロック目(BRA:#00)は、MEM−busから読み出した制御I/Oコマンドがウエイトコマンドである14番地に01Hを書き込むコマンドであった場合で、PRT−busの14番地に01Hが書き込まれたところで、CLKPRGの1クロック分のウエイトがかかり、その後500ns経過後にCLKPRGの立ち下がりに同期して制御I/Oコマンドのリードアドレスカウンタ(BRA)が+2インクリメントされる。
【0108】
ウエイト後の2クロック目(BRA:#02)は、MEM−busから読み出した制御I/Oコマンドがコマンドエンドトリガ(BP−end:10番地)であった場合で、PRT−busの10番地にデータを書き込む処理でBP−endが発行されたことをステータスコントローラが検知し、次のCLKPRGの立ち下がりのタイミングでBP−startを“0”にセットしてCLKPRGクロックを停止させ、制御I/Oコマンドのリードアドレスカウンタを+2インクリメントして制御I/Oコマンドの動作実行を完了する。
【0109】
(プリンタユニットの構成)
図11にプリンタユニットの外形図、図12に本プリンタのアクチュエータと、そのドライバ回路の構成を示す。
【0110】
図11中1はプリンタユニット本体を表す。本プリンタユニットのキャリッジ2には脱着可能な印字記録ヘッドユニット3と、印字記録ヘッドユニット3と同形状の画像取り込み用スキャナヘッドユニット4が装着可能になっている。印字記録ヘッドユニットは吐出口128ドットのモノクロ印字ヘッドユニットと、吐出口136ドットのカラー印字ヘッドユニットの2種類が装着可能である。
【0111】
図12で示すように本プリンタは大別して記録ヘッド121とその駆動系122、キャリッジ123とその駆動系124、紙送り機構125とその駆動系126、各種センサー127により構成される。さらにこれら駆動系を制御し、プリンタ動作を司るプリンタIOコントローラIC128が設けられている。さらに電源回路129、ユーサーにステータスを知らしめるLED129、ユーザーによる制御が可能であるスイッチ1210が設けられている。
【0112】
図13に記録ヘッドおよびヘッドドライバ回路の構成を示す。なお本実施例では印字ヘッドユニットとしてカラー印字ヘッドユニットの説明を行うが、モノクロ印字ヘッドユニットの動作原理も基本的には同様である。
【0113】
ここで本例では吐出ユイニットは136個の吐出口を有するものとし、#1〜#136は吐出ユニットに設けられた吐出口の位置に対応した番号を示すものとする。
【0114】
R1〜R136はそれぞれ#1〜#136の吐出口に対応して設けられた吐出エネルギー発生素子としての発熱抵抗体である。発熱抵抗体R1〜R136は16個を1単位としたブロックに分割され、プリンタIOコントローラICから出力される4ビットのイネーブル信号EENB、BENB1〜3(以下ブロックイネーブル信号)をデコードすることにより生成される各ブロックのコモンイネーブル信号により、通電経路のオン・オフが制御される。
【0115】
また、各発熱抵抗体にはプリンタIOコントローラICから本記録ヘッドに信号線HDATAを介し、転送クロックHCLKに同期してシリアル転送され、シリアル・パラレル変換後ヘッド内のデータラッチにて所定のタイミングでラッチされる吐出データに応じて、データに対応した位置の抵抗体の通電経路をオン・オフ制御するセグメントイネーブル信号が接続されている。発熱抵抗体はブロックイネーブル信号とセグメントイネーブル信号の両方がイネーブル状態になっている場合に通電経路がオン、すなわち発熱状態となる。
【0116】
最後に、選択された抵抗体を発熱するパルスをタイミング制御するための制御信号HENB(ヒートイネーブル)が各発熱抵抗体に接続されている。これによって定められたヒートパルスに従って発熱抵抗体R1〜R136の通電、発熱が行われる。
【0117】
図14は上記構成によるヘッド駆動のタイミングチャートを示す。ヘッド走査方向上のある位置においてブロックイネーブル信号の入力に応じてコモンイネーブル信号が順次オンされる。そのオンにより一つのブロックが選択されて通電状態になるので選択されたブロック内において転送された画像データに応じてセグメント信号をそれぞれイネーブル・ディスエーブル状態にすることにより選択された発熱抵抗体がヒートイネーブル信号で与えられたパルスタイミングで通電され、発熱に応じてインクが吐出されドット記録が行われる。
【0118】
図15はヘッドを搭載するキャリッジの走査動作を行うキャリッジモーター並びにモータードライバの構成図である。また図16はその駆動タイミングを示す。
【0119】
本例においてはキャリッジモータとしてコイルφ1〜φ4を有するステッピングモータを用い、駆動信号CMa、CMa_、CMb、CMb_と電流制御信号PWMA、PWMBを備えたモータードライバにより駆動している。また、紙送り機能を構成するラインフィードモータについても同様な構成で駆動信号LFa、LFa_LFb、LFb_により駆動される。
【0120】
本例ではセンサー機能として、キャリッジが走査範囲左端の所定場所に位置したことを検出するホームポジションセンサ、記録対象物である紙を検出するペーパーセンサが設けられており、これらセンサ情報に基づいたプリンタ制御が行われる。またシステムの温度情報、モーターの駆動電圧が後述するA/D変換機能を介し、検出可能となっている。
【0121】
本プリンタにはユーザーによって操作可能であるプリントストップ・再スタートスイッチと一回の押下により定められたライン数の紙送りを実行するラインフィードスイッチが設けられている。
【0122】
本プリンタの電源部は、プリンタの各アクチュエータへの電源供給を行う。プリンタIOコントローラICの制御により、モーター駆動用電源のほかに、ヘッド駆動用のロジック電源とインク吐出用発熱抵抗体の駆動電圧(以下ヘッドドライブ電源)のオン・オフ制御を行う。
【0123】
(プリンタIOコントローラICの構成)
プリンタIOコントローラICのブロック図を図17に示す。本ICは与えられた制御制御I/Oコマンドに基づいたプリンタ制御を行う。本コントローラICは図中に示す様に、モーター制御ブロック171、記録ヘッド制御ブロック172、データ転送ブロック173、センサステータスブロック174、パワー・IOポートブロック175と、制御I/Oコマンド実行タイミング制御回路176により構成される。また本ICはステートマシンコントローラと、プリンタバスと称するアドレスバスPA{7:0}・データバスPD{7:0}とタイミング制御信号で接続されている。各制御ブロックは各々後述する機能を持っており、基本的には制御I/Oコマンド格納用入力レジスタ群と制御回路により構成される。図18に本コントローラICのレジスタマップを示す。以下の説明では各レジスタ名は表中の該当するアドレスを使って説明する。
【0124】
(制御I/Oコマンド実行タイミング制御回路)
プリンタIOコントローラICに接続されるプリンタバスPA{7:0}、PD{7:0}は制御I/Oコマンド実行タイミング回路に接続される。プリンタバスは本回路を経由して各制御ブロックのレジスタ群にレジスタアドレスバスIPA{7:0}、レジスタデータバスIPD{7:0}として接続される。
【0125】
本回路はステートマシンコントロールICでレジスタアドレスとレジスタデータに分割された制御I/Oコマンドがプリンタバスを介して送られてくる際、本回路内でレジスタアドレス、データを保持し、プリンタコントロール部内のアドレスで指定されたレジスタに格納するタイミング、すなわち制御I/Oコマンド実行開始タイミングを一定にすることにより連続した制御I/Oコマンド処理の中で各制御I/Oコマンドの読み出しから実行までの制御I/Oコマンド実行時間を統一する機能を制御する回路である。具体的には、プリンタバスのデータは保持手段として設けられた制御I/Oコマンドラッチによりラッチされ、コマンド実行基準クロックCKPRGの立ち上がりエッジに同期したタイミングで該当レジスタにデータが格納される。このタイミングでレジスタアドレスバス、レジスタデータバスにラッチしたデータを、書き込み用制御信号〜IWRには書き込み信号を出力する。本回路の構成図を図22に、タイミング図を図19に表す。図中PA、PDバスを介してレジスタ67、31にデータが異なるタイミングで書き込まれているが、該当レジスタに書き込まれるタイミング信号〜IWRは常にCKPRGに同期したタイミングで出力される。
【0126】
(キャリッジモータ(CM)・ラインフィードモータ(LF)モータ制御ブロック)
CM,LFであるコイルφ1〜φ4を有するステッピングモータをモータドライバを介して4相2砺磁駆動するための駆動相信号各々4本と電流制御を行うためのPWM出力信号各々2本を制御するブロックである。相シフト出力パターンをレジスタ66、76でセットした後、レジスタ67、77にアクセスすることによるシフトトリガによって相信号の出力制御をおこなう。また、レジスタ64、65、74、75にPWMの設定値を格納し、レジスタ67、77にアクセスすることによるシフトトリガよって設定値に基づくPWM出力を行う。
【0127】
(記録ヘッド制御(ヒート・スキャン)ブロック)
本プリンタにプリントヘッド、またはスキャナヘッドが装着されている場合、その記録ヘッドの吐出制御を行うブロックである。
【0128】
レジスタ34〜38はヒートモード設定用レジスタであり、ヘッドのリセット、プリント・スキャンの動作切り替えなどの制御、ヒート動作を行う際の各種オプションを設定するレジスタである。またレジスタ3A〜3Fはスキャンモード設定用レジスタであり、スキャン動作を行う際のオプション、スキャンヘッドへの制御I/Oコマンド送出の制御を設定するレジスタである。
【0129】
レジスタ40〜4Bはヒートイネーブル信号の出力であるヒートパルスのパルスタイミングを設定するレジスタ群である。スキャン動作時のタイミング設定には上記パルスタイミング設定用レジスタの一部を兼用する。
【0130】
レジスタ31へのデータ01H書き込みによるヒート・スキャントリガ制御I/Oコマンドが認識されると、記録ヘッドの1カラム分の吐出制御が開始される。上記レジスタの設定値に基づいたヒート・スキャン制御が行われる。
【0131】
(データ転送ブロック)
本ブロックは記録ヘッド制御時に所定データをパラレル・シリアル変換し、コントローラからヘッドに向けて吐出データとしてシリアル転送クロックに同期して送出する機能を持つ。8ビットレジスタ32に吐出データが1バイト格納されると、転送動作が行われる。
【0132】
また、レジスタ34の設定により、スキャナ制御モードが指定されている場合には、スキャナユニットから転送クロックとともにシリアル送出されてくるスキャン画像データをシリアル・パラレル変換の後、16ビットデータとしてレジスタ3A、3Bに格納する。
【0133】
(センサステータス ブロック)
プリンタドライブ回路に設けられているセンサのレベルをレジスタ情報として読みだし可能とするブロックである。この情報はレジスタ24に格納される。また、センサの内アナログ出力入力のものでA/D入力に接続されている信号はレジスタ27のA/D変換トリガビットをアクセスすることにより、本ブロックでA/D変換され、デジタルデータとしてレジスタ2Cに格納される。これらセンサー情報をフィードバックすることにより、プリンタの状況に応じた制御が可能となる。
【0134】
(パワー・IOポートブロック)
プリンタ駆動用の電源を制御するブロックである。具体的にはモーター駆動用電源のほかに、ヘッド駆動用のロジック電源とインク吐出用発熱抵抗体の駆動電圧(以下ヘッドドライブ電源)の制御をレジスタ26の設定により行う。また、プリンタスタート・ストップ用、ラインフィード用スイッチ、ステータス表示用LEDなどの入出力ポートの制御もレジスタ20、21、28、29を使用して行われる。
【0135】
図23〜図29で、プリンタ駆動のための制御I/Oコマンド構成について説明する。
【0136】
この実施例では、キャリッジモーター、ラインフィードモーターともバイポーラ型ステッピングモーターで、かつ駆動制御方式は、定電流チョッパー方式のPWM変調によるマイクロステップ駆動である(一相あたり6分割して駆動)。
【0137】
キャリッジ初期化動作時のキャリッジモーターの回転数は、ステッピングモーターの自起動領域(300p.p.s)であるので、等速駆動をさせる。
【0138】
また、印字動作とキャリッジ復帰動作時のおのおののモーター回転数(766p.p.s)は、ステッピングモーターの自起動領域より高速であるので、印字(キャリッジ復帰)速度にするため、相切り替え時間を漸次小さくしていき(加速)、等速区間は、加速の最後の相切り替え時間で駆動し、また、停止するまで相切り替え時間を漸次大きくしていく(減速)必要があるので、大きく分けて、加速動作部分と等速動作部分、減速動作部分の3つの部分から構成される。
【0139】
図23に実際のプリンタとしてのキャリッジ初期化動作(ホームポジション検出動作)のフローチャートを示す。本発明の実施の形態のようなシステムでは、従来のプリンタのようにキャリッジモーターなどのアクチュエーターを動作させながらそれにつれて変化するセンサーの状態を監視し、状態変化によって、動作中のアクチュエーターに対する制御I/Oコマンドを変更することができないため、次のような構成をとる。すなわち、図のS1でスーパーバイザーコマンドを用いてHPセンサーの状態を読み込む。S2で読み込んだ値からHPセンサーの状態を判断し、ONであれば、前回の初期化が正常に完了(初期化済み位置)しているとして、S3に進み、キャリッジを方向にセンサー情報を毎パルスごとにバッファーにダンプしながら右方向に(キャリッジ初期化済み位置から印字方向へ向いて)120パルス移動させる。S4で再びスーパーバイザーコマンドを用いてキャリッジ停止後のHPセンサーの状態を読み込む。S5で、S4で読み込んだ値からHPセンサーの状態を判断し、OFFであれば、S6に進んで毎パルスごとにバッファーにダンプしたセンサー情報からHPセンサーがONからOFFへ切り替わった位置を判断し、切り替わったと判断した位置からON方向に54パルスの地点を初期化済み位置として、S7で左方向(印字位置からキャリッジ初期化済み位置へ向いて)に移動して初期化終了とする。S5でS4で読み込んだ値からHPセンサーの状態を判断し、ONであれば、前回の初期化が正常に完了しておらず、初期化済み位置より左側にいた可能性があるので、S8に進んで、キャリッジをさらに右方向へ120パルス(センサー情報を毎パルスごとにバッファーにダンプしながら)移動させる。S9で再びスーパーバイザーコマンドを用いてキャリッジ停止後のHPセンサーの状態を読み込む。S10でS9で読み込んだ値からHPセンサーの状態を判断し、OFFであれば、S6、S7と進んで前述のように初期化終了とする。まだONであれば、センサーが壊れているか、キャリッジが物理的に動作していない可能性が高いので、S11に進んでエラーとする。
【0140】
S2でHPセンサーの状態がOFFの場合、前回の初期化が正常に完了していないで、印字位置近傍にいるとして、S12に進み、キャリッジをセンサー情報を毎パルスごとにバッファーにダンプしながら左方向(印字位置からキャリッジ初期化済み位置へ向いて)10パルス移動させる。S13で、スーパーバイザーコマンドを用いてキャリッジ停止後のHPセンサーの状態を読み込む。S14でS13で読み込んだ値からHPセンサーの状態を判断し、OFFであれば、S15に進んで毎パルスごとにバッファーにダンプしたセンサー情報からHPセンサーがOFFからONへ切り替わった位置を判断し、そこからON方向にパルスの地点を初期化済み位置として、S18で初期化位置(HPセンサーがOFFからONへ切り替わった位置からON方向に54パルスの地点)になるように、足らない分を左方向へ移動する。
【0141】
S14でHPセンサーの状態を判断し、ONであれば、S17に進んで何回目の左スキャンかチェックし、48回以下なら再びS12に戻って、前述の動作を繰り返す。S17で回数が48回を越えていたら、このプリンタの場合、右側壁から左側壁まで480パルス分の長さなので、センサーが壊れているか、キャリッジが物理的に動作していない可能性があるので、S18に進んでエラーとする。
【0142】
図24は、前述の初期化動作中で、実際にキャリッジを動作させる際の、キャリッジモーター駆動制御I/Oコマンド群の一例を示す。制御I/Oコマンドは、初期設定の行から始まり、左から右に、また上から下の行へと進む(6B01,6101,6901,6401,6528,1200,1508,1455,6406…)。
【0143】
各制御I/Oコマンドは、アドレス・データの構成になっており、2バイトをひとかたまりとして扱い、16進数で表記する(例えば、制御I/Oコマンド6B01は、アドレス6Bhにデータ01hの書き込み)。
【0144】
キャリッジ初期化(ホームポジション検出動作)時の動作速度(相切り替え時間)を300p.p.s.とすると、1相あたりの切り替え時間は3.3333msec=3333usec、1/6相あたりの切り替え時間では555usecになる。本実施例でのウエイトタイマー制御I/Oコマンドの基本単位が、0.5usと64usとすると、64usec×8+0.5=512.5、0.5usec×85+0.5=43usec、512.5+43usec=555.5usecよって、ウエイト制御I/Oコマンドは、各々WAITH(64usec単位)=1508H、WAITL(0.5usec単位)=1455Hとなる。
【0145】
実際は、ウエイト制御I/Oコマンドの他の各々の制御I/Oコマンドを処理するのにそれぞれ約0.5usecの時間が必要になるため、正しく時間管理するためには、ウエイトタイマー制御I/Oコマンド間の他の制御I/Oコマンド数の分も計算にいれてウエイトタイマー制御I/Oコマンドの値を設定する必要がある。
【0146】
ここでの説明では、便宜上ウエイトタイマー制御I/Oコマンド自身の処理時間以外は考慮にいれていない。実際には、制御I/Oコマンド群を発行する時にその分も考慮して再計算する。
【0147】
等速部分は、基本的には2行目〜13行目までを必要パルス数分だけ繰り返すことにより実現される。2行目〜13行目までを一周期にしているのは、PWM変調によるマイクロステップ駆動の電流変化テーブルの周期がモーターの相2パルス分で一周期になるからである。
【0148】
制御I/Oコマンド個々の内容について説明すると、一行目の初期設定は、動作前のキャリッジモーターの回転方向の設定「ここでは右方向キャリッジ移動の例として01(左方向なら00)」(6B01)、バッファへダンプする中身「センサーポート(24H)の内容」を指示するレジスタライトアドレスの設定制御I/Oコマンド(1324)、キャリッジモーターPWM電流ON制御I/Oコマンド(6101)である。
【0149】
二行目は、最初の相シフト(スタート相の次の相励磁)制御I/Oコマンド(6901)、キャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6401)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6528)、センサー情報ダンプのためのレジスタライトトリガー制御I/Oコマンド(1200)、動作速度300p.p.s.(1/6相あたりの切り替え時間555usec)を実現するためのウエイトタイマー制御I/OコマンドH(64usec単位)(1508)、およびウエイトタイマー制御I/OコマンドL(0.5usec単位)(1455)、である。
【0150】
三行目はスタート相から1/6相分だけ進んだ位置でのキャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6406)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6526)、センサー情報ダンプのためのレジスタライトトリガー制御I/Oコマンド(1200)、動作速度300p.p.s.(1/6相あたりの切り替え時間555usec)を実現するためのウエイトタイマー制御I/OコマンドH(64usec単位)(1508)、およびウエイトタイマー制御I/OコマンドL(0.5usec単位)(1455)、である。
【0151】
同様に、四行目はスタート相から2/6相分進んだ位置、五行目はスタート相から3/6相分進んだ位置、六行目はスタート相から4/6相分進んだ位置、七行目はスタート相から5/6相分進んだ位置、の制御I/Oコマンドである。
【0152】
基本的に三行目から七行目は、処理の内容は一緒で、キャリッジモーターPWM電流のA相/B相に書き込む電流値だけが、マイクロステップ実現のために、正弦関数的に変化している。実際には電流の流れは、A相/B相とも方向性があるが、ここではその電流量の絶対値だけ書き込み、方向については、ドライバ側で変化させるので負の値はとらない。八行目はスタート相から6/6相分進んだ位置すなわちスタート相の次の相なので、再び相シフト(スタート相の次の次の相励磁)(6901)、キャリッジモーターPWM電流(A相)書き込み(6401)、キャリッジモーターPWM電流(B相)書き込み(6528)、センサー情報ダンプのためのレジスタライトトリガー(1200)、動作速度300p.p.s.(1/6相あたりの切り替え時間555usec)を実現するためのウエイトタイマー制御I/OコマンドH(64usec単位)(1508)、およびウエイトタイマー制御I/OコマンドL(0.5usec単位)(1455)、である。
【0153】
図25〜図29は、実際に片方向印字動作(キャリッジ復帰動作)、紙送り(ラインフィード)動作とを遂次行う際の、制御I/Oコマンド群の一例を示す。
【0154】
図25〜27は、片方向印字動作(キャリッジ復帰動作)時の制御I/Oコマンド群を表す。印字動作時のキャリッジモーター回転数は、813p.p.sであり、通常のステッピングモーターの自起動領域より高速であるので、加減速動作が必要となり、大きく分けて、加速動作と等速動作部分(印字動作を含む)、減速動作部分の3つの部分から構成される。
【0155】
図25は、片方向印字動作(キャリッジ復帰動作)時の加速部分である。制御I/Oコマンドは、初期設定の行から始まり、左から右に、また上から下の行へと進む(6B01,6101,6401,6528,6528,159C,1400,6901…)。
【0156】
一行目の初期設定は、動作前のキャリッジモーターの回転方向の設定「ここでは右方向キャリッジ移動(および印字)の例として01(左方向なら00)」(6B01)、キャリッジモーターPWM電流ON制御I/Oコマンド(6101)である。
【0157】
二行目はスタート相の励磁のためのキャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6401)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6528)、スタート相の励磁(保持)時間設定のためのウェイトタイマー制御I/OコマンドH(64usec単位)(159C)、およびウエイトタイマー制御I/OコマンドL(0.5usec単位)(1400)、である。
【0158】
三行目は、最初の相シフト(スタート相の次の相励磁)制御I/Oコマンド(6901)、キャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6401)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6528)、加速動作を実現するためのウエイトタイマー制御I/OコマンドH(64usec単位)(1519)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(14D3)、である。
【0159】
四行目はスタート相から1/6相分だけ進んだ位置でのキャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6406)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6526)、加速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1518)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(14B3)、である。
【0160】
同様に、五行目はスタート相から2/6相分進んだ位置、六行目はスタート相から3/6相分進んだ位置、七行目はスタート相から4/6相分進んだ位置、八行目はスタート相から5/6相分進んだ位置、の制御I/Oコマンドである。基本的に四行目から八行目は、処理の内容は一緒で、キャリッジモーターPWM電流のA相/B相に書き込む電流値が、マイクロステップ実現のために、正弦関数的に変化し、また、ウェイトタイマー制御I/Oコマンドの設定値が、加速動作実現のために少しずつ小さくなっている。
【0161】
通常の加速動作では、相切り替えのタイミングで徐々に時間間隔をせばめていくのであるが、本実施例の場合、マイクロステップ制御を行っているため、同じ相内でも、徐々に時間を変化させていく必要がある(加速1−1〜加速1−6の間でも変化させている)。
【0162】
また、実際には電流の流れは、A相/B相とも方向性があるが、ここではその電流量の絶対値だけ書き込み、方向については、モータードライバー側で変化させるので負の値はとらない。
【0163】
九行目はスタート相から6/6相分進んだ位置すなわちスタート相の次の相なので、再び相シフト(スタート相の次の次の相励磁)(6901)、キャリッジモーターPWM電流(A相)書き込み(6428)、キャリッジモーターPWM電流の(B相)書き込み(6501)、加速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(150F)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(14ED)、である。
【0164】
以下、同様に加速動作を本実施例では22ステップ分繰り返す。加速が終了すると、次は等速部分である。
【0165】
図26は、片方向印字動作時の等速部分である。
【0166】
一行目は、最初の相シフト(等速動作スタート相の次の相励磁)制御I/Oコマンド(6901)、キャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6401)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6528)、等速度813p.p.s(1/6相あたりの切り替え時間205usec)を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1508)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1433)、である。
【0167】
二行目は等速動作スタート相から1/6相分だけ進んだ位置でのキャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6406)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6526)、等速度813p.p.s(1/6相あたりの切り替え時間205usec)を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1508)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1433)、である。
【0168】
同様に、三行目はスタート相から2/6相分進んだ位置、四行目はスタート相から3/6相分進んだ位置、五行目はスタート相から4/6相分進んだ位置、六行目はスタート相から5/6相分進んだ位置、の制御I/Oコマンドである。
【0169】
基本的に二行目から六行目は、処理の内容は一緒で、キャリッジモーターPWM電流のA相/B相に書き込む電流値だけが、マイクロステップ実現のために、正弦関数的に変化している。実際には相を流れる電流は、A相/B相とも方向性があるが、ここではその電流量の絶対値だけ書き込み、方向については、ドライバー側で変化させるので負の値はとらない。
【0170】
七行目はスタート相から6/6相分進んだ位置、すなわち等速動作スタート相の次の相の位置にいるので、再び相シフト制御I/Oコマンド(等速動作スタート相の次の次の相励磁)(6901)、キャリッジモーターPWM電流の(A相)書き込み制御I/Oコマンド(6428)、キャリッジモーターPWM電流の(B相)書き込み制御I/Oコマンド(6501)、等速動作速度813p.p.s.(1/6相あたりの切り替え時間205usec)を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1508)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1433)、である。
【0171】
等速部分は、基本的には1行目〜12行目までを必要パルス分だけ繰り返すことにより実現される。1行目〜12行目までを一周期にしているのは、PWM変調によるマイクロステップ駆動の電流変化テーブルの周期がモーターの相2パルス分で一周期になるからである。
【0172】
本発明の実施の形態では、キャリッジモーター1パルス(1相分)で、1/60インチキャリッジが移動する。1相をマイクロステップ制御するために6分割しているので、1マイクロステップあたり1/60インチ÷6=1/360インチの移動に相当する。
【0173】
印字解像度が360d.p.i相当の記録ヘッドでは、各マイクロステップごとに、1カラムの印字に相当するので、実際に360d.p.i相当の印字を行う場合には、図26の各行(マイクロステップ)中に1カラム分の印字データ転送制御I/Oコマンドとヒートスキャントリガー制御I/Oコマンド等がさらに付加されるが、これについては後述する。
【0174】
等速(印字動作)が終了すると、次は減速部分である。
【0175】
図27は、片方向印字動作時の減速部分である。制御I/Oコマンドは、第一行から始まり、左から右に、また上から下の行へと進む(6901,6401,6528,1503,1433,6406…)。
【0176】
一行目は、最初の相シフト(減速スタート相の次の相励磁)制御I/Oコマンド(6901)、キャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6401)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6528)、減速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1503)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1433)、である。
【0177】
二行目はスタート相から1/6相分だけ進んだ位置でのキャリッジモーターPWM電流(A相)書き込み制御I/Oコマンド(6406)、キャリッジモーターPWM電流(B相)書き込み制御I/Oコマンド(6526)、減速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1503)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1433)、である。
【0178】
同様に、三行目はスタート相から2/6相分進んだ位置、四行目はスタート相から3/6相分進んだ位置、五行目はスタート相から4/6相分進んだ位置、六行目はスタート相から5/6相分進んだ位置、の制御I/Oコマンドである。基本的に二行目から六行目は、処理の内容は一緒で、キャリッジモーターPWM電流のA相/B相に書き込む電流値が、マイクロステップ実現のために、正弦関数的に変化し、また、ウェイトタイマー制御I/Oコマンドの設定はが減速動作実現のために少しずつ大きくなるが、減速1〜3パルスあたりではまだそれほど変化していない。
【0179】
通常の減速動作では、相切り替えのタイミングで徐々に時間間隔広げていくのであるが、本発明の実施の形態の場合、マイクロステップ制御を行っているめ、同じ相内でも、徐々に時間を変化させていく必要がある(例えば、減速3−1〜減速3−6の間でも変化させている)。
【0180】
また、実際には電流の流れは、A相/B相とも方向性があるが、ここではその電流量の絶対値だけ書き込み、方向については、モータードライバー側で変化させるので負の値はとらない。
【0181】
七行目は減速スタート相から6/6相分進んだ位置、すなわち減速スタート相の次の相なので、再び相シフト(減速スタート相の次の次の相励磁)(6901)、キャリッジモーターPWM電流(A相)書き込み(6428)、キャリッジモーターPWM電流(B相)書き込み(6501)、加速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1503)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1433)、である。
【0182】
以下、同様に減速動作を本実施例では22ステップ分繰り返す。減速が終了すると、減速最後の相(停止相)を励磁し、しかるのちに、最後の行で、電流を切る。
【0183】
キャリッジ復帰動作は、基本的には、前述の加速、等速、減速という制御I/Oコマンドと同じであるが、加速の初期設定で、回転方向が異なるのと、(6B01−>6b00)、等速部分に印字データ、ヒートトリガーとかの制御I/Oコマンドが付加されないという違いがある。
【0184】
図28〜29は、紙送り動作(ここでは24パルスの送り)の加速、減速の制御I/Oコマンド群を表す。24パルス送り時のラインフィードモーター回転数の最高速度は、801p.p.sであり、通常のステッピングモーターの自起動領域より高速であるので、加減速動作が必要となる。
【0185】
本発明の実施の形態では紙送りモーターの加速減速に各々20パルス必要であるが、ここでは24パルスの紙送りなので、加速減速とも各々のテーブルから12パルスずつを用い、等速部分は存在しない。よって、加速動作と、減速動作の2つの部分から構成される。
【0186】
図28は、24パルス紙送り動作時の加速部分である。制御I/Oコマンドは、初期設定の行から始まり、左から右に、また上から下の行へと進む(7B01,7101,7401,7528,159C,1400,7901…)。
【0187】
一行目の初期設定は、動作前の紙送りモーターの回転方向の設定「ここでは正方向の紙送りの例として01(逆方向なら00)」(7B01)、紙送りモーターPWM電流ON制御I/Oコマンド(7101)である。
【0188】
二行目はスタート相の励磁のための紙送りモーターPWM電流(A相)書き込み制御I/Oコマンド(7401)、紙送りモーターPWM電流(B相)書き込み制御I/Oコマンド(7528)、スタート相の励磁(保持)時間設定のためのウェイトタイマー制御I/OコマンドH(64usec単位)(159C)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1400)、である。
【0189】
三行目は、最初の相シフト(スタート相の次の相励磁)制御I/Oコマンド(7901)、紙送りモーターPWM電流(A相)書き込み制御I/Oコマンド(7401)、紙送りモーターPWM電流(B相)書き込み制御I/Oコマンド(7528)、加速動作を実現するためのウエイトタイマー制御I/OコマンドH(64usec単位)(1505)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1424)、である。
【0190】
四行目はスタート相から1/6相分だけ進んだ位置での紙送りモーターPWM電流(A相)書き込み制御I/Oコマンド(7406)、紙送りモーターPWM電流(B相)書き込み制御I/Oコマンド(7526)、加速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1505)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(141C)、である。
【0191】
同様に、五行目はスタート相から2/6相分進んだ位置、六行目はスタート相から3/6相分進んだ位置、七行目はスタート相から4/6相分進んだ位置、八行目はスタート相から5/6相分進んだ位置、の制御コマンドである。基本的に四行目から八行目は、処理の内容は一緒で紙送りモーターPWM電流のA相/B相に書き込む電流値が、マイクロステップ実現のために、正弦関数的に変化し、また、ウェイトタイマー制御I/Oコマンドの設定値が、加速動作実現のために少しずつ小さくなっている。
【0192】
通常の加速動作では、相切り替えのタイミングで徐々に時間間隔をせばめていくのであるが、本発明の実施の形態の場合、マイクロステップ制御を行っているため、同じ相内でも、徐々に時間を変化させていく必要がある(加速1−1〜加速1−6の間でも変化させている)。
【0193】
また、実際には電流の流れは、A相/B相とも方向性があるが、ここではその電流量の絶対値だけ書き込み、方向については、モータードライバー側で変化させるので負の値はとらない。
【0194】
九行目はスタート相から6/6相分進んだ位置すなわちスタート相の次の相なので、再び相シフト(スタート相の次の次の相励磁)(7901)、紙送りモーターPWM電流(A相)書き込み(7428)、紙送りモーターPWM電流(B相)書き込み(7501)、加速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(150F)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(14ED)、である。
【0195】
以下、同様に加速動作を本発明の実施の形態では12ステップ分繰り返す。加速が終了すると、次は減速部分である。
【0196】
図29は、24パルス紙送り動作時の減速部分である。制御I/Oコマンドは、第一行から始まり、左から右に、または上から下へと進む(7901,7401,7528,1503,1420,7406…)。
【0197】
一行目は、最初の相シフト(減速スタート相の次の相励磁)制御I/Oコマンド(7901)、紙送りモーターPWM電流(A相)書き込み制御I/Oコマンド(7401)、紙送りモーターPWM電流(B相)書き込み制御I/Oコマンド(7528)、減速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1503)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1420)、である。
【0198】
二行目は減速スタート相から1/6相分だけ進んだ位置での紙送りモーターPWM電流(A相)書き込み制御I/Oコマンド(7406)、紙送りモーターPWM電流(B相)書き込み制御I/Oコマンド(7526)、減速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1503)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1424)、である。
【0199】
同様に、三行目はスタート相から2/6相分進んだ位置、四行目はスタート相から3/6相分進んだ位置、五行目はスタート相から4/6相分進んだ位置、六行目はスタート相から5/6相分進んだ位置、の制御I/Oコマンドである。基本的に二行目から六行目は、処理の内容は一緒で紙送りモーターPWM電流のA相/B相に書き込む電流値が、マイクロステップ実現のために、正弦関数的に変化し、また、ウェイトタイマー制御I/Oコマンドの設定値が減速動作実現のために少しずつ大きくなっている。
【0200】
通常の減速動作では、相切り替えのタイミングで徐々に時間間隔を広げていくのであるが、本実施例の場合、マイクロステップ制御を行っているため、同じ相内でも、徐々に時間を変化させていく必要がある(例えば、減速3−1〜加速3−6の間でも変化させている)。
【0201】
また、実際には電流の流れは、A相/B相とも方向性があるが、ここではその電流量の絶対値だけ書き込み、方向については、モータードライバー側で変化させるので負の値はとらない。
【0202】
七行目は減速スタート相から6/6相分進んだ位置、すなわち減速スタート相の次の相なので、再び相シフト(減速スタート相の次の次の相励磁)(7901)、紙送りモーターPWM電流(A相)書き込み(7428)、紙送りモーターPWM電流(B相)書き込み(7501)、加速動作を実現するためのウェイトタイマー制御I/OコマンドH(64usec単位)(1503)、およびウェイトタイマー制御I/OコマンドL(0.5usec単位)(1434)、である。
【0203】
以下、同様に加速動作を本実施例では12ステップ分繰り返す。減速が終了すると、減速最後の相(停止相)を励磁し、しかるのちに、最後の行の停止処理で、電流を切る。
【0204】
図30はメディアの構成を示した図で、メディアにはフロッピーディスク、CR−ROM、MOなどがある。メディアの構成で(1)Installerは(2)から(7)のソフトをホストシステムにインストールするためのソフトウエア、(2)RTOS Runtime LibraryはホストシステムでRTOS環境を提供するためのソフトウエア、(3)Language Monitorはホストのスプーリングサブシステムに追加されW−RTOS Host Applicationとデ−タのやり取りを行うソフトウエア、(4)W−RTOS Host ApplicationはLanguage Monitorから印字コマンドを受け取り、RTOS Taskへ渡す役割と、RTOS Taskをコントロールする役割を行うソフトウエア、(5)RTOS TaskはW−RTOS Host Applicationから渡される印字、スキャンコマンドなどに従って印字やスキャンを行うソフトウエアで、コントロールコード解析Task、印字処理Task、スキャン処理Task、ヘッド交換処理Task、給・排紙処理Task、タイマー管理Task、回復系処理Task、ヘッド温調処理Task、エラー処理Task、電源管理Taskからなる。(6)VCOMM Port DriverはVCOMMからの印字コマンドをRTOS Driverに引き渡す処理を行うソフトウエア、(7)RTOSDriverはVCOMM Port Driverからの印字コマンドをRTOS Taskへ引き渡すことを行うソフトウエア、(8)Utilityはプリンタの環境設定やヘッド交換などを行うユーティリティーソフトウエアである。以上のソフトウエアが(1)のInstallerによりシステムに設定され実行可能となる。
【0205】
図31は、ウィンドウズ95環境下における、ウィンドウズ・アプリケーションからLPTポートにつながるプリンタへ出力する場合の、ソフトウェア処理手順を示す。図40において、4001は印刷機能を有するウィンドウズアプリケーション、4002はプリンティング・サブシステム、4003はスプーリング・サブシステム、4004はVCOMM、4005はポート・ドライバ、4006はLPTポートであり、4001〜4005の動作はすべて、ウィンドウズ・システムの指令を受ける。
【0206】
印刷機能をもつ一般的なウィンドウズ・アプリケーション4001から出力されたデータは、プリンティング・サブシステム4002に送られ、ウィンドウズ・オペレーティング・システムにおけるグラフィックデバイスのハードウェアに対するインターフェースでいるGDIと連動してプリンタドライバが出力し、印刷用データ(コントロールコード)に変換される。さらにスプーリング・サブシステム4003に送られ、スプーラープロセスが印刷用データ(コントロールコード)をスプールファイルに蓄え、VCOMM4004に対して書き出す。VCOMM4004はLPTポート・ドライバ4005を通じて、物理的なLPTポート4006に印刷用データ(コントロールコード)を書き出す。
【0207】
本発明では、Windows95環境下で動くリアルタイムOSを使用する。RTOSは、CPU動作モードのリング0でリアルタイム環境を作り、そこで複数のシグナル・プロセッシング・タスクを実行することが出来る。RTOSタスクとリング3で実行されるウィンドウズアプリケーションとは、ウィンドウ・メッセージを用いて非同期に通信する手段がある。RTOSタスクと通信するWindowsアプリケーションを、W−RTOSホストアプリケーションと呼ぶ。また、RTOSタスク間も、非同期に通信する手段を有する。
【0208】
図39は、従来例のウィンドウズ95環境下における、RTOSタスクとウィンドウズ・アプリケーションの通信、またRTOSタスク間の通信を示す。図39において、4901はW−RTOSホスト・アプリケーション、4902はW−RTOSホスト・アプリケーションと通信を行うRTOSタスク、4903はRTOSタスク間の通信を行うRTOSタスクである。
【0209】
RTOSタスク4902は、データの要求、データ処理の終了等をウィンドウズ・メッセージの形でW−RTOSホスト・アプリケーション4901に通信する。W−RTOSホスト・アプリケーション4901は、RTOSタスク4901の処理開始を通信し、メッセージに応じてデータの送信を行う。
【0210】
図32は、本発明における印刷処理の流れを示す、ソフトウエア・ブロック図である。図41に示されるように、この印刷システムは、ウィンドウズ・アプリケーション4101、プリンティング・サブシステム4102、スプーリング・サブシステム4103、Language Monitor4104、セマフォA4105、セマフォB4106、共有メモリ4107、W−RTOSホスト・アプリケーション4108、RTOSタスク4109、プリンタ・ポート4110により構成される。
【0211】
ウィンドウズ95・オペレーティング・システムの場合、スプーリング・サブシステムは複数のコンポーネントにより構成され、それらのうち、VCOMMと通信しPort Driverにデータを書き出すコンポーネントとして、Port Monitor、Language Monitorがある。本発明においては、印刷用データ(コントロールコード)をスプーリング・サブシステムからフックするために、独自のLanguage Monitor4104を作成し、スプーリング・サブシステム4103に追加する。
【0212】
Language Monitor4104はいくつかの関数をエクスポートするが、双方向のプリンタを考慮しない場合、印刷用データ(コントロールコード)を処理するとき、ウィンドウズ95・システムは、StartDocPort→WritePort(複数回)→EndDocPortの様にLanguage Monitorの関数を呼び出す。
【0213】
図31で示したのと同様に、印刷機能をもつ一般的なウィンドウズ・アプリケーション4101から出力されたデータは、プリンティング・サブシステム4102で処理され、スプーリング・サブシステム4103に送られる。スプーリング・サブシステム4103を構成するコンポーネントの一つで、今回新たに追加したLanguage Monitor4104において印刷用データ(コントロールコード)を処理する際、まず図33の動作が行われる。StartDocPort0命令がコールされ、図33のステップ4201、4202においてセマフォA4105とセマフォB4106が作成される。次にステップ4203において共有メモリ4107がアロケートされる。さらにステップ4204において、Language Monitor4104の子プロセスとして、WinSPOXホスト・アプリケーション4108が生成される。最後にステップ4205においてPort MonitorのStartDocPort0命令をコールする。
【0214】
図33のステップ4204で子プロセスとして生成されたW−RTOSホスト・アプリケーション4108は、図36に示す動作を行う。すなわち、ステップ4501においてRTOSタスク4109を起動し、ステップ4502において、W−RTOSホスト・アプリケーション4108とRTOSタスク4109との通信を初期化し、ステップ4503、4504においてセマフォA4105、セマフォB4106をオープンし、ステップ4505においてセマフォA4105を待つ。
【0215】
一方、図33の動作を行った後、Language Monitor4104においては、図34の動作が行われる。Write Port0命令がコールされ、図34のステップ4301において共有メモリ4107がマッピングされ、ステップ4302において印刷用データ(コントロールコード)が共有メモリ4107に対して書き出される。そしてステップ4303においてセマフォA4105を解放し、ステップ4304でセマフォBを待つ。
【0216】
他方、図36の動作を行った後、W−RTOSホスト・アプリケーション4108は、図37の動作を行う。すなわち、ステップ4601において共有メモリ4107をオープンし、ステップ4602において共有メモリ4107をW−RTOSホスト・アプリケーション4108のプロセス空間にマッピングし、ステップ4603において、この時点で図34のステップ4302で既に共有メモリ4107に対して書き出されている印刷用データ(コントロールコード)を読み出し、ステップ4604においてRTOSタスク4109に対してこの印刷用データ(コントロールコード)を書き出す。さらにステップ4605においてセマフォB4106を解放し、ステップ4606においてセマフォA4105を待つ。RTOSタスク4109において、書き出された印刷用データ(コントロールコード)は、プリンタヘッドイメージに変換され、プリンタ・ポート4110に書き出される。
【0217】
ウィンドウズ95・システムは、スプールされたデータがなくなるまで図34の動作を繰り返す。これにより、図34、図37の動作が繰り返されて、一連の印字処理が行われる。
【0218】
スプールされたデータがなくなると、ウィンドウズ95・システムは図35の動作を行う。EndDocPort0命令がコールされ、図35のステップ4401、4402においてセマフォA、Bが破棄され、ステップ4403において共有メモリが破棄される。最後にステップ4404においてPortMonitorのEndDocPort0命令をコールする。
【0219】
図38は、本発明におけるスキャナ処理の流れを示すソフトウエアブロック図である。
【0220】
図38に示されるように、このスキャナ・システムは、ウィンドウズ・スキャナアプリケーション4701、スキャナドライバ4702、セマフォC4703、セマフォD4704、共有メモリ4705、W−RTOSホスト・アプリケーション4706、RTOSタスク4707、スキャナ・ポート4708により構成される。
【0221】
発明の実施の形態1の図40で示したのと同様に、スキャナ機能をもつ一般的なウィンドウズ・アプリケーション4701がスキャン開始指令を出すと、スキャナ・ドライバ4702がセマフォC4703とセマフォD4704を作成し、共有メモリ4705をアロケートする。そして、スキャナ・ドライバ4702の子プロセスとして、W−RTOSホスト・アプリケーション4706を生成する。その後、スキャン開始コントロールコードが、RTOSタスク4707、スキャナ・ポート4708を通じてスキャナ装置に出される。
【0222】
スキャナ装置から、スキャナ・ポート4708を経由したスキャン・データは、RTOSタスク4707においてバッファリングされ、W−RTOSホスト・アプリケーション4706に送られる。
【0223】
W−RTOSホスト・アプリケーション4706は、共有メモリ4705を介し、セマフォC4703、セマフォD4704を用いて同期を取り、スキャナ・ドライバ4702からウィンドウズ・スキャナ・アプリケーションにスキャン・データを送る。
【0224】
図40はタスクの構成を示す図で、タスクを管理するTask Controlと実行されるTaskから構成される。Task Controlはタスクの実行、実行順序を管理するTask Dispatacher60−01と時間管理を行うTimer60−02からなる。Task ControlはリアルタイムOS RTOSのシステムの一部で、Taskの管理を行う。Taskはメインの実行を行う親タスクと親タスクから生成される子タスクから構成される。親タスクは3つのフェーズを持ち、タスクの初期化を行うCreate Phase60−03、タスクの本体となるExecute Phase60−04、タスクの終了処理を行うDelete Phase60−05からなり、Create,Execute,Deleteの順で実行される。子タスクは親タスクから実行時に生成されTask1−Taskn60−06までのn個のタスクを生成することができる。親タスクのExecute Phaseと子タスク1−nはそれぞれ個別にタスクの順位を表すプライオリティを持つ。これらのタスクは、図32の4109で示される。Task Dispatcherは各タスクのプライオリティに従ってタスクの遷移状態が変わったときにタスク実行の切り換えを行う。Timerは一定の時間間隔で実行されるタスクのために、一定時間ごとに特定のタスクに実行の切り替えを行う。タスクは他のタスクとの間で同期をとるためにセマフォを持ち、セマフォの管理もTask Dispatcherで行われる。セマフォはタスクで生成されたセマフォに設定される値によりタスクの実行の中断再開を管理することができる。セマフォの値が変更されるのを待つことをセマフォ待ち、セマフォに値を設定することをセマフォ送信と呼ぶ。
【0225】
図41はタスクの遷移関係を示した図で、まずタスクは矢印createで生成されReady状態となる。Ready状態となったタスクはTask Dispatcherにより管理されキューに登録される、キューはタスクがReady状態にされた順でプライオリティごとに登録し、登録されたタスクの内で最もプライオリティの高いタスクでキューの先頭にあるタスクがRunning状態となる。図中の矢印Runとなる。矢印changeはRunning状態のタスクを他のタスクに切り換えるためにReady状態に切り換える。Running状態のタスクがセマフォ待ちを行い、中断状態になるのが矢印waitでWait状態となる。矢印readyはWait状態でセマフォ送信を受けるか、中断が終了することでWait状態からReady状態となりタスクのキューの最後に登録される。Running状態のタスクが終了するのが矢印exitでTerminate状態となる。Ready,Wait状態からタスクを終了するのが矢印deleteでTerminate状態となる。矢印change,exit,wait,delete,readyの各状態遷移が起きた場合にTask Dispatcherにより次のタスクがReady状態からRunning状態とされ次のタスクが実行される。Timerで実行に移されるタスクも同じ遷移を行いRunning状態とされる。ただし、Timerの場合には設定された一定時間でタスクの遷移が行われるが、通常のタスクでは矢印change,exit,wait,delete,readyの各状態遷移が起きた場合にのみタスクの遷移が実行される。以上のタスクの管理によりタスクの実行、切り換えと、時間によるタスクの実行が行える。
【0226】
図42は、本発明の実施の形態で実行されるタスクを表した図である。図40のTask−Tasknに当たる。コントロールコード従って各タスクに遷移を変更するコントロールコード解析Task62−01、コントロールコード解析Taskにより実行され印字を行う印字処理Task52−02、スキャナでスキャンを行うスキャン処理Task62−03、印字ヘッド、スキャンヘッドの交換を行うヘッド交換処理Task62−04、給紙・排紙を行う給、排紙処理Task62−05がある。また、Timerにより一定時間ごとに呼び出され各タスクに遷移を変更するタイマー管理Task62−06、タイマー管理Taskにより実行される印字ヘッドのメンテナンス処理を行う回復系処理Task62−07、印字・スキャンヘッドの温度管理を行うヘッド温度処理Task62−08、様々なエラーを処理するエラー処理Task62−09、電源の状態を管理する電源処理Task62−10がある。コントロールコード解析Task、印字処理Task、スキャン処理Task、ヘッド交換処理Task、給、排紙処理Taskは同じプライオリティを持つ。タイマー管理Task、回復系処理Task、ヘッド温調処理Task、エラー処理Task、電源管理Taskは同じプライオリティを持ち、コントロールコード解析Task、印字処理Task、スキャン処理Task、ヘッド交換処理Task、給、排紙処理Taskより高いプライオリティを持つ。各タスクの詳細については後述のフローチャートに従って説明する。
【0227】
従来のプリンタ装置ではプリンタ装置内の中央演算装置CPUでこれらとほぼ同等のタスクが実行され、印字が行われていた。本発明では、これらのタスクはホストコンピュータ内の中央演算装置CPUで実行される。
【0228】
図43はコントロールコードの基本形式を示しており、ESCはコントロールコードの識別子(1Bh)でコントロールコードの開始を表す。コントロールコードには、EPSON、ESCP、HP、PCL、Canon color native commandなどがあり、印字、スキャンを行うための制御指示を行う。次にcommandでコントロールコードの種類を表す。commandの内容は図44に示す。lengthは以降に続くデータのサイズを表し、バイト単位の数値となる。length=0は以降に続くデータのないことをを表す。dataはイメージデ−タ、モード、フィード量などの指定を行うデータとなる。コントロールコードはアプリケーションから印字・スキャンを行うための各タスクに送られてくる。実施例1でコントロールコードは、図32のウィンドウ・アプリケーション4101、プリンティング・サブシステム4102、スプーリング・サブシステム4103、Language Moniter4104、共有メモリ4107、W−RTOSホスト・アプリケーション4108を経て各タスクに渡される。実施例2でコントロールコードは、図78のウィンドウ・アプリケーション90−01、プリンティング・サブシステム90−02、スプーリング・サブシステム90−03、VCOMM90−08、VCOMM Port Driver90−09、RTOS Driver90−10を経て各タスクに渡される。
【0229】
図44に本発明の実施の形態の具体的なコントロールを示す。(1)ESC P0は印字処理Taskへの切り換えを行うコントロールコード。(2)ESCS0はスキャン処理Taskへの切り換えを行うコントロールコード。(3)ESC E0は印字・スキャンTaskの終了コントロールコード。(4)ESC H 1modeはヘッド交換指示コントロールコード。mode=0でヘッド交換開始、mode=1でヘッド交換終了。(5)ESC I0は給紙指示コントロールコード。(6)ESC 00は排紙コントロールコード。(7)ESC icolor length dataは印字イメージコントロールコードでcolorは色の指定を表し、K=ブラック、C=シアン、M=マゼンタ、Y=イエローを指示し以降のデータの色がcolorで決まる。lengthがデータのサイズを表す。dataがイメージのデータで、1バイトは8ビット、1ビットが1ドットを表す。このコントロールコードはラスタイメージのコントロールコードでラスタ単位で各色のラスタデータを指定する。(8)ESCs0はラスタスキップコントロールコードで1ラスタ分ラスタ位置を下へ更新する。(9)ESCf2feedはフィードを指定するコントロールコードで、feedにフィード量を指定する。
【0230】
図45に1ラスタ分のイメージデータとラスタスキップコントロールコードを連続して送る場合の例を示している。4色分のラスタデータのイメージコントロールコードとラスタスキップコントロールコードで1ラスタ分のイメージが出来る。この順でイメージデータを1ページ分繰り返し送ることにより1ページのカラー印字を行う。
【0231】
図46は、印字ヘッド図11の2のノズル部分の概略構成を示した図である。符号(A)はカラーインクジェットヘッド、(B)はモノクロインクジェットヘッドを示している。カラーヘッド(A)は、三色のカラーヘッド部分とブラックヘッドの部分からなり、上からイエロー(Y)、マゼンタ(M)、シアン(C)、ブラック(Bk)の順で並び、三色は24ドット、ブラックは64ドットから成り、それぞれの色の間は色の干渉を防ぐために8ドットづつの間隔が取られている。インクジェットのヘッドでは1ドットごとに一本のノズルが配置されており、この場合では1ドットは1/360DPI(ドット/インチ)の分解能を持つ。カラーデータの印字は四色のインクジェットヘッドからそれぞれの色のインクを噴出して行い、それぞれのインクの色の重なりによりインクジェットヘッドにない色の印字も可能となる。ブラックインクジェットのヘッド部分はモノクロの印字に使われる。モノクロインクジェットヘッド(B)はモノクロ専用印字のインクジェットヘッドでブラックインクジェットヘッドだけで構成される。モノクロインクジェットヘッドは128ドットで構成され、一度の印字で128ドットの全てのインクジェットヘッドを使うことが出来る。
【0232】
図47〜53は図45で示したイメージコントロールコードのイメージデータを蓄え加工するためのバッファを示した図である。図47から図51までのバッファは横方向5760ドット分のドット幅を持ち、本実施例では横方向の分解能が720DPI(ドット/インチ)であり、横方向は5760/720で8インチの幅が印字領域となる。図52は8インチ+αの幅を持つ。図47から図49までのバッファはイメージをラスタイメージとして保持する。図50から図52はラスタイメージデータを縦横変換したカラムイメージとして保持する。YMCKは各色に対応し、ラスタ数はバッファの保持できるラスタ数を表す。ドット数は縦横変換後の縦ドット数を表し、たとえば24ドットは3バイトとなる。図53にラスタとカラムのデータの配置を示す。ラスタでは1バイト(8ドット)単位のデータが横方向に1>2>3>4>…>nの順でバッファに保持され、カラムでは1バイト(8ドット)単位のデータが縦方向に1>2>3>4>…>nの順でバッファに保持される。これは縦24ドットの場合である。
【0233】
図47はラスタイメージデータを8ラスタ単位で蓄えるためのバッファ。図48は図47で蓄えられたラスタイメージデータを2回分蓄えるバッファで、後で説明するイメージデータを加工するために使用され16ラスタ分の大きさを持つ。図47で蓄えられたデータが8ラスタ分一杯になると、図48のバッファへ送られる。図48のバッファにまだデータがセットされていない場合図47のバッファは図48のバッファの前半8ラスタに送られ、すでに図48の前半8ラスタにデータがセットされていれば図48のバッファの後半8ラスタにセットされる。図49は図48に蓄えられた加工されたデータを印字に従って保持するバッファである。印字ヘッドは図46の(A)に示したように一番下にブラック、シアン、マゼンタ、イエローの順で配置されているため、上に配置される色ほど後から印字されるためデータを多く蓄える必要がありK<C<M<Yの順でバッファのラスタ数も多くなる。印字方法については後述する。図48のバッファから図49のバッファへは図48のバッファの前半8ラスタが送られ、図48のバッファは後半8ラスタが前半に移動される。これは、図48のバッファで行われる加工処理が16ラスタ単位で行われるためで、加工の終了した図48の前半8ラスタが図49へ送られる。図50は図49で蓄えられたラスタデータを印字ヘッドに合わせた形で縦横変換したカラムデータを蓄えるバッファである。図50の形式のデータを図46の(A)で示した印字ヘッドに送ることで印字が出来る。図49のバッファから図50のバッファへは図49のKバッファに24ラスタ蓄わえられた時点で行われる。図51は図50で作り出された印字ヘッドに対応したデータに印字パスの処理を行うためのバッファである。印字パスとは複数回印字イメージを重ねて印字する(ファイン印字)、印字データを間引いて印字する(ドラフト印字)などを行うことで、本発明の実施の形態では重ね合わせ、間引きを行わない(ハイクオリティ印字)を印字方法としているので図50のバッファと図51は同じデータとなる。図52は図51で印字パス処理を実施されたデータに対して印字補正処理を行うバッファである。印字バッファの処理補正は印字ヘッド特有の補正を行う処理で、本発明の実施の形態では印字ヘッドは図46で示したように縦一列で一直線に構成されているが、印字ヘッドが斜めに配置されているようなヘッドではヘッドの斜行に合わせて印字データをずらす(分散斜め打ち処理)処理、また印字ヘッドが複数列で構成されている場合に各々ヘッドにデータを対応させる処理などがある。図52はこれら処理を行ったデータを蓄えるために図51のバッファに処理用の領域を+αしている。図52でできあがったデータが印字ヘッドに送られ印字が行われる。
【0234】
図54はハイクオリティ印字の場合の印字パスを示した図で、(1)から(15)までの印字パスと示している。(2)から(15)までのパスは図を見やすくするために右にずらして図示しているが、実際の印字では(1)と同じ横位置に印字される。(1)から(15)は印字ヘッドに対応している。印字パス(1)ではブラックインクジェットヘッドの下から24ドットで1、2、3のブラックデータを印字している。1、2、3…の数字で表されているのは8ドット単位(1バイト)である。ブラックヘッドの残り40ドット(常にイメージデータなし)と他の三色ではイメージデータなし(ヌルデータ)、結果としてバンドb1にブラック(1)、(2)、(3)のみ印字される。このブラックデータは図56のKバッファの(1)、(2)、(3)当たり、他三色はC、M、Yバッファの(−)、(−)、(−)に当たる。図56のカッコ内の数字は実際に設定されているデータを意味し、−はイメージデータがヌルデータであることを示している。次に24ドットのフィードを行い、印字パス(2)で図56のKバッファの(4)、(5)、(6)のデータを印字する。バンドb2のブラックが印字される。同様に繰り返して印字パス(4)でシアンのインクジェットヘッド位置がバンドb1に到達し、(A)、(B)、(C)のブラックデータと(1)、(2)、(3)のシアンデータを印字する。図56のCバッファのA,B,Cにセットされているイメージデータ(1)、(2)、(3)を印字する。印字パス(5)でマゼンタのインクジェットエッド位置がバンドb1の2/3に到達し、(D)、(E)、(F)のブラックデータと(4)、(5)、(6)のシアンデータと(−)、(1)、(2)のマゼンタデータを印字する。図56のCバッファのD、E、Fにセットされているイメージデータ(4)、(5)、(6)とMバッファのD、E、Fにセットされているイメージデータ(−)、(1)、(2)を印字する。印字パス(6)でイエローのインクジェットヘッド位置がバンドb1の1/3に到達し、(10)、(11)、(12)のブラックデータと(7)、(8)、(9)のシアンデータと(3)、(4)、(5)のマゼンタデータと(−)、(−)、(1)のイエローデータを印字する。図56のCバッファの10、11、12にセットされているイメージデータ(7)、(8)、(9)とMバッファの10、11、12にセットされているイメージデータ(3)、(4)、(5)とYバッファの10、11、12にセットされているイメージデータ(−)、(−)、(1)を印字する。印字パス(7)で(13)、(14)、(15)のブラックデータと(A)、(B)、(C)のシアンデータと(6)、(7)、(8)のマゼンタデータと(2)、(3)、(4)のイエローデータを印字する。図56のCバッファの13、14、15にセットされているイメージデータ(A)、(B)、(C)とMバッファの13、14、15にセットされているイメージデータ(6)、(7)、(8)とYバッファの13、14、15にセットされているイメージデータ(2)、(3)、(4)を印字する。印字バンドに印字ヘッドが到達するまではヌルデータが印字され、結果として印字が行われないことになる。
【0235】
図54の印字パス(7)が終了してバンドb1は、4色ともに印字されたことになる。バンドb1とバンドb2の1/3は、カラー印字が完全に終了したことになる。同様に印字パスとフィードを繰り返すことにより、印字パス(14)まで終了するとバンドb8までの印字が完成する。
【0236】
図55は図49にイメージデータがセットされた状態を示した図である。図中KSPはKデータセットポインタの開始位置を示し、CSPはCデータセットポインタの開始位置を示し、MSPはMデータセットポインタの開始位置を示し、YSPはYデータセットポインタの開始位置を示す。KSPはKバッファの先頭を示し、CSP,MSP,YSPは各バッファの最終から24ラスタの前の位置を示している。イメージデータのセットはこれら4つのポインタの示す先に行われる。8ラスタ単位で1から順にセットされバッファの最終までセットされると各データセットポインタはバッファの先頭に戻され、バッファが繰り返し利用される。C、M、Yの各バッファではバッファ先頭からCSP、MSP,YSPの初期位置まではヌルデータがあらかじめセットされている。図48にセットされたイメージデータは8ラスタ単位で取り出され、図55のバッファにセットされる。
【0237】
図56は図55にセットされたイメージデータを取り出して図50のバッファにセットするために図49のバッファからデータを取り出す順序を示した図で、図中KGPはKデータゲットポインタの開始位置を示し、CGPはCデータゲットポインタの開始位置を示し、MGPはMデータゲットポインタの開始位置を示し、YGPはYデータゲットポインタの開始位置を示す。イメージデータの取り出しは各ポインタの指し示す先から行われる。KバッファからはKGP、CバッファからはCGP、MバッファからはMGP、YバッファからはYGPのそれぞれ指し示す先からデータが取り出され、図54の印字パス(1)では図56の1、2、3がそれぞれ取り出される。バッファの設定内容は図55で示されており、C、M、Yの各色では1、2、3のイメージデータにヌルデータがセットされており、イメージデータの取り出しではこのヌルデータが取り出される。(−)はヌルデータを表している。Cバッファでは1−9、Mバッファでは1−D、Yバッファでは1−11までがヌルデータとなる。
【0238】
図57はポインタとカウンタを示した図で、KSP71−01はKデータバッファにイメージデータをセットする位置を示すポインタで、CSP71−02はCデータバッファにイメージデータをセットする位置を示すポインタで、MSP71−03はMデータバッファにイメージデータをセットする位置を示すポインタで、YSP71−04はYデータバッファにイメージデータをセットする位置を示すポインタ。KGP71−05はKデータバッファからイメージデータを取り出す位置を示すポインタで、CGP71−06はCデータバッファからイメージデータを取り出す位置を示すポインタで、MGP71−07はMデータバッファからイメージデータを取り出す位置を示すポインタで、YGP71−08はYデータバッファからイメージデータを取り出す位置を示すポインタ。RCNT71−09はKSPが示す位置にイメージデータがセットされるごとにカウントアップされ、イメージデータが取り出されることでクリアされる。取り出しに必要なイメージデータがセットされたかどうかを判定するために使用される。これらの領域は図2のRAM52に配置される。
【0239】
以下、フローチャートに従って本実施例のシステム動作を詳細に説明する。なお、以下に述べるフローチャートに示す手順は、ホストコンピュータの中央演算装置CPUにおいて実行される。
【0240】
図58は図42に示したコントロールコード解析Task62−01を詳細に説明するフローチャートで、まずステップS201でコントロールコード取得を行う。コントロールコード取得は発明の実施の形態1では図32の4108のW−RTOSホスト・アプリケーションからコントロールコードを受け取る。また発明の実施の形態2では図78の90−09のVCOMM Port Driverから90−10のRTOS Driverを経てコントロールコードを受け取る。
【0241】
コントロールコードを受け取るとステップS202へ進み、印字コントロールコードかどうかのチェックを行う。印字コントロールコードは図44の(1)で示したコントロールコードでステップS202はこのコントロールコードとの比較を行う。ステップS202で印字コントロールコードであればステップS203へ進み、印字Taskへセマフォを送信する。次にステップS210へ進みタスクの終了待ちとなる。各タスクは自分の処理が終了するとき終了のセマフォを送信する。ステップS210で待ち状態となっているコントロールコード解析タスクはステップS201へ進む。ステップS202で印字コントロールコードでない場合ステップS204へ進み、スキャンコントロールコードかどうかのチェックを行う。スキャンコントロールコードは図44の(2)で示したコントロールコードでステップS204はこのコントロールコードとの比較を行う。ステップS204でスキャンコントロールコードであればステップS205へ進み、スキャンTaskへセマフォを送信する。次にステップS210へ進みタスクの終了待ちとなる。ステップS204でスキャンコントロールコードでない場合ステップS206へ進み、ヘッド交換コントロールコードかどうかのチェックを行う。ヘッド交換コントロールコードは図44の(4)で示したコントロールコードでステップS206はこのコントロールコードとの比較を行う。ステップS206でヘッド交換コントロールコードであればステップS207へ進み、ヘッド交換Taskへセマフォ送信する。次にステップS210へ進みタスクの終了待ちとなる。ステップS206でヘッド交換コントロールコードでない場合ステップS208へ進み、給・排紙コントロールコードかどうかのチェックを行う。給・排紙コントロールコードは図44の(5)、(6)で示したコントロールコードでステップS208はこのコントロールコードとの比較を行う。ステップS208で給・排紙コントロールコードであればステップS209へ進み、給・排紙Taskヘセマフォを送信する。次にステップS210へ進みタスクの終了待ちとなる。給・排紙コントロールコードでない場合ステップS201へ進みコントロールコード取得となる。以上の処理によりコントロールコードを取得しコントロールコードの内容に対応したタスクへセマフォを送信し各タスクの終了セマフォ待ちとなりコントロールコード解析TaskがRunning状態からWait状態となる。Task Dispatcherによりコントロールコード解析Taskがセマフォを送信したタスクがRunning状態となる。
【0242】
図59は図42に示した印字処理Task62−02を詳細に説明するフローチャートで、まずステップS221で初期化を行う。初期化では図47〜図53で示したバッファの確保、初期化、図57で示したポインタの初期設定、キャリッジ初期化動作(図23で説明)を行う。次にステップS222へ進み、印字のセマフォ待ちとなる。印字処理Taskは印字に対するセマフォが送信されるまでステップS222で待ち状態となる。印字セマフォは図58で説明したコントロールコード解析TaskのステップS202で印字コントロールコードを解釈し、ステップS203で送信される。それまで印字処理TaskはステップS222で待ち状態となる。これは図41で説明したWait状態からReady状態を経てRunning状態にタスクの状態が変化したことを表している。印字セマフォが送信されるとステップS223へ進み印字コントロールコードの取得となる。印字コントロールコード受け取ると印字コントロールコードを解析するためにステップS224へ進みイメージコントロールコードかどうかのチェックを行う。イメージコントロールコード図44の(7)であればステップS225へ進みイメージ展開処理を実行する。イメージ展開処理は送られてきたイメージデータをバッファに展開し、データが整ったところでプリンタ部へ送る処理を行う。イメージ展開処理は図60で詳細に説明する。ステップS225で1ラスタ分のイメージデータが処理されると、ステップS223へ戻り次のコントロールコード取得となる。ステップS224でイメージコントロールコードでなければステップS226へ進み、フィードコントロールコードかどうかのチェックを行う。フィードコントロールコード図44の(9)であればステップS227へ進み、フィード処理を行う。フィード処理はフィードモーターを回して紙をフィードする処理を行う。フィード処理は図63で詳細に説明する。フィード処理が行われて紙のフィードが実行されると、ステップS223へ戻り次のコントロールコード取得となる。ステップS226でフィードコントロールコードでなければステップS228へ進み、給・排紙コントロールコードかどうかのチェックを行う。給・排紙コントロールコード図44の(5)、(6)であればステップS229へ進み、給・排紙処理を行う。給・排紙処理は新しい紙の給紙、あるいは紙の排紙を行う処理で、給・排処理は図64で詳細に説明する。給・排紙処理が行われて紙の給紙、排紙が実行されると、ステップS223へ戻り次のコントロールコード取得となる。ステップS228で給・排紙コントロールコードでなければステップS230へ進み、終了コントロールコードかどうかのチェックを行う。終了コントロールコード図44の(3)でなければ、ステップS223へ戻り次のコントロールコード取得となる。ステップS230で終了コントロールコード図44の(3)であればステップS231へ進み、印字処理の終了を通知する終了セマフォを送信し印字処理Taskは終了となる。この終了により図41のRunning状態にあった印字タスクがWait状態に変化することを意味している。これら一連の処理によりイメージデータが展開され印字が行われる。
【0243】
図60は図59のステップS225を詳細に説明するフローチャートで、ステップS241でコントロールコードの所得を行う。イメージ展開処理はコントロールコード図44の(7)あるいは(8)の場合に呼び出される。次にステップS242へ進み、取得したコントロールコードがイメージコントロールコード図44(7)どうかをチェックする。イメージコントロールコードであればステップS243へ進み、ラスタデータのセットを行う。ラスタイメージデータは図44の(7)に示したように4つの色に区別され、それぞれの色に対応したバッファにセットされる。セットされるバッファは図47のバッファでそれぞれ4色Y、M、C、Kのバッファを8ラスタ分ずつ持っている。8ラスタ中の図57に示したラスタカウントRCNTに設定されている値のラスターにイメージデータがセットされる。イメージデータのセットが終わると戻りとなる。ステップS242でイメージコントロールコードでなければステップS244へ進みラスタスキップコントロールコードかどうかのチェックを行う。ラスタスキップコントロールコードは図44の(8)で示され、このコントロールコードによりラスタ位置を1ラスタ分先へ進める。ラスタスキップコントロールコードでなければ戻りとなる。ラスタスキップコントロールコードであれば、ステップS245へ進みデータの切り出しを行うかどうかのチェックを行う。データの切り出しを行うがどうかのチェックは図49のバッファにKデータが24ラスタ分新たにセットされたかどうかで行われ、データがセットされた場合イメージの切り出し可能となる。これは図55のKデータセットポインタKSPがデータのセットにより図55では1、2、3あるいは4、5、6のように8ラスタデータが3個分Kのバッファにセットされたかどうかでチェックされる。ステップS245でデータ切り出し可能でなければ、ステップS246へ進みラスタカウントRCNTが8ラスタかどうかをチェックする。8ラスタになっていなければステップS247へ進みラスタカウントRCNTを1カウントアップし戻りとなる。ステップS246で8ラスタとなればステップS248へ進み8ラスタ分のバッファ図47から図48へデータの転送を行う。図48のバッファは16ラスタ分の大きさを持ち、図47のバッファ2つ分の大きさとなる。はじめ図47のバッファのデータは図48のバッファの前半の8ラスタにセットされる。次のデータのセットの際には16ラスタの後半にセットされる。次にステップS249へ進み図48のバッファの後半にデータが転送されたかどうかをチェックする。後半への転送が行われていなければステップS252へ進みラスタカウントRCNTをクリアして戻りとなる。ステップS249で後半へのデータ転送が行われていれば、ステップS250へ進みイメージ加工の処理を行う。イメージ加工の処理は、図48のバッファにセットされた16ラスタのデータの前半8ラスタに対して行われ、各4色の色データの配置によりイメージデータの変換を行う処理を示している。これら処理はたとえば境界検知処理と呼ばれ隣接する黒データをシアン、マゼンタ、イエローデータに置き換える事によりイメージデータの濃度を下げインクのべたつきを防ぐ処理である。これらの処理を送られてきた元データに対して行いデータの加工を行った後のデータを以降の処理に用いる。次にステップS251へ進みステップS250で作り出されたデータをイメージ展開用のバッファ図49へ転送する。データの転送は図48のバッファの前半8ラスタが図49のバッファに送られる。バッファにセットされる位置は図55のKデータセットポインタKSP、CデータセットポインタCSP、MデータセットポインタMSP、YデータセットポンタYSPのそれぞれの色に対応した位置で行われ、図55の一つの番号分のラスタデータが図48の前半から図49のバッファへ転送される。転送後の図48のバッファは後半の8ラスタデータが前半に転送される。以降図48のバッファには後半のデータが図47のバッファからセットされる。次にステップS252へ進みラスタカウントRCNTをクリアして戻りとなる。ステップS245でデータ切り出し可能であればステップS253へ進みイメージの切り出し処理を実行する。イメージの切り出し処理はステップS251でセットされたイメージデータを印字ヘッドに必要とされる分だけ図49のバッファから取り出してくる処理で、それは図56に示したKデータゲットポインタKGP、CデータゲットポインタCGP、MデータゲットポインタMGP、YデータゲットポインタYGPから8ラスタ単位で番号付けされた3個分(24ラスタ)を取り出すことで行われる。取り出されたデータはラスタデータであり印字ヘッドにセットするデータはカラムデータとなる。このためラスタデータをカラムデータに変換するための縦横変換が行われる。縦横変換されたデータは図50のバッファにセットされる。黒データは印字ヘッド分の64ドットが確保されているが切り出されたデータ24ドットは64ドットの下から24ドットにセットされる。黒データの残り40ドットはクリアされデータはセットされない。次にステップS254へ進み印字パスの処理を行う。印字パスの処理は図50にステップS253で切り出されたデータに対して行われ、処理されたデータが図51のバッファにセットされる。印字パスの処理は、一つの印字バンドを複数回に分けて印字することにより高精細な印字を行うファイン印字、印字データを間引いて濃度を下げるドラフト印字などがあり、これらの処理は印字データに加工を行うことで実現される。ファイン印字であればあらかじめ決めたファインマスクパターンと元のイメージデータとでAND処理を行うことで加工され、ドラフト処理であれば一定のパターンとで間引きを行う。次にステップS255へ進み印字補正処理を行う。印字補正処理はステップS254で印字パス処理が行われた図51のバッファに対して行われ、図52のバッファに補正処理が実行されたデータがセットされる。印字補正処理には、印字ヘッドが斜めに配置された印字ヘッドを用いる場合、印字ヘッドが複数列に配置されているなどの印字ヘッドに特有の特性を補正する処理がある。本実施例ではヘッドが斜めに配置されている場合で、図51にセットされたデータを印字ヘッドの斜行した分だけ印字データを逆方向に斜行することを行う。これは印字データをその分だけシフトすることで行いシフトしたデータを図52にセットする。次にステップS256へ進み印字制御I/Oコントロールコード作成処理を実行する。印字制御I/Oコントロールコード作成処理はステップS255で完成した印字イメージの印字ヘッドに対応したデータに印字制御I/Oコマンドを付加することで行う。一連の印字は印字データを印字し24ドット分のフィードを行い印字ヘッドを元の印字位置へ戻す処理で構成される。詳細は図61のフローチャートで説明する。次にステップS257へ進み制御I/Oコマンド転送処理を実行する。制御I/Oコマンド転送処理はステップS256で完成したイメージデータと印字の制御I/Oコマンドを送信する。詳細は図62のフローチャートで説明する。次に戻りとなる。
【0244】
図61は図60のステップS256を詳細に説明するフローチャートで、印字制御I/Oコマンド作成処理を示している。印字制御I/Oコマンド作成処理は印字のためのキャリッジモーターCMを制御して印字イメージデータを印字し、ラインフィードモーターを制御してラインフィードを行い、キャリッジモーターCMを印字前の位置に戻す処理を行う。
【0245】
まず、ステップS261でキャリッジモーターCMの加速制御I/Oコマンドの作成を行う。CM加速制御I/Oコマンドは図27で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用する。印字のためのキャリッジモーターCMの制御はキャリッジモーターCMを加速し、次に等速として等速時に印字データを印字ヘッドから吐出し、イメージデータを印字後減速する。次にステップS262でキャリッジモーターCMの等速制御I/Oコマンドと図60ステップS255で作成されたイメージデータに合わせてキャリッジモーターCMの等速制御と印字ヘッドの吐出制御の制御I/Oコマンドを作成する。CM等速制御I/Oコマンドは図26で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用しイメージデーターにヒートデータレジスタ制御I/Oコマンド32xx(図18)xxはイメージデータを付加し、ヒート・スキャン駆動トリガ(図18)3001を付加することで印字イメージを含んだCM等速制御I/Oコマンドを作成する。次にステップS263でキャリッジモーターCMの減速制御I/Oコマンドを作成する。CM減速制御I/Oコマンドは図29で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用する。ステップS261〜S263でキャリッジモーターCMの印字制御I/Oコマンドが作成される。
【0246】
次にステップS264でラインフィードモーターLFの加速制御I/Oコマンドを作成する。LF加速制御I/Oコマンドは図28で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用する。次にステップS265でラインフィードモーターLFの等速制御I/Oコマンドを作成する。ただし、24ドットのフィードを行う場合には、等速制御I/Oコマンドはない。次にステップS266でラインフィードモーターLFの減速制御I/Oコマンドを作成する。LF減速制御I/Oコマンドは図31で示した制御I/Oコマンドで、これらコマンドを使用する。ステップS264〜S266でラインフィードモーターLFで24ドットのフィードを行う分のフィード制御I/Oコマンドが作成される。
【0247】
次にステップS267でキャリッジモーターCMの加速制御I/Oコマンドを作成する。CM加速制御I/Oコマンドは図25で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用する。次にステップS268でキャリッジモーターCMの等速制御I/Oコマンドを作成する。CM等速制御I/Oコマンドは図26で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用する。次にステップS269でキャリッジモーターCMの減速制御I/Oコマンドを作成する。CM減速制御I/Oコマンドは図27で示した制御I/Oコマンドで、これら制御I/Oコマンドを使用する。ステップS267〜S269でキャリッジモーターCMの戻り制御I/Oコマンドが作成される。戻り制御I/Oコマンドでは印字制御とは逆方向にキャリッジモーターCMを動かすためステップS267にはキャリッジモーターCMの方向を逆転する制御I/Oコマンドを含む。以上の処理により印字してラインフィードを行いキャリッジモーターCMを元の位置に戻す制御I/Oコマンドが作成される。
【0248】
図62は図60のステップS257を詳細に説明するフローチャートで、制御I/Oコマンド送信処理を示している。制御I/Oコマンドの送信処理は図60ステップS256で作成された印字制御I/Oコマンドをプリンタ部へ送信するための処理である。まず、ステップS271でプリンタ部が制御I/Oコマンド受信可能であるかをチェックする。受信可能であるかどうかのチェックは図10のBPSTARTの値をチェックすることで行う。BPSTARTの値が0であれば受信可能となる。受信可能でなければステップS271を繰り返す。ステップS271で制御I/Oコマンド受信可能であれば、ステップS272へ進み、プリンタ部と接続するポートのアドレス制御I/Oコマンドを書き込む。制御I/Oコマンド書き込みのポートは図6の(c)で示されこのポートアドレスにデータを書き込むことで行える。データ書き込み後の図7PRINTER MEMORYの詳細を図72〜図74に示す。図72でPRINTER MEMORYには印字制御(1−1)−(1−3)とラインフィード制御(2−1)−(2−2)と戻り制御(3−1)−(3−3)の制御I/Oコマンドがセットされている。(1−1)は図61ステップS261で作成されるCM加速制御I/Oコマンドで、その内容は図25に示される。(1−2)は図61ステップS262で作成される制御I/OコマンドでCM等速と印字イメージを付加したもので図73で詳細に説明する。(1−3)は図61ステップS263で作成されるCM減速制御I/Oコマンドで、その内容は図27に示される。(2−1)は図61ステップS264で作成されるLF加速制御I/Oコマンドで、その内容は図28に示される。(2−2)は図61ステップS266で作成されるLF減速制御I/Oコマンドで、その内容は図29に示される。(3−1)は図61ステップS267で作成されるCM加速制御I/Oコマンドで、その内容は図25に示される。(3−2)は図61ステップS268で作成されるCM等速制御I/Oコマンドで、その内容は図26に示される。(3−3)は図61ステップS269で作成されるCM減速制御I/Oコマンドで、その内容は図27に示される。(4)は終了制御I/Oコマンドがセットされる。終了制御I/Oコマンドは1000で図10のBPENDで制御I/Oコマンドの実行はBPENDで終了する。図73は図72の(1−2)の内容を示した図で、図26の等速制御にイメージのデータを付加して印字を実行するように構成される。第1カラムから第nカラムまでの制御を示しており、図中6901から6528は図25と同じで3200+dataの部分がイメージデータを吐出するためにヒートレジスタにデータを送る制御I/Oコマンドとなる。制御I/Oコマンド3200は図18のアドレス32HDRでヒートデータレジスタである。ヒートデータレジスタは印字のためのヒータレジスタで印字ヘッドに対応する。その詳細は図13で説明されている。data(1−1)からdata(1−17)は印字ヘッド1列分のデータでデータの構成は図74に示す。3200+dataのつぎの1406はデータを送る時間間隔を指定する制御I/Oコマンドで2マイクロセコンドの時間をとる。3200+data(1−17)の後に1500,14E3で1カラムごとの時間設定を行う。ここまでの時間でインクを吐出する時間をキャリッジの移動時間に合わせる。3101は図18のアドレス31HDRUNでセットしたイメージデータの吐出を指定する。これで1カラム分の印字制御が構成され、同時にnカラムまで繰り返すことでnカラム分の印字が出来る。図74は印字データの印字位置を表した図で1からnカラムの印字となる。これは図60のステップS255までで作成された印字イメージとなる。制御I/Oコマンド書き込み後ステップS273へ進み制御I/Oコマンドの実行を指定する。制御I/Oコマンド実行は制御I/Oコマンド制御ポート図6(a)で示されこのポートに実行を指示して書き込むことにより行える。これは図10のBPSTARTに1をライトする事で行う。制御I/Oコマンドの実行は図9のタイミングチャートで説明した手順に従って行われる。以上の処理により制御I/Oコマンドのプリンタ部への送信と制御I/Oコマンドの実行が行える。
【0249】
図63は図59のステップS227を詳細に説明するフローチャートで、フィード処理を示している。フィード処理はフィードコントロールコード図44(9)で示されるコントロールコードに対する処理でまずステップS281でラインフィードモーターLFの加速制御I/Oコマンドを作成する。次にステップS282でラインフィードモーターLFの等速制御I/Oコマンドを作成する。等速制御I/Oコマンドは図44(9)で示されたコントロールコードのfeedに設定されている値分の等速が継続するように作成される。次にステップS283ラインフィードモーターLFの減速制御I/Oコマンドを作成する。次に、ステップS284でプリンタ部が制御I/Oコマンド受信可能であるかをチェックする。受信可能でなければステップS284を繰り返す。ステップS284で制御I/Oコマンド受信可能であれば、ステップS285へ進み、プリンタ部と接続するポートのアドレスに制御I/Oコマンドを書き込む。これは図62のステップS272と同様になる。次にステップS286で制御I/Oコマンド実行を行う。これは図62のステップS273と同様になる。以上の処理によりフィードコントロールコードに対する処理が行われフィードが実行される。
【0250】
図64は図59のステップS229を詳細に説明するフローチャートで、給・排紙処理を示している。まずステップS291で給紙コントロールコードあるいは排紙コントロールコードに対する制御I/Oコマンドを作成する。次に、ステップS292でプリンタ部が制御I/Oコマンド受信可能であるかをチェックする。受信可能でなければステップS292を繰り返す。ステップS292で制御I/Oコマンド受信可能であれば、ステップS293へ進み、プリンタ部と接続するポートのアドレスに制御I/Oコマンドを書き込む。これは図62のステップS272と同様になる。次にステップS294で制御I/Oコマンド実行を行う。これは図62のステップS273と同様になる。以上の処理により給紙・排紙に対する処理が行われる。
【0251】
以上、図59から図64で印字処理について説明した。
【0252】
図65は図42に示したスキャン処理Task62−03を詳細に説明するフローチャートで、まず、ステップS301で初期化を行う。初期化ではバッファの確保、初期化などを行う。次にステップS302へ進み、スキャンのセマフォ待ちとなる。スキャン処理Taskはスキャンに対するセマフォが送信されるまでステップS302で待ち状態となる。スキャンセマフォは図58で説明したコントロールコード解析TaskのステップS204でスキャンコントロールコードを解釈し、ステップS205で送信される。それまでスキャン処理TaskはステップS302で待ち状態となる。これは図41で説明したWait状態からReady状態を経てRunning状態にタスクの状態が変化したことを表している。印字セマフォが送信されるとステップS303へ進みスキャンコントロールコードの取得となる。スキャンコントロールコード受けるとスキャンコントロールコードを解析するためにステップS304へ進みスキャンコントロールコードかどうかのチェックを行う。スキャンコントロールコードは図44(10)で示されこのコントロールコードであればステップS305へ進む。ステップS305ではスキャンの処理が行われスキャンしたイメージデータをスキャンアプリケーションに戻すことができる。詳細は図66のフローチャートで説明する。ステップS306からステップS311までは図59の印字処理TaskのステップS226からステップS231と同様で説明は省略する。
【0253】
図66は図65のステップS305を詳細に説明するフローチャートでまずステップS321でスキャン制御I/Oコマンドの作成を行う。スキャン制御I/Oコマンドはスキャン動作を行うために制御I/OコマンドでキャリッジモーターCMを加速し、等速とした後スキャナーヘッドからスキャンデータを読み出して保存するための制御I/Oコマンドをセットし、減速制御I/Oコマンドをセットする。次にスキャンヘッド分のフィードを行い、キャリッジを戻す処理をセットする。次に、ステップS322でプリンタ部が制御I/Oコマンド受信可能であるかをチェックする。受信可能でなければステップS322を繰り返す。ステップS322で制御I/Oコマンド受信可能であれば、ステップS323へ進み、プリンタ部と接続するポートのアドレスに制御I/Oコマンドを書き込む。これは図62のステップS272と同様になる。
【0254】
データ書き込み後の図7PRINTER MEMORYの詳細を図75〜図77に示す。図75でPRINTER MEMORYにはスキャン制御(1−1)−(1−3)とラインフィード制御(2−1)−(2−3)と戻り制御(3−1)−(3−3)の制御I/Oコマンドがセットされている。(1−1)は図61ステップS261で作成されるCM加速制御I/Oコマンドと同じで、その内容は図25に示される。(1−2)はスキャン制御I/OコマンドでCM等速とイメージデータ取得制御I/Oコマンドを付加したもので図76で詳細を説明する。(1−3)は図61ステップS263で作成されるCM減速制御I/Oコマンドと同じで、その内容は図27に示される。(2−1)は図61ステップS264で作成されるLF加速制御I/Oコマンドと同じで、その内容は図28に示される。(2−2)は図63ステップS282で作成されるLF等速制御I/Oコマンドと同じで、その内容は図28に示される。(2−3)は図61ステップS266で作成されるLF減速制御I/Oコマンドと同じで、その内容は図29に示される。(3−1)は図61ステップS267で作成されるCM加速制御I/Oコマンドと同じで、その内容は図25に示される。(3−2)は図61ステップS268で作成されるCM等速制御I/Oコマンドと同じで、その内容は図26に示される。(3−3)は図61ステップS269で作成されるCM減速制御I/Oコマンドと同じで、その内容は図27に示される。(4)は終了制御I/Oコマンドがセットされる。終了制御I/Oコマンドは1000で図10のBPENDで制御I/Oコマンドの実行はBPENDで終了する。(5)はスキャンイメージデータ保存エリアでスキャンしたイメージデータを1ライン分スキャンが終了するまで保存する領域である。図76は図75の(1−2)の内容を示した図で、図26の等速制御にイメージデータ取得制御I/Oコマンドを付加してスキャンを実行するように構成される。第1カラムから第2カラムまでの制御を示しており以降同様にnカラムまで繰り返す。図中6901から6528は図25と同じで、3101から始まって1500,1404,133A,1200,133B,1200までが1カラムのスキャンを指示し、スキャンヘッドの2バイト分のデータを取り出してスキャンイメージデータ保存エリアに保存する制御I/Oコマンドとなる。3101は図18のアドレス31HDRUNでイメージデータの取り込みタイミングを指定する。133A,1200,133B,1200はスキャンしたイメージデータをイメージデータが格納されているレジスタ3A,3B(図18)から図75(5)のスキャンイメージデータ保存エリアに保存する。
【0255】
スキャンされたイメージデータの構成は図77に示す。1カラムのスキャン動作、16バイトイメージデータ保存後の1502,14CFで1カラムごとの時間設定を行う。ここまでのトータル時間でスキャンする時間をキャリッジの移動時間に合わせる。これで1カラム分のスキャン制御が構成され、同様にnカラムまで繰り返すことでnカラム分のスキャンが出来る。(3)はスキャンデータの構成を表した図で横方向に1からnカラムで縦1から16バイトの構成で128ドットとなる。
【0256】
次にステップS324で制御I/Oコマンド実行を行う。これは図62のステップS273と同様になる。次にステップS325でプリンタ部へ送った制御I/Oコマンドが実行されてスキャンが終了したかどうかのチェックを行う。終了していなければステップS325へ戻る。ステップS325でスキャンが終了すると、ステップS326へ進み、スキャンしたイメージデータをスキャンアプリケーションへ送信する。スキャンしたイメージデータはプリンタ部に保存されステップS326でプリンタ部から読み出される。イメージデータの読み出しは図6(c)のポートで行う。図38にスキャン動作を行うタスクとWindowsスキャナ・アプリケーションの構成を示す。
【0257】
図65、図66のスキャン処理よりプリンタ部でスキャンされたイメージデータをスキャンアプリケーションへ送り出すことができる。
【0258】
図67は図42に示したタイマー管理Task62−06を詳細に示したフローチャートでタイマー管理Taskは図40のTask ControlのTimerにより一定の時間ごとに呼び出される。ステップS331で経過時間の算出を行う。タイマー管理Taskは一定時間で呼び出されるため呼び出される回数から経過時間を算出することが出来る。次にステップS332へ進み回復系処理時間かどうかをチェックする。ステップS331で算出された時間を基に一定の時間ごとに回復系の処理を実行するためにチェックが行われる。ステップS332で回復系の処理時間であれば、ステップS333へ進み回復系処理Taskへセマフォを送信する。次にステップS340へ進み終了セマフォ待ちとなる。ステップS332で回復系処理時間でなければステップS334へ進み、印字ヘッド温調処理時間かどうかをチェックする。ステップS334で印字ヘッド温調処理時間であれば、ステップS335へ進み印字ヘッド温調処理Taskへセマフォを送信する。次にステップS340へ進み終了セマフォ待ちとなる。ステップS334で印字ヘッド温調処理時間でなければステップS336へ進み、エラーをチェックする。ステップS336でエラーがあれば、ステップS337へ進みエラー処理Taskへセマフォを送信する。次にステップS340へ進み終了セマフォ待ちとなる。ステップS336でエラーでなければステップS338へ進み、電源管理変更をチェックする。ステップS338で電源管理変更があれば、ステップS339へ進み電源管理Taskへセマフォを送信する。次にステップS340へ進み終了セマフォ待ちとなる。次にステップS341へ進み、タイマー管理Taskの終了セマフォを送信する。
【0259】
図68は図42の回復系処理Task62−07の詳細を示したフローチャートで、ステップS351で初期化を行う。次にステップS352で回復系処理Taskへのセマフォ待ちとなる。図67のステップS333で回復系処理Taskへのセマフォが送信されるとステップS353へ進み回復系処理へと進む。ステップS353でキャッピング時間であるかどうかをチェックする。キャッピング時間であるかどうかのチェックは最後に印字した時間からの経過時間で行われ、キャッピング時間であればステップS354へ進み、キャッピング処理を実行する。キャッピングは印字ヘッドが印字されずに放置され、インクが乾くことを防止するためにキャッピング位置にキャリッジを移動して密閉することでインクの乾燥を防ぐ処理である。印字が連続して行われる場合には、毎回キャッピングすると印字時間が延びるため、最後に印字を行った時点から一定の時間印字が行われなかった場合にキャッピングする。次にステップS361へ進み、終了セマフォを送信する。ステップS353でキャッピング時間でなければ、ステップS355へ進みワイピング時間かどうかのチェックを行う。ワイピング時間かどうかのチェックは前回のワイピング時間からの経過時間で行われ、ワイピング時間であればステップS356へ進みワイピング処理実行する。ワイピングは印字ヘッドに付着した余分なインクを拭き取る処理である。ワイピング処理は一定の印字時間ごとに行われ、キャリッジをワイピング位置へ移動し、ワイピイングブレードで余分なインクをふき取り、余分なインクによる混色等を防ぐ。次にステップS361へ進み、終了セマフォを送信する。ステップS355でワイピング時間でなければ、ステップS357へ進み予備吐時間かどうかのチェックを行う。予備吐時間かどうかのチェックは前回の予備吐時間からの経過時間で行われ、予備吐時間であればステップS358へ進み予備吐処理実行する。予備吐は印字ヘッドが目詰まりする事を防止する処理である。予備吐処理は一定の印字時間ごとに行われ予備吐位置へキャリッジを移動し一定量のインクを吐出して、インクがヘッドで目詰まりすることを防ぐ。次にステップS361へ進み、終了セマフォを送信する。ステップS357で予備吐時間でなければ、ステップS359へ進みクリーニング時間かどうかのチェックを行う。クリーニング時間かどうかのチェックは前回のクリーニング時間からの経過時間と印字起動の一回目などで行われ、クリーニング時間であればステップS360へ進みクリーニング処理実行する。クリーニングは印字ヘッドが目詰まりする事を防止する予備吐処理と印字ヘッドに付着した余分なインクを拭き取るワイピング処理を合わせて行う処理である。クリーニング処理は予備吐処理とワイプ処理を行うことでヘッドのクリーニングが行え、ヘッドを最適な状態に保つ。次にステップS361へ進み、終了セマフォを送信する。
【0260】
図69は図42のヘッド温調処理Task62−08の詳細を示したフローチャートで、ステップS371で初期化を行う。次にステップS372でヘッド温調処理Taskへのセマフォ待ちとなる。図67のステップS335でヘッド温調処理Taskへのセマフォが送信されるとステップS373へ進み各ヘッド温調処理へと進む。ステップS373で装着されているヘッドが印字ヘッドであるかスキャナヘッドであるかどうかをチェックする。ステップS373でスキャナであれば、ステップS374へ進みスキャナヘッドの温調処理を実行する。スキャナヘッドの温調処理はスキャナヘッドに搭載されている光源がいつも一定の光量以上で点灯できるようにスキャンヘッドの光源を前もって必要時間分点灯する処理である。次にステップS376へ進み、終了セマフォを送信する。ステップS373でスキャナヘッドでない場合、ステップS375へ進み、印字ヘッド温調処理を行う。印字ヘッド温調処理は印字ヘッドが一定の状態でインクを吐出出来るように印字ヘッドのヒータを前もって暖めたり、印字が連続すると印字ヘッドの温度が上昇し、ヘッドの温度変化に対応した印字ヘッドの温度調整を行う。次にステップS376へ進み、終了セマフォを送信する。
【0261】
図70は図42のエラー処理Task62−09の詳細を示したフローチャートで、ステップS381で初期化を行う。次にステップS382でエラー処理Taskへのセマフォ待ちとなる。図67のステップS337でエラー処理Taskへのセマフォが送信されるとステップS383へ進みエラー処理へと進む。ステップS383でエラーがあるかどうかをチェックする。ステップS383でエラーであれば、ステップS384へ進みエラー処理を実行する。エラー処理は各種プリンタのエラーを行う処理で、エラーにはモーター、ヘッド、紙関係などがあり、それらエラーに対する処理を行う。次にステップS385へ進み、終了セマフォを送信する。
【0262】
図71は図42の電源管理Task62−10の詳細を示したフローチャートで、ステップS1401で初期化を行う。次にステップS392で電源管理Taskへのセマフォ待ちとなる。図67のステップS339で電源管理Taskへのセマフォが送信されるとステップS393へ進み電源管理処理へと進む。ステップS393で電源変動があるかどうかをチェックする。ステップS393で電源変動であれば、ステップS394へ進み電源管理処理を実行する。電源管理処理はプリンタの電源に関する処理で、電圧の低下など、それら電源変動に対する処理を行う。次にステップS395へ進み、終了セマフォを送信する。
【0263】
以上、図67から図71でタイマー管理Taskについて説明したが、一定の時間ごとにタイマー管理Taskが起動され、タイマー管理Taskにより時間の経過に従って行う処理が実行される。
【0264】
(実施の形態2)
図78は本発明の実施の形態の処理を示すブロック図である。
【0265】
図中90−01はウィンドウズ・アプリケーションであり、90−02はウィンドウズ・オペレーティング・システムにおけるプリンティングサブシステムであり、90−03はウィンドウズ・オペレーティング・システムにおけるスプーリングサブシステムであり、通常のウィンドウズのプリントシーケンスに従い、印刷用データ(コントロールコード)を生成しスプールファイルに蓄える。
【0266】
90−05はW−RTOSホスト・アプリケーションである。W−RTOSホスト・アプリケーション90−05は、RTOSと通信する機能を有する。通常のウィンドウズ・アプリケーションである。
【0267】
90−06はRTOSタスクであり、90−07はDCPE Portである。RTOSタスク90−06は、W−RTOSホスト・アプリケーション90−05により起動され、発明の実施の形態1RTOSタスクと同様に印刷用データ(コントロールコード)をプリンタヘッドイメージ・プリンタ制御I/Oコマンドに変換し、DCPE Port90−07に書き出す。
【0268】
90−08はウィンドウズ・オペレーティング・システムにおけるVCOMMであり、90−09はウィンドウズ・オペレーティング・システムにおけるVCOMMポートドライバである。VCOMM90−08は通常のウィンドウズのプリントシーケンスに従い、スプーリングサブシステム90−03より印刷用データ(コントロールコード)を受け取り、VCOMMポートドライバ90−09にこれを引き渡す。
【0269】
90−10はRTOSドライバであり、RTOSの提供するストリーム入出力(SIO)を介してRTOSタスク90−06に印刷用データ(コントロールコード)を引き渡す。RTOSタスク及びRTOSドライバはウィンドウズ環境下で動作するリアルタイムオペレーティングシステムRTOSの下で動作しており、CPU動作モードRing0で動作している。
【0270】
VCOMM及びVCOMMポートドライバはともにウィンドウズ・オペレーティング・システムにおけるVxDであり、CPU動作モードRing0で動作し、構造体DDBによりシステムに認識される。構造体DDBには、デバイス名、サービス・エントリーポイントなどが含まれる。VCOMMポートドライバは、VCOMMに対してポートドライバファンクションと呼ばれる関数群を提供し、これらは概ねVCOMMのサービスに対応している。スプーリングサブシステムはウィンドウズ・システムAPIを介してVCOMMのサービスを呼び出し、VCOMMはサービスに対応するポートドライバファンクションを呼び出して印刷用データ(コントロールコード)を出力する。印刷用データ(コントロールコード)の出力に関係する主なポートドライバファンクションは、Port Open(ポートのオープン)、Port Close(ポートのクローズ)、Port Setup(送受信キューのセットアップ)、Port Write(出力キューへの書込み)、Port Get Queue Status(キューの状態の引出し)、などである。通常のウィンドウズのプリントシーケンスにおいては、VCOMMポートドライバは、印刷用データ(コントロールコード)をプリンタが接続された物理ポートに書き出す。本発明の実施の形態においては、VCOMMポートドライバ90−09は、印刷用データ(コントロールコード)をRTOSドライバ90−10に引き渡す。
【0271】
図79はRTOSのストリーム入出力の働きを示すブロック図で、本発明の実施の形態で用いるストリーム入力について説明する。図中91−01はRTOSタスク、91−02はSIO、91−03はRTOSドライバ、91−04は空バッファ、91−05は入力データが格納されたバッファである。RTOSタスク91−01はSIO91−02の入力ファンクションSIO_get()を呼び出し、空バッファをSIO91−02に渡す。SIO91−02は渡された空バッファを空バッファキューに入れてRTOSドライバ91−03の入力ファンクションDxx_input()を呼び出す。RTOSドライバ91−03は空バッファキューから空バッファを取り出し、このバッファに入力データを格納する。バッファが入力データで満たされるとバッファを入力データバッファキューに入れる。SIO91−02はDxx_input()から戻るとSIO_get()を終了し入力データバッファキューから入力データが格納されたバッファをRTOSタスク91−01に返す。以下、フローチャートを用いてRTOSドライバ91−03の処理を説明する。
【0272】
図80は、Dxx_input()のフローチャートである。ステップS400で入力ジョブを開始する。入力ジョブは非同期に起動され処理をするので、RTOSドライバ91−03は同期のためのセマフォを持つ。ステップS401でこのセマフォがポストされるのを待つ。ポストされると処理を終え戻る。
【0273】
図81は、入力ジョブのフローチャートである。ステップS410でデバイスから入力しバッファにデータを格納する。本発明の実施の形態においては前述の通りVCOMMポートドライバ90−09からデータを受け取ることになる。ステップS411でバッファがフルになったかどうかを判定し、フルでなければ処理を終える。バッファがフルになると、ステップS412でバッファを入力データバッファキューに入れて、ステップS413でセマフォをポストする。
【0274】
以下、VCOMMポートドライバ90−09からRTOSドライバ90−10へのデータの引き渡しについて説明する。
【0275】
RTOSドライバ90−10はRTOSの提供するファンクションIA_addDDB()により、自身の持つ構造体DDBをウィンドウズ・オペレーティングシステムのVxD層のDDBチェーンに加えることによりエントリーポイントをエクスポートする。VCOMMポートドライバ90−09はウィンドウズの提供するサービスgetDDB()により、RTOSドライバ90−10のDDBを検索し、エントリーポイントを取得する。VCOMMポートドライバ90−09は、前述したポートドライバファンクションPort Write(出力キューへの書込み)が呼び出されると前記エントリーポイントによりRTOSドライバ90−10を呼び出してVCOMMから渡された印刷用データ(コントロールコード)をRTOSドライバ90−10に引き渡す。RTOSドライバ90−10はこれを入力データとして、前記入力ジョブを行う。
【0276】
(実施の形態3)
図82は本発明の実施の形態の処理を示すブロック図である。
【0277】
図中94−01はウィンドウズ・アプリケーションであり、94−02はウィンドウズ・オペレーティング・システムにおけるプリンティングサブシステム・スプーリングサブシステムであり、94−03はウィンドウズ・オペレーティング・システムにおけるプリンタドライバであり、94−04はデータ変換タスクであり、94−05はウィンドウズ・オペレーティング・システムにおけるVCOMMであり、94−06はウィンドウズ・オペレーティング・システムにおけるVCOMMポートドライバであり、94−07はDCPE Portである。本発明の実施の形態においても通常のウィンドウズのプリントシーケンスに従い、印刷用データ(コントロールコード)を生成しスプールファイルに蓄える。ただし、プリンタドライバ94−03は発明の実施の形態1RTOSタスクと同様に処理するデータ変換タスク94−04と通信してこれを印刷用データ(コントロールコード)をプリンタヘッドイメージ・プリンタ制御I/Oコマンドに変換し、これをVCOMM、VCOMMポートドライバを介して、DCPE Portに出力する。
【0278】
(実施の形態4)
第1の発明の実施の形態では、ホスト部とプリンタ部の間のインターフェイスをISAバスを介して接続した構成についての説明をしたが、インターフェイスの構造についてはこれに限定されるものではなく、第3の形態としてISAバスの代わりに汎用の高速インターフェイスとしてIEEE1394を用いた実施の形態について説明する。
【0279】
まず初めにIEEE1394の技術の概要についての説明を行うと、家庭用デジタルVTRやDVDの登場も伴って、ビデオデータやオーディオデータなどのリアルタイムでかつ高情報量のデータ転送のサポートが必要になっている。こういったビデオデータやオーディオデータをリアルタイムで転送し、パソコン(PC)に取り込んだり、またはその他のデジタル機器に転送を行うには、必要な転送機能を備えた高速データ転送可能なインタフェースが必要になってくるものであり、そういった観点から開発されたインタフェースがIEEE1394−1995(以下1394シリアルバス)である。
【0280】
図83に1394シリアルバスを用いて構成されるネットワーク・システムの例を示す。このシステムは機器A,B,C,D,E,F,G,Hを備えており、A−B間、A−C間、B−D間、D−E間、C−F間、C−G間、及びC−H間をそれぞれ1394シリアルバスのツイスト・ペア・ケーブルで接続されている。この機器A〜Hは例としてPC、デジタルVTR、DVD、デジタルカメラ、ハードディスク、モニタ等である。各機器間の接続方式は、ディジーチェーン方式とノード分岐方式とを混在可能としたものであり、自由度の高い接続が可能である。
【0281】
また、各機器は各自固有のIDを有し、それぞれが認識し合うことによって1394シリアルバスで接続された範囲において、1つのネットワークを構成している。各デジタル機器間をそれぞれ1本の1394シリアルバスケーブルで順次接続するだけで、それぞれの機器が中継の役割を行い、全体として1つのネットワークを構成するものである。また、1394シリアルバスの特徴でもある、Plug&Play機能でケーブルを機器に接続した時点で自動で機器の認識や接続状況などを認識する機能を有している。
【0282】
また、図83に示したようなシステムにおいて、ネットワークからある機器が削除されたり、または新たに追加されたときなど、自動的にバスリセットを行い、それまでのネットワーク構成をリセットしてから、新たなネットワークの再構築を行う。この機能によって、その時々のネットワークの構成を常時設定、認識することができる。
【0283】
またデータ転送速度は、100/200/400Mbpsと備えており、上位の転送速度を持つ機器が下位の転送速度をサポートし、互換をとるようになっている。
【0284】
データ転送モードとしては、コントロール信号などの非同期データ(Asynchronousデータ:以下Asyncデータ)を転送するAsynchronous転送モード、リアルタイムなビデオデータやオーディオデータ等の同期データ(Isochronousデータ:以下Isoデータ)を転送するIsochronous転送モードがある。このAsyncデータとIsoデータは各サイクル(通常1サイクル125μS)の中において、サイクル開始を示すサイクル・スタート・パケット(CSP)の転送に続き、Isoデータの転送を優先しつつサイクル内で混在して転送される。
【0285】
次に、図84に1394シリアルバスの構成要素を示す。1394シリアルバスは全体としてレイヤ(階層)構造で構成されている。図3に示したように、最もハード的なのが1394シリアルバスのケーブルであり、そのケーブルのコネクタが接続されるコネクタポートがあり、その上にハードウェアとしてフィジカル・レイヤとリンク・レイヤがある。
【0286】
ハードウェア部はインターフェイスチップの部分であり、そのうちフィジカル・レイヤは符号化やコネクタ関連の制御等を行い、リンク・レイヤはパケット転送やサイクルタイムの制御等を行う。
【0287】
ファームウェア部のトランザクション・レイヤは、転送(トランザクション)すべきデータの管理を行い、ReadやWriteといった命令を出す。マネージメント・レイヤは、接続されている各機器の接続状況やIDの管理を行い、ネットワークの構成を管理する部分である。このハードウェアとファームウェアまでが実質上の1394シリアルバスの構成である。
【0288】
またソフトウェア部のアプリケーション・レイヤは使うソフトによって異なり、インタフェース上にどのようにデータをのせるか規定する部分であり、AVプロトコルなどのプロトコルによって規定されている。以上が1394シリアルバスの構成である。
【0289】
次に、図85に1394シリアルバスにおけるアドレス空間の図を示す。
【0290】
1394シリアルバスに接続された各機器(ノード)には必ず各ノード固有の、64ビットアドレスを持たせておく。そしてこのアドレスをROMに格納しておくことで、自分や相手のノードアドレスを常時認識では相手を指定した通信も行える。1394シリアルバスのアドレッシングは、IEEE1212規格に準じた方式であり、アドレス設定は、最初の10bitがバスの番号の指定用に、次の6bitがノードID番号の指定用に使われる。それぞれの機器内で使用できる48ビットのアドレスについても20ビットと28ビットに分けられ、256Mバイト単位の構造を持って利用される。
【0291】
最初の20ビットの0〜0xFFFFDの部分はメモリ空間と呼ばれる。0xFFFFEの部分はプライベート空間と呼ばれ、機器内で自由に利用できるアドレスである。0xFFFFFの部分はレジスタ空間と呼ばれ、バスに接続された機器間で共通な情報が置かれ、各機器間のコミュニケーションに使われる。レジスタ空間の最初の512バイトには、CSRアーキテクチャのコアになるレジスタ(CSRコア)がある。次の512バイトにはシリアルバスのレジスタがある。その次の1024バイトにはConfiguration ROMが置かれる。残りはユニット空間で機器固有のレジスタがある。以上が1394シリアルバスの技術の概要である。
【0292】
図86は本発明の第3の実施の形態として、ホスト部とプリンタ部のインターフェイスを1394シリアルバスを使って接続したシステムのブロック図である。ホスト部とプリンタ部の主要構成については、図2の概略ブロック図と同等であるので詳しい説明は省略するが、相違点としてはホスト部とプリンタ部の各々に1394IFブロックが付加されていて、この1394IFを介した1394シリアルバスケーブルによってお互いのデータのやり取りが行われる。1394IFは、1394シリアルバスで転送されるシリアルデータを各機器の内部バスと接続するために、シリアル−パラレル変換やデータパケットの構成等を行うブロックである。
【0293】
すなわち本発明の実施の形態におけるプリンタ部は、ホスト部に対して1394シリアルバスでつながれた形態になっていて、1394シリアルバス上のレジスタ空間を介してホスト部とのデータのやり取りを行うことができる。
【0294】
図87は本発明の実施の形態におけるプリンタ部の内部構成を示すブロック図である。主要ロジックについては図7のブロックと同等であるが、ステートマシンコントローラにつながっていたISA−busの部分が、1394IFからのIF−busに変わっている点が特徴である。1394シリアルバスから送られてきたデータは、1394IFによってプリンタ部に対してレジスタアクセスを行うようIF−busが出力され、ホスト部からはあたかもホスト部のCPU21がプリンタ部にIOアクセスを行っているような環境を提供することができる。
【0295】
図88はステートマシンコントローラの内部構成を示すブロック図である。
【0296】
ステートマシンコントローラは1394IFからのIF−busを経由してホスト部とのデータのやり取りを行い、プリンタユニットの制御を行うブロックである。
【0297】
基本的な動作については図8のブロック図と同等であるのが、相違点となるのはISA−busによってCPU21が直接アクセスしていたI/Oレジスタが、1394シリアルバスを介して間接的にアクセスが行われるようになった点である。
【0298】
ここで基本動作を説明すると、スーパーバイザコマンドレジスタはホスト部からプリンタI/OコントローラへのI/OアクセスをPRT−busを介して行ったり、制御I/Oコマンドの起動・停止コマンドの発行を行うためのレジスタで、スーパーバイザコマンド・アドレスレジスタ(SVA/IO)で設定したPRT−busのアドレス(PA)に対してスーパーバイザコマンド・データレジスタ(SVD/IO)を使ってデータ(PD)の読み書きを行うことを行う。
【0299】
制御I/Oコマンド・データレジスタ(BAT/IO)は、ホスト部からプリンタ部メモリをMEM−busを介して直接アクセスするための機能であり、「アドレス+データ」のセットでデータ書き込み動作を行うとメモリアドレスカウンタのライトアドレスに対応したプリンタ部メモリのアドレス(MA)に2バイトのデータ(MD)が書き込まれ、書き込まれた後にはライトアドレスが毎回+2インクリメントされる。
【0300】
制御I/Oコマンド・データレジスタを使ったデータの読み出し動作も同様で、リードアドレスに対応したプリンタ部メモリのデータが2バイト読み出され、読み出し動作後には毎回リードアドレスが+2インクリメントされる。
【0301】
制御I/Oコマンド・データレジスタによってメモリに書き込まれたデータは制御I/Oコマンドを実行するために使われるデータであり、スーパーバイザコマンドレジスタによる制御I/Oコマンドの起動コマンドとしてBP−startに“1”を書き込む事により、プリンタ部メモリから制御I/Oアドレスカウンタのリードアドレスで示されたデータを2バイトづつ読み出し、読み出したデータの下位バイトがアドレス・上位バイトがデータを表しているので、PRT−busに読み出したアドレスとデータを出力してプリンタI/Oコントローラのレジスタへのデータライトアクセス動作を行うことで制御I/Oコマンドの実行を行う。
【0302】
この制御I/Oコマンドの実行により読み出されたリードアドレスは+2づつ毎回インクリメントされ、制御I/Oコマンドの停止コマンド(BP−end)が発行されてBP−startが“0”になるまで、制御I/Oコマンド実行動作が繰り返される。
【0303】
リフレッシュコントロールは、D−RAMのリフレッシュ動作をつかさどる制御ブロックで、8msの間に512回のリフレッシュアクセスを行うようになっていて、その時のアドレスを毎回インクリメントさせるのがリフレッシュアドレスカウンタである。
【0304】
メモリアドレスコントロールは、プリンタ部メモリに対して各アクセス要求に優先順位をつけて処理を行うブロックで、制御I/Oコマンドの実行が第一優先・リフレッシュが第二優先・ホスト部からのメモリアクセスが第三優先となっている。これは制御I/Oコマンドの実行時間が変動するのを防ぐための優先順序となっている。以上がステートマシンコントローラの動作説明である。
【0305】
この様にホスト部とプリンタ部の接続の形態は一つのものに限定されることはなく汎用のインターフェイスに置きかえることが可能であるので、その際の制御方法については常に共通の環境を用いることができ、更にシステムのハードウエアの構成は状況に合わせて最適なものを使うことが出来るという点が大きな特徴である。
【0306】
【発明の効果】
ホストベースプリンティングシステムの簡素化されコストダウンされたプリンタ装置を提供することが出来る。
【0307】
ホストベースプリンティングシステムのホストでのプリンタ制御方式を提供することが出来る。
【0308】
ホストベーススキャンニングシステムの簡素化されコストダウンされたスキャナ装置を提供することが出来る。
【0309】
ホストベーススキャンニングシステムのホストでのスキャナ制御方式を提供することが出来る。
【0310】
既存のプリンティングシステム、プリンタドライバに変更を加えないホストベースプリンティングシステムを提供することが出来る。
【図面の簡単な説明】
【図1】本発明を実施したパソコンを示す斜視図である。
【図2】パソコンの概略ブロック図である。
【図3】ホスト部のメモリアドレスマップである。
【図4】ホスト部のI/Oアドレスマップである。
【図5】SET/IOレジスタの構成図である。
【図6】PRT/IOレジスタの構成図である。
【図7】プリンタ制御部のブロック図である。
【図8】ステートマシンコントローラのブロック図である。
【図9】ステートマシンコントローラ内のレジスタマップである。
【図10】制御I/Oコマンド実行時のタイミング図である。
【図11】プリンタユニットを表してる図である。
【図12】プリンタ制御装置のブロック図である。
【図13】カラー印字用記録ヘッドの内部構成図である。
【図14】記録ヘッド制御用タイミング図である。
【図15】キャリッジモーター制御回路を表す図である。
【図16】キャリッジモーター制御用タイミング図である。
【図17】プリンタIOコントローラICのブロック図である。
【図18】プリンタIOコントローラICのレジスタマップである。
【図19】プリンタIOコントローラICの制御I/Oコマンド実行タイミング制御回路のタイミング図である。
【図20】従来例のプリンタ制御部のブロック図である。
【図21】ウエイトコマンド実行時のタイミング図である。
【図22】プリンタIOコントローラICの制御I/Oコマンド実行タイミング制御回路の構成図である。
【図23】プリンタ初期化フローチャートを表す図である。
【図24】キャリッジ初期化動作時の自起動領域等速動作制御I/Oコマンド群を表す図である。
【図25】片方向印字動作時(加速部分)の制御I/Oコマンド群を表す図である。
【図26】片方向印字動作時(等速部分)の制御I/Oコマンド群を表す図である。
【図27】片方向印字動作時(減速部分)の制御I/Oコマンド群を表す図である。
【図28】紙送り動作時(加速部分)の制御I/Oコマンド群を表す図である。
【図29】紙送り動作時(減速部分)の制御I/Oコマンド群を表す図である。
【図30】メディアの構成を示した図である。
【図31】従来例のウィンドウズ・アプリケーションからプリンタへ出力する場合の、ソフトウェア処理手順を示す図である。
【図32】印刷処理のブロック図である。
【図33】Language Monitor のStart Doc Port()のフローチャートである。
【図34】Language Monitor のWrite Port()のフローチャートである。
【図35】Language Monitor のEnd Doc Port()のフローチャートである。
【図36】W−RTOSホスト・アプリケーション中の、初期化関数のフローチャートである。
【図37】W−RTOSホスト・アプリケーション中の、非同期通信関数のフローチャートである。
【図38】スキャナ処理の流れを示すソフトウェアブロック図である。
【図39】従来例のRTOSタスクとウィンドウズ・アプリケーションの通信、またRTOSタスク間の通信を示す図である。
【図40】タスク制御を示した図である。
【図41】タスク遷移状態を示した図である。
【図42】タスクの構成を示した図である。
【図43】コントロールコードの基本構成を示した図である。
【図44】コントロールコード一覧を示した図である。
【図45】イメージコントロールコードの順序を示した図である。
【図46】印字ヘッドのドット構成を示した図である。
【図47】バッファ構成を示した図である。
【図48】バッファの構成を示した図である。
【図49】バッファの構成を示した図である。
【図50】バッファの構成を示した図である。
【図51】バッファの構成を示した図である。
【図52】バッファの構成を示した図である。
【図53】バッファの構成を示した図である。
【図54】印字順序を示した図である。
【図55】バッファへのイメージデータをセットする順序を示した図である。
【図56】バッファからのイメージデータをゲットする順序を示した図である。
【図57】ポインタ、カウンタを示した図である。
【図58】コントロールコード解析Taskを示したフローチャートである。
【図59】印字処理を示したフローチャートである。
【図60】イメージ展開処理を示したフローチャートである。
【図61】印字制御I/Oコマンド作成処理を示したフローチャートである。
【図62】制御I/Oコマンド転送処理を示したフローチャートである。
【図63】フィード処理を示したフローチャートである。
【図64】給・排紙処理を示したフローチャートである。
【図65】スキャン処理Taskを示したフローチャートである。
【図66】スキャン処理を示したフローチャートである。
【図67】タイマー管理Taskを示したフローチャートである。
【図68】回復系処理Taskを示したフローチャートである。
【図69】ヘッド温調処理Taskを示したフローチャートである。
【図70】エラー処理Taskを示したフローチャートである。
【図71】電源管理Taskを示したフローチャートである。
【図72】印字の制御I/Oコマンドを受信したバッファの内容を示した図である。
【図73】印字制御I/Oコマンドを受信したバッファの内容を示した図である。
【図74】印字制御I/Oコマンドを受信したバッファの内容を示した図である。
【図75】スキャンの制御I/Oコマンドを受信したバッファの内容を示した図である。
【図76】スキャン制御のI/Oコマンドを受信したバッファの内容を示した図である。
【図77】スキャン制御のI/Oコマンドを受信したバッファの内容を示した図である。
【図78】発明の実施の形態2の処理を示すブロック図である。
【図79】RTOSストリーム入出力のブロック図である。
【図80】RTOSドライバ91−03の入力ファンクションのフローチャートである。
【図81】RTOSドライバ91−03の入力ジョブのフローチャートである。
【図82】発明の実施の形態3の処理を示すブロック図である。
【図83】IEEE1394シリアルバスを用いて構成されるネットワークシステムを示す図である。
【図84】IEEE1394シリアルバスの構成要素を示す図である。
【図85】IEEE1394シリアルバスにおけるアドレス空間を示す図である。
【図86】IEEE1394シリアルバスを用いたシステムのブロック図である。
【図87】プリンタ部の内部構成を示すブロック図である。
【図88】ステートマシンコントローラの内部構成を示すブロック図である。
Claims (8)
- ホストコンピュータより受信したコントロールI/Oコマンドを記憶するメモリと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、印字ユニットのプリントを制御するコントローラとを有し、
前記I/Oレジスタは、前記印刷ユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とするプリンタ。 - 前記コントロールI/Oコマンドは、コントロールI/Oコマンドの実行を所定時間ウエイトするウエイトコマンドを含むことを特徴とする請求項1記載のプリンタ。
- 前記メモリを制御するメモリコントローラを有し、
前記メモリコントローラは、前記コントロールI/Oコマンドの実行を第1優先度とし、リフレッシュの実行を第2優先度とし、ホストコンピュータからのメモリのアクセスを第3優先度とすることを特徴とする請求項1記載のプリンタ。 - 前記プリンタは、インクジェットプリンタを含むことを特徴とする請求項1記載のプリンタ。
- 前記印字ユニットは、印字ヘッド、印字ヘッドを搭載したキャリッジを駆動するモータ、および、紙送りモータを含むことを特徴とする請求項1記載のプリンタ。
- ホストコンピュータより受信したコントロールI/Oコマンドを記憶するメモリと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、スキャンユニットのスキャンを制御するコントローラとを有し、
前記I/Oレジスタは、前記スキャンユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とするスキャナ。 - ホストコンピュータより受信したコントロールI/Oコマンドをメモリに記憶するステップと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、印字ユニットのプリントを制御する制御ステップとを有し、
前記I/Oレジスタは、前記印刷ユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とするプリント方法。 - ホストコンピュータより受信したコントロールI/Oコマンドをメモリに記憶するステップと、
前記メモリに記憶されたコントロールI/Oコマンドを所定周期で読み出し、読み出したコントロールI/OコマンドをI/Oレジスタに書き込むことにより、スキャンユニットのスキャンを制御する制御ステップとを有し、
前記I/Oレジスタは、前記スキャンユニットを制御するコントローラを構成するレジスタ郡であり、各ユニットを特定するアドレスが規定され、各アドレスに制御データを書 き込むことにより各ユニットを制御し、
前記コントロールI/Oコマンドは、I/Oレジスタのアドレスを指示するアドレスとI/Oレジスタに書き込む制御データとを含むことを特徴とするスキャン方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22359797A JP3957825B2 (ja) | 1996-10-15 | 1997-08-20 | 印字制御システム及びスキャナ制御システム |
US08/951,108 US6559962B1 (en) | 1996-10-15 | 1997-10-15 | Printer control system and method using a control I/O command from a host computer, and scanner control system and method of using a control I/O command from a host computer |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27231096 | 1996-10-15 | ||
JP8-272310 | 1996-10-15 | ||
JP22359797A JP3957825B2 (ja) | 1996-10-15 | 1997-08-20 | 印字制御システム及びスキャナ制御システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10177461A JPH10177461A (ja) | 1998-06-30 |
JP3957825B2 true JP3957825B2 (ja) | 2007-08-15 |
Family
ID=26525579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22359797A Expired - Fee Related JP3957825B2 (ja) | 1996-10-15 | 1997-08-20 | 印字制御システム及びスキャナ制御システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6559962B1 (ja) |
JP (1) | JP3957825B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0859326A3 (en) * | 1997-02-14 | 1999-05-12 | Canon Kabushiki Kaisha | Data transmission apparatus, system and method, and image processing apparatus |
SG101460A1 (en) * | 1997-02-14 | 2004-01-30 | Canon Kk | Data communication apparatus and method |
EP0859327B1 (en) * | 1997-02-14 | 2009-07-15 | Canon Kabushiki Kaisha | Data transmission apparatus, system and method, and image processing apparatus |
AUPP702498A0 (en) * | 1998-11-09 | 1998-12-03 | Silverbrook Research Pty Ltd | Image creation method and apparatus (ART77) |
US6825951B1 (en) * | 2000-04-05 | 2004-11-30 | Hewlett-Packard Development Company, L.P. | Inkjet printing and method |
US7428188B2 (en) * | 2004-09-15 | 2008-09-23 | Eastman Kodak Company | Method for generating a cue delay circuit |
US6912179B1 (en) * | 2004-09-15 | 2005-06-28 | Eastman Kodak Company | Cue delay circuit |
JP2009225369A (ja) * | 2008-03-18 | 2009-10-01 | Ricoh Co Ltd | 画像形成装置 |
JP2016136364A (ja) | 2015-01-23 | 2016-07-28 | キヤノン株式会社 | 通信装置及びその制御方法、プログラム |
JP2017134702A (ja) | 2016-01-29 | 2017-08-03 | キヤノン株式会社 | サーバシステム、サーバシステムの制御方法、およびプログラム |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3753246A (en) * | 1971-08-27 | 1973-08-14 | Allen Bradley Co | Printer adapted for operation with a programmable controller |
US4452136A (en) * | 1979-10-19 | 1984-06-05 | International Business Machines Corporation | Printer subsystem with dual cooperating microprocessors |
JPS61204732A (ja) * | 1985-03-07 | 1986-09-10 | Ricoh Co Ltd | ホスト内蔵型プリンタ制御装置 |
DE3526369A1 (de) * | 1985-07-24 | 1987-02-05 | Mannesmann Ag | Digitaler mikroprozessor fuer das darstellen von schraegschrift (kursivschrift), insbesondere in datenstationen und auf matrixdruckern |
US4972341A (en) * | 1987-05-21 | 1990-11-20 | Sony Corporation | Graphic printer |
US4837635A (en) * | 1988-01-22 | 1989-06-06 | Hewlett-Packard Company | A scanning system in which a portion of a preview scan image of a picture displaced on a screen is selected and a corresponding portion of the picture is scanned in a final scan |
US5845144A (en) * | 1991-12-25 | 1998-12-01 | Canon Kabushiki Kaisha | Information processing apparatus with internal printer |
US5477238A (en) * | 1992-02-13 | 1995-12-19 | Aharanson; Ophira R. | Method of and station for integrated typed data and optically scanned data capture for computer interfacing and the like |
JPH05303553A (ja) * | 1992-04-23 | 1993-11-16 | Ricoh Co Ltd | 複合機コントローラ |
US5752075A (en) * | 1993-02-10 | 1998-05-12 | Elonex Plc, Ltd. | Integrated computer Scanner printer in a single system enclosure sharing control circuitry and light source wherein a single CPU performing all of the control tasks |
US5566278A (en) * | 1993-08-24 | 1996-10-15 | Taligent, Inc. | Object oriented printing system |
US5619622A (en) * | 1994-12-16 | 1997-04-08 | Xerox Corporation | Raster output interface for a printbar |
US5699494A (en) * | 1995-02-24 | 1997-12-16 | Lexmark International, Inc. | Remote replication of printer operator panel |
US5790279A (en) * | 1995-09-13 | 1998-08-04 | Sakellaropoulos; Spiro | Combined scanner, printer and facsimile apparatus |
-
1997
- 1997-08-20 JP JP22359797A patent/JP3957825B2/ja not_active Expired - Fee Related
- 1997-10-15 US US08/951,108 patent/US6559962B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10177461A (ja) | 1998-06-30 |
US6559962B1 (en) | 2003-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5937152A (en) | Printer with buffer memory | |
JP3957825B2 (ja) | 印字制御システム及びスキャナ制御システム | |
JP3847970B2 (ja) | 印刷データ処理装置、印刷データ処理方法及び記録媒体 | |
JPH06110626A (ja) | 印刷装置及び前記印刷装置を用いた印刷システム | |
JP3275992B2 (ja) | カラープリンタ及びカラープリントシステム | |
US7173723B1 (en) | Printer and print system capable of printing a read image without intervention of host in addition to printing of print data from host | |
US5768484A (en) | Printing apparatus and control method therefor | |
JP3602723B2 (ja) | ネットワークシステム | |
JP4400097B2 (ja) | 印刷装置、印刷制御方法、プログラム及び記録媒体 | |
JP4350404B2 (ja) | 記録装置及びその制御方法 | |
JP3562181B2 (ja) | プリンタのメモリ管理方法及びメモリ管理装置 | |
JP2001067193A (ja) | 印刷システム及び印刷装置及びその制御方法 | |
JP2003076649A (ja) | データ処理装置および印刷制御装置およびインタフェース選択方法および記憶媒体およびプログラム | |
JP3195097B2 (ja) | 出力制御方法および装置 | |
JP2860210B2 (ja) | 印刷制御装置 | |
JPH0764735A (ja) | 印刷装置 | |
JPH09218843A (ja) | 出力制御装置及び出力制御方法及びコンピュータで呼び出し可能な工程を含んだ記憶媒体 | |
JP2003167710A (ja) | 記録装置および記録システム | |
JP2002273953A (ja) | 画像記録装置、画像記録システム、及び画像記録方法 | |
JPH0318835B2 (ja) | ||
JPH10295096A (ja) | モータ制御装置、記録装置、情報処理システム、ならびに情報処理方法 | |
JP2000289295A (ja) | プリンタ装置 | |
JPH08272559A (ja) | 情報処理装置 | |
JPH0887392A (ja) | プリンタ装置 | |
JPH09277572A (ja) | シリアル式印字装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040819 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040819 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061114 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070112 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070508 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070509 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100518 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110518 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |