(57)【要約】【課題】ポートの状態を高速で確認できる通信制御方法および通信制御装置を、提供することを目的とする。  【解決手段】本発明の通信制御方法は、デバイス機器２と、情報機器１とを、情報機器１のポートを介して接続する通信制御方法であって、情報機器１の第二のモジュールがオブジェクトを作成するとともに、第一のモジュールからの接続の指示に基づきデバイス機器２との接続処理および接続終了時にオブジェクトを破棄するステップと、デバイス機器２への接続を指示する際、オブジェクトの既作成の有無を確認するステップと、オブジェクトが作成されていない場合に、ポートが閉じておりデバイス機器２が接続されていないと判断し、ポートを開いてデバイス機器２の接続を指示し、オブジェクトが既に作成されている場合に、ポートが開いておりデバイス機器２が接続されていると判断して上位層にその旨通知するステップとを有している。【選択図】図５
2005244790.tif 000002
【特許請求の範囲】
【請求項１】
デバイス機器と、該デバイス機器を制御する第一のモジュールおよび第二のモジュールを備えた情報機器とを、該情報機器のポートを介して接続する通信制御方法であって、
前記第一のモジュールが前記第二のモジュールへ前記デバイス機器の接続を指示するステップと、
前記第二のモジュールが前記第一のモジュールからの接続の指示に基づき前記ポートを介して前記デバイス機器を接続していることを示すオブジェクトを作成するとともに、前記デバイス機器との接続処理を行い、その後接続の切断時に前記オブジェクトを破棄するステップと、
前記第一のモジュールが前記デバイス機器への接続を前記第二のモジュールに指示する際、オブジェクトが既に作成されているかどうかを、前記第一のモジュールが確認するステップと、
前記オブジェクトが作成されていない場合に、前記第一のモジュールは前記ポートが閉じており前記デバイス機器が接続されていないと判断し前記第二のモジュールに前記ポートを開いて前記デバイス機器の接続を指示し、前記オブジェクトが既に作成されている場合に、前記第一のモジュールは前記ポートが開いており前記デバイス機器が接続されていると判断してその旨を上位層に通知するステップと、
を有する通信制御方法。
【請求項２】
請求項１に記載の通信制御方法において、
前記第二のモジュールが前記オブジェクトを作成するステップでは、前記オブジェクトに前記デバイス機器と前記ポートとが互いに対応していることを示す固有名を付与する通信制御方法。
【請求項３】
プリンタと、該プリンタを制御する第一のモジュールおよび第二のモジュールを備えた情報機器とを、該情報機器のポートを介して接続する通信制御方法であって、
前記第一のモジュールが前記第二のモジュールへ前記プリンタの接続を指示するステップと、
前記第二のモジュールが前記第一のモジュールからの接続の指示に基づき前記ポートを介して前記プリンタを接続していることを示すオブジェクトを作成するとともに、前記プリンタとの接続処理を行い、その後接続の切断時に前記オブジェクトを破棄するステップと、
前記第一のモジュールが前記プリンタへの接続を前記第二のモジュールに指示する際、オブジェクトが既に作成されているかどうかを、前記第一のモジュールが確認するステップと、
前記オブジェクトが作成されていない場合に、前記第一のモジュールは前記ポートが閉じており前記プリンタが接続されていないと判断し前記第二のモジュールに前記ポートを開いて前記プリンタの接続を指示し、前記オブジェクトが既に作成されている場合に、前記第一のモジュールは前記ポートが開いており前記プリンタが接続されていると判断してその旨を上位層に通知するステップと、
を有する通信制御方法。
【請求項４】
請求項３に記載の通信制御方法において、
前記第二のモジュールが前記オブジェクトを作成するステップでは、前記オブジェクトに前記プリンタと前記ポートとが互いに対応していることを示す固有名を付与する通信制御方法。
【請求項５】
プリンタと、該プリンタを制御する情報機器とを、該情報機器のポートを介して接続するために該情報機器に備えられた通信制御装置であって、
プリンタモジュールからの前記プリンタとの接続の指示に基づき前記ポートを介して前記プリンタを接続していることを示すオブジェクトを作成するとともに、前記プリンタとの接続処理を行い、その後接続切断時に前記オブジェクトを破棄する通信制御モジュールと、
前記プリンタへの接続を前記通信制御モジュールに指示する際、オブジェクトが既に作成されているかどうかを確認し、前記オブジェクトが作成されていない場合に、前記ポートが閉じており前記プリンタが接続されていないと判断し前記通信制御モジュールに前記ポートを開いて前記プリンタの接続を指示し、前記オブジェクトが既に作成されている場合に、前記ポートが開いており前記プリンタが接続されていると判断してその旨を上位層に通知するプリンタモジュールと、
を備えた通信制御装置。
【請求項６】
プリンタと、該プリンタとポートを介して接続するための第一のモジュールおよび第二のモジュールとしてコンピュータを機能させるプログラムであって、
前記第一のモジュールが前記第二のモジュールへ前記プリンタの接続を指示するステップと、
前記第二のモジュールが前記第一のモジュールからの接続の指示に基づき前記ポートを介して前記プリンタを接続していることを示すオブジェクトを作成するとともに、前記プリンタとの接続処理を行い、その後接続の切断時に前記オブジェクトを破棄するステップと、
前記第一のモジュールが前記プリンタへの接続を前記第二のモジュールに指示する際、オブジェクトが既に作成されているかどうかを、前記第一のモジュールが確認するステップと、
前記オブジェクトが作成されていない場合に、前記第一のモジュールは前記ポートが閉じており前記プリンタが接続されていないと判断し前記第二のモジュールに前記ポートを開いて前記プリンタの接続を指示し、前記オブジェクトが既に作成されている場合に、前記第一のモジュールは前記ポートが開いており前記プリンタが接続されていると判断してその旨を上位層に通知するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポートの状態を高速で確認するための通信制御方法および通信制御装置に関する。
【背景技術】
【０００２】
従来、情報機器のポートを介して、外部デバイス機器を接続している情報機器において、ポートが使用可能かどうか、つまりポートを開くことができるかどうかを判断するために、実際にポートを開く処理を行い、処理に対するレスポンスの内容で判断している。デバイス機器が使用中である場合、ポートを開く処理を行うと、新たにポートを開くことができずエラーが返ってくる。これにより、ポートが既に開いていると判断できる。
【０００３】
特許文献１に、情報機器に情報機器のポートを介して外部デバイスの通信機器を接続する方法が記されている。情報機器は、接続可能な通信機器がサポートするそれぞれの通信規約に対応する複数の通信制御部を持っており、該当通信制御部と通信機器とを接続するポートが開けることを確認して、情報機器と通信機器とを接続する。
【０００４】
【特許文献１】特開２００３−２６４６０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来の方法では、ポートが開けるかどうかを確認するためには、ポートを開く処理を行い、外部デバイスに直接アクセスして確認をしている。そのため、ポートを開く処理は、確認処理をしてレスポンスが返ってくるまでに、たいへん時間のかかる処理となっている。
【課題を解決するための手段】
【０００６】
そこで本発明は、上記課題に鑑みてなされており、ポートの状態を高速で確認できる通信制御方法および通信制御装置を、提供することを目的とする。
【０００７】
本発明の通信制御方法は、デバイス機器と、デバイス機器を制御する第一のモジュールおよび第二のモジュールを備えた情報機器とを、情報機器のポートを介して接続する通信制御方法であって、第一のモジュールが第二のモジュールへデバイス機器の接続を指示するステップと、第二のモジュールが第一のモジュールからの接続の指示に基づきポートを介してデバイス機器を接続していることを示すオブジェクトを作成するとともに、デバイス機器との接続処理を行い、その後接続切断時にオブジェクトを破棄するステップと、第一のモジュールがデバイス機器への接続を第二のモジュールに指示する際、オブジェクトが既に作成されているかどうかを、第一のモジュールが確認するステップと、オブジェクトが作成されていない場合に、第一のモジュールはポートが閉じておりデバイス機器が接続されていないと判断し第二のモジュールにポートを開いてデバイス機器の接続を指示し、オブジェクトが既に作成されている場合に、第一のモジュールはポートが開いておりデバイス機器が接続されていると判断してその旨を上位層に通知するステップとを有している。
【０００８】
この通信制御方法によれば、情報機器とデバイス機器とは、情報機器のポートを介して接続されている。この状態をポートが開いているという。第一のモジュールが第二のモジュールへ指示してポートを開くときに、情報機器のポートを介してデバイス機器を接続していることを示すオブジェクトを、第二のモジュールが作成する。情報機器からデバイス機器へ新たにアクセスするときに、デバイス機器が既に使用状態にあるかどうかは、オブジェクトが既に作成されているかどうかを第一のモジュールが確認すれば判断できる。オブジェクトが作成されていない場合、つまりポートが閉じておりデバイス機器が接続されていない場合、第一のモジュールは第二のモジュールに対し、オブジェクトの作成および接続を指示し、その結果、第二のモジュールがポートを開いてデバイス機器の接続を行う。接続が終了するとオブジェクトを破棄する。また、オブジェクトが既に作成されている場合、つまりポートが開いておりデバイス機器が接続されている場合、新たな接続はできないため上位層へその旨通知する。第一および第二のモジュールがそれぞれ役割を分担すると共に、デバイス機器へ直接アクセスして確認する手間が必要ないため、迅速な確認が可能である。
【０００９】
この場合、第二のモジュールがオブジェクトを作成するステップでは、オブジェクトにデバイス機器とポートとが互いに対応していることを示す固有名を付与することが好ましい。
【００１０】
この構成によれば、オブジェクトは、デバイス機器と情報機器のポートを表す固有名であり、オブジェクトを確認すれば、デバイス機器とポートとが特定できる。つまり、どのようなデバイス機器を接続したポートが開かれているかが、デバイス機器へアクセスせずに確認できる。
【００１１】
本発明の通信制御方法は、プリンタと、プリンタを制御する第一のモジュールおよび第二のモジュールを備えた情報機器とを、情報機器のポートを介して接続する通信制御方法であって、第一のモジュールが第二のモジュールへプリンタの接続を指示するステップと、第二のモジュールが第一のモジュールからの接続の指示に基づきポートを介してプリンタを接続していることを示すオブジェクトを作成するとともに、プリンタとの接続処理を行い、その後接続切断時にオブジェクトを破棄するステップと、第一のモジュールがプリンタへの接続を第二のモジュールに指示する際、オブジェクトが既に作成されているかどうかを、第一のモジュールが確認するステップと、オブジェクトが作成されていない場合に、第一のモジュールはポートが閉じておりプリンタが接続されていないと判断し第二のモジュールにポートを開いてプリンタの接続を指示し、オブジェクトが既に作成されている場合に、第一のモジュールはポートが開いておりプリンタが接続されていると判断してその旨を上位層に通知するステップとを有している。
【００１２】
この通信制御方法によれば、情報機器とプリンタとは、情報機器のポートを介して接続されている。この状態をポートが開いているという。第一のモジュールが第二のモジュールへ指示してポートを開くときに、情報機器のポートを介してプリンタを接続していることを示すオブジェクトを、第二のモジュールが作成する。情報機器からプリンタへ新たにアクセスするときに、プリンタが既に使用状態にあるかどうかは、オブジェクトが既に作成されているかどうかを第一のモジュールが確認すれば判断できる。オブジェクトが作成されていない場合、つまりポートが閉じておりプリンタが接続されていない場合、第一のモジュールは第二のモジュールに対し、オブジェクトの作成および接続を指示し、その結果、第二のモジュールがポートを開いてプリンタの接続を行う。接続が終了するとオブジェクトを破棄する。また、オブジェクトが既に作成されている場合、つまりポートが開いておりプリンタが接続されている場合、新たな接続はできないため上位層へその旨通知する。第一および第二のモジュールがそれぞれ役割を分担すると共に、プリンタへ直接アクセスして確認する手間が必要ないため、迅速な確認が可能である。
【００１３】
この場合、第二のモジュールがオブジェクトを作成するステップでは、オブジェクトにプリンタとポートとが互いに対応していることを示す固有名を付与することが好ましい。
【００１４】
この構成によれば、オブジェクトは、プリンタと情報機器のポートを表す固有名であり、オブジェクトを確認すれば、プリンタとポートとが特定できる。つまり、どのようなプリンタを接続したポートが開かれているかが、プリンタへアクセスせずに確認できる。
【００１５】
本発明の通信制御装置は、プリンタと、プリンタを制御する情報機器とを、情報機器のポートを介して接続するために情報機器に備えられた通信制御装置であって、プリンタモジュールからのプリンタとの接続の指示に基づきポートを介してプリンタを接続していることを示すオブジェクトを作成するとともに、プリンタとの接続処理を行い、その後接続切断時にオブジェクトを破棄する通信制御モジュールと、プリンタへの接続を通信制御モジュールに指示する際、オブジェクトが既に作成されているかどうかを確認し、オブジェクトが作成されていない場合に、ポートが閉じておりプリンタが接続されていないと判断し通信制御モジュールにポートを開いてプリンタの接続を指示し、オブジェクトが既に作成されている場合に、ポートが開いておりプリンタが接続されていると判断してその旨を上位層に通知するプリンタモジュールとを備えている。
【００１６】
この通信制御装置によれば、情報機器とプリンタとは、情報機器のポートを介して接続されている。この状態をポートが開いているという。この時、情報機器のポートを介してデバイス機器を接続していることを示すオブジェクトを、通信制御モジュールが作成する。情報機器からプリンタへ新たにアクセスするときに、プリンタが既に使用状態にあるかどうかは、ポートが開いているかどうかを確認すれば判断できる。ポートが開いているかどうかの確認は、該当するオブジェクトが既に作成されているかどうかを確認すれば判断できる。オブジェクトは情報機器の通信制御モジュールに作成されており、プリンタモジュールによって該当オブジェクトの確認を行う。オブジェクトが作成されていない場合、つまりポートが閉じておりプリンタが接続されていない場合、通信制御モジュールがポートを開いてプリンタの接続を行う。また、オブジェクトが既に作成されている場合、つまりポートが開いておりプリンタが接続されている場合、新たな接続はできないため通信制御モジュールが新たなオブジェクトの破棄を行う。プリンタモジュールおよび通信制御モジュールがそれぞれ役割を分担すると共に、プリンタへ直接アクセスして確認する手間が必要ないため、迅速な確認が可能である。
【００１７】
本発明のプログラムは、プリンタと、プリンタとポートを介して接続するための第一のモジュールおよび第二のモジュールとしてコンピュータを機能させるプログラムであって、第一のモジュールが第二のモジュールへプリンタの接続を指示するステップと、第二のモジュールが第一のモジュールからの接続の指示に基づきポートを介してプリンタを接続していることを示すオブジェクトを作成するとともに、プリンタとの接続処理を行い、その後接続切断時にオブジェクトを破棄するステップと、第一のモジュールがプリンタへの接続を第二のモジュールに指示する際、オブジェクトが既に作成されているかどうかを、第一のモジュールが確認するステップと、オブジェクトが作成されていない場合に、第一のモジュールはポートが閉じておりプリンタが接続されていないと判断し第二のモジュールにポートを開いてプリンタの接続を指示し、オブジェクトが既に作成されている場合に、第一のモジュールはポートが開いておりプリンタが接続されていると判断してその旨を上位層に通知するステップとを、コンピュータに実行させるためのものである。
【００１８】
このプログラムによれば、プログラムを搭載したコンピュータとプリンタとは、コンピュータのポートを介して接続されている。この状態をポートが開いているという。プログラムはコンピュータに第一のモジュールおよび第二のモジュールとしての機能をさせる。第一のモジュールが第二のモジュールへ指示してポートを開くときに、ポートを介してプリンタを接続していることを示すオブジェクトを、第二のモジュールが作成する。プリンタへ新たにアクセスするときに、プリンタが既に使用状態にあるかどうかは、オブジェクトが既に作成されているかどうかを第一のモジュールが確認すれば判断できる。オブジェクトが作成されていない場合、つまりポートが閉じておりプリンタが接続されていない場合、第一のモジュールは第二のモジュールに対し、オブジェクトの作成および接続を指示し、その結果、第二のモジュールがポートを開いてプリンタの接続を行う。接続が終了するとオブジェクトを破棄する。また、オブジェクトが既に作成されている場合、つまりポートが開いておりプリンタが接続されている場合、新たな接続はできないため上位層へその旨通知する。第一および第二のモジュールがそれぞれ役割を分担すると共に、プリンタへ直接アクセスして確認する手間が必要ないため、迅速な確認が可能である。このような動作をコンピュータに実行させるするためのプログラムである。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して、本発明の通信制御方法について説明する。システム構成として、ホストコンピュータ（情報機器）にそのポートを介してデバイス機器が接続されている。
【００２０】
図１は、ホストコンピュータ（以下ホストと記載する。）にデバイス機器を接続した構成の本実施形態に係るシステム構成図である。ホスト１は、各種目的の処理をホスト１に行わせるための上位層のアプリケーション３と、デバイス機器２を制御するデバイスドライバ４と、システム全体をコントロールするＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）５とを備えている。
【００２１】
アプリケーション３は、文書作成、表計算、ＰＯＳ用レシート作成等の様々な処理を、ホスト１に行わせるためのものである。デバイスドライバ４は、デバイス機器２を制御し、各種の関数（メソッド）、変数（プロパティ）およびイベントの標準インタフェースを有するコントロールオブジェクトと、デバイス機器２を制御するコマンドを有するサービスオブジェクトと、を備え、アプリケーション３のコマンドを該当デバイス機器２が対応するコマンドへ変換して、アプリケーション３の指令に基づいた処理をデバイス機器に行わせる。
【００２２】
その際、デバイスドライバ４は、ポートを開き、ポートを介して、デバイス機器２とホスト１とを接続する。この時、すでにポートが開かれてデバイス機器２が使用中であると、ポートをさらに開くことはできず、該当アプリケーション３とデバイス機器２とは接続できない。ポートがすでに開かれているかどうかは、通常、デバイス機器２にアクセスして、デバイス機器２の状態確認の上で判断している。本実施形態は、デバイス機器２までアクセスすることなく、迅速にポートの状態を確認することができる方法である。その方法について、デバイス機器２がプリンタである場合を例にして、具体的に説明する。
（第一の実施形態）
【００２３】
図２は、ホストの構成を詳細に表したブロック図であって、デバイスドライバ４の構成を詳細に表している。図２ではコントロールオブジェクトとサービスオブジェクトを省略している。デバイスドライバ４は、アプリケーション３等の上位層や、以下に述べる画像展開ライブラリ１１およびプリンタモジュール１２との仲介を行うホストモジュール１０と、ホストモジュール１０から指定された画像データを作成して、ホストモジュール１０へ送信する画像展開ライブラリ１１と、ホストモジュール１０から渡された画像データをプリンタ６のコマンドに対応するデータへ変換して、以下に述べる通信制御モジュールへ送信するプリンタモジュール（第一のモジュール）１２と、プリンタモジュール１２からのデータをプリンタ６へ送信する通信制御モジュール（第二のモジュール）１３とを有する。
【００２４】
これらの構成によれば、例えば、アプリケーション３で作成されたＯＳ５の標準文字列をコントロールオブジェクトとサービスオブジェクトとを介してホストモジュール１０が受け、画像展開ライブラリ１１にて各文字を画像として作成する。この文字画像による文字列は、ホストモジュール１０を経てプリンタモジュール１２へ送信される。プリンタモジュール１２では、文字画像のデータをプリンタ６が認識するデータへ変換し、通信制御モジュール１３へ送信する。通信制御モジュール１３は、変換されたデータをプリンタ６へ送信し、プリンタ６は、指定された印字を行う。
【００２５】
また、通信制御モジュール１３は、プリンタ６からのプリンタ６の状態に関する情報の受信を行い、プリンタモジュール１２へ送信する。プリンタモジュール１２は、プリンタ６の状態に関する情報の解析を行い、ホストモジュール１０へ解析結果の通知を送信する。通知に基づき、仲介役としてのホストモジュール１０は、サービスオブジェクトとコントロールオブジェクトとを介してアプリケーション３等へプリンタ６の状態を送信する。このようにプリンタ６の状態に関する情報の伝達機能も、それぞれが果たす。
【００２６】
次に、ホスト１とプリンタ６とを接続する場合のデバイスドライバ４の作用について、図３（ａ），（ｂ）を参照して説明する。図３（ａ），（ｂ）では画像展開ライブラリ１１を省略している。まず、図３（ａ）に示すように、アプリケーション３ａがプリンタ（Ａ）６ａに印字をさせようとすると、印字命令がホストモジュール１０を仲介として、プリンタモジュール１２へ送信される。プリンタモジュール１２は、通信制御モジュール１３にポート接続を指示し、プリンタ（Ａ）６ａとこれに対応するポートとを示す名称を通信制御モジュール１３を作成する。この名称は、オブジェクト（同期オブジェクト）と呼ばれ、例えば「ＰＲＩＮＴＥＲ  Ａ」というようなオブジェクト２０となる。
【００２７】
そして、通信制御モジュール１３は、プリンタ（Ａ）６ａとの接続のためのポートを開く処理を行う。なお、接続が終了すると、通信制御モジュール１３は、オブジェクト２０を破棄してポートを閉じる。プリンタモジュール１２は、ポートの状態確認のため、「ＰＲＩＮＴＥＲ  Ａ」というオブジェクト２０が、既に、通信制御モジュール１３内に存在しているかどうかを確認する。図３（ａ）に示すように、通信制御モジュール１３内に該当するオブジェクト２０が存在しなければ、ポートを開いてプリンタ（Ａ）６ａと接続が可能と判断できる。
【００２８】
プリンタ（Ａ）６ａの接続が可能な場合、図３（ｂ）に示すように、通信制御モジュール１３はポートを開き、ポートを介してホスト１とプリンタ（Ａ）６ａとの接続を行う。プリンタ（Ａ）６ａが接続された状態の時に、さらにプリンタ（Ａ）６ａに新たに接続しようとしても、再び作成した「ＰＲＩＮＴＥＲ  Ａ」というオブジェクト２０が、通信制御モジュール１３内に既に存在しているため、通信制御モジュール１３に接続指示しなくても、プリンタ（Ａ）６ａが使用中であることが判断できる。
【００２９】
オブジェクト２０、２１を「ＰＲＩＮＴＥＲ  Ａ」と記述したが、オブジェクト２０、２１は、プリンタ（Ａ）６ａとプリンタ（Ａ）６ａに対応するポートとを表すものであり、実際は、より詳細が記述される。例えば、プリンタ（Ａ）６ａが、ＡＢＣ社の機種コードＤＥ−Ｆ１００であり、対応するポートがＰＱＲＳであるとすると、オブジェクト２０、２１は、「ＡＢＣ  ＰＱＲＳ  ＤＥ−Ｆ１００（１）」のようになる。明細書上は「ＰＲＩＮＴＥＲ  Ａ」を用いて説明する。
【００３０】
以上説明した内容を、フローチャートに基づいて、順を追って詳しく説明する。図４は、ポートを開くためのプリンタモジュール１２の作用を示すフローチャートである。プリンタモジュール１２は、ホストモジュール１０からの画像データを変換し通信制御モジュール１３へ送信する。通信制御モジュール１３は、オブジェクト２０を作成してポートを開き、プリンタ（Ａ）６ａとの接続を行う。
【００３１】
プリンタモジュール１２は、ステップＳ１にて、プリンタ（Ａ）６ａとの接続のためのポートが、使われていないかどうかの判断を行う。ポートが使われていなければ、ステップＳ２において指定されたプリンタ情報をレジストリから取得する。このシステムでは、接続されているプリンタ６の各情報がＯＳ５のレジストリに記述されている。プリンタモジュール１２は、ホストモジュール１０から指定されたプリンタ名（例えばＤＥ−Ｆ１００）を基に、レジストリ情報を見に行き、ポートを開くために必要なポートに関する詳細情報を取得する。
【００３２】
ステップＳ１でポートが使われていれば、プリンタ（Ａ）６ａが既に使用中であり、ステップＳ８でその旨を上位層へ通知する。上位層はホストモジュール１０であり、さらに上位層のアプリケーション３へ通知される。ここで、ステップＳ１におけるポートが使われていないかどうかをプリンタモジュール１２が判断するためのフローについて、さらに詳しく、図５を参照して説明する。
【００３３】
まず、プリンタモジュール１２は、ステップＳ２１において、指定されたプリンタ名でオブジェクト２０を作成する。オブジェクト２０の作成は、ＯＳ５のＣｒｅａｔｅ  Ｍｕｔｅｘ関数を実行して作成する。このオブジェクト２０は、図３（ａ）に示す例示としての「ＰＲＩＮＴＥＲ  Ａ」である。次に、プリンタモジュール１２は、ステップＳ２２において、通信制御モジュール１３にオブジェクト２０と同じオブジェクト２１が既に作成済みかどうかを確認する。確認方法としては、例えばＯＳ５が持つ関数ＧｅｔＬａｓｔＥｒｒｏｒを実行し、その戻り値によってオブジェクト２１の存在を判断する。
【００３４】
ステップＳ２３では、該当するオブジェクト２１がないかどうかを判断する。該当するオブジェクト２１がある場合（ＮＯの判断）、ポートが既に開かれており、即ちプリンタ（Ａ）６ａが使用されていると判断できる。よって、図４のステップＳ８へ進み上位層のホストモジュール１０へ判断内容を通知する。この場合、関数ＧｅｔＬａｓｔＥｒｒｏｒの実行に対して、ＥＲＲＯＲ＿ＡＬＲＥＡＤＹ＿ＥＸＩＳＴＳが返ってくることによって、該当オブジェクトが既に作成済であると判断できる。
【００３５】
また、ＥＲＲＯＲ＿ＳＵＣＣＥＳＳが返って来れば、該当オブジェクトがない場合（ＹＥＳの判断）であって、ポートが開かれておらず、即ちプリンタ（Ａ）６ａが使用されていないと判断できる。この場合、図４のステップＳ２へ進む。
【００３６】
ステップＳ２でプリンタ情報を取得した後、プリンタモジュール１２は、ステップＳ３においてポートを開く処理を指示する。指示する先は、通信制御モジュール１３である。次のステップＳ４では、通信制御モジュール１３のポートを開く処理の結果を受けて、プリンタモジュール１２としてポートが正常に開けたかどうかの判断をする。ここで、プリンタモジュール１２の指示（Ｓ３）を受けて、通信制御モジュール１３が行うポートを開く処理のフローについて、図６（ａ）を参照して説明する。
【００３７】
通信制御モジュール１３は、プリンタモジュール１２からポートを開く処理を指示されると、ステップＳ３１において、指定されたプリンタ名に対応したオブジェクトを作成する。このオブジェクトは、図３（ｂ）に示すオブジェクト２１が該当する。そして、ステップＳ３２では、オブジェクト２１およびステップＳ２で取得したプリンタ情報とにより、実際にポートを開く処理を行う。ポートを開くには、例えばＯＳ５のＣｒｅａｔｅ  Ｆｉｌｅ関数を実行して行う。ステップＳ３３では、ポートを開く処理の結果、ポートが正常に開けたかどうかを判断する。ポートが正常に開けた場合（ＹＥＳ判断）、ステップＳ３４において、プリンタ（Ａ）６ａと通信制御モジュール１３間の印字データの送信方法などを設定する初期設定を行う。初期設定後、ステップＳ３５において、上位層のプリンタモジュール１２へ処理結果を通知する。ステップＳ３３で、Ｃｒｅａｔｅ  Ｆｉｌｅの実行に対してＥｒｒｏｒが返ってきてポートが正常に開けなかった場合（ＮＯ判断）、ステップＳ３６に移行して、作成したオブジェクト２１を破棄して、ステップＳ３７で、上位層のプリンタモジュール１２へ処理結果を通知する。
【００３８】
プリンタモジュール１２は、ステップＳ３５およびＳ３７の通知を、通信制御モジュール１３から受け取って、図４のステップＳ４のポートが正常に開けたかどうかの判断を行う。ステップＳ３７の通知に基づきＮＯ判断の場合、ステップＳ５において、プリンタ（Ａ）６ａの電源がオフ、または通信制御モジュール１３以外がプリンタ（Ａ）６ａを使用中と判断し、ステップＳ８で、上位層のホストモジュール１０へ通知する。
【００３９】
また、ステップＳ３５の通知に基づきＹＥＳ判断の場合、ステップＳ６に移行して、プリンタ（Ａ）６ａに現在の設定状況を問い合わせる。設定状況の内容は、印字できる色の設定、レシート紙やラベル紙等の用紙の設定、装着されている自動給紙装置等のオプションに関することである。次に、ステップＳ７において、設定内容の問い合わせに、プリンタ（Ａ）６ａからの応答が返ってきたかどうかを判断する。応答が返ってくれば、プリンタ（Ａ）６ａが使用可能な状態と判断し（ＹＥＳ判断）、ステップＳ８で、上位層のホストモジュール１０へ通知する。
【００４０】
応答が返ってこなければ、プリンタ（Ａ）６ａが使用不可能なオフラインの状態と判断する（ＮＯ判断）。そして、ステップＳ９において、プリンタ（Ａ）６ａの蓋がオープン状態でオフラインになっている等のオフライン要因解析を行い、ステップＳ１０では、ステップＳ３１で作成したオブジェクト２１を破棄する。つまり、ポートが開けなかった場合と同じことである。プリンタモジュール１２は、ステップＳ８へ進み、ステップＳ９およびＳ１０の内容を上位層のホストモジュール１０へ通知する。
【００４１】
オフライン要因解析結果は、上位層へエラーコードとなって返され、例えばアプリケーション３ａが、プリンタ（Ａ）６ａを正常な印字可能状態へ戻すために、蓋のクローズを促す指示を出すため等に利用される。指示方法としては、ＬＥＤによる点灯あるいは点滅、表示装置による警告表示などがある。
【００４２】
プリンタ（Ａ）６ａが使用可になると、通信制御モジュール１３は、図６（ｂ）のステップＳ３８にて指定された印刷または印刷データの送信が終了するまで接続を維持する。印刷または印刷データの送信が終了すると、ステップＳ３９において、オブジェクト２１を破棄して、一連のフローが終了する。
【００４３】
以上、第一の実施の形態について述べた。第一の実施の形態の効果をまとめる。
【００４４】
（１）ホスト１とホスト１のポートを介して接続されているプリンタ６を表すオブジェクト２１が、ホスト１の通信制御モジュール１３に作成されているため、プリンタ６へ新たなアクセスをしようとする際に、プリンタモジュール１２は、通信制御モジュール１３にオブジェクト２１が作成されているかどうかを確認すれば、ポートの状態、つまりプリンタ６の使用可否の確認が行える。
【００４５】
（２）通信制御モジュール１３に作成されるオブジェクト２１の有無を確認することにより、ポートの状態が、プリンタ６へアクセスせずに確認できるため、確認の高速（迅速）処理が図れる。
【００４６】
（３）ポートの開き方の異なるプリンタ６であっても、本実施形態のシステムの中では、プリンタ６までアクセスせずにポートの状態が確認できるため、プリンタ６接続のためのポートの開き方に関係なく、種々のプリンタ６の接続状態の確認が容易にできる。
【００４７】
（４）ホスト１とプリンタ６の接続方法は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）接続をはじめ各種の接続方法に対応できる。
（第二の実施形態）
【００４８】
次に、アプリケーション３がアプリケーション３ａ、アプリケーション３ｂの２種類、および接続されているプリンタ６がプリンタ（Ａ）６ａ、プリンタ（Ｂ）６ｂの２台の場合について、第二の実施形態として説明する。なお、図３、図７中のアプリケーションに付与されている（１），（２）は２つのアプリケーションを単に区別するためのものである。
【００４９】
図７は、第二の実施形態におけるオブジェクトによるポートの状態確認を示すシステム構成図である。図３の第一の実施形態とはアプリケーション３とプリンタ６の数が異なっているだけであり、重複する説明は省略する。アプリケーション３ａは、図３（ｂ）で説明したように、既にプリンタ（Ａ）６ａと接続状態にあり、通信制御モジュール１３内にオブジェクト２１（「ＰＲＩＮＴＥＲ  Ａ」）が作成されている。なお、画像展開ライブラリ１１は省略している。
【００５０】
この状態の時に、アプリケーション３ｂがプリンタ（Ａ）６ａへ印字処理をさせようとした場合、まず、プリンタモジュール１２が接続を通信制御モジュール１３へ指示し、通信制御モジュール１３は、プリンタ（Ａ）６ａに対応するオブジェクト２２を作成する。オブジェクト２２は、プリンタ（Ａ）６ａと対応しているため、オブジェクト２１と同じ「ＰＲＩＮＴＥＲ  Ａ」となる（図５のＳ２１）。そして、プリンタモジュール１２は、オブジェクト２２と同じオブジェクト「ＰＲＩＮＴＥＲ  Ａ」が、通信制御モジュール１３に作成済かどうかを確認する（図５のＳ２２）。この場合、通信制御モジュール１３には、既に同じオブジェクト「ＰＲＩＮＴＥＲ  Ａ」が作成されており、プリンタモジュール１２は、該当オブジェクトがあると判断する（図５のＳ２３）。こうして、通信制御モジュール１３の段階で、既にポートが開かれてプリンタ（Ａ）６ａが使用中であると判断できる。この方法は、プリンタ（Ａ）６ａにアクセスせずにポート状態を判断できるため、迅速な判断ができる。
【００５１】
また、アプリケーション３ｂがプリンタ（Ｂ）６ｂに印字処理をさせようとした場合、プリンタモジュール１２は、オブジェクトとして「ＰＲＩＮＴＥＲ  Ｂ」を作成する（図５のＳ２１に該当）。そして、通信制御モジュール１３に「ＰＲＩＮＴＥＲ  Ｂ」に該当するオブジェクトが作成済みかどうかを確認する（図５のＳ２２に該当）。この場合、通信制御モジュール１３には、同じオブジェクト「ＰＲＩＮＴＥＲ  Ｂ」が作成されておらず、プリンタモジュール１２は、該当オブジェクトが無いと判断する（図５のＳ２３に該当）。こうして、ポートが開かれておらずプリンタ（Ｂ）６ｂが使用されていないと判断できる。以降、図４のステップＳ２からのフローに基づいてプリンタ（Ｂ）６ｂへの接続がなされる。この場合においても、プリンタ（Ｂ）６ｂにアクセスすることなくポート状態を判断できるため、接続可否について迅速な判断ができる。
【００５２】
以下に、第二の実施形態の効果を述べる。
【００５３】
（１）同じプリンタ６を複数接続した場合でも、それぞれ異なったオブジェクト２１が作成されるため、個別に接続の状態確認ができる。
【００５４】
（２）複数のプリンタを、ＵＳＢや無線接続などの異なった接続で接続しても、オブジェクト２１の作成により、同じ確認方法でそれぞれのプリンタの接続の状態確認ができる。
【００５５】
また、第一および第二の実施形態に限定されず、その他の変形例を以下に述べる。
【００５６】
（１）デバイス機器２は、プリンタ６だけでなく、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＦＤＤ（Ｆｌｏｐｐｙ（Ｒ）  Ｄｉｓｋ  Ｄｒｉｖｅ）、通信端末など情報機器のポートを介して接続されるデバイス機器であっても良い。
【００５７】
（２）オブジェクト２０の名称は、プリンタ６とポートとを対応させた名称のほか、プリンタ６と通信制御モジュール１３のバージョン名、プリンタ６と制御システム名などの外、接続確認できればオブジェクトはフラグであっても良い。
【００５８】
（３）ポートが使われていないことを確認する（ステップＳ１）ためのオブジェクト２０と、実際にポートを開く（ステップＳ３２）ためのオブジェクト２１とは、オブジェクト２１がオブジェクト２０を包含する名称であれば、それぞれ異なった名称であっても良い。
【００５９】
なお、以下に請求項、実施の形態、変形例から把握される請求項以外の技術的思想を述べる。
（技術的思想１）プリンタと、該プリンタとポートを介して接続する機能をコンピュータに実行させるプログラムであって、通信制御モジュールがプリンタモジュールからの前記プリンタとの接続の指示に基づき前記ポートを介して前記プリンタを接続していることを示すオブジェクトを作成するとともに、前記プリンタとの接続処理を行い、その後接続切断時に前記オブジェクトを破棄するステップと、プリンタモジュールが前記プリンタへの接続を前記通信制御モジュールに指示する際、オブジェクトが既に作成されているかどうかを確認し、前記オブジェクトが作成されていない場合に、前記ポートが閉じており前記プリンタが接続されていないと判断し前記通信制御モジュールに前記ポートを開いて前記プリンタの接続を指示し、前記オブジェクトが既に作成されている場合に、前記ポートが開いており前記プリンタが接続されていると判断してその旨を上位層に通知するステップと、をコンピュータに実行させるためのプログラム。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施形態のシステム構成図。
【図２】デバイスドライバの構成を詳細に表したブロック図。
【図３】第一の実施形態におけるポートを開くためのオブジェクトの状態を示すシステム構成図。
【図４】ポートを開くためのプリンタモジュールの作用を示すフローチャート。
【図５】ポートの状態確認を行うためのプリンタモジュールの作用を示すフローチャート。
【図６】ポートを開くための通信制御モジュールの作用を示すフローチャート。
【図７】第二の実施形態におけるオブジェクトによるポートの状態確認を示すシステム構成図。
【符号の説明】
【００６１】
１…情報機器としてのホストコンピュータ、２…デバイス機器、３（ａ）…アプリケーション、３（ｂ）…アプリケーション、６…プリンタ、６（ａ）…プリンタ（Ａ）、６（ｂ）…プリンタ（Ｂ）、１０…ホストモジュール、１１…画像展開ライブラリ、１２…第一のモジュールとしてのプリンタモジュール、１３…第二のモジュールとしての通信制御モジュール、２０、２１、２２…オブジェクト。
【図１】
2005244790.tif 000003
【図２】
2005244790.tif 000004
【図３】
2005244790.tif 000005
【図４】
2005244790.tif 000006
【図５】
2005244790.tif 000007
【図６】
2005244790.tif 000008
【図７】
2005244790.tif 000009