【解決手段】本体モジュール43は、OSのDLLに、CSVデータベースの文字コードをユニコードに変換させ、ユニコードのCSVデータのファイルパスを取得する。本体モジュール43は、取得したファイルパス、モデル名、及びデータベース名をライブラリ45に受け渡す(S32)。ライブラリ45は、モデル名に対応するローカルコード種別及び配置位置を、変換対応テーブルにおいて特定する(S33)。ライブラリ45は、ファイルパスが示すCSVデータベースのユニコードを、特定したローカルコード種別が示す文字コードに変換し(S34)、変換したCSVデータベースを、特定した配置位置に基づいてPD3形式のデータベースに変換し(S35)、変換したPD3形式のデータベースを特定形式のデータベースに変換する(S36)。
前記第2出力処理で出力された前記第2データを受け取り、前記第1プログラムを介して前記プリンタに出力する第3プログラムをさらに備える請求項1から4のいずれかに記載のプログラム群。
【発明を実施するための形態】
【0009】
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は開示例にすぎず、本発明の要旨を変更しない範囲で適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。或いは、後述の各処理は、本発明の要旨を変更しない範囲で、適宜省略或いは変更することができる。
【0010】
本実施形態では、
図1に示される情報処理装置10に実装されるアプリケーション37を説明する。情報処理装置10は、携帯端末やタブレットやパーソナルコンピュータなどである。以下では、情報処理装置10が携帯端末である例を説明する。すなわち、携帯端末に実装されるアプリケーション37を説明する。
【0011】
アプリケーション37は、プリンタ11に送信される印刷データを生成するプログラムである。プリンタ11は、例えば、ラベルに印刷を行うラベルプリンタである。ただし、プリンタ11は、ラベルプリンタに限られない。
【0012】
アプリケーション37は、画像データを変換して印刷データを生成する機能に加え、表作成プログラムが作成した表を変換して、プリンタ11に入力可能なデータを生成する機能を有する。以下、詳しく説明する。
【0013】
プリンタ11は、
図2(A)に示されるように、コントローラ51と、印刷エンジン52と、通信インタフェース53と、を備える。印刷エンジン52は、ラベルなどのシートを搬送する搬送機構と、搬送するシートに画像を印刷するヘッドと、を有する。ヘッドは、例えば、サーマルヘッドである。但し、ヘッドは、インク滴を吐出するインクジェット記録方式のヘッドなどであってもよい。通信インタフェース53は、USBケーブルやLANケーブルなどを用いて情報処理装置10と接続されてもよいし、情報処理装置10と無線接続されてもよい。プリンタ11は、通信インタフェース53を通じて情報処理装置10と通信を行う。
【0014】
コントローラ51は、中央演算装置であるCPU61と、メモリ62と、バス63と、を備える。コントローラ51は、例えば、パターン回路基板と、パターン回路基板に実装されたマイクロコンピュータや種々のICやコンデンサやダイオードなどの種々の電子部品によって実現される。
【0015】
CPU61、メモリ62、印刷エンジン52、通信インタフェース53は、バス63に接続されている。すなわち、CPU61は、メモリ62、印刷エンジン52、及び通信インタフェース53と、バス63を介して接続されている。
【0016】
CPU61は、後述のOS66と制御プログラム67とを疑似的に並行して実行する。すなわち、OS66及び制御プログラム67は、いわゆるマルチタスク処理によって実行される。
【0017】
メモリ62は、例えば、ROMやRAMやEEPROMやHDDやCPU61が備えるバッファ等である。メモリ62は、OS66及び制御プログラム67を記憶するプログラム記憶領域64と、情報やデータを記憶するデータ記憶領域65と、を有する。OS66は、オペレーティングシステムである。
【0018】
制御プログラム67は、通信インタフェース53を通じて入力した印刷データを印刷エンジン52に入力して印刷エンジン52に印刷を実行させる機能を有する。また、制御プログラム67は、入力したデータベース(
図2(C))を用いて、
図2(D)に示されるラベルのテンプレートデータに、当該データベースの各レコードを順に印刷エンジン52に印刷させる機能を有する。
【0019】
詳しく説明すると、メモリ62のデータ記憶領域65は、「TEXT1」の印刷領域を示す領域データと、「TEXT2」の印刷領域を示す領域データと、「TEXT3」の印刷領域を示す領域データと、を含むラベルのテンプレートデータを記憶する。当該テンプレートデータは、データ記憶領域65に予めデフォルトとして記憶されていてもよいし。後述のアプリケーション37やその他のプログラムによって生成されて、プリンタ11に入力されてもよい。プリンタ11に入力されるデータベースは、複数のレコードと、複数の項目とを有する。複数の項目は、「番号」、「TEXT1」、「TEXT2」、「TEXT3」である。レコードは、各項目に対応する入力フィールドに入力された種々の文字を有する。番号「1」を有するレコードの各項目に対応する各入力フィールドには、「1階」、「空調」、「200V」の文字がそれぞれ入力されている。
【0020】
制御プログラム67は、例えば、番号「1」で特定されるレコードをデータベースから読み出す。そして、制御プログラム67は、読み出したレコードの項目「TEXT1」、「TEXT2」、及び「TEXT3」にそれぞれ登録された「1階」、「空調」、及び「200V」の文字を、
図2(D)に示される「TEXT1」、「TEXT2」、及び「TEXT3」の印刷領域にそれぞれ配置して、印刷エンジン52に入力するデータを生成する。そして、制御プログラム67は、生成したデータを印刷エンジン52に入力し、印刷エンジン52に、ラベルへの印刷を実行させる。制御プログラム67は、例えば、番号の順にレコードを読み出してデータを生成し、或いは、ユーザの指定を受け付け、ユーザが指定した番号のレコードをデータベースから読み出して、データを生成する。
【0021】
プリンタ11のユーザは、例えば、建物の電気設備の施工或いは保守を行う者である。ユーザは、例えば、建物に使用される電気ケーブルに貼着されるラベルを、プリンタ11を用いて作製する。ユーザは、後述の情報処理装置10のアプリケーション37を用いて一のデータベースをプリンタ11に入力し、一の建物に使用するラベルを作製する。そして、ユーザは、アプリケーション37を用いて他のデータベースをプリンタ11に入力し、他の建物に使用するラベルを作製する。
【0022】
図1(A)に示されるように、情報処理装置10は、コントローラ21と、タッチパネル22と、通信インタフェース23と、を備える。通信インタフェース23は、例えばWi−Fi(登録商標)やBluetooth(登録商標)の通信規格を用いて、或いは、NFCなどの近接無線通信の通信規格を用いて、プリンタ11と通信を行う。
【0023】
タッチパネル22は、文字や図形などを表示する表示パネル24と、表示パネル24に重畳された透明な膜状のタッチセンサ25と、を有する。タッチセンサ25は、ユーザがタッチした表示パネル24における位置を示す位置情報を出力する。位置情報は、例えば、表示パネル24の左上端を原点とし、右向きをx軸の正の向き、下向きをy軸の正の向きとしたx−y平面上の座標(x,y)として表現できる。後述のUIモジュール41は、表示パネル24に表示されたアイコン等を示す位置情報がタッチセンサ25から入力されたことに応じて、当該アイコン等がユーザによって選択されたと判断する。ユーザは、アイコン等をタッチすることにより、文字や数値をUIモジュール41に入力する。なお、情報処理装置10は、タッチセンサ25に代えて、或いはタッチセンサ25とともに、マイクロフォンを有していてもよい。マイクロフォンは、ユーザの声を音声信号に変換してコントローラ21に入力する。情報処理装置10がパーソナルコンピュータである場合、タッチセンサ25に代えて、マウスやキーボードが情報処理装置10に接続される。
【0024】
コントローラ21は、中央演算処理装置であるCPU31と、メモリ32と、バス33と、を備える。CPU31は、コンピュータの一例である。コントローラ21の構成は、プリンタ11のコントローラ51の構成と概ね同じである。
【0025】
CPU31は、OS36、後述のアプリケーション37のUIモジュール41、本体モジュール43、コモンモジュール44、及びライブラリ45を疑似的に並行して実行する。すなわち、OS36、UIモジュール41、本体モジュール43、コモンモジュール44、及びライブラリ45は、いわゆるマルチタスク処理によって実行される。本体モジュール43は、第1プログラムの一例である。ライブラリ45は、第2プログラムの一例である。
【0026】
メモリ32の構成は、プリンタ11のメモリ62の構成と概ね同じである。メモリ32は、OS36及びアプリケーション37を記憶するプログラム記憶領域34と、情報やデータを記憶するデータ記憶領域35と、を有する。
【0027】
OS36は、例えば、Android(登録商標)OSや、iOS(登録商標)や、WindowsPhone(登録商標)や、BlackBerryOS(登録商標)などである。
【0028】
OS36は、アプリケーション37によって呼び出される第2API(Application Programming Interfaceの略)38を有するDLL(dynamic link libraryの略)及び第4API39を有するDLLを備える。第2API38は、ローカルな文字コードをユニコードに変換する機能を有する。第4API39は、通信インタフェース23を通じてプリンタ11にデータを送信する機能を有する。詳しくは後述する。第2API38は、APIの一例である。
【0029】
アプリケーション37は、
図1(B)に示されるように、UI(User Innterfaceの略)モジュール41と、本体プログラム42と、を備える。すなわち、アプリケーション37は、ユーザの入力を受け付けるUIモジュール41と、印刷データや、プリンタ11に入力するデータベースのデータを生成する本体プログラム42と、を備える。
【0030】
UIモジュール41は、アプリケーション37の開発者によって設計される。アプリケーション37の開発者は、AndroidOSや、iOSなど、OS36の種類に応じてUIモジュール41を設計する。UIモジュール41は、OS36が記述されたプログラム言語と同一のプログラム言語によって記述される。
【0031】
本体プログラム42は、例えば、プリンタ11のベンダによって、アプリケーション37の開発者に提供される。すなわち、本体プログラム42は、いわゆるSDK(Software Development Kitの略)である。アプリケーション37の開発者は、プリンタ11のベンダが提供した本体プログラム42と、設計したUIモジュール41とをまとめて、アプリケーション37を開発する。
【0032】
本体プログラム42は、本体モジュール43と、コモンモジュール44と、ライブラリ45と、を備える。コモンモジュール44は、第3プログラムの一例である。
【0033】
本体モジュール43は、OS36を介してUIモジュール41によって呼び出される第3API46を有する。第3API46は、UIモジュール41からデータベースのファイルパス及びデータベースの名称(以下、データベース名と記載する)の取得に用いられる。詳しくは後述する。
【0034】
コモンモジュール44は、画像データを印刷データに変換するモジュールである。ライブラリ45は、データベースのデータの形態を、プリンタ11に入力可能な形態のデータに変換するモジュールである。また、コモンモジュール44は、ライブラリ45にデータの変換を指示するモジュールでもある。
【0035】
ライブラリ45及びコモンモジュール44は、C++のプログラム言語で記述されている。したがって、C++で記述されたプログラムと情報やデータを受け渡し可能なプログラムであれば、ライブラリ45に情報やデータを受け渡してライブラリ45を利用することができる。すなわち、C++で記述されたコモンモジュール44は、ライブラリ45を利用することができる。なお、C++で記述されたプログラムと情報やデータを受け渡し可能なプログラムとは、Objective−Cで記述されたプログラムや、JNI(Java Native Interfaceの略)(Javaは登録商標)などのラッパを備えたプログラムである。C++は、特定言語の一例である。Objective−CやJava(登録商標)は、OSの言語の一例である。
【0036】
コモンモジュール44は、本体モジュール43によって呼び出される第5API49を有している。第5API49は、コモンモジュール44が、データベース名、ファイルパス(以下、第1ファイルパスと記載)、及びモデル名を本体モジュール43から取得するために用いられる。詳しくは後述する。
【0037】
ライブラリ45は、コモンモジュール44によって呼び出される第1API47、及び変換対応テーブル48を有する。第1API47は、ライブラリ45がデータベース名、第1ファイルパス、及びモデル名をコモンモジュール44から取得するために用いられる。変換対応テーブル48は、
図2(B)に示されるように、モデル名と、ローカルコード種別と、配置種別との対応を示すテーブルである。ライブラリ45は、本体モジュール43から取得したモデル名と対応するローカルコード種別及び配置種別を変換対応テーブル48において特定し、特定したローカルコード種別及び配置種別を用いて、プリンタ11に入力可能なデータベースのデータを生成する。詳しくは後述する。変換対応テーブル48は、対応テーブルの一例である。モデル名は、種別情報及び形式情報の一例である。ローカルコード種別は、コード種別の一例である。
【0038】
以下、
図3、
図4、及び
図5を参照して、ライブラリ45が、プリンタ11に入力可能な形態のデータベースを生成する処理について説明する。
【0039】
本明細書では、基本的に、アプリケーション37に記述された命令に従ったCPU31の処理を説明する。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」、「設定」等の処理は、CPU31の処理を表している。CPU31による処理は、OS36などのコントローラを介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU31が要求することなくデータを受信するという処理も、「CPU31がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【0040】
また、プログラムに記述された命令に従ったCPU31の処理を、省略した文言で記載することがある。例えば、「CPU31が行う」「本体モジュール43が行う」「コモンモジュール44が行う」「ライブラリ45が行う」のように記載することがある。
【0041】
また、CPU31による、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPU31による、情報Aが事柄Bであることを示しているか、事柄Cであるかを示しているかを判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
【0042】
また、本明細書中の「データ」と「情報」とは、コンピュータによって取り扱い可能なビット或いはビット列である点において共通する。「データ」とは、各ビットが示す意味内容をコンピュータが考慮することなく取り扱えるものを指す。これに対して、「情報」とは、各ビットが示す意味内容によってコンピュータの動作が分岐するものを指す。さらに、「指示」は、送信先の装置に対して次の動作を促すための制御信号であって、情報を含んでいることもあるし、それ自体が情報としての性質を有していることもある。
【0043】
上記の「データ」及び「情報」の区別は厳密なものではなく、例外的な取り扱いも許容される。例えば、データが一時的に情報として扱われてもよいし、情報が一時的にデータとして扱われてもよい。また、ある装置ではデータとして扱われるものが、他の装置では情報として扱われてもよい。さらには、データの中から情報が取り出されてもよいし、情報の中からデータが取り出されてもよい。
【0044】
また、本明細書中の「に応じて」は、当該文字列の前に記載された条件が満たされた場合に、当該文字列の後に記載された処理が実行されることを示す。なお、処理が実行されるタイミングは、条件が満たされた後であればよく、当該条件が満たされた直後である必要は必ずしもない。
【0045】
アプリケーション37は、例えば、データベースを作成した表作成プログラムからの指示により、OS36によって起動される。或いは、アプリケーション37は、タッチセンサ25から入力されたユーザの起動指示により起動される。
【0046】
起動されたアプリケーション37の本体モジュール43は、例えば、OS36が通信可能なプリンタ11の名称及びモデル名の一覧の返信を要求するコマンドをOS36に入力し、プリンタ11の名称及びモデル名の一覧をOS36から取得する(S11)。そして、本体モジュール43は、取得したプリンタ11の名称及びモデル名の一覧をタッチパネル22にOS36を介して出力する(S12)。タッチパネル22は、プリンタ11の名称及びモデル名の一覧を有する入力画面(不図示)を表示する(S13)。当該入力画面は、プリンタ11の名称及びモデル名の一覧の他、データベース名の入力を受け付けるテキストボックスなどを有する。なお、プリンタ11の名称及びモデル名を選択する入力画面と、データベース名を入力する入力画面とは、異なっていてもよい。
【0047】
ユーザは、入力画面において、一のプリンタ11の名称及びモデル名を選択し、また、データベース名を入力する(S14)。アプリケーション37のUIモジュール41は、選択されたプリンタ11の名称及びモデル名と、データベース名とを取得する(S14)。そして、UIモジュール41は、本体モジュール43の第3API46を呼び出し(S15)、選択されたモデル名及びデータベース名を本体モジュール43に受け渡す(S16)。本体モジュール43が、プリンタ名を取得するステップS16の処理は、前記第2データの出力先を示す出力先情報を取得する処理の一例である。プリンタ名は、出力先情報の一例である。本体モジュール43が、プリンタのモデル名を取得するステップS16の処理は、前記種別情報を取得する処理の一例である。
【0048】
本体モジュール43は、OS36にコマンドを入力し、データベースのファイルであるデータベースファイル、或いは当該データベースを示す第1ファイルパスと、コード種別と、を取得する(S17)。コード種別は、データベースに使用されている文字コードの種別を示す。コード種別が示す文字コードは、例えば、JIS、Shift−JIS、ASCII、EBCDIC、ユニコード、EUC等の任意の文字コードである。なお、データベースの第1ファイルパス或いはデータベースファイルと、コード種別とは、アプリケーション37の起動時において、OS36から本体モジュール43に受け渡されてもよい。以下では、本体モジュール43やコモンモジュール44やライブラリ45が、ファイルパスを用いてデータベースを受け渡す例を説明する。
【0049】
上述の表作成プログラムが作成するデータベースは、例えばCSV(Comma Separated Valueの略)のデータ形式のファイルである。以下では、表作成プログラムが、CSVのデータ形式のファイルとして生成したデータベースを、CSVデータベースファイルと記載して説明する。JIS、Shift−JIS、ASCII、EBCDIC、ユニコード、EUCは、文字コードの一例である。CSV形式のデータベースファイルは、第1形式の元データの一例である。本体モジュール43が、データベースファイル或いは第1ファイルパスを取得するステップS17の処理は、第1取得処理の一例である。
【0050】
本体モジュール43は、ステップS17で取得したコード種別に応じたAPIであって、OS36が提供する第2API38を呼び出し、ステップS17で取得した第1ファイルパスを第2API38を通じてOS36が提供するDLLに受け渡す。すなわち、本体モジュール43は、第1ファイルパスが示すCSVデータベースの文字コードをユニコードに変換することを、OS36が提供するDLLに指示する(S18)。当該DLLは、第1ファイルパスが示すデータベースの文字コードをユニコードに変換する。当該DLLは、ユニコードに変換したCSVデータベースであるユニコードCSVデータベースのファイルパス(以下、第2ファイルパスと記載)を本体モジュール43に受け渡す。ユニコードは、第1特定コードの一例である。ユニコードCSVデータベースは、第1データの一例である。なお、本体モジュール43がステップS17において取得した第1ファイルパスが示すCSVデータベースファイルがユニコードで記述されている場合、ステップS18の処理は省略される。
【0051】
本体モジュール43は、OS36が提供する上記DLLから第2ファイルパスを取得する(S19)。本体モジュール43が第2ファイルパスを取得するステップS19の処理は、第2取得処理の一例である。
【0052】
本体モジュール43、コモンモジュール44、及びライブラリ45は、ステップS16で取得したモデル名及びデータベース名と、ステップS19で取得した第2ファイルパスに基づいて、プリンタ11に入力可能なデータベースのデータを生成する特定形式のデータ生成処理を実行する(S20)。
図4及び
図5を参照して、特定形式のデータ生成処理について詳しく説明する。
【0053】
図4に示されるように、本体モジュール43は、コモンモジュール44の第5API49を呼び出し(S31)、取得したモデル名、データベース名、及び第2ファイルパスをコモンモジュール44に受け渡す(S32)。
【0054】
コモンモジュール44は、第5API49の引数として、モデル名、データベース名、及び第2ファイルパスを取得する(S32)。コモンモジュール44は、ライブラリ45の第1API47を呼び出し(S33)、取得したモデル名、データベース名、及び第2ファイルパスをライブラリ45に受け渡す(S34)。本体モジュール43が、取得した第2ファイルパスをコモンモジュール44に出力して、第2ファイルパスをライブラリ45に取得させるステップS32、S34の処理は、第1出力処理の一例である。本体モジュール43が、取得したモデル名をコモンモジュール44に出力して、モデル名をライブラリ45に出力する処理は、前記形式情報を前記第2プログラムに出力する処理、及び、取得した前記種別情報を前記第2プログラムに取得させる処理の一例である。
【0055】
ライブラリ45は、第1API47の引数として、モデル名、データベース名、及び第2ファイルパスを取得する(S34)。ライブラリ45が第2ファイルパスを取得するステップS34の処理は、第3取得処理の一例である。
【0056】
ライブラリ45は、取得したモデル名と、上述の変換対応テーブル48(
図2(B))とに基づいて、ローカルコード種別と、配置種別とを特定する(S35)。ローカルコード種別とは、特定のモデルのプリンタが解釈可能な文字コードの種別であり、モデル毎に異なるローカルコード種別が用意されている。以下では、ローカルコード種別が示す文字コードをローカルコードと記載して説明する。
【0057】
ライブラリ45は、取得した第2ファイルパスが示すユニコードCSVデータベースを、特定したローカルコード種別が示す文字コードで記述されたデータベースである特定コードデータベースに変換する(S36)。ローカルコードは、第2特定コードの一例である。ライブラリ45が、ローカルコードを特定するステップS35の処理は、特定処理の一例である。ライブラリ45がローカルコード種別を決定するステップS33の処理は、前記形式情報が示すデータ形式に決定する処理の一例である。
【0058】
次に、ライブラリ45は、ステップS35で特定した配置種別と、配置テーブル(
図5(C))とに基づいて、PD3のデータ形式のデータベースを生成する(S37)。PD3のデータ形式は、CSVデータベースに対応するバイナリデータである基本データの他、プリンタ11に双方向通信を指示するコマンドをヘッダに有するデータ形式である。双方向通信とは、例えば、プリンタ11の制御プログラム67が、データの一部の受信を完了したことに応じて、データの残りの一部の送信を情報処理装置10に要求し、情報処理装置10がプリンタ11に送信するデータを、プリンタ11に順次送信する場合などに用いられる。
【0059】
ライブラリ45が、PD3形式のデータベースを生成するステップS37の処理について、
図5を参照して詳しく説明する。PD3形式のデータは、CSVデータベースである基本データや、ローカルコードの名称や、ローカルコードで記述されたデータベース名や、インデックスデータなどを有する。以下では、基本データや、ローカルコードの名称や、データベース名や、インデックスデータを、部分データと記載して説明する。
【0060】
PD3形式のデータは、
図5(A)に示されるように、部分データを、第1配置位置から順に配置して生成される。図における第1配置位置や、第2配置位置や、第3配置位置や、第4配置位置などの配置位置に配置される部分データの種類は、プリンタ11のモデル名ごとに相違する。各配置位置に配置される部分データの種類は、
図5(C)に示される配置テーブルによって決定される。
【0061】
配置テーブルは、配置種別と、各配置位置と、部分データの種別との対応を示すテーブルである。図示例では、配置種別「k011」と、第1配置位置「ローカルコードの名称」と、第2配置位置「データベース名」と、第3配置位置「基本データ」と、第4配置位置「インデックスデータ」とが対応付けられている。
【0062】
ライブラリ45は、ローカルコードデータベースに含まれる基本データ及びデータベース名や、特定したローカルコードの名称や、生成したインデックスデータを、配置テーブルが示す配置位置で配置し、PD3形式のデータベースを生成する。
図5(B)は、特定した配置種別が「k011」である場合に生成されるPD3形式のデータベースを示す。
【0063】
ライブラリ45は、
図4に示されるように、ステップS35で生成したPD3形式のデータベースに基づいて、特定形式のデータベースを生成する(S38)。特定形式は、
図5(D)に示されるように、PD3形式のデータベースを含むデータ形式である。特定形式のデータベースは、PD3形式のデータベースに加え、プリンタ11に片方向通信でデータを入力する指示を示すコマンドをヘッダに有する。すなわち、ライブラリ45は、双方向通信でプリンタ11に入力する形式のPD3データではなく、片方向通信でプリンタ11にデータを入力する形式の特定形式のデータを生成する。片方向通信は、例えば、情報処理装置10が、プリンタ11に送信すべきデータを、プリンタ11に対して確認を行わずに実行する通信である。
【0064】
ライブラリ45がPD3形式のデータベース(バイナリデータ)を生成するステップS37の処理、或いは、ライブラリ45が特定形式のデータベース(バイナリデータ)を生成するステップS38の処理は、生成処理の一例である。PD3形式のデータベース(バイナリデータ)或いは特定形式のデータベース(バイナリデータ)は、第2データの一例である。
【0065】
ステップS34からS38までの処理について、さらに具体的に説明する。コモンモジュール44は、ライブラリ45が有する第1サブAPIを呼び出し、取得したモデル名をライブラリ45に受け渡す。ライブラリ45は、受け渡されたモデル名から、第2サブAPIを生成する。
【0066】
第2サブAPIは、第1クラス、第2クラス、及び第3クラスを示すAPIである。第1クラスは、ユニコードのCSVデータベース及びデータベース名を、ローカルコードのCSVデータベース及びデータベース名に変換するクラスである。第2クラスは、上述の配置テーブルに基づいて配置位置を決定し、決定した配置位置で上述の部分データを配置してPD3形式のデータベースを生成するクラスである。第3クラスは、PD3形式のデータベースを特定形式のデータベースに変換するクラスである。ライブラリ45は、ローカルコード種別の数に応じた数の第1クラスと、一の第2クラスと、一の第3クラスとを予め有する。ライブラリ45は、受け渡されたモデル名に基づいて特定した第1クラスと、第2クラス及び第3クラスを示す第2サブAPIをコモンモジュール44に受け渡す。
【0067】
コモンモジュール44は、受け渡された第2サブAPIに、取得したデータベース名及び第2ファイルパスを入力し、インスタンスを生成する。生成されたインスタンスは、ユニコードのCSVデータベース及びデータベース名を、ローカルコードのCSVデータベース及びデータベース名に変換し、部分データを、モデル名で特定される配置位置に配置してPD3形式のデータベースを生成し、生成したPD3形式のデータベースを特定形式のデータベースに変換する処理を示す。コモンモジュール44は、生成したインスタンスをライブラリ45に受け渡す(S34)。
【0068】
ライブラリ45は、コモンモジュール44から受け渡されたインスタンスを処理し(S34〜S38)、特定形式のデータベースを生成する(S38)。ライブラリ45は、自己が有する第2サブAPIが示すクラスから生成したインスタンスを処理するので、コモンモジュール44から受け渡されたインスタンスを確実に処理して特定形式のデータベースを生成することができる。
【0069】
なお、第1サブAPI、第2サブAPI、第1クラス、第2クラス、及び第3クラスに基づいて上述のステップS34からS38の処理が実行される例を説明したが、他の構成によってステップS34からS38の処理が実行されてもよい。
【0070】
ライブラリ45は、
図4に示されるように、生成した特定形式のデータベースを示すファイルパスである第3ファイルパスを、第1API47の戻り値としてコモンモジュール44に受け渡し(S39)、特定形式のデータ生成処理を終了する。コモンモジュール44は、第3ファイルパスをライブラリ45から取得し(S39)、取得した第3ファイルパスを、第5API49の戻り値として本体モジュール43に受け渡し(S40)、特定形式のデータ生成処理を終了する。本体モジュール43は、第3ファイルパスをコモンモジュール44から取得し(S40)、特定形式のデータ生成処理を終了する。ライブラリ45が、特定形式のデータをコモンモジュール44に出力するステップS39の処理は、第2出力処理の一例である。
【0071】
本体モジュール43は、
図3に示されるように、特定形式のデータ生成処理(S20)の終了後、OS36が提供するDLLの第4API39(
図1)を呼び出し(S21)、第3ファイルパスを第4API39に受け渡し、第3ファイルパスが示す特定形式のデータベースをプリンタ11に送信することをOS36が提供するDLLに指示する。当該DLLは、受け渡された第3ファイルパスが示す特定形式のデータベースを、通信インタフェース23を通じて片方向通信でプリンタ11に送信する(S22)。
【0072】
プリンタ11に実装された制御プログラム67は、特定形式のデータベースを通信インタフェース53を通じて受信する(S22)。制御プログラム67は、受信した特定形式のデータベースを、プリンタ11のメモリ62に記憶させて登録する(S23)。制御プログラム67は、登録されたデータベースに基づいて、印刷処理を実行する(S24)。例えば、制御プログラム67は、データベース(
図2(C))の番号「1」の印刷の指示を受け付けたことに応じて、データベースから「1階」、「空調」、及び「200V」を読み出し、読み出した「1階」、「空調」、及び「200V」を、上述の印刷領域データが示す「TEXT1」、「TEXT2」、及び「TEXT3」にそれぞれ配置して、印刷エンジン52に入力するデータを生成する。そして、制御プログラム67は、生成したデータを印刷エンジン52に入力し、印刷エンジン52に対して、ラベルに画像を印刷させる。
【0073】
次に、アプリケーション37が、入力された画像データを変換して印刷データを生成し、生成した印刷データをプリンタ11に入力してプリンタ11に印刷を実行させる処理について、
図6を参照して説明する。すなわち、アプリケーション37は、データベースをプリンタ11に入力することができ、かつ、入力された画像データから印刷データを生成してプリンタ11に入力することができるプログラムである。
【0074】
アプリケーション37は、例えば、画像データを作成したプログラムからの指示により、OS36によって起動される。或いは、アプリケーション37は、ユーザの起動指示により起動される。起動されたアプリケーション37の本体モジュール43は、上述のステップS11からS15までの処理を実行し、プリンタ11のモデル名を取得する(S41)。また、本体モジュール43は、OS36から、画像データのファイルパスを取得する(S42)。
【0075】
本体モジュール43は、コモンモジュール44が有する不図示のAPIを呼び出し(S43)、取得したモデル名及び画像データのファイルパスをコモンモジュール44に受け渡す(S44)。
【0076】
コモンモジュール44は、本体モジュール43からモデル名及びファイルパスを取得する(S44)。コモンモジュール44は、取得したモデル名と、取得したファイルパスが示す画像データに基づいて、印刷データを生成する(S45)。コモンモジュール44は、例えば周知の技術を用いて印刷データを生成する。コモンモジュール44は、生成した印刷データのファイルパスを、上述のAPIの戻り値として本体モジュール43に受け渡す(S46)。
【0077】
本体モジュール43は、OS36が提供するDLLの第4API39を呼び出し(S47)、印刷データのファイルパスを当該DLLに受け渡す。当該DLLは、ファイルパスが示す印刷データを、通信インタフェース23を通じてプリンタ11に送信する(S48)。
【0078】
プリンタ11に実装された制御プログラム67は、通信インタフェース53を通じて印刷データを受信する(S48)。制御プログラム67は、受信した印刷データを印刷エンジン52に入力し、印刷データが示す画像をラベルに印刷させる(S49)。
【0079】
[実施形態の作用効果]
本体モジュール43は、取得したCSVデータベースの文字コードをユニコードに変換したユニコードCSVデータベースのファイルパスである第1ファイルパスを取得し(S19)、取得した第1ファイルパスを、コモンモジュール44を介してライブラリ45に受け渡す。すなわち、ライブラリ45は、種々の文字コードで記述されたCSVデータベースではなく、ユニコードで記述されたCSVデータベースを取得する。そして、ライブラリ45は、CSVデータベースのユニコードを、プリンタ11のモデル名に応じた文字コードであるローカルコードに変換して、PD3形式のデータベースや特定形式のデータベースを生成する(S37、S38)。したがって、ライブラリ56は、種々の文字コードで記述されたCSVデータベースを取得する場合に比べ、PD3形式のデータベースや特定形式のデータベースを容易に生成することができる。その結果、本体モジュール43及びライブラリ45は、プリンタの種別に応じた種別の第2データを容易に生成することができる。
【0080】
また、ライブラリ45は、C++のプログラム言語で記述されている。したがって、C++で記述されたプログラムと情報やデータを受け渡し可能なプログラムであれば、ライブラリ45に情報やデータを受け渡してライブラリ45を利用することができる。
【0081】
アプリケーション37は、ライブラリ45に加え、コモンモジュール44を備える。したがって、アプリケーション37は、プリンタ11に入力可能な特定形式のデータベースを生成することもできるし、画像データから印刷データを生成することもできる。
【0082】
[その他の変形例]
上述の実施形態では、本体モジュール43が、ライブラリ45が生成した特定形式のデータベース(バイナリデータ)をOS36を介してプリンタ11に送信する例を説明した。しかしながら、本体モジュール43は、ライブラリ45が生成した特定形式のデータベース(バイナリデータ)をバイナリデータのまま、或いはファイル形式にして、メモリ32のデータ記憶領域35に記憶させてもよい。また、本体モジュール43は、ライブラリ45が生成した特定形式のデータベース(バイナリデータ)を、バイナリデータのまま、或いはファイル形式にして、プリンタ11以外の装置に送信してもよい。
【0083】
上述の実施形態では、OS36が提供するDLLに、表作成プログラムが作成したCSVデータベースの文字コードをユニコードのCSVデータベースに変換させる例を説明した。しかしながら、アプリケーション37は、表作成プログラムが作成したCSVデータベースの文字コードをユニコードのCSVデータベースに変換するモジュールをさらに備えていてもよい。
【0084】
上述の実施形態では、ライブラリ45が、特定形式のデータベースを生成し、生成した特定形式のデータベースをコモンモジュール44に受け渡す例を説明した。しかしながら、ライブラリ45は、PD3形式のデータベースを生成し(S37)、生成したPD3形式のデータベースをコモンモジュール44に受け渡してもよい。
【0085】
上述の実施形態では、アプリケーション37に入力されるデータベースが、CSVデータベースである例を説明した。しかしながら、アプリケーション37に入力されるデータベースは、CSVデータベースに限定されない。
【0086】
上述の実施形態では、部分データの例として、「ローカルコードの名称」、「データベース名」、「基本データ」、「インデックスデータ」を説明した。しかしながら、部分データは、例示したデータ以外のデータであってもよい。
【0087】
上述の実施形態では、印刷データを生成するコモンモジュール44が、データベースのデータ形式の変換をライブラリ45に指示する例を説明した。しかしながら、本体モジュール43が、データベースのデータ形式の変換をライブラリ45に直接指示してもよいし、データベースのデータ形式の変換をコモンモジュール44以外のモジュールを介してライブラリ45に指示してもよい。
【0088】
上述の実施形態では、変換前のCSVデータベースファイルを示す第1ファイルパスと、変換後のユニコードCSVデータベースを示す第2ファイルパスとが相違する例を説明した。同様に、第2ファイルパスと第3ファイルパスとが相違する例を説明した。しかしながら、第1ファイルパスと第2ファイルパスとが同一のファイルパスであってもよいし、第2ファイルパスと第3ファイルパスとが同一のファイルパスであってもよい。すなわち、変換前のデータを示すファイルパスと、変換後のデータを示すファイルパスとは、同一であってもよい。