図1は、本発明の印刷システムの一実施形態を示す図である。図1に示す印刷システムには、ハンドヘルドプリンタ10と、画像提供装置11と、印刷媒体12が含まれる。
ハンドヘルドプリンタ10は、ユーザが印刷媒体12上を自由に移動させて、印刷媒体12上に画像を印刷可能な可搬型の印刷装置である。ハンドヘルドプリンタ10は、ユーザが持ち運び可能な大きさや重量で構成することが好適であり、紙や壁面、ボード、衣服等の種々の印刷媒体上に画像を形成することができる。
ハンドヘルドプリンタ10は、ハンドヘルドプリンタ10に内蔵されたノズルから顔料インクや染料インク等の液滴を吐出するインクジェット方式のプリンタである。なお、ハンドヘルドプリンタ10の印字方式は、これに限られるものではなく、細いピンをインクリボンに叩き付けて印刷するドットインパクト方式等の他の印字方式を採用することができる。また、ハンドヘルドプリンタ10は、モノクロ方式またはカラー方式も採用することができる。
ハンドヘルドプリンタ10は、画像提供装置である画像提供装置11から印刷対象の画像データを受信し、当該画像データに基づいて液滴を印刷媒体12上に吐出して画像を形成する。画像データは、文字のみからなるテキストデータであってもよく、または図、絵、写真等を含む文書データ、表データ等でもよい。ハンドヘルドプリンタ10は、画像データと共に、モノクロ印刷やカラー印刷、解像度の高低等の印刷に関する種々の印刷設定情報を受信し、印刷設定情報に基づいて液滴を吐出する。
ハンドヘルドプリンタ10は、赤外線通信、Bluetooth(登録商標)、Wi−Fi(登録商標)等の無線通信により、画像提供装置11から画像データを受信する。ハンドヘルドプリンタ10は、画像提供装置11から画像データを直接受信してもよいし、アクセスポイント等を介して受信してもよい。なお、ハンドヘルドプリンタ10は、無線通信によって画像データを受信するだけでなく、有線通信によって画像データを受信してもよい。
画像提供装置11は、印刷対象の画像データをハンドヘルドプリンタ10に提供する装置であり、例えば、スマートフォン、タブレット端末、ノートPC等の電子機器を採用することができる。
本実施形態では、画像提供装置11は、印刷対象の画像データを無線通信によってハンドヘルドプリンタ10に送信する。他の実施形態では、画像提供装置11は、サーバ等の他の画像提供装置が提供する画像データをハンドヘルドプリンタ10に送信してもよい。
画像提供装置11は、印刷対象の画像の表示や編集を行うアプリケーションやOS等のプログラムを実行するCPUと、アプリケーションやOS等のプログラムを記憶するROMと、これらのプログラムの実行空間を提供するRAMと、印刷対象の画像データを表示する表示装置と、ユーザが画像データの印刷を指示可能な入力装置とを備える。なお、表示装置および入力装置は、個別の装置として構成されたものに限らず、これらを一体的に構成したタッチパネルとしてもよい。
図2は、ハンドヘルドプリンタ10のハードウェア構成を示す図である。以下、図2を参照してハンドヘルドプリンタ10のハードウェア構成について説明する。
ハンドヘルドプリンタ10は、電源20と、電源回路21と、画像データ通信I/F22と、メモリ23と、ナビゲーションセンサ24と、制御部25と、操作ユニット(OPU)26と、記録ヘッドユニット27と、記録ヘッド駆動回路28とを備える。
電源20は、ハンドヘルドプリンタ10が使用する電力を供給する電池等の電源である。電源回路21は、ハンドヘルドプリンタ10の各ユニットへの電力供給を制御する回路である。
画像データ通信I/F22は、画像提供装置11が送信したデータを受信するデータ通信I/Fである。画像データ通信I/F22は、無線LANやBluetooth(登録商標)、NFC等の無線通信によって送信されたデータを受信する。
メモリ23は、ROMやDRAMで構成される記憶装置である。ROMには、ハンドヘルドプリンタ10のハードウェア制御を行うプログラム、記録ヘッドを駆動させる駆動波形データおよび初期設定情報等のデータが格納される。DRAMは、プログラムの実行空間を提供し、画像データや駆動波形でデータ等の種々のデータが一時的に格納される。
ナビゲーションセンサ24は、ナビゲーションセンサ24の移動量を光学的に算出する装置である。ナビゲーションセンサ24は、印刷媒体等の被照射体に光を照射し、その反射光を撮影してイメージデータを生成し、ハンドヘルドプリンタ10の移動前のイメージデータおよび移動後のイメージデータの差分に基づいてナビゲーションセンサ24の移動量を算出する。
制御部25は、ハンドヘルドプリンタ10の全体制御を行う手段である。なお、ハンドヘルドプリンタ10のハードウェア構成については、図3を参照して詳述する。
OPU26は、ユーザからの印字動作の指示を受け付けるスイッチや操作ボタン等の入力手段やハンドヘルドプリンタ10の状態を通知する通知手段を備える装置である。通知手段は、発光ダイオード(LED)や液晶ディスプレイ(LCD)を採用することができる。
記録ヘッドユニット27は、インク等の液滴を吐出する吐出手段である複数のノズルを含む記録ヘッドを備える装置である。記録ヘッド駆動回路28は、記録ヘッドユニット27の記録ヘッドを制御する手段である。
図3は、制御部25のハードウェア構成を示す図である。以下、図3を参照して、制御部25のハードウェア構成について説明する。
制御部25は、SoC(System on chip)300と、ASIC(Application Specific Integrated Circuit)310とを備える。SoC300は、CPU301と、メモリコントローラ302と、位置算出回路303とを備える。これらの装置は、バス304に接続され、バス304を介してデータ通信を行う。
CPU301は、ハンドヘルドプリンタ10の全体制御を行う手段である。メモリコントローラ302は、メモリ23を制御する手段である。
位置算出回路303は、ナビゲーションセンサ24が提供するナビゲーションセンサ24の移動量を使用して、ナビゲーションセンサ24の位置座標を算出する手段である。
ASIC310は、ナビゲーションセンサI/F311と、タイミング生成回路312と、記録ヘッド制御回路313と、イメージRAM314、DMAC(Direct Memory Access Controller)315と、回転器316と、割り込み回路317とを含む。これらの装置は、バス318に接続され、バス318を介してデータ通信を行う。バス318はバス304とも接続され、SoC300およびASIC310は、これらのバスを介してデータ通信を行う。
タイミング生成回路312は、ナビゲーションセンサI/F311がナビゲーションセンサ24の出力情報を読み取るタイミングと、記録ヘッドが液滴を吐出するタイミングを生成し、これらのタイミングをナビゲーションセンサI/F311および記録ヘッド制御回路313に通知する手段である。
ナビゲーションセンサI/F311は、ナビゲーションセンサ24とデータ通信を行う手段である。ナビゲーションセンサI/F311は、タイミング生成回路312が指定するタイミングでナビゲーションセンサ24から出力情報であるナビゲーションセンサ24の移動量を受信し、ナビゲーションセンサI/F311の内部メモリである内部レジスタに格納する。
DMAC315は、位置算出回路303が算出したノズルの位置情報を基に、各ノズルが液滴を吐出して形成すべき画像データを、メモリコントローラ302を介してメモリ23から読み出し、イメージRAM314に保存する。
イメージRAM314は、DMAC315が読み出した画像データを一時的に格納する記憶装置である。
回転器316は、ハンドヘルドプリンタ10の回転角に応じて、印刷対象の画像データを回転させる手段である。回転器316は、イメージRAM314から画像データを取得し、ハンドヘルドプリンタ10の回転角に応じて画像データを回転させ、当該画像データが吐出に必要な所定の条件(以下、「吐出条件」とする。)を満たす場合に、当該画像データを記録ヘッド制御回路313に送信する。
記録ヘッド制御回路313は、記録ヘッド駆動回路28を制御して記録ヘッドの吐出動作を制御する手段である。記録ヘッド制御回路313は、タイミング生成回路312が指定するタイミングで、記録ヘッドの吐出動作を制御する制御信号および印刷対象の画像データを記録ヘッド駆動回路28に送信する。
割り込み回路317は、SoC300に対して割り込み信号を送信する手段である。割り込み回路317は、ナビゲーションセンサI/F311がナビゲーションセンサ24との通信を終了した際、その旨をSoC300に通知する割り込み信号をSoC300に送信する。また、割り込み回路317は、エラー等のステータス情報を通知する割り込み信号をSoC300に送信する。
本実施形態では、ASIC310がナビゲーションセンサ24および記録ヘッド駆動回路28を制御するが、他の実施形態では、ASIC310の代わりに、ユーザが製造後に構成を設定できるFPGA(Field Programmable gate alley)を用いてもよい。
図4は、CPU301の機能構成を示す図である。以下、図4を参照して、CPU301に実装される機能構成の一実施形態について説明する。
CPU301は、OPU制御部40と、ノズル数決定部41と、印刷指示判定部42と、初期位置設定部43と、時間判定部44と、移動量取得部45と、選択的吐出ノズル決定部46と、ノズル位置算出部47と、印刷対象選択部48と、印刷完了判定部49とを含む。
OPU制御部40は、OPU26を制御する手段である。印刷指示判定部42は、印刷指示を受け付けたか否か判断する手段である。初期位置設定部43は、ハンドヘルドプリンタ10の初期位置を設定する手段である。時間判定部44は、タイミング生成回路312を使用して、所定の設定時間が経過したか否か判断する手段である。移動量取得部45は、ナビゲーションセンサ24から移動量を取得する手段である。
ノズル数決定部41は、印刷対象の画像データに含まれるテキストのフォントサイズに基づいて、選択的吐出ノズルの数を決定する手段である。選択的吐出ノズルは、図9に示すように、ハンドヘルドプリンタが印刷可能な範囲の境界付近(すなわち、ノズル列によって規定される範囲の長手方向の端部)に位置する印刷対象のテキストを選択的に印刷するノズルである。
本実施形態では、ノズル数決定部41は、少なくとも1のテキストを印刷可能なノズルの数を選択的吐出ノズルの数として決定する。例えば、テキストのフォントサイズが10pt(0.14インチ)、ノズルの間隔が1/150インチの場合、1のテキストを印刷可能なノズルの数は24となる。ノズル数決定部41は、この値(24)を選択的吐出ノズルの数として決定することができる。
他の実施形態では、ノズル数決定部41は、1のテキストを印刷可能なノズルの数(24)に所定値を加算した値を選択的吐出ノズルの数として決定することができる。所定値として、例えば、既知のノズル列の長さ(1インチ)をテキストのフォントサイズ(0.14インチ)で割ることによって得られる余り(3)を採用することができる。
さらに他の実施形態では、ハンドヘルドプリンタ10の移動によって生じる回転角に応じて選択的吐出ノズルの数を補正してもよい。例えば、回転角が3度以下の場合には、ノズル数決定部41は、上述した方法で算出した選択的吐出ノズルの数に係数(0.1)を掛けて得られる値を選択的吐出ノズルの数とすることができる。同様に、回転角が3度より大きく5度未満の場合は係数(0.2)、回転角が5度以上で10度未満の場合は係数(0.5)、回転角が10度以上の場合は係数(1.0)を用いて、選択的吐出ノズルの数を補正することができる。さらに他の実施形態では、テキストのフォントサイズに応じた係数を用いて選択的吐出ノズルの数を補正してもよい。
選択的吐出ノズル決定部46は、ハンドヘルドプリンタ10の移動によって生じる回転角に基づいて、選択的吐出ノズルを決定する手段である。選択的吐出ノズル決定部46は、図10に示すように、記録ヘッドの先端部または後端部に位置するノズルを選択的吐出ノズルとして選択する。
より詳細には、選択的吐出ノズル決定部46は、ハンドヘルドプリンタ10が移動前の長手方向の軸に対して時計回りにdθ回転した場合、先端部に位置するノズルを選択的吐出ノズルとして決定する。一方、ハンドヘルドプリンタ10が移動前の長手方向の軸に対して反時計回りにdθ回転した場合、選択的吐出ノズル決定部46は、後端部に位置するノズルを選択的吐出ノズルとして決定する。
ノズル位置算出部47は、ナビゲーションセンサ24の位置座標に基づいて、記録ヘッドが備える全てのノズルの現在の位置座標を算出する手段である。ノズル位置算出部47は、位置算出回路303が算出するナビゲーションセンサ24の位置座標に基づいて全てのノズルの位置座標を算出する。
印刷対象選択部48は、選択的吐出ノズルが印刷する印刷対象の画像データを選択する手段である。選択的吐出ノズルが印刷する印刷対象の画像データを選択する方法については、図11を参照して詳述する。
印刷完了判定部49は、印刷が完了したか否か判断する手段である。印刷完了判定部49は、画像提供装置11から受信した画像データを総て印刷した場合に、印刷が完了したと判断する。
図5は、ナビゲーションセンサ24のハードウェア構成を示す図である。以下、図5を参照して、ナビゲーションセンサ24のハードウェア構成について説明する。
ナビゲーションセンサ24は、ホストI/F50と、イメージプロセッサ51と、LEDドライブ52と、発光ダイオード(LED)53と、レンズ54,55と、イメージアレイ56とを備える。
LEDドライブ52は、LED53を制御して発光させる手段である。LED53は、LEDドライブ52の制御下で光を発光する半導体素子である。レンズ54は、LED53の光を集光して印刷媒体12に照射する手段である。レンズ55は、印刷媒体12の表面で反射した光を集光してイメージアレイ56に照射する手段である。
イメージアレイ56は、印刷媒体12で反射したLED53の光を受光してイメージデータを生成する手段である。イメージアレイ56は、生成したイメージデータをイメージプロセッサ51に出力する。
イメージプロセッサ51は、イメージアレイ56が生成したイメージデータを処理する手段である。イメージプロセッサ51は、イメージデータからナビゲーションセンサ24の移動量を算出する。イメージプロセッサ51は、ナビゲーションセンサ24の移動量として、ナビゲーションセンサ24によって規定されるX−Y平面におけるX軸方向の移動量ΔXと、Y軸方向の移動量ΔYとを算出し、これらの移動量をホストI/F50を介して制御部25に送信する。
表面が粗い紙等の印刷媒体に印刷する実施形態では、光源としてLEDを採用することが好適である。印刷媒体の表面が粗い場合、LED光によって印刷媒体の表面の凹凸に応じた陰影が形成されるため、その陰影を特徴部分とすることができ、ナビゲーションセンサ24の移動量を正確に算出することができるからである。
表面が滑らかな印刷媒体や透明な印刷媒体に印刷する実施形態では、光源としてレーザ光を発生させる半導体レーザ(LD)を採用することが好適である。LDによって、例えば、縞模様等を印刷媒体12上に形成し、その模様を特徴部分とすることができるからである。
図6は、ナビゲーションセンサ24の移動量の算出方法を示す概念図である。以下、図6を参照して、ナビゲーションセンサ24の移動量の算出方法について概説する。
ナビゲーションセンサ24は、図6(a)に示すように、LED53からの光を、レンズ54を介して印刷媒体12の表面に斜めに照射する。印刷媒体12の表面には、図6(a)に示すように様々な形状の微細な凹凸を有しているため、LED53の照射光によって様々な形状の陰影が表面上に形成される。
イメージアレイ56は、予め決められたタイミング毎に、レンズ55を介して印刷媒体12の反射光を受光し、イメージデータを生成する。イメージプロセッサ51は、イメージデータを既定の分解能単位で複数の矩形領域に分割し、前回のタイミングで得られたイメージデータと、今回のタイミングで得られたイメージデータとを比較し、これらのイメージデータを抽出し、ナビゲーションセンサ24の移動量を算出する。
例えば、図6(b)に示すようなイメージデータが、タイミングSamp1、Samp2、Samp3の順に得られたものとする。図6(b)に示すイメージデータでは、灰色で表された印影部分、すなわち、特徴部分が右から左へ1分解能ずつ移動する様子が表されている。
ここで、Samp1を基準タイミングとすると、Samp2では、特徴部分がX軸方向に1分解能分移動しており、移動量(ΔX,ΔY)は(1,0)となる。また、Samp2を基準タイミングとすると、Samp3では、特徴部分がX軸方向に1分解能分移動しており、このときの移動量(ΔX,ΔY)も(1,0)となる。なお、移動量の単位は、デバイスに依存するが、例えば1200dpi程度の分解能を有することが好適である。
図7は、ハンドヘルドプリンタが実行する処理の一実施形態を示すフローチャートである。以下、図7を参照して、ハンドヘルドプリンタ10が、画像提供装置11から印刷ジョブと共に、テキストが含まれる印刷対象の画像データを受信した場合に実行する処理について説明する。
図7に示す処理は、ステップS700から開始し、ステップS701では、OPU制御部40が、OPU26を制御して画像提供装置11から印刷対象の画像データを受信している旨を通知する。本実施形態では、OPU制御部40は、点灯時にスタンバイ状態である旨を示すLEDを点滅させる。
ステップS702では、ノズル数決定部41が、画像提供装置11から受信したデータにフォントサイズデータが含まれているか否か判断する。フォントサイズデータが含まれている場合は(yes)、ステップS705に処理が分岐する。一方、フォントサイズデータが含まれていない場合(no)、ステップS703に処理が分岐する。
ステップS703では、ノズル数決定部41は、印刷ジョブで指定されている印字モードが、高画質のテキストを行う高画質モードであるか否か判断する。印字モードが高画質モードでない場合は(no)、ステップS707に処理が分岐する。一方、印字モードが高画質モードである場合は(yes)、ステップS704に処理が分岐する。
ステップS704では、ノズル数決定部41は、画像提供装置11から受信した画像データからテキストのフォントサイズを算出する。より詳細には、ノズル数決定部41は、画像データからテキストのエッジを検出し、エッジのアドレスと、エッジの無い領域のアドレスとを算出し、これらのアドレスと、入力画像データの解像度とを用いてフォントサイズを算出することができる。例えば、エッジ情報からテキストの左端アドレスが0x0000、右端アドレスが0x012C(画データ有り領域:0x012C)、解像度が300dpiである場合、フォントサイズは1インチであると判断することができる。
ステップS705では、ノズル数決定部41は、画像データに含まれるテキストのフォントサイズが、ノズル列長以下であるか否か判断する。フォントサイズがノズル列長よりも大きい場合は(no)、ステップS707に処理が分岐する。一方、フォントサイズがノズル列長以下である場合は(yes)、ステップS706に処理が分岐する。ステップS706では、ノズル数決定部41は、フォントサイズに基づいて選択的吐出ノズルの数を決定する。
ステップS707では、印刷指示判定部42が、印刷指示を受け付けたか否か判断する。より詳細には、印刷指示判定部42は、ユーザが印刷開始を指示するスイッチを押下することによって発行されるイベントを受信した場合に、印刷指示を受け付けたと判断する。印刷指示を受け付けていない場合は(no)、ステップS707の処理を反復する。一方、印刷指示を受け付けた場合は(yes)、ステップS708に処理が分岐する。
ステップS708では、初期位置設定部43が、ハンドヘルドプリンタ10の現在の位置を読み出し、初期位置として設定する。ステップS709では、図8を参照して詳述する印刷処理が実行される。ステップS710では、印刷完了判定部49が、印刷対象の全ての画像データを吐出したか否か判断することにより、印刷が完了したか否か判断する。印刷が完了していない場合は(no)、ステップS709に処理を戻す。一方、印刷が完了した場合は(yes)、ステップS711に処理が分岐する。
ステップS711では、OPU制御部40が、OPU26を制御して印刷が完了した旨を通知し、ステップS712で処理が終了する。本実施形態では、OPU制御部40は、スタンバイ状態である旨を示すLEDを点灯させる。
図8は、図7のステップS709の一実施形態を示すフローチャートである。図8に示す処理は、ステップS800から開始し、ステップS801で時間判定部44が、タイミング生成回路312を使用して設定時間が経過したか否か判断する。設定時間は、ヘッド側の駆動周期(例えば、ピエゾヘッドの場合に、ヘッドを駆動する駆動波形の波形長等によって規定される駆動周期)や画像転送時間を満たす時間とすることが好適である。
設定時間が経過していない場合(no)、ステップS801の処理が反復する。一方、設定時間が経過した場合(yes)、ステップS802に処理が分岐する。ステップS802では、移動量取得部45が、ナビゲーションセンサ24からナビゲーションセンサの移動量(ΔX,ΔY)を取得する。ステップS803では、位置算出回路303が、ステップS708で設定した初期位置または前回のナビゲーションセンサの位置座標と、ナビゲーションセンサの移動量(ΔX,ΔY)とを用いて、現在のナビゲーションセンサの位置座標を算出し、記憶装置に保存する。
ここで、ステップS708で初期位置を設定した後、図8に示す処理を初めて実行する場合、位置算出回路303は、初期位置または前回のナビゲーションセンサの位置座標と、ステップS802で取得した移動量(ΔX,ΔY)を用いて、現在のナビゲーションセンサの位置座標を算出する。
一方、図8に示す処理を反復して実行する場合は、位置算出回路303は、前回算出したナビゲーションセンサの位置座標と、ステップS802で取得した移動量(ΔX,ΔY)とを用いて、現在のナビゲーションセンサの位置座標を算出する。なお、ナビゲーションセンサの位置座標の算出方法については、図12を参照して詳述する。
ステップS804では、位置算出回路303は、現在のナビゲーションセンサの位置座標をCPU301に送信する。ステップS805では、選択的吐出ノズル決定部46が、ハンドヘルドプリンタ10の回転角dθに基づいて記録ヘッドが備えるノズルの中から選択的吐出ノズルを決定する。
ステップS806では、CPU301のノズル位置算出部47が、現在のナビゲーションセンサの位置座標に基づいて、記録ヘッドが備える全てのノズルの現在の位置座標を算出する。なお、ノズルの位置座標の算出方法については、図13を参照して詳述する。
ステップS807では、DMAC315が、ノズル位置算出部47が算出したノズルの現在の位置座標に基づいて、各ノズルの周辺の印刷対象の画像データを取得する。ステップS808では、回転器316は、位置算出回路303が算出したハンドヘルドプリンタの回転角を取得する。
ステップS809では、回転器316は、回転角に基づいて印刷対象の画像データの回転が必要か否か判断する。回転角が0の場合は、回転器316は、印刷対象の画像データの回転が不要と判断し、それ以外の場合は、印刷対象の画像データの回転が必要と判断する。
印刷対象の画像データの回転が不要と判断した場合(no)、ステップS811に処理が分岐する。一方、印刷対象の画像データの回転が必要と判断した場合(yes)、ステップS810に処理が分岐する。ステップS810では、回転器316は、印刷対象の画像データを、ハンドヘルドプリンタ10の移動によって生じた回転角に応じて回転させる。
ステップS811では、回転器316が、印刷対象の画像データと記録ヘッドの各ノズルの位置座標とを使用して、吐出条件を満たすか否か判断する。より詳細には、回転器316は、印刷媒体平面Xm−Ymにおけるノズルの位置座標と、当該平面における印刷対象の画像データの位置座標とが一致した場合に、吐出条件を満たすと判定する。例えば、図14に示すように、黒丸で示される画像データの位置座標74と、記録ヘッドの先頭ノズル70の位置座標とが一致する場合、回転器316は、吐出条件を満たすと判断する。一方、画像データの位置座標とノズルの位置座標が一致しない場合、回転器316は、吐出条件を満たさないと判断する。
吐出条件を満たさない場合(no)、ステップS816で処理が終了する。一方、吐出条件を満たす場合(yes)、ステップS812に処理が分岐する。ステップS812では、印刷対象選択部48が、ステップS807で取得した画像データから選択的吐出ノズルが印刷すべき画像データを抽出する。
ステップS813では、印刷対象選択部48は、選択的吐出ノズルが印刷すべき画像データにテキストが含まれるか否か判断する。選択的吐出ノズルが印刷すべき画像データにテキストが含まれない場合は(no)、ステップS815に処理が分岐する。一方、選択的吐出ノズルが印刷すべき画像データにテキストが含まれる場合は(yes)、ステップS814に処理が分岐する。
ステップS814では、印刷対象選択部48は、選択的吐出ノズルが印刷すべき画像データの各行について、移動方向と反対側の端部に位置するテキストを印刷対象とし、それ以外のテキストを印刷対象外とする。
より詳細には、印刷対象選択部48は、図11に示すように、選択的吐出ノズルが印刷すべき画像データに含まれるテキストによって構成される各行(第1行および第2行)について、移動方向と反対側の端部に位置するテキスト(第1行のAおよび第2行のC)を印刷対象とし、それ以外のテキスト(第1行のBおよびC)を印刷対象外とする。
ステップS815では、DMAC315が、印刷対象の画像データを記録ヘッド制御回路313に転送し、ステップS816で処理が終了する。ここで、選択的吐出ノズルが印刷すべき画像データにテキストが含まれる場合、DMAC315は、印刷対象の画像データとして、選択的吐出ノズルが印刷すべき画像データのうち移動方向と反対側の端部に位置するテキストと、選択的吐出ノズル以外の吐出ノズルが印刷すべき画像データとを記録ヘッド制御回路313に転送する。
より詳細には、DMAC315は、図11に示す第1行のテキスト(A)および第2行のテキスト(C)と、第3行のテキスト(AおよびB)、第4行のテキスト(AおよびB)および第5行のテキスト(A)とを、印刷対象の画像データとして記録ヘッド制御回路313に転送する。
そして、記録ヘッド制御回路313は、印刷対象の画像データを記録ヘッド駆動回路2に送信し、記録ヘッドの各ノズルが、上述した印刷媒体上の位置座標(すなわち、印刷媒体平面Xm−Ymにおけるノズルおよび印刷対象の画像データの位置座標)に、当該位置座標に吐出すべき印刷対象の画像データに応じた液滴を吐出する。
図12は、ナビゲーションセンサ71a、71bの位置座標の算出方法を示す図である。図12は、ハンドヘルドプリンタ10が印刷媒体(図示せず)の水平方向および垂直方向によって規定されるXm−Ym平面のYm軸に対して角度θ回転した状態で、ユーザがハンドヘルドプリンタ10を移動させて印刷を行った結果、ハンドヘルドプリンタ10がさらに角度dθ回転した様子を示す。以下、図12を参照して、ナビゲーションセンサ71a、71bの位置座標を算出する方法について説明する。
本実施形態では、ハンドヘルドプリンタ10の回転成分および並行移動成分を算出し、これらの回転成分および並行移動成分と、印刷前のナビゲーションセンサ71a、71bの位置座標とに基づいて、印刷後のナビゲーションセンサ71a、71bの位置座標を算出する。
まず、位置算出回路303は、X−Y平面におけるナビゲーションセンサ71a,71bのX軸方向への移動量を、数式1に代入することにより、移動前のハンドヘルドプリンタに対する移動後のハンドヘルドプリンタの回転角dθを、回転成分として算出する。
ここで、dθは、図12に示すように、移動前のハンドヘルドプリンタのX−Y平面におけるY軸に対する、移動後のハンドヘルドプリンタの回転角である。ΔXS0は、X−Y平面におけるナビゲーションセンサ71aの移動ベクトルのX軸成分であり、X軸方向への移動量を示す。ΔXS1は、X−Y平面におけるナビゲーションセンサ71bの移動ベクトルのX軸成分であり、X軸方向への移動量を示す。距離Lは、ナビゲーションセンサ71a,71b間の距離を示す。
次に、位置算出回路303は、X−Y平面におけるナビゲーションセンサ71aのX軸方向への移動量およびY軸方向への移動量を、数式2に代入することにより、Xm−Ym平面におけるナビゲーションセンサ71aのXm軸方向への移動量と、Ym軸方向への移動量とを、並行移動成分として算出する。
ここで、図12に示すように、位置座標(X0,Y0)、(X1,Y1)は、それぞれ印刷前のナビゲーションセンサ71a,71bの初期位置の座標であるdX0は、Xm−Ym平面におけるナビゲーションセンサ71aの移動ベクトルのXm軸成分であり、Xm軸方向への移動量を示す。dY0は、Xm−Ym平面におけるナビゲーションセンサ71aの移動ベクトルのYm軸成分であり、Ym軸方向への移動量を示す。θは、Xm−Ym平面におけるYm軸に対する、印刷開始時のハンドヘルドプリンタの傾斜角を示す。ΔYS0は、X−Y平面におけるナビゲーションセンサ71aの移動ベクトルのY軸成分であり、Y軸方向への移動量を示す。本実施形態では、傾斜角θは印刷開始時にユーザが設定することができる。他の実施形態では傾斜角θを0としてもよい。
そして、位置算出回路303は、ナビゲーションセンサ71aの初期位置(X0,Y0)と、数式2で算出したdX0,dY0とを用いて、Xm−Ym平面における印刷後のナビゲーションセンサ71aの位置座標(X0+dX0,Y0+dY0)を算出することができる。
そして、位置算出回路303は、印刷後のナビゲーションセンサ71aの位置座標(X0+dX0,Y0+dY0)を初期位置(X0,Y0)とし、印刷後のナビゲーションセンサ71aの位置座標と、ハンドヘルドプリンタの傾斜角θと、距離Lと、数式1を用いて算出された回転角dθとを数式3に代入することにより、Xm−Ym平面における印刷後のナビゲーションセンサ71bの位置座標(X1,Y1)を算出することができる。なお、数式3では、印刷後のナビゲーションセンサ71bの位置座標を新たな初期位置として算出する。
これ以降、同様の方法で印刷後のナビゲーションセンサ71a,71bの位置座標を算出することができる。
図13は、ハンドヘルドプリンタ10の記録ヘッドユニットおよびナビゲーションセンサの一実施形態を示す概略図である。以下、図13を参照して、ナビゲーションセンサ71a,71bの取付位置の延長線上にあるノズル70の位置座標の算出方法について説明する。
ハンドヘルドプリンタ10には、ナビゲーションセンサ71a,71bが取り付けられる。ナビゲーションセンサ71a,71bは、図13に示すように、等間隔で設置される複数のノズル70の長手方向に取り付けられる。
距離aは、ナビゲーションセンサ71aの中心から記録ヘッド72の上端までの距離を示す。距離bは、ナビゲーションセンサ71bの中心から記録ヘッド72の下端までの距離を示す。距離cは、ナビゲーションセンサ71aとナビゲーションセンサ71bとの距離を示す。距離dは、記録ヘッド72の両端から当該端部に最も近いノズル70までの距離を示す。距離eは、各ノズル70間の距離を示す。これらの距離a〜eは、予め決められた距離である。θは、Xm−Ym平面におけるYm軸に対する、印刷前のハンドヘルドプリンタの傾斜角を示す。
ノズル位置算出部は、ナビゲーションセンサ71aの位置座標(X0,Y0)を数式4に代入することにより、ノズル70の位置座標(NZLN_X,NZLN_Y)を算出することができる。
ここで、Nはノズル70の識別番号であり、ナビゲーションセンサ71aの側から順に割り当てられる。
これまで本発明の実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、上述した実施形態の構成要素を変更若しくは削除し、または上述した実施形態の構成要素に他の構成要素を追加するなど、当業者が想到することができる範囲内で変更することができる。いずれの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。