(57)【要約】【課題】複数の機能を有する機器に対して、独立して動作するアプリケーションやプロセス等からアクセスするシステムにおいて、複数の機能へのアクセスの競合状態を発生させずに機器アクセスを可能とする。【解決手段】  デバイスの機能、使用するプラグイン等のデバイス定義データと、機能毎の動作状態を格納する管理データ領域を設け、このデータを用いて機器へのインターフェースを提供するデーモン処理を設けることにより、ユーザーアプリケーション毎の機器使用レベル、機能の使用レベル毎に機器アクセスの制御を可能とする。【選択図】図１
2007279976.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢデバイスの接続状態を監視する手段と、
機器名と機器が有する機能の種類と機能プラグイン名の関連付けを定義したテーブルと、
前記テーブルを参照して対応する機能プラグインをロードする手段と、
ＵＳＢに接続された機器が有する機能のデバイス名とデバイスの状態を管理する手段とを備え、
前記デバイス状態を管理する手段によってアプリケーションからＵＳＢデバイスへのアクセス制御を行うことを特徴とする印刷システム。
【請求項２】
競合発生時の状態に応じた機器アクセス制御用の定義データを有することにより、競合発生時の状態に応じて動作を切り替えることを特徴とする請求項１に記載の印刷システム。
【請求項３】
機種毎に異なる機器アクセス制御用の定義データを有することにより、機種毎に異なる機器アクセス制御を可能とすることを特徴とする請求項１に記載の印刷システム。
【請求項４】
機器の占有状態を示す領域を設け、ユーザーアプリケーションの機能使用時に、前記機器の占有状態を示す領域に機器の使用中であることを示す情報をセットする機能を有し、ユーザーアプリケーションの機能終了時に機器の占有状態を示す領域から機器が使用中であることを示す情報をリセットする機能を有し、ユーザーが機器を使用中であるかを判定する手段を設けることにより、ユーザーレベルにて、機器の使用に関する排他制御を行うことを可能とすることを特徴とする請求項１に記載の印刷システム。
【請求項５】
機器の機能毎の使用状態を示す領域を設け、指定された機能が使用中であるかを判定する手段を設けることにより、機器の機能レベルでの排他制御を行うことを可能とすることを特徴とする請求項１に記載の印刷システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷システムに関し、特にマルチプロセスシステムにおけるマルチファンクションプリンタへの印刷処理管理制御に関する。
【背景技術】
【０００２】
従来、ＵＮＩＸ（登録商標）系のＯＳにおいて、ＵＳＢに接続された機器のベンダＩＤ及びプロダクトＩＤから、対応するデバイスドライバをロードする機能が用意されている。ただし、この機能では、対応するデバイスドライバのロードは行われるが、それぞれ接続された機器のデータ入出力管理を行うものではない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＵＳＢに、プリンタ機能とスキャナ機能を持つマルチファンクションプリンタ（以下、「ＭＦＰ」と記す）等、複数の機能を持つ機器を接続した場合に、使用する機能に対応するそれぞれのアプリケーションが独立して動作する。そのため、接続機器へのデータ入出力が各々のアプリケーションから発せられ、機器の動作によって、データ入出力の競合状態が発生してしまうことがある。
【０００４】
また、コピー機能のように、１つのアプリケーションにおいて、読み取り処理と印字処理の２つのプロセス（もしくはスレッド）が動作する場合にも、同一のＵＳＢを用いて、それぞれのプロセスが独立してアクセスする動作を行うことがある。そのため、インターフェースの競合状態が発生する可能性がある。
【０００５】
本発明は上記のような点に鑑みてなされたものであり、複数の機能を有する機器に対して、独立して動作するアプリケーションやプロセス等からアクセスするシステムにおいて、複数の機能へのアクセスの競合状態を発生させずに機器アクセスを可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の印刷システムは、ＵＳＢデバイスの接続状態を監視する手段と、機器名と機器が有する機能の種類と機能プラグイン名の関連付けを定義したテーブルと、前記テーブルを参照して対応する機能プラグインをロードする手段と、ＵＳＢに接続された機器が有する機能のデバイス名とデバイスの状態を管理する手段とを備え、前記デバイス状態を管理する手段によってアプリケーションからＵＳＢデバイスへのアクセス制御を行う点に特徴を有する。
【発明の効果】
【０００７】
本発明によれば、複数の機能を有する機器に対して、独立して動作するアプリケーションやプロセス等からアクセスするシステムにおいて、複数の機能へのアクセスの競合状態を発生させずに機器アクセスが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面を参照して、本発明の好適な実施形態について説明する。
（第１の実施形態）
図１は本発明を適用した実施形態に係る印刷システムの全体構成を示す図である。アプリケーション１０１は、本システムにおいて、ユーザー操作によって接続機器を使用する部分であり、本例ではコピー機能を実行する。
【０００９】
コピー機能１０２は、アプリケーション１０１から起動されるコピー機能である。コピー機能１０２は、データの読み取り処理としてのスキャンスレッド１０３と、データ印刷処理としての印刷スレッド１０４を起動する。本実施形態ではスレッドとしているが、スキャンスレッド１０３、印刷スレッド１０４は、それぞれスキャンプロセス、印刷プロセスとして実現することも可能である。
【００１０】
データ領域１０５は、スキャンスレッド１０３からの読み取りデータを格納するための領域であり、本領域から印刷スレッド１０４がデータを取り出して印刷処理を行うための領域である。
【００１１】
定義データ１０６は、ＭＦＰデーモン１０７が参照して、各機能のための動作に必要なデータを定義している領域である。
【００１２】
ＭＦＰデーモン１０７は、本印刷システムにおいて、アプリケーション側の処理とプリンタとのインターフェースを提供する。また、ＵＳＢに機器が接続された場合、定義データ１０６を参照して、各機能に必要なプラグインをロードし、さらに各機能の状態を管理するための管理データ１０８を生成する。本実施形態では、スキャン機能をサポートするためのスキャンプラグイン１０９とプリントプラグイン１１０をロードして管理している。
【００１３】
ＭＦＰプリンタ１１１はＵＳＢに接続されている。本実施形態では、ＭＦＰデーモン１０７は、ＭＦＰプリンタ１１１が接続される前に起動されている必要がある。一般的にデーモンプログラムは、常駐プログラムとして、システム起動時に起動処理が行われる。
【００１４】
図７を参照してＭＦＰデーモンの処理を説明する。ステップＳ７０１にてデーモンの初期化処理が行われる。次に、ステップＳ７０２にて接続機器管理を行うための登録スレッドを起動している。登録スレッドは、ＭＦＰデーモン処理と並行して、プリンタの接続状態を監視し、プリンタの接続状態に応じて、管理データ１０８の生成を行う。
【００１５】
登録スレッド処理については、図８を参照して説明する。登録スレッドでは、ステップＳ８０１にて必要情報の初期化処理を行い、ステップＳ８０２にてタイマー処理を起動している。本実施形態では、一定時間毎にタイマー割り込みを発生させて、そのタイムアウト毎に処理の終了要求及び新規デバイスの接続状況をチェックするようにしている。タイムアウトが発生すると、ステップＳ８０３にて終了要求が発生しているかを判定し、終了要求がある場合には、ステップＳ８０６にてスレッドの後処理を行い終了する。終了要求がない場合、ステップＳ８０４にてデバイスの接続状態のチェックを行っている。新規のデバイスが接続されている場合、ステップＳ８０５にてデバイス登録処理を行う。
【００１６】
図９を参照してデバイス登録処理を説明する。まずステップＳ９０１にて検出したデバイスのオープン処理を行い、ステップＳ９０２にて接続機器のデバイス情報を取得している。デバイス情報の取得にてエラーが発生していないかをステップＳ９０３にて判定し、エラーがない場合は、定義データ１０６からステップＳ９０４で取得したデバイスに対応する情報を取得し、ステップＳ９０５にて取得した定義データのチェックを行っている。
【００１７】
定義データは図２に示すような構造となっている。Printer Name２０１は、接続機器名がセットされており、ＵＳＢに接続された機器名称との比較に使用する。Function Num２０２は機器がサポートする機能の数がセットされており、この値に応じて、以降の機能名及びプラグイン名が用意されている。本実施形態では、２０３にはスキャナ機能サポートがされていることを示す"SCN"の文字列がセットされており、２０４にはスキャナ機能を動作させるためのプラグインプログラムの名称である"Prt1scn"がセットされている。
【００１８】
ステップＳ９０６にて定義データのエラーを判定し、エラーがない場合は、ステップＳ９０７にて管理データ領域のメモリ確保を行っている。ステップＳ９０８にて取得した定義データから対応する機能のプラグイン名を用いて、プラグインのロードを行っている。そして、ステップＳ９０９にて管理データのセット処理を行っている。
【００１９】
図３を参照して管理データについて説明する。全体像としては、領域３０１〜３０７のようなテーブル構造となっている。３０１は接続機器名領域であり、ステップS９０２にて取得した情報の機器の名前をセットする。
【００２０】
３０２は機器をアクセス中のアプリケーションがある場合に、そのアプリケーションのユーザー名をセットする領域である。３０３は機器がサポートしている機能の数をセットする領域であり、ステップS９０４で取得した定義データから値をセットする。
【００２１】
３０４〜３０７の領域は、機器がサポートしている機能の状態を管理するための領域へのポインタをセットする領域であり、本実施形態では、最大１６機能分のポインタ領域を用意している。
【００２２】
各ポインタが指すステータス管理領域は、３０８〜３１０のような構造となっている。３０８はサポートしている機能名を格納しており、本実施形態では、スキャナ機能として、"SCN"の文字列をセットしている。３０９は機能がデバイスアクセスするために使用するデバイスパスを格納する。"/dev/usb/scn0" のような文字列を格納している。３１０は、機能の使用状態を格納する領域であり、本領域に使用中状態等のステータスをセットし、各アプリケーションからのアクセス時に、排他制御を行うために参照する。
【００２３】
３１１〜３１３は２つ目の機能のステータス管理領域であり、本実施形態では、"PRT"の文字列を３１１にセットし、３１２にはプリンタ機能へのデバイスパスをセットする。
【００２４】
ステップＳ９０９では、ステップＳ９０４にて取得した定義データに記述する。新規に接続したデバイスの管理データの生成が完了すると、ステップＳ８０４に戻り、登録がされていない新規デバイスがないかの判定を、再度行っている。新規の接続デバイスがない場合は、ステップＳ８０２に戻り、一定時間のタイマー処理に戻る。
【００２５】
ステップＳ７０２にて起動した登録スレッドが独立して動作するのと並行して、ＭＦＰデーモン処理では、ステップＳ７０３以降の処理で、アプリケーションとのインターフェース処理を行っている。
【００２６】
まず、ステップＳ７０３では、アプリケーションから接続機器への要求を待機しており、要求が発行されると、待機状態を抜けて、ステップＳ７０４に進む。ステップＳ７０４では、本デーモンプロセスの終了シグナル等の受信であるかを判定しており、終了要求であった場合、ステップＳ７１１に進み、起動したスレッドの完了処理等の後処理を行って、デーモン処理を終了している。デーモンの終了要求でない場合は、ステップＳ７０５に進み、アプリケーションからのリクエストデータの読み取りを行う。
【００２７】
読み取ったリクエストデータの判定をステップＳ７０６〜ステップＳ７０９にて行っており、まずステップＳ７０６では、機能のオープン要求であるかを判定している。オープン要求であった場合は、ステップＳ７１２に進み、機能のオープン処理を行っている。
【００２８】
機能のオープン処理において、図３の管理テーブルの対応要素にデータのセットを行っている。スキャナ機能のオープンの場合は、デバイスステータス３１０を使用中状態とする。
【００２９】
また、機能レベルにて、同一の機能を複数の処理で使用できないようにする場合には、デバイスステータス３１０デバイスの状態に応じて、オープン処理を正常終了させる、もしくはエラー終了させることにより、機能オープン要求を行った処理にて排他制御を行うことが可能となる。
【００３０】
また、機能レベルにて、機器アクセスの排他制御を行う場合、指定された機能のデバイスステータスだけでなく、全ての機能の各デバイスステータス領域をチェックし、判定することにより、処理が可能となる。
【００３１】
リクエストデータが読み取り要求であるかをステップＳ７０７にて判定しており、読み取り要求である場合は、ステップＳ７１３にて読み取り処理を行う。リクエストデータが書込み要求であるかをステップＳ７０８にて判定しており、書込み要求である場合は、ステップＳ７１４にて書込み処理を行う。
【００３２】
リクエストデータが機能のクローズ要求であるかをステップＳ７０９にて判定しており、ステップＳ７１５にてクローズ処理を行っている。機能のクローズ処理では、図３の管理テーブルの対応するデバイスステータス領域の状態を変更する。
【００３３】
アプリケーションへのインターフェースを提供している処理では、スキャナプラグイン１０９及び印刷プラグイン１１０を用いて、データの読み込み及び書き出しを行っている。各々のプラグインでのデータの入出力は、インターフェース機能レベルでの排他制御とは別に、プラグイン間にて、コマンドレベルでの排他制御を行う。この排他制御処理は、一般的に、セマフォ等、同時アクセスを防止する仕組みを用いて実装される。
【００３４】
ステップＳ７０６〜ステップＳ７０９の何れのリクエストではない場合に、ステップＳ７１０にてその他の処理を行っている。
【００３５】
ＭＦＰデーモンプログラムが動作している状態で、アプリケーション１０１からコピー機能を実行した場合について、図４を用いて説明する。ステップＳ４０１にて機器のオープン処理を行っている。本処理にて図３管理データのデバイスユーザー名領域３０２にアプリケーションユーザー名をセットする。ユーザー（アプリケーション）単位での排他制御を行う場合、デバイスユーザー名領域３０２の内容を判定し、デバイスオープン処理をエラーとするか、正常終了するかにより制御が可能となる。
【００３６】
次にステップＳ４０２にて、デバイスオープン処理が正常終了したかの判定を行っている。エラーがない場合、ステップＳ４０３に進み、スキャナスレッドの起動処理を行う。本実施形態のコピー機能は、スキャナスレッドと、印刷スレッドを並行して動作させることにより実現している。
【００３７】
スキャンスレッド処理について図５を用いて説明する。ステップＳ５０１では、スキャナスレッド処理のオープン処理を行っている。このオープン処理では、ＭＦＰデーモンのスキャナ機能オープン処理を行っており、図７のステップＳ７１２が実行され、機能レベルでの排他制御を行う場合には、ここでエラーとなる。ステップＳ５０２において、このオープン処理のエラー判定を行っている。エラーでない場合、次にステップＳ５０３にて、スキャナの動作パラメータのセット処理を行っている。
【００３８】
次にステップＳ５０４にてスキャナデータの読み込み処理を行っている。次にステップＳ５０５にて読み取ったデータの終了であるかを判定している。データの終了である場合は、ステップＳ５０９に進み、スキャナ機能のクローズ処理を行い、スレッドの終了処理を行い、スレッドを終了する。
【００３９】
スキャナデータの読み取りが正常であった場合、ステップＳ５０６に進みパケットデータのチェック処理を行う。スキャナからの読み取りデータは、ＭＦＰデーモンのインターフェースを用いるため、パケット化されているため、そのチェックを本ステップにて行っている。
【００４０】
次にステップＳ５０７にて、パケットデータの妥当性についての判定を行っており、有効データでない場合は、ステップＳ５０３に戻る。パケットデータが有効なデータである場合には、ステップＳ５０８にて、読み取ったパケットデータのスキャナデータ部分をデータ領域１０５にセットしている。スキャナ処理と印刷処理は、それぞれ独立してデータ領域１０５のデータをアクセスするため、本領域のアクセスが競合しないように、セマフォ等の仕組みを用いてアクセス制御を行う。
【００４１】
ステップＳ４０３にてスキャナスレッドの起動を行ったら、ステップＳ４０４にて起動が正常終了したかの判定を行っている。正常終了している場合は、ステップＳ４０５にて印刷スレッドの起動を行う。
【００４２】
印刷スレッドについて、図６を用いて説明する。印刷スレッドでは、まずステップＳ６０１にて、印刷機能のオープンを行っている。このオープン処理では、ＭＦＰデーモンの印刷機能オープン処理を行っており、図７のステップＳ７１２が実行され、機能レベルでの排他制御を行う場合には、ここでエラーとなる。ステップＳ６０２において、このオープン処理のエラー判定を行っている。エラーでない場合、次にステップＳ６０３にて、印刷の動作パラメータのセット処理を行っている。
【００４３】
次にステップＳ６０４にてデータ領域１０５からデータを取得している。ステップＳ６０５にて取得したデータに印刷処理していない有効データがあるかを判定している。有効データがない場合は、ステップＳ６０５に戻りデータの取得処理を行う。有効なデータがある場合は、ステップＳ６０６にて取得したデータを印刷用のデータに変換している。ステップＳ６０７では、変換したデータをパケット化して、デーモンのインターフェースを用いて、機器へのデータ書き出し処理を行っている。
【００４４】
次にステップＳ６０８にて、印刷パラメータとして指定されたデータを全て書き出したかの判定を行っている。全てのデータの処理が完了している場合は、ステップＳ６０９にて、機能クローズ処理を行って、スレッドを終了する。
【００４５】
なお、本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
【００４６】
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４７】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００４８】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（基本システム或いはオペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００４９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５０】
【図１】印刷システムの全体構成を示す図である。
【図２】定義データテーブルの例を示す図である。
【図３】管理データテーブルの例を示す図である。
【図４】コピー機能処理を説明するためのフローチャートである。
【図５】スキャンスレッド処理を説明するためのフローチャートである。
【図６】プリントスレッド処理を説明するためのフローチャートである。
【図７】ＭＦＰデーモン処理を説明するためのフローチャートである。
【図８】登録処理スレッド処理を説明するためのフローチャートである。
【図９】登録処理を説明するためのフローチャートである。
【符号の説明】
【００５１】
１０１…アプリケーション
１０２…コピー機能
１０３…スキャンスレッド
１０４…印刷スレッド
１０５…データ領域
１０６…定義データ
１０７…ＭＦＰデーモン
１０８…管理データ
１０９…スキャンプラグイン
１１０…プリントプラグイン
１１１…ＭＦＰプリンタ
【図１】
2007279976.tif 000003
【図２】
2007279976.tif 000004
【図３】
2007279976.tif 000005
【図４】
2007279976.tif 000006
【図５】
2007279976.tif 000007
【図６】
2007279976.tif 000008
【図７】
2007279976.tif 000009
【図８】
2007279976.tif 000010
【図９】
2007279976.tif 000011