(57)【要約】【課題】通信時に異常が生じても、正常に動作を終了させることができるプログラムを提供する。【解決手段】プログラムは、ユーザの入力を受け付けるＵＩモジュール６１と、プリンタ１１との通信を行う通信モジュール６２とを備える。ＵＩモジュール６１は、プログラムが起動すると起動する（Ｓ１２）。起動したＵＩモジュール６１は、通信モジュール６２をテンポラリフォルダに記憶することをＯＳ４６に指示する（Ｓ１６）。また、ＵＩモジュール６１は、通信モジュール６２を起動させて通信モジュール６２にプリンタ１１と通信を行うことをＯＳ４６に対して指示する（Ｓ２３）。また、ＵＩモジュール６１は、終了指示を受け付けると、通信モジュール６２をテンポラリフォルダから消去することをＯＳ４６に指示し、動作を終了する。異常が生じた通信モジュール６２は、ＯＳ４６によって、テンポラリフォルダから消去される。【選択図】図２
2019128686.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークインタフェース、ユーザインタフェース、メモリ、ディスプレイ、及びコンピュータを備える情報処理装置の前記コンピュータによって実行されるプログラムであって、
該プログラムは、
前記ユーザインタフェースを通じた入力を受け付ける受付手段として前記コンピュータを機能させる第１プログラムと、
前記ネットワークインタフェースを通じて外部装置と通信を行う通信手段として前記コンピュータを機能させる第２プログラムと、を備えており、
前記第１プログラムは、
前記プログラムが起動されたことに応じて、前記第２プログラムを前記メモリの一時記憶領域に記憶させる記憶手段と、
前記受付手段で前記入力を受け付けたことに応じて、前記第２プログラムに前記外部装置との通信を行って第１データを取得することを指示する第１指示データを前記第２プログラムに入力する第１指示手段と、
前記第１指示手段で前記第１指示データを入力された前記第２プログラムが前記外部装置と通信を実行して前記外部装置から受信した前記第１データを取得する第１取得手段と、
前記第１取得手段で取得した前記第１データを前記ディスプレイに表示させる表示手段と、
前記第１プログラムの終了指示を受け付けたことに応じて、前記第２プログラムを前記メモリの前記一時記憶領域から消去するための指示を行う消去手段と、
前記消去手段が指示を行った後、前記第１プログラムの動作を終了する第１終了手段として前記コンピュータを機能させ、
前記第２プログラムは、
前記第１指示データを入力されたことに応じて、前記外部装置に前記第１データを返信することを指示する第１返信命令を前記外部装置に送信し、前記外部装置が返信した前記第１データを受信する前記通信手段と、
前記通信手段で受信した前記第１データを前記第１指示データの入力元に受け渡す受渡手段として前記コンピュータを機能させるプログラム。
【請求項２】
上記第１プログラムは、複数起動が可能であって、
上記第１プログラムは、
起動されたことに応じて、前記第２プログラムに対して、起動された他の第１プログラムにおける前記消去手段で消去することを制限するロック手段と、
前記受付手段で起動終了を示す入力を受け付けたことに応じて、前記ロック手段を解除するロック解除手段として前記コンピュータを機能させる請求項１に記載のプログラム。
【請求項３】
前記第１プログラムは、
前記コンピュータによって実行されるＯＳに、前記第１指示データを含む第１起動通信指示を行って、前記ＯＳに前記第２プログラムを起動させ、かつ、前記ＯＳに前記第１指示データを前記第２プログラムに入力させる前記第１指示手段として前記コンピュータを機能させ、
前記第２プログラムは、
前記ＯＳによって起動され、かつ、前記ＯＳから前記第１指示データを入力されたことに応じて実行する前記通信手段と、
前記通信手段で受信した前記第１データを前記ＯＳに受け渡す前記受渡手段と、
前記受渡手段で前記ＯＳに前記第１データを受け渡したことに応じて前記第２プログラムの動作を終了させる第２終了手段として前記コンピュータを機能させ、
前記第１プログラムは、
前記ＯＳから前記第１指示データを取得する前記第１取得手段として前記コンピュータを機能させる請求項１に記載のプログラム。
【請求項４】
前記記憶手段は、
前記第１プログラムが起動されたことに応じて、前記第２プログラムの記憶を前記ＯＳに指示することで、前記メモリの一時記憶領域に前記第２プログラムが記憶されていない場合に、前記一時記憶領域に前記第２プログラムを記憶させ、前記一時記憶領域に前記第２プログラムが記憶されている場合に、前記一時記憶領域に前記第２プログラムを追加記憶させない、請求項３に記載のプログラム。
【請求項５】
前記第１プログラムは、
前記コンピュータによって実行されるＯＳに、起動された前記第２プログラムに対して、起動された他の第１プログラムにおける前記消去手段の実行を制限することを指示する前記ロック手段と、
前記ＯＳに、前記ロック手段の解除を行うことを指示する前記ロック解除手段として前記コンピュータを機能させる請求項２に記載のプログラム。
【請求項６】
前記第１プログラムは、
前記ＯＳに前記第２プログラムを起動させ、かつ、前記ＯＳに対して第２指示データを前記第２プログラムに入力させる第２起動通信指示を前記ＯＳに入力する第２指示手段として前記コンピュータを機能させ、前記第２指示データは、前記外部装置と通信を行って前記外部装置に第２データを記憶させることを前記第２プログラムに指示するデータであり、
前記第２プログラムは、
前記第２指示データを入力されたことに応じて、前記外部装置に前記第２データを記憶させることを指示する記憶命令及び前記第２データを前記外部装置に送信する前記通信手段として前記コンピュータを機能させる請求項３に記載のプログラム。
【請求項７】
前記第１プログラムは、
前記第２データのパスを取得する第２取得手段と、
前記第２取得手段で取得した前記パスと、前記第２起動通信指示とを前記ＯＳに入力する前記第２指示手段として前記コンピュータを機能させ、
前記第２プログラムは、
前記パス及び前記第２指示データを入力されたことに応じて、前記パスが示す前記第２データを取得する第３取得手段と、
前記第３取得手段で取得した前記第２データ、及び前記記憶命令を前記外部装置に送信する前記通信手段として前記コンピュータを機能させる請求項６に記載のプログラム。
【請求項８】
前記第１プログラムは、
前記ＯＳに前記第１起動通信指示を行って、前記ＯＳに前記第２プログラムを起動させ、かつ、前記ＯＳに前記第１指示データを前記第２プログラムに入力させる前記第１指示手段として前記コンピュータを機能させ、前記第１指示データは、前記第１返信命令と、前記外部装置のメモリの総記憶容量を前記外部装置に返信させる第２返信命令と、前記外部装置のメモリの空き記憶容量を前記外部装置に返信させる第３返信命令とを含み、
前記第２プログラムは、
前記第１指示データを入力されたことに応じて、前記第１返信命令を前記外部装置に送信し、前記外部装置が返信した前記第１データを受信する前記通信手段と、
前記第１指示データを入力されたことに応じて、前記第２返信命令を前記外部装置に送信し、前記外部装置が返信した前記総記憶容量を受信する前記通信手段と、
前記第１指示データを入力されたことに応じて、前記第３返信命令を前記外部装置に送信し、前記外部装置が返信した前記空き記憶容量を受信する前記通信手段と、
前記通信手段で受信した前記第１データ、前記総記憶容量、前記空き記憶容量、及び通信の完了を示す完了データを前記ＯＳに受け渡す前記受渡手段として前記コンピュータを機能させる請求項３に記載のプログラム。
【請求項９】
前記外部装置は、画像を形成する画像形成装置であり、
前記第２データは、前記画像形成装置が実行する画像形成に用いられるデータである請求項６に記載のプログラム。
【請求項１０】
前記外部装置は、印刷媒体に画像を印刷するプリンタであり、
前記第２データは、フォントを示すフォントデータである請求項９に記載のプログラム。
【請求項１１】
複数種類の言語データを有しており、
前記第１プログラムは、
言語指定を取得する第４取得手段と、
前記第４取得手段で取得した言語指定で指定される言語を前記言語データから決定する決定手段と、
前記決定手段で決定した前記言語データを用いて前記ディスプレイに表示させる前記表示手段と、として前記コンピュータを機能させる請求項１に記載のプログラム。
【請求項１２】
前記第１プログラムは、
前記第１取得手段で取得した前記第１データを前記決定手段で決定した言語データに変換する変換手段として前記コンピュータを機能させる請求項１１に記載のプログラム。
【請求項１３】
前記プログラムは、前記第１プログラム及び前記第２プログラムを含む実行ファイルであり、前記実行ファイルは、起動指示を受け付けたことに応じて、前記第１プログラムが起動されるファイルである請求項１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザインタフェースを介した入力を受け付け、受け付けた入力に応じて外部装置と通信を行うプログラムに関する。
【背景技術】
【０００２】
プリンタにフォントデータを送信し、送信したフォントデータが示すフォントでプリンタに印刷を実行させるプログラムが知られている（例えば、特許文献１参照）。
【０００３】
特許文献１に記載されたプリンタドライバ（プログラム）は、ユーザの印刷設定の入力を受け付けるＵＩ画面を表示装置に表示させる機能と、プリンタと通信を行う機能とを有している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−５３９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１には、通信を行う機能と、画面表示に関する機能との関係性について、十分に開示されていない。
【課題を解決するための手段】
【０００６】
本明細書では様々な開示を行う。開示例の一例であるプログラムは、ネットワークインタフェース、ユーザインタフェース、メモリ、ディスプレイ、及びコンピュータを備える情報処理装置の前記コンピュータによって実行されるプログラムである。該プログラムは、前記ユーザインタフェースを通じた入力を受け付ける受付手段として前記コンピュータを機能させる第１プログラムと、前記ネットワークインタフェースを通じて外部装置と通信を行う通信手段として前記コンピュータを機能させる第２プログラムと、を備える。前記第１プログラムは、前記プログラムが起動されたことに応じて、前記第２プログラムを前記メモリの一時記憶領域に記憶させる記憶手段と、前記受付手段で前記入力を受け付けたことに応じて、前記第２プログラムに前記外部装置との通信を行って第１データを取得することを指示する第１指示データを前記第２プログラムに入力する第１指示手段と、前記第１指示手段で前記第１指示データを入力された前記第２プログラムが前記外部装置と通信を実行して前記外部装置から受信した前記第１データを取得する第１取得手段と、前記第１取得手段で取得した前記第１データを前記ディスプレイに表示させる表示手段と、前記第１プログラムの終了指示を受け付けたことに応じて、前記第２プログラムを前記メモリの前記一時記憶領域から消去するための指示を行う消去手段と、前記消去手段が指示を行った後、前記第１プログラムの動作を終了する第１終了手段として前記コンピュータを機能させる。前記第２プログラムは、前記第１指示データを入力されたことに応じて、前記外部装置に前記第１データを返信することを指示する第１返信命令を前記外部装置に送信し、前記外部装置が返信した前記第１データを受信する前記通信手段と、前記通信手段で受信した前記第１データを前記指示データの入力元に受け渡す受渡手段として前記コンピュータを機能させる。
【０００７】
上記構成によれば、外部装置との通信プロセスにおいて第２プログラムに異常が生じたとしても、第１プログラムにより、ユーザからの入力を継続して受け付けることができる。また、第１プログラムが終了される際に、異常が生じた第２プログラムがメモリから消去される。したがって、異常が生じた第２プログラムがメモリに残存して情報処理装置に動作不良などの不具合を引き起こすことが防止される。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係るシステム１０の模式的な構成図である。
【図２】本実施形態に係るシステム１０の処理の一部を示す図である。
【図３】本実施形態に係るシステム１０の処理の一部を示す図であって、図２の続きである。
【図４】本実施形態に係るシステム１０の処理の一部を示す図であって、図３の続きである。
【図５】本実施形態に係るシステム１０の処理の一部を示す図であって、図４の続きである。
【図６】２つのＵＩモジュール６１が起動し、先に起動した方のＵＩモジュールが後で動作を終了する場合の処理を示す図である。
【図７】２つのＵＩモジュール６１が起動し、先に起動した方のＵＩモジュールが先に動作を終了する場合の処理を示す図である。
【図８】プリンタ１１との通信時に通信モジュール６２に異常が生じた場合の処理を示す図である。
【図９】ＵＩモジュール６１がディスプレイ５１に表示させる設定画面を示す図である。
【発明を実施するための形態】
【０００９】
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。
【００１０】
本実施形態では、図１に示されるシステム１０を説明する。システム１０は、プリンタ１１と、ＰＣ１２とを備える。プリンタ１１とＰＣ１２とは、通信ネットワーク１３にそれぞれ接続されており、相互に通信可能である。プリンタ１１は、外部装置及び画像形成装置の一例である。ＰＣ１２は、情報処理装置の一例である。情報処理装置は、パーソナルコンピュータや、スマートフォンなどの携帯端末や、タブレットなどであってよい。以下では、ＰＣ１２がパーソナルコンピュータである例を説明する。
【００１１】
通信ネットワーク１３は、例えば、有線ＬＡＮ、無線ＬＡＮ、ＷＡＮ、或いはこれらの組み合わせであってもよい。または、プリンタ１１とＰＣ１２とは、ＵＳＢケーブル等によって接続されていてもよい。通信ネットワーク１３には、複数のプリンタ１１が接続されていてもよい。
【００１２】
プリンタ１１は、いわゆるラベルプリンタである。プリンタ１１は、印刷媒体に印刷を行い、また、印刷した印刷媒体を切断する。ラミネートフィルムなどからなるテープ、ラベル、ロール紙などは、印刷媒体の一例であってよい。印刷は、画像形成の一例である。
【００１３】
プリンタ１１は、印刷エンジン２１と、ディスプレイ２２と、ネットワークインタフェース（以下、Ｉ／Ｆと記載する）２３と、コントローラ３１とを備える。印刷エンジン２１、ディスプレイ２２、及びネットワークＩ／Ｆ２３は、コントローラ３１の通信バス３８と接続されており、コントローラ３１と相互に通信可能である。
【００１４】
印刷エンジン２１は、テープを搬送する搬送装置と、搬送装置によって搬送されたテープに印字を行う印刷装置と、テープを切断する切断装置とを備える。搬送装置、印刷装置、及び切断装置は、コントローラ３１から入力される制御信号に基づいて動作する。
【００１５】
ディスプレイ２２は、液晶ディスプレイ、有機ＥＬディスプレイ等であり、各種情報を表示する表示画面を備える。
【００１６】
ネットワークＩ／Ｆ２３は、通信ネットワーク１３と接続されている。コントローラ３１は、ネットワークＩ／Ｆ２３を通じて、情報を送受信する。ネットワークＩ／Ｆ２３の具体的な通信手順は特に限定されないが、例えば、ＵＳＢケーブルを着脱可能なＵＳＢ−Ｉ／ＦをネットワークＩ／Ｆ２３として採用することができる。また、Ｗｉ−Ｆｉ（登録商標）−Ｉ／ＦをネットワークＩ／Ｆ２３として採用してもよい。以下では、プリンタ１１とＰＣ１２とが無線ＬＡＮまたは有線ＬＡＮで接続されており、ＴＣＰ／ＩＰの通信プロトコルを用いて通信する例を説明する。
【００１７】
コントローラ３１は、ＣＰＵ３２と、メモリ３３と、通信バス３８とを備える。ＣＰＵ３２及びメモリ３３は、通信バス３８と接続されている。通信バス３８は、印刷エンジン２１と、ネットワークＩ／Ｆ２３と、ディスプレイ２２と接続されている。ＣＰＵ３２は、通信バス３８を通じて印刷エンジン２１、ネットワークＩ／Ｆ２３、及びディスプレイ２２と接続されている。
【００１８】
メモリ３３は、プログラム記憶領域３４及びデータ記憶領域３５を有している。プログラム記憶領域３４は、ＯＳ３６や装置プログラム３７等のプログラムを記憶している。データ記憶領域３５は、プログラムの実行に必要なデータを記憶する。
【００１９】
また、データ記憶領域３５は、フォントリスト及びフォントデータを記憶している。フォントリストはデータ記憶領域３５が記憶するフォントデータのリストである。フォントリストは、フォントの名称であるフォント名と、フォントデータを識別する識別情報であるインデックス番号と、フォントデータのサイズを示すフォントサイズとを項目として有する。フォントリストの一のレコードは、一のインデックス番号と、一のフォント名と、一のフォントサイズとを有する。一のレコードは、一のフォントデータを示す。すなわち、一のレコードは、一のフォントデータと、一のインデックス番号と、一のフォント名と、一のフォントサイズとを対応付けるデータであるとも言える。
【００２０】
ＯＳ３６は、プリンタ１１の基本プログラムである。装置プログラム３７は、ＯＳ３６と協働して、印刷エンジン２１に制御信号を出力して印刷エンジン２１の動作を制御し、ディスプレイ２２に画像信号を出力してディスプレイ２２に画像を表示させ、ネットワークＩ／Ｆ２３を通じたＰＣ１２などの外部装置との通信を制御するプログラムである。装置プログラム３７は、単一のプログラムであってもよいし、複数のプログラムの集合体であってもよい。
【００２１】
プログラム記憶領域３４は、例えばＲＯＭである。データ記憶領域３５は、ＲＯＭやＲＡＭやＥＥＰＲＯＭや、ＨＤＤや、プリンタ１１に着脱されるＵＳＢメモリ等の可搬記憶媒体や、ＣＰＵ３２が備えるバッファ等である。
【００２２】
メモリ３３は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。後述するＰＣ１２のメモリ４３についても同様である。
【００２３】
ＰＣ１２は、コントローラ４１と、ディスプレイ５１と、ユーザＩ／Ｆ５２と、ネットワークＩ／Ｆ５３と、通信バス４８とを備える。
【００２４】
ディスプレイ５１、ユーザＩ／Ｆ５２、及びネットワークＩ／Ｆ５３は、コントローラ４１の通信バス４８に接続されている。ディスプレイ５１、ネットワークインタフェース５３、及び通信バス４８の構成は、プリンタ１１のディスプレイ２２、ネットワークＩ／Ｆ２３、及び通信バス３８の構成と同様である。
【００２５】
ユーザＩ／Ｆ５２は、キーボードやマウスである。ユーザＩ／Ｆ５２は、ユーザの指示に応じた操作信号の入力を受け付ける。操作信号は、通信バス４８を通じてコントローラ４１に入力される。
【００２６】
コントローラ４１は、ＣＰＵ４２と、メモリ４３と、通信バス４８とを備える。ＣＰＵ４２は、コンピュータの一例である。
【００２７】
メモリ４３は、プログラム記憶領域４４及びデータ記憶領域４５を有している。プログラム記憶領域４４は、ＯＳ４６やプログラム４７等のプログラムを記憶している。データ記憶領域４５は、プログラムの実行に必要なデータを記憶する。
【００２８】
ＯＳ４６は、ＰＣ１２の基本プログラムである。ＯＳ４６は、例えば、ＭａｃＯＳ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）ＯＳ等のオペレーティングシステムである。ＯＳ４６は、ＰＣ１２にインストールされた複数のプログラムを並行してＣＰＵ４２に実行させることができる。複数のプログラムは、例えば、時分割多重方式によって仮想的に並行して実行される。
【００２９】
プログラム４７は、ＣＰＵ４２がプログラムとして実行可能な実行ファイルである。プログラム４７は、例えば、機械語で記述されたバイナリ形式のバイナリファイルである。
【００３０】
プログラム４７は、図２に示されるＵＩモジュール６１と通信モジュール６２とを備える。ＵＩモジュール６１は、ユーザの入力を受け付ける設定画面（図９）をディスプレイ５１に表示させ、また、通信モジュール６２の起動等をＯＳ４６に指示するプログラムである。通信モジュール６２は、プリンタ１１との通信を行うプログラムである。ＵＩモジュール６１と通信モジュール６２とは、時分割多重方式等によって仮想的に並行して実行される。ＵＩモジュール６１は、第１プログラムの一例である。通信モジュール６２は、第２プログラムの一例である。
【００３１】
ＵＩモジュール６１は、種々の言語データを有する。ＵＩモジュール６１は、ＯＳ４６が指定する言語と対応する言語データを決定し、決定した言語データの言語でディスプレイ５１に設定画面（図９）を表示させる。すなわち、ＵＩモジュール６１は、いわゆるローカライズされたプログラムである。
【００３２】
設定画面は、ユーザの指示を受け付け、また、ユーザに情報を示す画面である。設定画面は、ユーザの指示を受け付けるテキストボックスやプルダウンメニューやスピンボックスやチェックボックスなどの入力手段を有する。また、設定画面は、ユーザに情報（フォントリスト）を示す情報表示領域を有する。
【００３３】
詳しい説明は省略するが、ＵＩモジュール６１は、設定画面の上述の入力手段により、フォントリスト取得指示（図２のＳ２１）、フォントデータ転送指示（図４のＳ５１）、及び終了指示（図５のＳ８１）などのユーザの指示を受け付ける。フォントリスト取得指示は、プリンタ１１からフォントリストを取得することを示す指示である。フォントデータ転送指示は、フォントデータをプリンタ１１に転送（送信）してプリンタ１１にフォントデータを記憶させることを示す指示である。終了指示は、プログラム４７を終了させることを示す指示である。ユーザの指示を受け付けるステップＳ２１、Ｓ５１、Ｓ８１の処理は、受付処理の一例である。
【００３４】
以下、プログラム４７（ＵＩモジュール６１及び通信モジュール６２）が実行する処理について、図２から図９を参照して説明する。
【００３５】
なお、本明細書では、基本的に、プログラムに記述された命令に従ったＣＰＵの処理を説明する。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」、「設定」等の処理は、ＣＰＵの処理を表している。ＣＰＵによる処理は、ＯＳなどのコントローラを介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵが要求することなくデータを受信するという処理も、「ＣＰＵがデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【００３６】
また、プログラムに記述された命令に従ったＣＰＵの処理を、省略した文言で記載することがある。例えば、「ＣＰＵ４２が行う」「プログラム４７が行う」「コントローラ４１が行う」「ＰＣ１２が行う」のように記載することがある。ＣＰＵ３２についても同様である。
【００３７】
また、ＣＰＵによる、情報Ａは事柄Ｂであることを示しているか否かを判断する処理を、「情報Ａから、事柄Ｂであるか否かを判断する」のように概念的に記載することがある。ＣＰＵによる、情報Ａが事柄Ｂであることを示しているか、事柄Ｃであるかを示しているかを判断する処理を、「情報Ａから、事柄Ｂであるか事柄Ｃであるかを判断する」のように概念的に記載することがある。
【００３８】
また、本明細書中の「データ」と「情報」とは、コンピュータによって取り扱い可能なビット或いはビット列である点において共通する。「データ」とは、各ビットが示す意味内容をコンピュータが考慮することなく取り扱えるものを指す。これに対して、「情報」とは、各ビットが示す意味内容によってコンピュータの動作が分岐するものを指す。さらに、「指示」は、送信先の装置に対して次の動作を促すための制御信号であって、情報を含んでいることもあるし、それ自体が情報としての性質を有していることもある。
【００３９】
また、「データ」及び「情報」は、形式（例えば、テキスト形式、バイナリ形式、フラグ形式等）がコンピュータ毎に変更されたとしても、同一の意味内容と認識される限り、同一のデータ及び情報として取り扱われる。例えば、「２つ」であることを示す情報が、あるコンピュータではＡＳＣＩＩコードで”０ｘ３２”というテキスト形式の情報として保持され、別のコンピュータでは二進数表記で”１０”というバイナリ形式の情報として保持されてもよい。
【００４０】
但し、上記の「データ」及び「情報」の区別は厳密なものではなく、例外的な取り扱いも許容される。例えば、データが一時的に情報として扱われてもよいし、情報が一時的にデータとして扱われてもよい。また、ある装置ではデータとして扱われるものが、他の装置では情報として扱われてもよい。さらには、データの中から情報が取り出されてもよいし、情報の中からデータが取り出されてもよい。
【００４１】
また、本明細書中の「に応じて」は、当該文字列の前に記載された条件が満たされた場合に、当該文字列の後に記載された処理が実行されることを示す。なお、処理が実行されるタイミングは、条件が満たされた後であればよく、当該条件が満たされた直後である必要は必ずしもない
【００４２】
プログラム４７は、ＯＳ４６からの起動指示（Ｓ１１）によって起動される。ＯＳ４６は、例えば、ユーザＩ／Ｆ５２を用いたユーザからの指示により、起動指示を行う。起動指示には、言語指定が含まれる。
【００４３】
プログラム４７が起動すると、まず、ＵＩモジュール６１が起動する（Ｓ１２）。ＵＩモジュール６１は、起動すると、ＯＳ４６からの起動指示に含まれる言語指定を取得する（Ｓ１３）。以下では、言語指定で指定された言語を指定言語として説明する。
【００４４】
プログラム４７は、取得した言語指定に対応する言語データを、記憶する種々の言語データから選択し、ディスプレイ５１に表示する設定画面の言語として決定する（Ｓ１４）。プログラム４７は、決定した言語データを用いて、図９に示される設定画面をディスプレイ５１に表示する（Ｓ１５）。言語指定を取得するステップＳ１３の処理は、第４取得手段の一例である。指定言語の言語データを決定するステップＳ１４の処理は、決定手段の一例である。設定画面をディスプレイ５１に表示させるステップＳ１５の処理は、表示手段の一例である。
【００４５】
次に、ＵＩモジュール６１は、記憶指示コマンドをＯＳ４６に入力する（Ｓ１６）。記憶指示コマンドは、プログラム４７の実行ファイルに含まれる通信モジュール６２をテンポラリフォルダに記憶することをＯＳ４６に指示するコマンドである。テンポラリフォルダは、データやプログラムを一時的に記憶するフォルダである。テンポラリフォルダは、一時記憶領域の一例である。一時記憶領域は、テンポラリフォルダの他、ＨＤＤの既存のフォルダであってもよい。また、ＵＩモジュール６１が、ＨＤＤやＲＡＭにフォルダを作成し、作成したフォルダに通信モジュール６２を記憶させることをＯＳ４６に指示してもよい。
【００４６】
記憶指示コマンドを受け付けたＯＳ４６は、プログラム４７の実行ファイルに含まれる通信モジュール６２をテンポラリフォルダに記憶させる（Ｓ１７）。通信モジュール６２をテンポラリフォルダに記憶させるステップＳ１７の処理は、記憶手段の一例である。
【００４７】
次に、ＵＩモジュール６１は、ロック指示コマンドをＯＳ４６に入力する（Ｓ１８）。ロック指示コマンドは、他のプログラムが通信モジュール６２をテンポラリフォルダから消去することを制限するコマンドである。ロック指示コマンドをＯＳ４６に入力するステップＳ１８の処理は、ロック手段の一例である。
【００４８】
ロック指示コマンドを入力されたＯＳ４６は、通信モジュール６２を消去しないことを示す設定をメモリ４３に記憶し、通信モジュール６２をロックする（Ｓ１９）。また、ＯＳ４６は、通信モジュール６２をロックしたことをＵＩモジュール６１に通知する（Ｓ２０）。
【００４９】
その後、ＵＩモジュール６１は、ユーザからの指示を受け付けるまで待機する。ＵＩモジュール６１は、ユーザからフォントリスト取得指示を受け付けると（Ｓ２１）、第１指示データを生成する（Ｓ２２）。第１指示データは、対応確認コマンド、フォントリスト取得コマンド、総記憶容量取得コマンド、及び空き記憶容量取得コマンドを含む。
【００５０】
対応確認コマンドは、プリンタ１１に入力されるコマンドである。対応確認コマンドを入力されたプリンタ１１は、フォントデータを記憶可能なプリンタであるか否かを示す応答情報を返信する。すなわち、対応確認コマンドは、プリンタ１１がフォントデータを記憶可能なプリンタであるか否かを確認するコマンドである。
【００５１】
フォントリスト取得コマンドは、プリンタ１１に入力されるコマンドである。フォントリスト取得コマンドを入力されたプリンタ１１は、メモリ３３に記憶するフォントリストを返信する。すなわち、フォントリスト取得コマンドは、フォントリストを取得するためのコマンドである。フォントリスト取得コマンドは、第１返信命令の一例である。
【００５２】
総記憶容量取得コマンドは、プリンタ１１に入力されるコマンドである。総記憶容量取得コマンドを入力されたプリンタ１１は、総記憶容量を返信する。総記憶容量とは、フォントデータを記憶可能なメモリ３３の領域の容量を意味する。すなわち、総記憶容量取得コマンドは、プリンタ１１におけるフォントデータを記憶可能な領域の総記憶容量を取得するためのコマンドである。総記憶容量取得コマンドは、第２返信命令の一例である。
【００５３】
空き記憶容量取得コマンドは、プリンタ１１に入力されるコマンドである。空き記憶容量取得コマンドを入力されたプリンタ１１は、空き記憶容量を返信する。空き記憶容量とは、総記憶容量から、現在フォントデータの記憶に使用している使用容量を減算した容量を意味する。すなわち、空き記憶容量取得コマンドは、プリンタ１１におけるフォントデータを記憶可能な残りの領域の容量である空き記憶容量を取得するためのコマンドである。空き記憶容量取得コマンドは、第３返信命令の一例である。
【００５４】
ＵＩモジュール６１は、対応確認コマンド、フォントリスト取得コマンド、総記憶容量取得コマンド、及び空き記憶容量取得コマンドを含む第１指示データを生成する。なお、ＵＩモジュール６１は、プリンタ１１のＩＰアドレスを第１指示データに含め、或いは、プリンタ１１のＭＡＣアドレスなど、プリンタ１１を特定するデータを第１指示データに含める。
【００５５】
次に、ＵＩモジュール６１は、生成した第１指示データを含む通信オプション付きの起動指示コマンドをＯＳ４６に入力する（Ｓ２３）。通信オプション付きの起動指示コマンドは、通信モジュール６２を起動させ、かつ通信モジュール６２にプリンタ１１と通信を行わせることをＯＳ４６に対して指示するコマンドである。通信オプション付きの起動指示コマンドは、第１起動通信指示の一例である。第１指示データを含む通信オプション付きの起動指示コマンドをＯＳ４６に入力するステップＳ２３の処理は、第１指示手段の一例である。
【００５６】
通信オプション付きの起動指示コマンドを受け付けたＯＳ４６は、通信モジュール６２を起動させ（Ｓ２５）、また、プリンタ１１との通信を通信モジュール６２に指示する（Ｓ２４）。通信モジュール６２を起動させてプリンタ１１との通信を指示するステップＳ２３の処理は、第１指示手段の一例である。
【００５７】
ＯＳ４６が通信モジュール６２に対して行う通信指示には、ＵＩモジュール６１がステップＳ２２で生成した第１指示データが含まれる。第１指示データには、上述の複数のコマンドが含まれる。通信モジュール６２は、コマンドを１つずつプリンタ１１に送信し、コマンドに対するプリンタ１１からの応答を受信する。なお、プリンタ１１が複数のコマンドを１度に受け付け可能なプリンタである場合は、複数のコマンドが通信モジュール６２からプリンタ１１へ１度に送信されてもよい。
【００５８】
通信モジュール６２とプリンタ１１との通信について具体的に説明する。通信モジュール６２は、まず、プリンタ１１とハンドシェイクを行ってプリンタ１１との間の通信を確立する（不図示）。次に、通信モジュール６２は、応答確認コマンドをプリンタ１１に送信する（Ｓ３１）。なお、通信モジュール６２は、ＯＳ４６のＡＰＩを用いてプリンタ１１と通信を行ってもよいし、ＯＳ４６を介さずにプリンタ１１と通信を行ってもよい。以下、通信モジュール６２がＯＳ４６を介してプリンタ１１と通信することも含めて、「通信モジュール６２がプリンタ１１と通信を行う」や、「通信モジュール６２がプリンタ１１に送信する」や、「通信モジュール６２がプリンタ１１から受信する」などと記載することがある。
【００５９】
一方、応答確認コマンドを受信したプリンタ１１は、応答確認コマンドにしたがって、自身がフォントデータを記憶可能なプリンタ１１であるか否か、すなわち、自身がプログラム４７が管理可能なプリンタ１１であるか否かを示す応答を返信する（Ｓ３２）。プリンタ１１が返信した応答は、通信モジュール６２によって受信される（Ｓ３２）。
【００６０】
図には示されていないが、プログラム４７は、プリンタ１１がプログラム４７によって管理可能なプリンタ１１でないことを示す応答を受け取ると、例えば、その旨を示す表示を設定画面に表示し、プリンタを選択し直すなどの再度のユーザの入力を受け付けるまで待機する。
【００６１】
通信モジュール６２は、プリンタ１１がプログラム４７によって管理可能なプリンタ１１であることを示す応答を受け取ると、フォントリストを返信することを示すフォントリスト取得コマンドをプリンタ１１に送信する（Ｓ３３）。フォントリスト取得コマンドを受信したプリンタ１１は、メモリ３３に記憶されたフォントリストを含む応答を返信する（Ｓ３４）。フォントリストを含む応答を受信した通信モジュール６２は、受信した応答に含まれるフォントリストをメモリ４３に記憶する（Ｓ３５）。フォントリストは、第１データの一例である。
【００６２】
次に、通信モジュール６２は、総記憶容量を返信することを要求する総記憶容量取得コマンドをプリンタ１１に送信する（Ｓ３６）。総記憶容量取得コマンドを受信したプリンタ１１は、総記憶容量を含む応答を返信する（Ｓ３７）。総記憶容量を含む応答を受信した通信モジュール６２は、受信した応答に含まれる総記憶容量をメモリ４３に記憶する（Ｓ３８）。
【００６３】
次に、通信モジュール６２は、空き記憶容量を返信することを要求する空き記憶容量取得コマンドをプリンタ１１に送信する（Ｓ３９）。空き記憶容量取得コマンドを受信したプリンタ１１は、空き記憶容量を含む応答を返信する（Ｓ４０）。空き記憶容量を含む応答を受信した通信モジュール６２は、受信した応答に含まれる空き記憶容量をメモリ４３に記憶する（Ｓ４１）。その後、通信モジュール６２は、プリンタ１１との間に確立した通信を解放してプリンタ１１との通信を終了する。すなわち、複数のコマンドを送信して応答を受信するまで、通信モジュール６２は、プリンタ１１との間に確立した通信を維持する。通信モジュール６２がプリンタ１１にコマンドを送信し、コマンドに対する応答を受信するステップＳ３１〜Ｓ４０の処理は、通信手段の一例である。
【００６４】
通信モジュール６２は、プリンタ１１との通信の結果得た情報であるフォントリスト、総記憶容量、及び空き記憶容量をＯＳ４６に受け渡し（Ｓ４２）、動作を終了する（Ｓ４３）。通信モジュール６２がフォントリスト、総記憶容量、及び空き記憶容量をＯＳ４６に受け渡すステップＳ４２の処理は、受渡手段の一例である。通信モジュール６２が動作を終了するステップＳ４３の処理は、第２終了手段の一例である。
【００６５】
ＯＳ４６は、通信モジュール６２から受け渡されたフォントリスト、総記憶容量、及び空き記憶容量をＵＩモジュール６１に受け渡す（Ｓ４４）。ＵＩモジュール６１は、ＯＳ４６から、フォントリスト、総記憶容量、及び空き記憶容量を取得する（Ｓ４４）。ＵＩモジュール６１がフォントリストを取得するステップＳ４４の処理は、第１取得手段の一例である。
【００６６】
ＵＩモジュール６１は、ＯＳ４６から取得したフォントリストを指定言語に変換する（Ｓ４５）。その後、ＵＩモジュール６１は、ＯＳ４６から受け取った総記憶容量及び空き記憶容量と、変換したフォントリストとをディスプレイ５１に表示させ、設定画面を更新する（Ｓ４６）。フォントリストを指定言語に変換するステップＳ４５の処理は、変換手段の一例である。設定画面を更新するステップＳ４６は、表示手段の一例である。
【００６７】
図４に示されるように、ＵＩモジュール６１は、ユーザからフォントリストの転送指示を受け付けると（Ｓ５１）、転送指示に含まれるパスを取得する（Ｓ５２）。パスは、ユーザが送信を指定するフォントデータを示す。ＵＩモジュール６１がパスを取得するステップＳ５２の処理は、第２取得手段の一例である。
【００６８】
次に、ＵＩモジュール６１は、第２指示データを生成する（Ｓ５３）。第２指示データは、ステップＳ５２で取得したパスと、当該パスで示されるフォントデータをメモリ３３に記憶させることをプリンタ１１に指示する記憶コマンドと、さらに、上述の複数のコマンドとを含む。複数のコマンドは、プリンタ１１にフォントリスト、総記憶容量、及び空き記憶容量を送信することを要求するコマンドである。すなわち、複数のコマンドは、新たなフォントデータをメモリ３３に記憶させた後に更新されたフォントリストや総記憶容量や空き記憶容量をプリンタ１１に送信させるコマンドである。なお、ＵＩモジュール６１は、パスに代えて、パスが示すフォントデータ自体を第２指示データに含めてもよい。フォントデータは、第２データの一例である。記憶コマンドは、記憶命令の一例である。
【００６９】
ＵＩモジュール６１は、生成した第２指示データを含む通信オプション付きの起動指示コマンドをＯＳ４６に入力する（Ｓ５４）。ステップＳ５４でＯＳ４６に入力される通信オプション付きの起動指示コマンドは、第２起動通信指示の一例である。通信オプション付きの起動指示コマンドをＯＳ４６に入力するステップＳ５４の処理は、第２指示手段の一例である。
【００７０】
通信オプション付きの起動指示コマンドを受け付けたＯＳ４６は、通信モジュール６２を起動させ（Ｓ５６）、また、通信モジュール６２にプリンタ１１との通信を指示する（Ｓ５５）。ＯＳ４６が通信モジュール６２に対して行う通信の指示には、ＵＩモジュール６１がステップＳ５３で生成した第２指示データが含まれる。
【００７１】
起動された通信モジュール６２は、ＯＳ４６から入力された通信指示に含まれる第２指示データにしたがって、プリンタ１１と通信を行う。具体的に説明すると、まず、通信モジュール６２は、第２指示データに含まれるパスを用いて、プリンタ１１に送信するフォントデータを取得する（Ｓ５７）。次に、通信モジュール６２は、取得したフォントデータと、当該フォントデータをメモリ３３に記憶することをプリンタ１１に指示する記憶コマンドとを含む送信データであるＢｉｎファイルを生成し（Ｓ５８）、プリンタ１１に送信する（Ｓ５９）。通信モジュール６２がパスを用いてフォントデータを取得するステップＳ５７の処理は、第３取得手段の一例である。
【００７２】
プリンタ１１は、通信モジュール６２が送信したＢｉｎファイルを受信すると、Ｂｉｎファイルに含まれる記憶コマンドにしたがって、Ｂｉｎファイルに含まれるフォントデータをメモリ３３に記憶させる（Ｓ６０）。また、プリンタ１１は、新たなフォントデータをメモリ３３に記憶したことに応じて、フォントリストに新たなレコードを追加する。すなわち、プリンタ１１は、フォントリストを更新する。
【００７３】
一方、通信モジュール６２は、Ｂｉｎファイルの送信後、ステップＳ３３、Ｓ３６、Ｓ３９の処理と同様に、フォントリスト取得コマンド、総記憶容量取得コマンド、及び空き記憶容量取得コマンドをプリンタ１１に順次送信し、ステップＳ３２、Ｓ３７、Ｓ４０の処理と同様に、応答を順次受信する。通信モジュール６２がプリンタ１１と通信を行うステップＳ５９、Ｓ６０、Ｓ３３〜Ｓ４０の処理は、通信手段の一例である。
【００７４】
通信モジュール６２は、図５に示されるように、プリンタ１１から応答を受信するごとに、当該応答に含まれるデータ（フォントリスト、総記憶容量、及び空き記憶容量）をメモリ４３に順次記憶する（Ｓ７１）。通信モジュール６２は、プリンタ１１との通信が終了すると、プリンタ１１からの応答に含まれるフォントリスト、総記憶容量、及び空き記憶容量をＯＳ４６に受け渡す（Ｓ７２）。その後、通信モジュール６２は、動作を終了する（Ｓ７３）。
【００７５】
一方、ＯＳ４６は、通信モジュール６２から受け渡されたフォントリスト、総記憶容量、及び空き記憶容量をＵＩモジュール６１に受け渡す（Ｓ７４）。ＵＩモジュール６１は、受け渡されたフォントリストを指定言語に変換し（Ｓ７５）、変換したフォントリスト、総記憶容量、及び空き記憶容量をディスプレイ５１に表示させて、設定画面を更新する（Ｓ７６）。フォントリストを指定言語に変換するステップＳ７５の処理は、変換手段の一例である。設定画面を更新するステップＳ７６は、表示手段の一例である。
【００７６】
また、ＵＩモジュール６１は、ユーザから終了指示を受け付けると（Ｓ８１）、ステップＳ１８でＯＳ３６に指示したロックを解除することをＯＳ４６に指示するコマンドをＯＳ４６に入力する（Ｓ８２）。コマンドを入力されたＯＳ４６は、通信モジュール６２に設定したロックを解除する（Ｓ８３）。具体的には、ＯＳ４６は、ロックの設定をメモリ４３から消去する。通信モジュール６２に設定したロックを解除するステップＳ８３の処理は、ロック解除手段の一例である。
【００７７】
一方、ＵＩモジュール６１は、ロックの解除をＯＳ４６に指示した後、通信モジュール６２をテンポラリホルダから消去することを要求するコマンドをＯＳ４６に入力する（Ｓ８４）。当該コマンドを入力されたＯＳ４６は、通信モジュール６２をテンポラリフォルダから消去し（Ｓ８５）、通信モジュール６２をテンポラリフォルダから消去したことをＵＩモジュール６１に対して通知する（Ｓ８６）。当該通知を受けたＵＩモジュール６１は、動作を終了する（Ｓ８７）。なお、ＲＡＭやＨＤＤにフォルダを作成し、作成したフォルダに通信モジュール６２が記憶されている場合、ＵＩモジュール６１は、通信モジュール６２とともに、作成したフォルダの消去もＯＳ４６に指示する。すなわち、ＵＩモジュール６１は、一時記憶されたフォルダ及び通信モジュール６２の全ての消去をＯＳ４６に指示する。ＵＩモジュール６１が通信モジュール６２の消去をＯＳ４６に指示するステップＳ８４の処理は、消去手段の一例である。ＵＩモジュール６１の動作を終了するステップＳ８７の処理は、第１終了手段の一例である。
【００７８】
上述のように、ＵＩモジュール６１は、起動すると、通信モジュール６２をテンポラリフォルダに記憶させて通信モジュール６２をロックする。ＵＩモジュール６１が通信モジュール６２をロックすることは、複数のＵＩモジュール６１が起動される場合に特に有効である。以下、詳しく説明する。
【００７９】
２つのＵＩモジュール６１が起動され、先に起動した方のＵＩモジュール６１が、後で起動した方のＵＩモジュール６１よりも後で動作を終了する場合の処理を図６を参照して説明する。なお、図６では、ＯＳ４６の図示を省略しているが、ＵＩモジュール６１と通信モジュール６２とは、図２〜図５と同様に、ＯＳ４６を通じて動作する。また、以下では、先に起動した方のＵＩモジュール６１を第１のＵＩモジュール６１とし、後で起動した方のＵＩモジュール６１を第２のＵＩモジュール６１として説明する。また、第１のＵＩモジュール６１が実行する処理のうち、図２〜図５で説明した処理と同一の処理には、同一の符号に添え字「ａ」を付し、第２のＵＩモジュール６１が実行する処理のうち、図２〜図５で説明した処理と同意の処理には、同一の符号に添え字「ｂ」を付して説明することがある。例えば、第１のＵＩモジュール６１が実行する処理のうち、図２〜図５で説明した処理Ｓ１２と同一の処理には、符号Ｓ１２ａを付し、第２のＵＩモジュール６１が実行する処理のうち、図２〜図５で説明した処理Ｓ１２と同一の処理には、符号Ｓ１２ｂを付して説明する。
【００８０】
ＯＳ４６からの起動指示（Ｓ１１ａ）によりプログラム４７が起動されると、第１のＵＩモジュール６１が起動する（Ｓ１２ａ）。
【００８１】
起動した第１のＵＩモジュール６１は、ステップＳ１３からＳ１５の処理（図２）を実行した後、通信モジュール６２をテンポラリフォルダに記憶させる（Ｓ１６ａ）。また、第１のＵＩモジュール６１は、通信モジュール６２に対してロックを行うことを指示するコマンドをＯＳ４６に入力し（Ｓ１８ａ）、通信モジュール６２をロックする。
【００８２】
第１のＵＩモジュール６１が起動した後、プログラム４７がＯＳ４６からの起動指示（Ｓ１１ｂ）により起動されると、第２のＵＩモジュール６１が起動される（Ｓ１２ｂ）。
第２のＵＩモジュール６１は、ＯＳ４６に対して、実行ファイルの通信モジュール６２をテンポラリフォルダに記憶することを要求するコマンドをＯＳ４６に入力する。当該コマンドを入力されたＯＳ４６は、通信モジュール６２がテンポラリフォルダに既に記憶されていることにより、通信モジュール６２をテンポラリフォルダに新たに記憶することなく、「失敗」を示す通知を第２のＵＩモジュール６１に対して行う（Ｓ９１）。
【００８３】
また、第２のＵＩモジュール６１は、通信モジュール６２に対してロックを行うことをＯＳに指示し（Ｓ１８ｂ）、通信モジュール６２をロックする。すなわち、通信モジュール６２は、第１のＵＩモジュール６１及び第２のＵＩモジュール６１の双方にロックされる。
【００８４】
その後、第１のＵＩモジュール６１よりも先に第２のＵＩモジュール６１に終了指示が入力される（Ｓ８１ｂ）。第２のＵＩモジュール６１は、終了指示が入力されると、ＯＳ４６にロックを解除する指示を入力し、通信モジュール６２に設定されたロックを解除する（Ｓ８２ｂ）。
【００８５】
また、第２のＵＩモジュール６１は、テンポラリフォルダから通信モジュール６２を消去することを指示するコマンドをＯＳ４６に入力する（Ｓ８４ｂ）。当該コマンドを入力されたＯＳ４６は、通信モジュール６２がロックされているか否かをメモリ４３に記憶された設定によって確認する。ＯＳ４６は、通信モジュール６２が第１のＵＩモジュール６１によってロックされていることにより、通信モジュール６２をテンポラリフォルダから消去することなく、「失敗」を示す通知を第２のＵＩモジュール６１に対して行う（Ｓ９２）。第２のＵＩモジュール６１は、その後、動作を終了する（Ｓ８７ｂ）。
【００８６】
第２のＵＩモジュール６１の動作終了後、第１のＵＩモジュール６１に終了指示が入力されると（Ｓ８１ａ）、第１のＵＩモジュール６１は、通信モジュール６２のロックを解除することを指示するコマンドをＯＳ４６に入力し、通信モジュール６２に設定されたロックを解除する（Ｓ８２ａ）。
【００８７】
また、第１のＵＩモジュール６１は、テンポラリフォルダから通信モジュール６２を消去することを指示するコマンドをＯＳ４６に入力する（Ｓ８４ａ）。当該コマンドを入力されたＯＳ４６は、通信モジュール６２がロックされているか否かをメモリ４３に記憶された設定によって確認する。ＯＳ４６は、通信モジュール６２が第２のＵＩモジュール６１によってロックされていないことにより、通信モジュール６２をテンポラリフォルダから消去する。第１のＵＩモジュール６１は、その後、動作を終了する（Ｓ８７ａ）。
【００８８】
上述のように、複数のＵＩモジュール６１が起動しても、通信モジュール６２は、１つしかテンポラリフォルダに記憶されず、また、起動された全てのＵＩモジュール６１の動作が終了するまでは、通信モジュール６２がテンポラリフォルダから削除されることがない。
【００８９】
図６では、先に起動した方のＵＩモジュール６１が、後で起動した方のＵＩモジュール６１よりも後で動作を終了する場合について説明した。図７では、先に起動した方のＵＩモジュール６１が、後で起動した方のＵＩモジュール６１よりも先に動作を終了する場合を説明する。なお、図７では、図６と同様に、ＯＳ４６の図示を省略している。また、以下では、先に起動した方のＵＩモジュール６１を第１のＵＩモジュール６１とし、後で起動した方のＵＩモジュール６１を第２のＵＩモジュール６１として説明する。また、第１のＵＩモジュール６１が実行する処理のうち、図２〜図５で説明した処理と同一の処理には、同一の符号に添え字「ａ」を付し、第２のＵＩモジュール６１が実行する処理のうち、図２〜図５で説明した処理と同意の処理には、同一の符号に添え字「ｂ」を付して説明することがある。
【００９０】
まず、図６の場合と同様に、第１のＵＩモジュール６１が先に起動され（Ｓ１２ａ）、第２のＵＩモジュール６１が後で起動される（Ｓ１２ｂ）。また、通信モジュール６２は、第１のＵＩモジュール６１及び第２のＵＩモジュール６１の双方によってロックされる（Ｓ１８ａ、Ｓ１８ｂ）。
【００９１】
その後、後で起動した第２のＵＩモジュール６１よりも先に、第１のＵＩモジュール６１に終了指示が入力されると（Ｓ８１ａ）、第１のＵＩモジュール６１は、通信モジュール６２のロックの解除を指示するコマンドをＯＳ４６に入力し、通信モジュール６２に設定されたロックを解除する（Ｓ８２ａ）。
【００９２】
また、第１のＵＩモジュール６１は、テンポラリフォルダから通信モジュール６２を消去することを指示するコマンドをＯＳ４６に入力する（Ｓ８４ａ）。当該コマンドを入力されたＯＳ４６は、通信モジュール６２がロックされているか否かをメモリ４３に記憶された設定によって確認する。ＯＳ４６は、通信モジュール６２が第２のＵＩモジュール６１によってロックされていることにより、通信モジュール６２をテンポラリフォルダから消去することなく、「失敗」を示す通知を第１のＵＩモジュール６１に対して行う（Ｓ９２）。第２のＵＩモジュール６１は、その後、動作を終了する（Ｓ８７ａ）。
【００９３】
第１のＵＩモジュール６１の動作終了後、第２のＵＩモジュール６１に終了指示が入力されると（Ｓ８１ｂ）、第２のＵＩモジュール６１は、通信モジュール６２のロックの解除を指示するコマンドをＯＳ４６に入力し、通信モジュール６２に設定されたロックを解除する（Ｓ８２ｂ）。
【００９４】
また、第２のＵＩモジュール６１は、テンポラリフォルダから通信モジュール６２を消去することを指示するコマンドをＯＳ４６に入力する（Ｓ８４ｂ）。当該コマンドを入力されたＯＳ４６は、通信モジュール６２がロックされているか否かをメモリ４３に記憶された設定によって確認する。ＯＳ４６は、通信モジュール６２が第１のＵＩモジュール６１によってロックされていないことにより、通信モジュール６２をテンポラリフォルダから消去する。第２のＵＩモジュール６１は、その後、動作を終了する（Ｓ８７ｂ）。
【００９５】
次に、通信モジュール６２とプリンタ１１との通信において、通信異常を生じた場合について、図８を参照して説明する。なお、図４で説明した処理と同一の処理については、図４で説明した処理と同一の符号を付して説明を省略することがある。
【００９６】
ＵＩモジュール６１及び通信モジュール６２は、転送指示を受け付けると（Ｓ５１）、ステップＳ５２〜５４及びステップＳ５６〜５９の処理を実行する。通信モジュール６２とプリンタ１１と通信において、いわゆる通信クラッシュなどの異常が生じたとする。図示例では、通信モジュール６２がＢｉｎファイルを送信する際に、通信クラッシュが生じて、通信モジュール６２に異常が生じた場合が示されている。
【００９７】
異常が生じたことに応じて、ユーザが終了を指示し、終了指示がＵＩモジュール６１に入力されると（Ｓ８１）、ＵＩモジュール６１は、ロックを解除することをＯＳ４６に指示し、その後、通信モジュール６２をテンポラリフォルダから消去することをＯＳ４６に指示する（Ｓ８４）。
【００９８】
一方、ロックを解除することを指示されたＯＳ４６は、通信モジュール６２をロックしたことを示す設定をメモリ４３から削除してロックを解除する（Ｓ８３）また、通信モジュール６２を消去することを指示されたＯＳ４６は、テンポラリフォルダから通信モジュール６２を消去し（Ｓ８５）、通信モジュール６２を消去したことをＵＩモジュール６１に通知する（Ｓ８６）。当該通知を受けたＵＩモジュール６１は、動作を終了する（Ｓ８７）。すなわち、ＵＩモジュール６１が動作を終了する際に、異常を生じた通信モジュール６２は、テンポラリフォルダから消去される。
【００９９】
[実施形態の作用効果]
本実施形態では、ＵＩモジュール６１は、プログラム４７が起動すると起動される。一方、通信モジュール６２は、ＯＳ４６によって起動される。したがって、ＵＩモジュール６１と通信モジュール６２とは、起動のプロセスが相違する。また、ＵＩモジュール６１と通信モジュール６２とは、ＯＳ４６を介して相互にデータを受け渡す。したがって、プリンタ１１との通信等において通信モジュール６２に異常が生じたとしても、異常が生じた通信モジュール６２がＵＩモジュール６１の動作を阻害することがない。すなわち、通信モジュールに異常が生じたとしても、ＵＩモジュール６１は、ユーザからの指示を受け付けて処理することができる。
【０１００】
また、異常が生じた通信モジュール６２は、ＵＩモジュール６１の動作が終了する際にテンポラリフォルダから消去される。したがって、異常が生じた通信モジュール６２がテンポラリフォルダに残存して、ＯＳ４６の動作を阻害することがない。
【０１０１】
また、通信モジュール６２は、異常が生じなくても、ＵＩモジュール６１の動作が終了する際にテンポラリフォルダから消去される。したがって、テンポラリフォルダに不要なプログラムが残存することを抑制することができる。
【０１０２】
また、本実施形態では、後に起動したＵＩモジュール６１（第２のＵＩモジュール６１）が通信モジュール６２をテンポラリフォルダに記憶することをＯＳ４６に指示したとしても、先に起動したＵＩモジュール６１によってテンポラリフォルダに通信モジュール６２が既に記憶されている場合、通信モジュール６２がテンポラリフォルダに更に記憶されない。すなわち、複数のＵＩモジュール６１が起動されても、通信モジュール６２は、１つしかテンポラリフォルダに記憶されない。したがって、複数の通信モジュール６２がテンポラリフォルダに記憶される場合に比べ、プログラム４７が使用するテンポラリフォルダの容量（使用率）を少なくすることができる。
【０１０３】
また、本実施形態では、複数のＵＩモジュール６１が起動すると、起動した各ＵＩモジュール６１（第１のＵＩモジュール６１及び第２のＵＩモジュール６１）は、それぞれ通信モジュール６２をロックする。起動した各ＵＩモジュール６１は、動作を終了する際に、それぞれ通信モジュール６２のロックを解除する。したがって、起動した全てのＵＩモジュール６１の動作が終了するまで、通信モジュール６２がテンポラリフォルダから消去されることがない。その結果、起動した全てのＵＩモジュール６１において、通信モジュール６２を用いてプリンタ１１と通信を行うことができる。
【０１０４】
また、本実施形態では、ＵＩモジュール６１は、ＯＳ４６を通じて通信モジュール６２を起動させ、ＯＳ４６を通じて通信モジュール６２に第１指示データを受け渡す。一方、通信モジュール６２は、フォントリストや総記憶容量や空き記憶容量をＯＳ４６に受け渡すと、動作を終了する。したがって、複数のＵＩモジュール６１が起動しても、通信モジュール６２は、１つしか起動されない。すなわち、ＯＳ４６を通じて通信モジュール６２を起動させることにより、１つの通信モジュール６２のみを起動させることができる。その結果、複数の通信モジュール６２を起動させる場合に比べ、ＣＰＵ４２の処理負担を軽減することができる。
【０１０５】
また、本実施形態では、ＯＳ４６のロック機能を利用して、ＵＩモジュール６１が通信モジュール６２に対してロックを行う。したがって、通信モジュール６２に対してロックを行う機能をＵＩモジュール６１が有する場合に比べ、ＵＩモジュール６１の構成を簡単にすることができる。
【０１０６】
また、本実施形態では、ＵＩモジュール６１は、第２指示データを含む通信オプション付きの起動指示コマンドをＯＳ４６に入力することにより、フォントデータをプリンタ１１に記憶させることができる。
【０１０７】
また、本実施形態では、ＵＩモジュール６１は、フォントデータを示すパスをＯＳ４６を介して通信モジュール６２に受け渡し、第２指示データを含む通信オプション付きの起動指示コマンドをＯＳ４６に入力することにより、フォントデータをプリンタ１１に記憶させることができる。
【０１０８】
また、本実施形態では、通信モジュール６２から受け渡されたフォントリストをＵＩモジュール６１が指定言語に変換してディスプレイ５１に表示させる。したがって、通信モジュール６２には、データを指定言語に変換する処理が不要である。すなわち、通信モジュール６２には、いわゆるローカライズが不要である。その結果、通信モジュール６２の構成が簡単になる。
【０１０９】
また、本実施形態では、複数のコマンドをプリンタ１１に送信する際（Ｓ３１〜Ｓ４０）、一度の通信確立で複数のコマンドをプリンタ１１に順次送信し、コマンドに対する応答をプリンタ１１から順次受信する。したがって、通信モジュール６２が一のコマンドを送信するたびにプリンタ１１との間に通信を確立する場合に比べ、ＰＣ１２とプリンタ１１との間の通信量（通信確立の手順に必要な通信量）が低減する。その結果、通信ネットワーク１３におけるコリジョンの発生等が低減し、通信トラフィックが安定する。また、ＰＣ１２とプリンタ１１との間の通信時間が低減する。
【０１１０】
[変形例]
本変形例では、複数のプログラム４７がＰＣ１２にインストールされた例を説明する。一のプログラム４７（以下、プログラム４７Ａと記載する）は、例えば、後述の家庭用ラベルプリンタのフォントを管理するプログラムであり、他の一のプログラム４７（以下、プログラム４７Ｂと記載する）は、例えば、金属加工／木材加工プリンタのフォントを管理するプログラムである。
【０１１１】
プログラム４７Ａは、ＵＩモジュール６１（以下、ＵＩモジュール６１Ａと記載する）と、通信モジュール６２とを有する。プログラム４７Ｂは、ＵＩモジュール６１（以下、ＵＩモジュール６１Ｂと記載する）と、通信モジュール６２とを有する。
【０１１２】
ＵＩモジュール６１ＡとＵＩモジュール６１Ｂとは、実施形態で説明した処理を行う機能以外の機能の前部または一部が相違する。例えば、ＵＩモジュール６１ＡとＵＩモジュール６１Ｂとは、ディスプレイ５１に表示させる設定画面や、ユーザが印刷を指示する画像に対する編集機能などが相違する。すなわち、ＵＩモジュール６１ＡとＵＩモジュール６１Ｂとは、実施形態で説明した処理をそれぞれ行うことができる別種のＵＩモジュール６１である。
【０１１３】
プログラム４７Ａが有する通信モジュール６２と、プログラム４７Ｂが有する通信モジュール６２とは、同構成である。
【０１１４】
プログラム４７Ａが起動すると、ＵＩモジュール６１Ａが起動する。起動したＵＩモジュール６１Ａは、通信モジュール６２をテンポラリフォルダに記憶させることをＯＳ４６に指示する。指示されたＯＳ４６により、通信モジュール６２がテンポラリフォルダに記憶される。
【０１１５】
プログラム４７Ａの起動後、プログラム４７Ｂが起動すると、プログラム４７Ｂは、上述の実施形態と同様に、通信モジュール６２をテンポラリフォルダに記憶させることをＯＳ４６に指示する。指示されたＯＳ４６は、通信モジュール６２がテンポラリフォルダに既に記憶されていることにより、通信モジュール６２をテンポラリフォルダに新たに記憶しない。すなわち、プログラム４７Ａ及びプログラム４７Ｂが起動しても、１つの通信モジュール６２しかテンポラリフォルダに記憶されない。したがって、プログラム４７Ａ及びプログラム４７Ｂがそれぞれ通信モジュール６２をテンポラリフォルダに記憶させる場合に比べ、使用するテンポラリフォルダの容量が少なくなる。
【０１１６】
また、プログラム４７Ａ及びプログラム４７Ｂは、起動すると、上述の実施形態と同様にＯＳ４６のロック機能を利用して、通信モジュール６２をそれぞれロックし、動作を終了する際に、通信モジュール６２のロックをそれぞれ解除する。したがって、プログラム４７Ａ及びプログラム４７Ｂの両方のプログラムが動作を終了するまでは、通信モジュール６２は、テンポラリフォルダから消去されない。その結果、プログラム４７Ａ及びプログラム４７Ｂは、どちらか一方のプログラム４７が先に動作を終了したとしても、通信モジュール６２を通じてプリンタ１１と通信を行うことができる。
【０１１７】
[その他の変形例]
上述の変形例では、ＵＩモジュール６１の機能が互いに相違するプログラム４７Ａとプログラム４７ＢとがＰＣ１２にインストールされた例を説明した。しかしながら、同一の２つのプログラム４７がＰＣ１２にインストールされ、同一の２つのプログラム４７が起動したとしても、上述の変形例と同様に、１つの通信モジュール６２しかテンポラリフォルダに記憶されない。また、２つのＵＩモジュール６１がともに動作を終了しない限り、通信モジュール６２はテンポラリフォルダから消去されない。
【０１１８】
また、上述の実施形態では、ラベルプリンタであるプリンタ１１を説明したが、プリンタ１１は、家庭用ラベルプリンタであってもよいし、マスキングテープのような装飾用シートの作成に使われる飾り付けラベル用プリンタであってもよい。食品のパッケージや、電気ケーブルに貼り付けるラベルや、大量のラベルを一度に生成することが必要な用途に使われるプロ向けラベルプリンタであってもよい。プリンタ１１は、ラベルプリンタ以外のプリンタであってもよい。例えば、プリンタ１１は、ページプリンタや、金属や木材やガラスなどを印刷媒体とし、レーザ光などで印刷媒体の表面を加工する加工プリンタであってもよい。
【０１１９】
また、上述の実施形態では、フォントデータを第２データの一例として説明した。しかしながら、第２データは、例えば、葉書の通信面に印刷する背景画像を示す背景画像データなどの画像データであってもよいし、ウォーターマークなどであってもよい。
【０１２０】
また、上述の実施形態では、プログラム４７が、ＵＩモジュール６１と通信モジュール６２とを含む実行ファイルである例を説明した。しかしながら、ＵＩモジュール６１のみが実行ファイルであってもよい。起動したＵＩモジュール６１は、ＵＲＬを指定してＯＳ４６にコマンドを入力する。当該コマンドを入力されたＯＳ４６は、ＵＲＬが示す通信モジュール６２をインターネットを通じてダウンロードして取得し、テンポラリフォルダに記憶させる。
【符号の説明】
【０１２１】
１１・・・プリンタ
１２・・・ＰＣ
４２・・・ＣＰＵ
４３・・・メモリ
４７・・・プログラム
５１・・・ディスプレイ
５２・・・ユーザＩ／Ｆ
５３・・・ネットワークＩ／Ｆ
６１・・・ＵＩモジュール
６２・・・通信モジュール
【図１】
2019128686.tif 000003
【図２】
2019128686.tif 000004
【図３】
2019128686.tif 000005
【図４】
2019128686.tif 000006
【図５】
2019128686.tif 000007
【図６】
2019128686.tif 000008
【図７】
2019128686.tif 000009
【図８】
2019128686.tif 000010
【図９】
2019128686.tif 000011