(57)【特許請求の範囲】
【請求項１】
１つ以上のコンピュータ読取可能な記憶媒体に実行に備えてエンコードされたロジックを含むコンピュータ周辺装置ドライバであって、前記ロジックはコンピュータに或る手順を実行させ、前記手順は、
当該コンピュータ周辺装置ドライバがサポートする１つ以上のインターフェースフォーマットのリストを周辺装置に送信すること、
当該コンピュータ周辺装置ドライバがサポートするユーザインターフェースチケットの内選択されたものを特定する情報を、前記周辺装置から受信すること、
前記周辺装置のユーザインターフェースを求めるリクエストを、前記コンピュータから前記周辺装置へ送信すること、
前記リクエストの時点における前記周辺装置の機能に基づいて前記周辺装置が作成した前記ユーザインターフェースの説明を、前記周辺装置から受信すること、
前記ユーザインターフェースの前記説明に基づいて１つ以上のグラフィカルユーザインターフェース(GUI)要素を作成し、該GUI要素の表示を引き起こすこと、
前記GUI要素の１つ以上を選択したことを表すユーザ入力を受信すること、
前記ユーザ入力で表現されているように、選択されたGUI要素を説明するユーザインターフェースチケットを作成すること、及び
前記ユーザインターフェースチケットを前記周辺装置に送信すること、
を含む、コンピュータ周辺装置ドライバ。
【請求項２】
複数の利用可能な周辺装置のリストを生成及び表示すること、
該利用可能な周辺装置の内１つを選択したことを示す第２のユーザ入力を受信すること、及び
該第２のユーザ入力で表現されている利用可能な周辺装置の内選択されたものに前記リクエストを送信すること、
を引き起こすロジックを更に有する請求項１記載のコンピュータ周辺装置ドライバ。
【請求項３】
拡張マークアップ言語(XML)ストリーム又はファイル、画像ファイル、画像ファイルをラッピングするXMLストリーム又はファイル、或いは画像ファイルを参照し且つ画像ファイルに関する追加的なメタデータを有するXMLストリーム又はファイル、XULフォーマット、UIMLフォーマット又は他のフォーマットの何れかにおいて、前記ユーザインターフェースの説明を前記周辺装置から受信することを引き起こすロジックを更に有する請求項１記載のコンピュータ周辺装置ドライバ。
【請求項４】
前記周辺装置がサポートするユーザインターフェースフォーマットを特定する情報を前記周辺装置から受信すること、及び
前記情報をテーブルのエントリに格納すること
を引き起こすロジックを更に有し、前記テーブルは、前記周辺装置の識別子と共に、前記ユーザインターフェースの説明のコピーと前記情報とを関連付けるようにした請求項１記載のコンピュータ周辺装置ドライバ。
【請求項５】
前記エントリの時間的価値が失効した場合にのみ、新たなユーザインターフェース説明を求めるリクエストを前記周辺装置に送るのを実行することを引き起こすロジックを更に有する請求項４記載のコンピュータ周辺装置ドライバ。
【請求項６】
アプリケーションプログラムのジョブデータを、前記ユーザインターフェースチケットとは別個に前記周辺装置に送ることを引き起こすロジックを更に有する請求項１記載のコンピュータ周辺装置ドライバ。
【請求項７】
前記周辺装置が、プリンタ、複合機、スキャナ又は仕上げ装置の何れかを有する請求項１記載のコンピュータ周辺装置ドライバ。
【請求項８】
前記ユーザインターフェースの説明が画像マップを有し、前記ユーザインターフェースチケットが１つ以上の座標群を有する請求項１記載のコンピュータ周辺装置ドライバ。
【請求項９】
前記周辺装置のユーザインターフェースを求める第２のリクエストを、前記コンピュータから前記周辺装置へ送信すること、
前記第２のリクエストの時点における前記周辺装置の機能に基づいて前記周辺装置が作成した前記ユーザインターフェースの第２の説明を、前記周辺装置から受信すること、
前記ユーザインターフェースの前記第２の説明に基づいて１つ以上の第２のグラフィカルユーザインターフェース(GUI)要素を作成し、該第２のGUI要素の表示を引き起こすこと、
を引き起こすロジックを更に有し、前記第２の説明は、前記周辺装置の変更された機能に関する新たなグラフィカルユーザインターフェース要素を説明しているようにした請求項１記載のコンピュータ周辺装置ドライバ。
【請求項１０】
前記ユーザインターフェースチケットを受信したことに応答して、前記周辺装置が作成した第２の画像マップを前記周辺装置から受信すること、
前記第２の画像マップの表示を引き起こすこと、
前記第２の画像マップ内の１つ以上の第２の選択を表す第２のユーザ入力を受信すること、
前記第２の選択を説明する第２のユーザインターフェースチケットを作成すること、
前記第２のユーザインターフェースチケットを前記周辺装置に送信すること、
ユーザインターフェースの最後の選択がなされるまで、先行する手順を反復すること
を引き起こすロジックを更に有する請求項１記載のコンピュータ周辺装置ドライバ。
【請求項１１】
１つ以上のコンピュータ読取可能な記憶媒体に実行に備えてエンコードされたコンピュータ周辺装置ドライバを含む装置であって、前記コンピュータ周辺装置ドライバにより当該装置は或る手順を実行し、前記手順は、
当該装置がサポートする１つ以上のインターフェースフォーマットのリストを周辺装置に送信すること、
当該装置がサポートするユーザインターフェースチケットの内選択されたものを特定する情報を、前記周辺装置から受信すること、
周辺装置のユーザインターフェースを求めるリクエストを、当該装置から前記周辺装置へ送信すること、
前記リクエストの時点における前記周辺装置の機能に基づいて前記周辺装置が作成した前記ユーザインターフェースの説明を、前記周辺装置から受信すること、
前記ユーザインターフェースの前記説明に基づいて１つ以上のグラフィカルユーザインターフェース(GUI)要素を作成し、該GUI要素の表示を引き起こすこと、
前記GUI要素の１つ以上を選択したことを表すユーザ入力を受信すること、
前記ユーザ入力で表現されているように、選択されたGUI要素を説明するユーザインターフェースチケットを作成すること、及び
前記ユーザインターフェースチケットを前記周辺装置に送信すること、
を含む、装置。
【請求項１２】
複数の利用可能な周辺装置のリストを生成及び表示すること、
該利用可能な周辺装置の内１つを選択したことを示す第２のユーザ入力を受信すること、及び
該第２のユーザ入力で表現されている利用可能な周辺装置の内選択されたものに前記リクエストを送信すること、
を引き起こすロジックを更に有する請求項１１記載の装置。
【請求項１３】
拡張マークアップ言語(XML)ストリーム又はファイル、画像ファイル、画像ファイルをラッピングするXMLストリーム又はファイル、或いは画像ファイルを参照し且つ画像ファイルに関する追加的なメタデータを有するXMLストリーム又はファイル、XULフォーマット、UIMLフォーマット又は他のフォーマットの何れかにおいて、前記ユーザインターフェースの説明を前記周辺装置から受信することを引き起こすロジックを更に有する請求項１１記載の装置。
【請求項１４】
前記周辺装置がサポートするユーザインターフェースフォーマットを特定する情報を前記周辺装置から受信すること、及び
前記情報をテーブルのエントリに格納すること
を引き起こすロジックを更に有し、前記テーブルは、前記周辺装置の識別子と共に、前記ユーザインターフェースの説明のコピーと前記情報とを関連付けるようにした請求項１２記載の装置。
【請求項１５】
前記エントリの時間的価値が失効した場合にのみ、前記周辺装置がサポートする１つ以上のユーザインターフェースフォーマットのリストを前記周辺装置に送るのを実行すること、及び
前記周辺装置がサポートするユーザインターフェースフォーマとの内選択されたものを特定する情報を、前記周辺装置から受信すること、
を引き起こすロジックを更に有する請求項１４記載の装置。
【請求項１６】
コンピュータが実行する方法であって、前記方法は、
前記コンピュータがサポートする１つ以上のインターフェースフォーマットのリストを周辺装置に送信するステップと、
前記コンピュータがサポートするユーザインターフェースチケットの内選択されたものを特定する情報を、前記周辺装置から受信するステップと、
前記周辺装置のユーザインターフェースを求めるリクエストを、前記コンピュータから前記周辺装置へ送信するステップと、
前記リクエストの時点における前記周辺装置の機能に基づいて前記周辺装置が作成した前記ユーザインターフェースの説明を、前記周辺装置から受信するステップと、
前記ユーザインターフェースの前記説明に基づいて１つ以上のグラフィカルユーザインターフェース(GUI)要素を作成し、該GUI要素の表示を引き起こすステップと、
前記GUI要素の１つ以上を選択したことを表すユーザ入力を受信するステップと、
前記ユーザ入力で表現されているように、選択されたGUI要素を説明するユーザインターフェースチケットを作成するステップと、
前記ユーザインターフェースチケットを前記周辺装置に送信するステップと、
を有するコンピュータが実行する方法。
【請求項１７】
複数の利用可能な周辺装置のリストを生成及び表示するステップと、
該利用可能な周辺装置の内１つを選択したことを示す第２のユーザ入力を受信するステップと、
該第２のユーザ入力で表現されている利用可能な周辺装置の内選択されたものに前記リクエストを送信するステップと、
を有する請求項１６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータに結合可能な周辺装置ドライバに関連する。
【背景技術】
【０００２】
周辺装置はコンピュータに結合可能である。コンピュータ上で動作するアプリケーションプログラムは、通常、デバイスドライバを介して周辺装置を制御し、様々な種類の各々の周辺装置について、周辺装置のために様々な特定のデバイスドライバが使用される。デバイスドライバは、一般的には、デバイスタイプ、デバイスモデル、プロセッサ及びそのデバイスドライバが動作しているオペレーティングシステム(プラットフォーム)に対して特有であり、しばしば、オペレーティングシステムが生成するデータのタイプに対してさえ特有である。
【０００３】
典型的なアプローチの場合、ある特定の周辺装置に関する特定のジョブに備えてジョブ関連設定値を設定する際、あるアプリケーションがデバイスドライバを起動し、一定のユーザインターフェースを表示し、そのインターフェースを介して、ユーザは様々なパラメータ値又は他のジョブ設定値を選択できる。デバイスドライバは選択内容を解釈し、その選択内容を一群のジョブ設定データに変換する。デバイスドライバはジョブ設定データを周辺装置に送り、その際、実際のジョブデータと共に束ねて送ってもよいし、或いは「ジョブチケット(job  ticket)」と呼ばれるメッセージ又はデータ構造を用いて別個に周辺装置へ送ってもよい。
【０００４】
従来のデバイスドライバの開発は複雑である。周辺装置の製造業者は、通常、多様な幅広いドライバを開発するためにかなりの資源を投入し、その製造業者及び目的のコンピュータプラットフォームによりなされる周辺装置の総てに配慮する必要がある。更に、デバイスドライバで用意されるユーザインターフェースは、通常は一定の固定されたものであり、周辺装置が新たな特徴と共にアップグレードされた場合、製造業者はそのドライバをアップグレードし、アップグレードされたユーザインターフェースでその新たな特徴を提示するようにする必要がある。
【０００５】
ある1つのアプローチの場合、周辺装置の一例であるプリンタはネットワークに結合され、そのプリンタはウェブサーバを有する。プリンタは該プリンタのユーザインターフェースを構成するHTML書類を格納している。このHTML書類を利用したユーザインターフェースはそのプリンタのコントロールパネルに似ている外見をしている。ユーザはブラウザアプリケーションを活性化し(アクティブにし)、ユーザインターフェースを有するHTML書類のURLに接続し、ウェブサーバからのHTML書類をプリンタで受信し、そのHTML処理をブラウザで表示する。ユーザはブラウザを使ってHTML書類と共にやりとりを行い、プリンタを構築する又は制御機能を実行する。このアプローチの場合、ブラウザアプリケーションは、印刷その他の目的のジョブデータを生成する際には関わらない。
【０００６】
このセクションで説明されるアプローチは追跡可能なアプローチであるが、考察又は追跡が過去になされているアプローチであるとは限らない。従って、特に断りのない限り、このセクションで説明されるどのアプローチも、このセクションに含まれているという理由だけで従来技術と考えるよう仮定されるべきではない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、適切なユーザインターフェースを簡易且つ効率的に用意することである。
【課題を解決するための手段】
【０００８】
一実施例によるコンピュータ周辺装置ドライバは、１つ以上のコンピュータ読取可能な記憶媒体に実行に備えてエンコードされたロジックを含み、該ロジックは、周辺装置のユーザインターフェースを求めるリクエストを、コンピュータから前記周辺装置へ送信すること、前記リクエストの時点における前記周辺装置の機能に基づいて前記周辺装置が作成した前記ユーザインターフェースの説明を、前記周辺装置から受信すること、前記ユーザインターフェースの前記説明に基づいて１つ以上のグラフィカルユーザインターフェース(GUI)要素を作成し、該GUI要素の表示を引き起こすこと、前記GUI要素の１つ以上を選択したことを表すユーザ入力を受信すること、前記ユーザ入力で表現されているように、選択されたGUI要素を説明するユーザインターフェースチケットを作成すること及び前記ユーザインターフェースチケットを前記周辺装置に送信することをプロセッサに実行させる。
【０００９】
一実施例では、複数の利用可能な周辺装置のリストを生成及び表示すること、該利用可能な周辺装置の内１つを選択したことを示す第２のユーザ入力を受信すること、及び該第２のユーザ入力で表現されている利用可能な周辺装置の内選択されたものに前記リクエストを送信することを引き起こすロジックを、コンピュータ周辺装置ドライバは更に有する。
【００１０】
一実施例では、当該コンピュータ周辺装置ドライバがサポートする１つ以上のインターフェースフォーマットのリストを前記周辺装置に送信すること、及び当該コンピュータ周辺装置ドライバがサポートするユーザインターフェースチケットの内選択されたものを特定する情報を、前記周辺装置から受信することを引き起こすロジックを、コンピュータ周辺装置ドライバは更に有する。
【００１１】
一実施例では、拡張マークアップ言語(XML)ストリーム又はファイル、画像ファイル、画像ファイルをラッピングするXMLストリーム又はファイル、或いは画像ファイルを参照し且つ画像ファイルに関する追加的なメタデータを有するXMLストリーム又はファイルの何れかにおいて、前記ユーザインターフェースの説明を前記周辺装置から受信することを引き起こすロジックを、コンピュータ周辺装置ドライバは更に有する。一実施例では、ユーザインターフェースの説明は画像マップを含み、ユーザインターフェースチケットは１つ以上の座標群を含む。
【００１２】
一実施例では、前記周辺装置がサポートするユーザインターフェースフォーマットを特定する情報を前記周辺装置から受信すること、及び前記情報をテーブルのエントリに格納することを引き起こすロジックを、コンピュータ周辺装置ドライバが更に有し、前記テーブルは、前記周辺装置の識別子と共に、前記ユーザインターフェースの説明のコピーと前記情報とを関連付ける。
【００１３】
一実施例では、コンピュータ周辺装置ドライバは、前記エントリの時間的価値が失効した場合にのみ、新たなユーザインターフェース説明を求めるリクエストを前記周辺装置に送るのを実行することを引き起こすロジックを更に有する。
【００１４】
一実施例では、コンピュータ周辺装置ドライバは、アプリケーションプログラムのジョブデータを、前記ユーザインターフェースチケットとは別個に前記周辺装置に送ることを引き起こすロジックを更に有する。
【００１５】
一実施例では、前記周辺装置が、プリンタ、複合機、スキャナ又は仕上げ装置の何れかを有する。
【００１６】
一実施例では、前記周辺装置のユーザインターフェースを求める第２のリクエストを、前記コンピュータから前記周辺装置へ送信すること、前記第２のリクエストの時点における前記周辺装置の機能に基づいて前記周辺装置が作成した前記ユーザインターフェースの第２の説明を、前記周辺装置から受信すること、前記ユーザインターフェースの前記第２の説明に基づいて１つ以上の第２のグラフィカルユーザインターフェース(GUI)要素を作成し、該第２のGUI要素の表示を引き起こすこと、を引き起こすロジックを、コンピュータ周辺装置ドライバは更に有し、前記第２の説明は、前記周辺装置の変更された機能に関する新たなグラフィカルユーザインターフェース要素を説明する。
【００１７】
一実施例では、前記ユーザインターフェースチケットを受信したことに応答して、前記周辺装置が作成した第２の画像マップを前記周辺装置から受信すること、前記第２の画像マップの表示を引き起こすこと、前記第２の画像マップ内の１つ以上の第２の選択を表す第２のユーザ入力を受信すること、前記第２の選択を説明する第２のユーザインターフェースチケットを作成すること、前記第２のユーザインターフェースチケットを前記周辺装置に送信すること、ユーザインターフェースの最後の選択がなされるまで、先行する手順を反復することを引き起こすロジックを、コンピュータ周辺装置ドライバが更に有する。
【発明を実施するための最良の形態】
【００１８】
説明を目的とする以下の詳細な説明では、本発明の十分な理解を図るため、様々な具体的な詳細が述べられる。しかしながら、本発明はそのような具体的詳細なしに実施されてもよいことは明白であろう。また、本発明を不必要に曖昧にするかもしれないことを避けるため、周知の構造及び装置はブロック図形式で示される。
【実施例１】
【００１９】
１．０  構造及び機能の概要
一実施例では、コンピュータに結合される周辺装置は、ジョブ制御を目的としたダイナミックユーザインターフェースを生成し、そのユーザインターフェースを利用してホストコンピュータ（所謂、パーソナルコンピュータ、モバイルコンピュータ、携帯電話、ワークステーション、サーバ、無線通信装置又は他の如何なる形式のホストコンピュータで形成されてもよい。）でデバイスドライバと通信する。デバイスドライバはユーザインターフェースを表示し、１つ以上の選択内容を表すユーザの入力データをユーザインターフェースを利用して受信する。デバイスドライバはユーザの入力データをジョブ設定データに解釈しない。その代わり、デバイスドライバはユーザの入力データを周辺装置へ或る所定の形式のメッセージで送信し、そのメッセージはユーザの入力データをユーザインターフェース選択内容として区別している。メッセージはユーザインターフェースチケットを含んでいてもよい。これに応じて、周辺装置はユーザインターフェース選択内容をジョブ設定内容に解釈し、そのジョブ設定を適切に適用する。
【００２０】
一実施例では、デバイスドライバ及び周辺装置はウェブサービスのようなプロトコルを使って通信する。選択的に、デバイスドライバ及び周辺装置はハンドシェイク通信を実行し、周辺装置がユーザインターフェースを説明するデータをドライバに送信すべきフォーマットを設定する。フォーマットの具体例は、画像マップ、XUL書類のようなXML書類、HTMLその他のものを含み、本実施例はユーザインターフェースを説明するデータ（以下、ユーザインタフェースデータとも言う）をエンコードする特定のどの方法にも限定されない。周辺装置はユーザインターフェースデータを作成し、デバイスドライバに送信し、デバイスドライバはユーザインターフェースデータを解釈し、ホストコンピュータにて視覚的な表示を生成し、ユーザが視覚的に理解しやすいようにホストコンピュータのディスプレイに表示する。
【００２１】
一実施例では、デバイスドライバから周辺装置に送られるユーザインターフェースチケットのフォーマットは、ユーザインターフェースデータのオリジナルのフォーマットに依存する。例えば、ユーザインターフェースを説明するデータのフォーマットが画像マップであった場合、ドライバは、ユーザが選択を行った画像マップ上の位置に対応する一連の{X,Y}座標を返す。或いは、ユーザインターフェースを説明するデータがXML書類であった場合、デバイスドライバは一連のXML要素を送信し、その一連のXML要素は、ユーザが処理したユーザインターフェースウィジェット(widget)を表す。XML通信はデータストリームで生じる。
【００２２】
デバイスドライバは一連のユーザインターフェースチケットを周辺装置に送ってもよく、その一連のユーザインターフェースチケットは共に、特定のジョブに関する複数の設定の内の完全なユーザが選択した内容を含む。或いは、デバイスドライバは周辺装置に或るユーザインターフェースチケットを送信し、そのユーザインターフェースチケットは、或る送信において、ユーザが行ったユーザインターフェースを介して選択した内容の総てを含む。例えば、ユーザインターフェースチケットはXML書類又はストリームを有し、そのXML書類等は、ユーザが選択した又は操作した元のXMLユーザインターフェースを説明するデータの要素名の総てを含む。第１の代替例の場合、周辺装置はデータ構造又はデータベースの中で一連のユーザインターフェースチケットを追跡し、それら総てのチケットを特定のジョブに関連付けてもよい。選択的に、各ユーザインターフェースチケットを受信した後、周辺装置はユーザインターフェースを更新してもよい。
【００２３】
一実施例では、デバイスドライバが本技法を使用する際、アプリケーションプログラムは、従来のデバイスドライバと通信するアプリケーションプログラムと同じ方法でデバイスドライバと通信する。本技法を実現するデバイスドライバを利用する際、アプリケーションプログラムは一切変更されなくてよい。
【００２４】
周辺装置のユーザインターフェースは、この周辺装置から生成され、この周辺装置は自身の機能を理解しており、ほぼ適切で最新の機能を反映したユーザインターフェースを生成できる。製造業者が新たな機能を周辺装置に追加した場合、新たなユーザインターフェースが、デバイスドライバを一切変えずに生成できる。
【００２５】
一実施例では、１つのデバイスドライバが総ての周辺装置とともに動作可能であり、その周辺装置はデバイスドライバの理解できる方法で、それら周辺装置毎ののユーザインターフェースを説明できる。従って、１つのデバイスドライバが複数の周辺装置と共に機能することができ、周辺装置及びコンピュータプラットフォームの総ての組み合わせについて多数のデバイスドライバを書き込むことを要しない。デバイスドライバはユーザインターフェース要素をジョブ設定として解釈しないが；その代わり、周辺装置が選択したユーザインターフェース設定に関する受信情報（つまり、ユーザがユーザインターフェースを利用して設定した情報を含む）に基づいて、周辺装置に要求された必要なジョブ設定を確認する。
【００２６】
一実施例では、ジョブデータはユーザインターフェースデータから分離可能である。デバイスドライバはユーザインターフェースチケットを周辺装置に送るが、デバイスドライバがジョブチケットをジョブデータと共に周辺装置に送ることは必須でない。
【００２７】
実施例は、ジョブデータがジョブ設定値と別個に定義される様々な環境で使用可能である。例えば、印刷システムの場合、アプリケーションプログラム、デバイスドライバ及びプリンタドライバは、ジョブ設定データとは独立にジョブデータを生成及び使用できる。一実施例では、ウェブサービスを利用した印刷法が利用される。アプリケーションプログラム及びデバイスドライバは、印刷チケットメッセージ又はジョブチケットメッセージをジョブデータパッケージとは別にプリンタに送り、プリンタドライバは、２つの部分を別個に処理し、ジョブデータから印刷出力を生成する際、プリントチケットの設定を適用する。
【００２８】
２．０  実施例
図１はユニバーサルデバイスドライバが使用されるコンピュータシステム例を示す。一実施例では、ユーザ102はホストコンピュータ104と通信し、ホストコンピュータは、パーソナルコンピュータ、ワークステーション、サーバ、無線通信装置又は他の如何なる形式のホストコンピュータで形成されてもよい。ホストコンピュータ104はオペレーティングシステム106を有し、オペレーティングシステム106は、デバイス機能検出アプリケーションプログラム110及びユニバーサルデバイスドライバ100に対するホストを務めて制御する。ホストコンピュータ104はインターフェース108を更に有し、インターフェースは、1つ以上のネットワーク116を介して、１つ以上の自身の備えている機能を自覚する周辺装置（以下、機能自覚周辺装置とも言う）112,114に直接的に又は間接的に結合される。
【００２９】
オペレーティングシステム106の具体例は、リナックス(LINUX)、ユニックス(UNIX(登録商標))、アップル社のMAC−OS及びマイクロソフト社のウインドウズ(MICROSOFT  WINDOWS(登録商標))を含む。アプリケーションプログラム110は、機能自覚周辺装置112,114に関連する処理を有効に実行できる如何なるコンピュータプログラムを含んでいてもよい。アプリケーションプログラム110の具体例は、ワードプロセッサ、スプレッドシート、電子メールクライアント及びデータベースクライアントを含む。
【００３０】
インターフェース108は、ホストコンピュータ104、機能自覚周辺装置112,114及びネットワーク116の間でデータを通信できるハードウエア、ファームウエア、ソフトウエア又はそれらの組み合わせの如何なるものを含んでもよい。インターフェース108の具体例はネットワークインターフェースカード(NIC)を含み、イーサーネットインターフェース、ユニバーサルシリアルバス(USB)インターフェース、シリアルインターフェース、IEEE1394(FIREWIRE)インターフェース及びパラレルポートを含む。機密データ通信インターフェースが使用されてもよく、本実施例は標準仕様のインターフェースを必須としない。
【００３１】
本実施例は如何なる種類のコンピュータ周辺装置と共に使用されてもよい。本実施例が共に使用されてもよい機能自覚周辺装置112,114の具体例は、プリンタ、スキャナ、複合機、仕上げ装置（ソータ、製本機、糊付け機）、デジタルカメラ、カメラ、ストレージシステム等を含む。図１は簡明化の観点から２つの機能自覚周辺装置112,114を単に示しているが、本実施例は同一の又は異なるいくつの機能自覚周辺装置と共に機能してもよい。
【００３２】
ユニバーサルデバイスドライバ100は、１つ以上の格納された一連の命令又は他のソフトウエア要素を有し、本願で説明される機能を実現する。一般に、ユニバーサルデバイスドライバ100は、オペレーティングシステム106又はアプリケーションプログラム110からファンクションコールを受信でき、如何なる機能自覚周辺装置112,114ともやりとりをすることができ、アプリケーションプログラムが開始するジョブを機能自覚周辺装置が実行することを引き起こす。ユニバーサルデバイスドライバ100は「一般的な(generic)」デバイスドライバと言及されてよいかもしれない。なぜなら、そのドライバは、ユーザインターフェースの説明を後述するように提供できる如何なる機能自覚周辺装置と共にでも動作できるからである。ユニバーサルデバイスドライバ100は、オペレーティングシステム106、アプリケーション110又はホストコンピュータ104の他のソフトウエア要素若しくはファームウエア要素と統合されてもよく、本実施例では、ユニバーサルデバイスドライバをスタンドアローンソフトウエア要素として実現することは必須でない。
【００３３】
図２は、図１のユニバーサルデバイスドライバ及び周辺装置間で通信されるデータを示す。図２に示されるデータ項目は様々な実施例で如何なる順序で通信されてもよく、図２のデータ項目の参照番号及び位置は特定の順番を示唆するものではない。一実施例では、ユニバーサルデバイスドライバ100は、何らかの形式の基本的なアプリケーションレイヤ通信プロトコルを使って機能自覚周辺装置への及び機能自覚周辺装置からのデータを通信し、そのプロトコルはユニバーサルデバイスドライバ及び機能自覚周辺装置の双方がサポートできるものである。図２は図示の簡明化の観点から１つの機能自覚周辺装置112を示しているが、図２の通信は、ユニバーサルデバイスドライバ100と動作する如何なる数の機能自覚周辺装置との間でなされてもよい。
【００３４】
一実施例では、プロトコル202はウェブサービスを有し、ユニバーサルデバイスドライバ100及び機能自覚周辺装置112はウェブサービス機能を実現する。例えば、ユニバーサルデバイスドライバ100及び機能自覚周辺装置112の各々はウェブサービスロジックを有し、ウェブサービスロジックは、OASIS業界団体によるウェブサービス標準仕様又は公にされたドラフトのウェブサービス標準仕様に従ってアプリケーションレイヤメッセージを生成でき、且つそのようなメッセージを解釈及び処理できるものである。
【００３５】
一実施例では、ユニバーサルデバイスドライバ100はジョブデータ204を機能自覚周辺装置112に伝送する。ジョブデータ204は、機能自覚周辺装置112が実行するジョブの実質的な情報を含む。例えば、機能自覚周辺装置112がプリンタであった場合、ジョブデータ204は、印刷可能な書類又は画像を記述するページ記述言語(PDL)又はポストスクリプトのデータを有する。
【００３６】
一実施例では、ユーザインターフェースを説明するデータ（ユーザインターフェースデータ）206を形成する１つ以上のデータ群を、機能自覚周辺装置112はユニバーサルデバイスドライバ100に通知する。ユーザインターフェースデータ206は様々なフォーマット、方法及び手段で表現されてもよい。様々な実施例で使用されてもよいユーザインターフェース206の具体例は、XML、グラフィカルビットマップ画像、3DグラフィカルユーザインターフェースのXMLベースの表現、他のXML表現、スケーラブルベクタグラフィクス(SVG:  Scalable  Vector  Graphics)書類、HTML及び他の如何なる図形表現(縞模様、スプライト、テクスチャ等のようなもの)を含んでもよい。XUL及びUIMLを含む様々なXMLベースのユーザインターフェース記述子が使用されてもよい。本実施例はXMLに限定されず、ユーザインターフェースを記述する特手の方法や手段に限定されない。
【００３７】
一実施例では、ユニバーサルデバイスドライバ100は１つ以上のユーザインターフェースチケット208を周辺装置112に通知する。概して、ユーザインターフェースチケットは、機能自覚周辺装置のユーザインターフェースでユーザが行った選択に関し、機能自覚周辺装置112に通知するデータを有する。例えば、ユーザインターフェースチケット208は、GUI要素、ユーザのマウスクリックの座標、又は他の選択データを特定してもよい。様々な実施例の中で、ユーザインターフェースチケットは、XMLで、ウェブサービスチケットのフォーマットで、一群の名称及び値のペアで、又は他の記述的なテキスト若しくはデータで表現されてもよい。
【００３８】
図３は、ユニバーサルデバイスドライバ100の動作方法例を示す。ステップ302は、ホストコンピュータから機能自覚周辺装置へ、その機能自覚周辺装置のユーザインターフェースを求めるリクエストを送ることを含む。一実施例では、ユニバーサルデバイスドライバはリクエストを機能自覚周辺装置に送信し、該機能自覚周辺装置とやりとりするためのユーザインターフェースを説明するデータと共に該周辺装置が応答するように問い合わせる。ユーザインターフェースはグラフィカルユーザインターフェースでもよいが、GUIを利用することは必須でない。概して、図３のステップは総てユニバーサルデバイスドライバが実行する機能を述べている。
【００３９】
ステップ304はユーザインターフェースを説明するデータを機能自覚周辺装置から受信することを含み、その説明は、機能自覚周辺装置がリクエストの時点で作成したものであり且つ、その機能自覚周辺装置のその時点での機能に基づくものである。つまり、そのリクエストを受け取った時点で、機能自覚周辺装置が自身の機能を自覚し、その自覚した機能を含むユーザインターフェースデータをユニバーサルデバイスドライバに送信する。一実施例では、ユーザインターフェースを説明するデータを与えることで、機能自覚周辺装置はステップ302のリクエストに応答し、そのユーザインターフェースは、ジョブ設定又は他のパラメータを設定するようにユーザが機能自覚周辺装置とやりとりすることを可能にする。周辺装置が新たな機能と共に最近更新されていた場合、その新たな機能はユーザインターフェースを説明するデータに反映されている。
【００４０】
例えば一実施例における図３の方法は、ホストコンピュータから機能自覚周辺装置へ、機能自覚周辺装置のユーザインターフェースを求める第２のリクエストを送信すること、及び第２のユーザインターフェースを説明するデータを機能自覚周辺装置から受信することを更に含み、その第２のユーザインターフェースを説明するデータは、機能自覚周辺装置が第２のリクエストを受け取った時点で作成したものであり且つ、機能自覚周辺装置、その第２の時点での機能に基づくものである。第２のユーザインターフェースデータは、機能自覚周辺装置の変更されている特徴について、新たなグラフィカルユーザインターフェース要素を説明している。１つ以上の第２のユーザインターフェース要素は、第２のユーザインターフェースを説明するデータ（第２のユーザインターフェースデータ）に基づいて作成され、そのプロセスは、ユーザに表示する第２のUI要素の表示を引き起こす。
【００４１】
一実施例では、機能自覚周辺装置のウェブサービスロジックがリクエストを処理し、その回答を生成する。
【００４２】
ステップ306は、ユーザインターフェースの説明に基づいて１つ以上のユーザインターフェース要素を生成することを含む。一実施例では、ユニバーサルデバイスドライバが、ユーザインターフェースデータに基づいてユーザインターフェースを形成する。ユニバーサルデバイスドライバは、ダイナミックリンクライブラリ等のような補足的な機能応訴又はオペレーティングシステムの基本的なユーザインターフェースを呼び出し、ユーザインターフェースを形成してもよい。ステップ308はUI要素の表示を引き起こす。一実施例では、ユニバーサルデバイスドライバは、オペレーティングシステム又は他の機能要素がホストコンピュータの表示部にユーザインターフェースを表示することを引き起こす。
【００４３】
ステップ310は、ユーザインターフェース要素の１つ以上の選択事項を表すユーザ入力を受信することを含む。一実施例では、キーボード、ポインティングデバイス又はホストコンピュータの他のデータ入力装置を利用して、パラメータ設定、ジョブ設定又は表示されるユーザインターフェースの他の要素をユーザは選択する。ホストコンピュータのユーザインターフェースは、選択内容を表す信号を受信し、その信号をオペレーティングシステムに運ぶ。オペレーティングシステムは、その選択内容に関するデータをユニバーサルデバイスドライバへ与える。
【００４４】
ステップ312はユーザインターフェースチケットを作成することを含み、そのユーザインターフェースチケットはユーザ入力で表現されるように選択されたユーザインターフェース要素を記述している。一実施例では、ユニバーサルデバイスドライバはそのユーザ選択内容に基づいてユーザインターフェースチケットを形成する。ユーザの選択内容に関する構造化された言語による説明、ユニバーサルユーザインターフェースでユーザの選択した場所を特定する一群の座標、又はユーザ選択内容を記述する他の形式のものを、ユーザインターフェースチケットは含んでよい。
【００４５】
ステップ314はユーザインターフェースチケットを機能自覚周辺装置へ送ることを含む。
【００４６】
一実施例では、図３の方法は、ユーザインターフェースチケットとは別個に、アプリケーションプログラムのジョブデータを機能自覚周辺装置に送ることを更に含む。一実施例では、ステップ314の後に、機能自覚周辺装置は、ユーザインターフェースチケットを受信及び解釈し、ユーザアプリケーションからジョブデータを受信し、要求されたジョブを実行する。ジョブデータは、ユーザインターフェースチケットが周辺装置で受信される前又は後のどの時点で受信されてもよい。
【００４７】
一実施例では、ステップ302の前に、複数の利用可能な機能自覚周辺装置のリストを作成及び表示すること、利用可能な機能自覚周辺装置の１つを選んだことを示す第２のユーザ入力を受信すること、及び第２のユーザの入力で表現された利用可能な周辺装置の内の選択されたものにリクエストを送ることを、図３の方法は更に含む。
【００４８】
一実施例では、ステップ302の前に、機能自覚周辺装置に対応するユニバーサルデバイスドライバがサポートする１つ以上のユーザインターフェースフォーマットのリストを機能自覚周辺装置に送ること、及び機能自覚周辺装置がサポートするユーザインターフェースフォーマットの内の選択されたものを特定する情報を機能自覚周辺装置から受信することを、図３の方法は更に含む。
【００４９】
一実施例では、拡張マークアップ言語(XML)ストリーム又はファイル、画像ファイル、XMLストリーム若しくはファイル(画像ファイルをラッピングしているもの)、又はXMLストリーム又はファイル(画像ファイルを参照し、その画像ファイルに関する付随的なメタデータを含むもの)等の何らかのもので、ユーザインターフェースデータを周辺装置から受信することを、ステップ304は含む。
【００５０】
一実施例では、機能自覚周辺装置がサポートするユーザインターフェースフォーマットを示す情報を機能自覚周辺装置から受信すること、及びその情報をテーブルの或るエントリに格納することを、図３の方法は更に含む。そのテーブルは、機能自覚周辺装置の識別子と共に、前記情報をユーザインターフェースの記述のコピーに関連付ける。このステップは、ステップ302の前に或いはステップ302,304の一部として行われてもよい。
【００５１】
一実施例では、エントリの時間的な価値が失効した場合にのみ、機能自覚周辺装置がサポートしている１つ以上のユーザインターフェースのリストを機能自覚周辺装置に送信すること、及び機能自覚周辺装置がサポートしているユーザインターフェースフォーマットの内で選択されたものを特定する情報を機能自覚周辺装置から受信することを、図３の方法は含んでもよい。
【００５２】
様々な実施例において、図３の機能自覚周辺装置は、プリンタ、複合機、スキャナ又は仕上げ装置（ソータ、製本機、糊付け機）、デジタルカメラ、カメラ等の何れで構築されてもよい。一実施例では、ユーザインターフェースの説明は画像マップを含み、ユーザインターフェースチケットは１つ以上の座標群を含む。
【００５３】
一実施例では、ユーザインターフェースの説明は第１の画像マップを含み、図３の方法は第２の画像マップを機能自覚周辺装置から受信することを更に含み、第２の画像マップは、機能自覚周辺装置がユーザインターフェースチケットに応答して作成したものである。このプロセスは第２画像マップの表示を引き起こす。第２の画像マップにおける１つ以上の第２の選択内容を表現する第２のユーザ入力が、受信される。第２の選択内容を記述するユーザインターフェースチケットが作成され、機能自覚周辺装置に送られる。
【００５４】
図４は、ユニバーサルデバイスドライバ、ユーザインターフェースデータ及びユーザインターフェースチケットを利用するジョブの印刷処理例を示す。図４の例の場合、機能自覚周辺装置はウェブサービスを使ってドライバと通信するプリンタであり、ユーザインターフェースデータのフォーマットはXMLである。
【００５５】
ステップ402では、ドライバはホストコンピュータに結合された又はネットワーク内のプリンタを発見する。一実施例では、ウェブサービスプロトコルのWS（ウェブサービス）ディスカバリの方法のようなネットワークイネーブルディスカバリプロトコルが使用される。ステップ404では、ユニバーサルデバイスドライバはホストコンピュータのローカルな(局所的な)ストレージ（記憶領域）に、機能自覚周辺装置の一例であるプリンタのネットワークロケーション及び名前を格納する。さらに、ステップ404はプリンタ「初期化(インストレーション)」ステップとして機能する。ネットワークロケーションは、IPアドレス及びポート番号、又はデータを特定する他のものを含んでもよい。ステップ406では、ユーザがアプリケーションを開き、印刷機能を選択し、指定されたデータ又は画像の印刷を引き起こす。これに応じてステップ408では、アプリケーションが上述のユニバーサルデバイスドライバを起動し、印刷用のユーザインターフェースを表示することをユニバーサルデバイスドライバに要求する。
【００５６】
ステップ410では、ユニバーサルデバイスドライバは、選択的可能なプリンタのリストを用意し、プリンタの１つを指すユーザからの入力を受信する。或いはユニバーサルデバイスドライバはデフォルトのプリンタを内部で選択又は使用してもよい。一実施例では、ユニバーサルデバイスドライバがプリンタのリストを生成する代わりに、ステップ410がステップ408と統合され、そのプロセスがプリンタのリストを用意してもよい。
【００５７】
ステップ412では、ユニバーサルデバイスドライバは選択されたプリンタ又はデフォルトのプリンタと連絡をとり、サポートされているUIの説明フォーマットのリストを用意し、プリンタからのUI情報を要求する。例えば、ウェブサービスメッセージをプリンタのウェブサービスモジュールに送信することを、ステップ412は含んでもよく、そのメッセージはビットマップ又はXMLをサポートされている説明フォーマットとして特定し、プリンタのUIを要求する。
【００５８】
ステップ414では、プリンタは該プリンタがサポートできるユーザインターフェースの記述フォーマットの1つを選択し、その特徴に基づいて及び選択されたフォーマットを利用して、UIを説明するデータを作成する。例えば、プリンタはXMLをサポートされるユーザインターフェースデータとして選択し、UIを説明するデータをXML書類として作成してもよい。次の表１はXMLで表現されたUIを説明するデータの例である。
【００５９】
表１：XMLによるUIを説明するデータの例
【表１】
0005266967.tif 000002
【００６０】
ステップ416では、プリンタはUIを説明するデータをユニバーサルデバイスドライバに送る。一実施例では、UIを説明するデータ及び好ましいフォーマットの情報は、キャッシュのようなユニバーサルデバイスドライバの局所的なストレージ（ホストコンピュータのローカル記憶領域）に格納されていてもよい。キャッシュを利用することは、ユニバーサルデバイスドライバが、サポートされているUIを説明するデータのフォーマットのリストをステップ412で省略することを可能にし、場合によっては、ステップ412,414,416を全体的に省略するプロセスを可能にする。例えば、ユニバーサルデバイスドライバのキャッシュが、機能自覚周辺装置のユーザインターフェースを記述する現在の情報（ユーザインターフェースデータ）を保持していた場合、ユニバーサルデバイスドライバはキャッシュから、その情報（ユーザインターフェースデータ）を取り出すことができ、ステップ412,414,416をスキップでき、キャッシュから取り出した情報（ユーザインターフェースデータ）に基づいてステップ418でユーザインターフェースを構築することができる。
【００６１】
ここで使用されている「キャッシュ」なる用語は、機能自覚周辺装置、好ましいユーザインターフェースチケットのフォーマット、ユーザインターフェースデータ又はUI画像を示す情報、及び他のデータが「新鮮(flesh)」であるか否かを示す時間的価値を格納できる如何なるデータ構造のものも含む。その時間的価値に基づいてエントリが失効した場合、キャッシュにおけるユーザインターフェースチケット、ユーザインターフェースデータ等のリフレッシュが実行され、サポートされているユーザインターフェースフォーマットを決める交渉を含むステップが反復されてもよい。ルックアップテーブル、データベース又はその他のデータストレージが使用されてもよい。一実施例では、テーブル例は次のように構成されてもよい。
【表２】
0005266967.tif 000003
【００６２】
ステップ418では、ユニバーサルデバイスドライバが受信したユーザインターフェースデータに基づいて、ユニバーサルデバイスドライバは表示可能なユーザインターフェースのデータを構築する。ステップ418は、XML書類を１つ以上のGUIウィジェットに解釈(変換)又は表現(レンダリング)することを含んでもよい。ユニバーサルデバイスドライバはオペレーティングシステム又は補助的な機能要素とやりとりを行い、ユーザインターフェースを表現する。或いは、後述するように、画像マップとして、ビットマップされた画像として又は他のグラフィックスファイルとして、機能自覚周辺装置がユーザインターフェースを用意する場合、ユニバーサルデバイスドライバは画像が表示されることを引き起こし、レンダリング又は変換は不要になる。
【００６３】
ステップ420では、ユーザはユーザインターフェースを利用して１つ以上の選択を行う。ユーザが複数の選択を行った場合、ユニバーサルデバイスドライバはユーザの選択の総てについて情報を局所的に格納、つまり、ホストコンピュータ内の記憶領域に記憶してもよい。
【００６４】
ステップ422では、ユニバーラスデバイスドライバは、ユーザから選択された設定値を説明するユーザインターフェースチケットを作成する。例えば、ユーザインターフェースチケットはXML書類、HTML、他の構造化されたテキスト等を含んでもよい。ユーザインターフェースチケットは正準形式(canonical  format)で表現可能である。そのCanonicalフォーマットは使用されている機能自覚周辺装置には依存しない。ユーザインターフェースチケットはユーザが行ったユーザインターフェースの選択の総てを特定するが、何らかの意味論的な意義(semantic  meaning)を伝達することは必須でない。例えば、プリンタに手で供給される用紙から書類を印刷するように、ユーザインターフェースが手差しオプション(Manual  Feed  Option)を含み、そのオプションが、ユーザインターフェースを説明するデータの中でXML要素「MFeed」で規定されている手差しボタンで示されていた場合、手差しの説明を用意することなく、MFeedが選択されていることをユーザインターフェースチケットが示してもよい。つまり、ユーザインターフェースチケットは、その選択肢の意味によらず、どのボタンが選択されたかを示すことで十分である。これは、ユーザインターフェースデータを利用して、ユーザインターフェースチケットが作成されているため、機能自覚周辺装置は、受け取ったユーザインターフェースチケットを理解し、実行することが保証されるからである。
【００６５】
表２は表１のユーザインターフェースデータに基づいてXMLで生成されたユーザインターフェースチケットの例を示す。
【００６６】
表２−XMLによるユーザインターフェースチケットの例
【表３】
0005266967.tif 000004
【００６７】
一実施例では、表１及び表２のXML書類はXMLスキーマで規定されてもよく、XMLスキーマはXUL又はUIMLのような既存の標準仕様に従う。
【００６８】
ステップ424では、ドライバは、アプリケーションからジョブデータを受信し、ジョブデータをユーザインターフェースチケットと共にプリンタに送る。ジョブデータ及びユーザインターフェースチケットは、同じメッセージ又は異なるメッセージで送信されてよい。ジョブデータは印刷される実際のページデータを含んでもよい。
【００６９】
ステップ426では、プリンタは、ユーザインターフェースチケットを受信し、ユーザインターフェースチケットをプリンタのジョブ設定に解釈する。例えば、ボタン２が選択されていることをユーザインターフェースチケットが示していた場合、その選択は手差しの給紙を要することを、プリンタが確認する。ステップ428では、解釈されたジョブ設定を使って及びステップ424を通じて受信したジョブデータを使って、プリンタはジョブを印刷する。
【００７０】
この方法の成果の1つは、ユニバーサルデバイスドライバが使用される機能自覚周辺装置における総ての特定の機能及び能力を、ユニバーサルデバイスドライバ自身に予め組み込むことは必須でないことである。すなわり、機能自覚周辺装置からのユーザインターフェースデータによって、ユニバーサルデバイスドライバのインタフェースを構築することが可能となるものである。更に、機能自覚周辺装置が新しい機能と共に更新された場合、ユニバーサルデバイスドライバを更新することは必須でない。なぜなら、総ての特徴及び関連するユーザインターフェースは、機能自覚周辺装置によって、ユーザインターフェースデータとしてユニバーサルデバイスドライバに与えられるからである。
【００７１】
図４の例は、ユーザインターフェースデータが、XMLのような構造化テキストで表現されることを仮定していた。しかしながら、他の実施例は他の方法を使って機能自覚周辺装置のユーザインターフェースデータを記述してもよい。図５は、機能自覚周辺装置のユーザインターフェースを有する画像マップ例を示す。画像マップ502は、100画素×100画素の寸法を有するディジタルグラフィック画像である。
【００７２】
図５はディジタルグラフィック画像の隅の座標値を示す。画像マップ502は複数のボタン及び他のUI（ユーザインターフェース）ウィジェットを有し、それらはグラフィック画像の一部として表示されている。画像マップ502のデータ表現の一例はウインドウズビットマップ(BMP)ファイルである。他の実施例では、ジョイントフォトグラフィックエキスパートグループ(JPEG)のフォーマット、グラフィックスインターチェンジフォーマット(GIF)その他のフォーマットのファイルが使用されてもよい。
【００７３】
図６は、ユニバーサルデバイスドライバ及びユーザインターフェースの画像マップを利用する印刷ジョブの処理例を示す。概して図６のプロセスの場合、ユニバーサルデバイスドライバは、ユーザ選択又は「クリック」各々に関する{x,y}座標値で表現された場所を返す。例えば、図５の画像マップ502を利用する場合、値{80,20}は、ユーザがクリックしたPRINT(印刷)ボタン領域内の地点を選択していることを示す。
【００７４】
図６の方法は上述したような図５のステップ402乃至410を使用することから始まる。その後、ステップ610にて、ユニバーサルデバイスドライバはプリンタと連絡をとり、画像マップフォーマットでプリンタのユーザインターフェースを用意することをプリンタに要求する。ステップ612では、プリンタは画像を構築し、その画像をユーザインターフェースデータとしてユニバーサルデバイスドライバに送る。その画像は、上記のように特定された何らかのフォーマットによる画像ファイルで構成される。ステップ612は、プリンタが、プリンタ内のストレージから格納済みの画像を取り出し、その取り出された画像をユニバーサルデバイスドライバに与えることを含む。
【００７５】
ステップ614では、ユニバーサルデバイスドライバは、受信した画像マップがホストコンピュータの表示部に表示されることを引き起こす。ステップ616では、その画像マップで表現されたユーザインターフェースと共にユーザがやりとりを行い、ユーザはユーザインターフェースの特定の要素又はウィジェットを選択する。これに応答してステップ618では、ユニバーサルデバイスドライバは、ユーザが選択した場所の座標をプリンタに送る。
【００７６】
ステップ620では、プリンタは、その場所の座標をプリンタ内で解釈し、ユーザから要求されている選択が表現しているジョブ設定を判定する。ステップ620は、プリンタ内のルックアップテーブルを使用して、受信した{X,Y}座標値を、特定のジョブ設定又は機能の選択に対応付けることを含んでもよい。
【００７７】
必要に応じて、ユーザの選択内容に依存して、ステップ622ではプリンタが新たな画像マップを構築し、その新たな画像マップをユーザインターフェースデータとしてユニバーサルデバイスドライバに送る。ステップ614乃至622は、ステップ624に示されているように、ユーザとのやりとりを完了するように反復されてもよい。例えば、ユーザインターフェースからユーザがプルダウンメニューを選択し、これに応じて新たな画像マップがプルダウンメニューの選択肢を表示するような場合、それらのステップの反復が相応しい。こうして連続的に受信した様々な画像マップは、ユーザインターフェースの一連の状態を、ユーザがユーザインターフェースと共にやりとりするにつれて表示する。プリンタで新たな画像マップを反復的に生成し、新たな画像マップをホストコンピュータでの表示に備えてユニバーサルデバイスドライバへ送ることで、ユーザインターフェースの他の如何なる有用なリフレッシュ(又は更新)がなされてもよい。
【００７８】
ステップ626は、所望の総ての選択を行った後、ユーザがユーザインターフェースとのやりとりを終了することを表す。ステップ628では、ユーザのやりとりに基づいてステップ620で確認されているジョブ設定の総てを利用して、プリンタはジョブを印刷する。
【００７９】
図７は、ユニバーサルデバイスドライバとのユーザのやりとりの際に生じる一連の表示画面例を示す。表示画面720,722,724,726,728,730は表示の一例を示し、その表示は、図６の方法を使用しながらアプリケーション、ユニバーサルデバイスドライバ及びプリンタと共にユーザのやりとりの際に示されてよいものである。
【００８０】
例えば、表示画面720は、ワードプロセッサのようなアプリケーション720のユーザインターフェースを示す。アプリケーション720は、そのアプリケーションのユーザインターフェースの中で印刷アイコン704を含むツールバーを表示している。ユーザが印刷アイコン704を選択すると、ユニバーサルデバイスドライバは一般的なユーザインターフェース706を表示することを引き起こし、その一般的なユーザインターフェースは、表示722に示されるような、特定のプリンタを選択するためのドロップダウンボックスを含む。プリンタを選択するために、ユーザはドロップダウンボックスを選択していることを仮定している。これに応じて、表示724では、ユニバーサルデバイスドライバは、例えばプリンタ１，プリンタ２，プリンタ３，プリンタ４のように識別されているプリンタのリストの表示を引き起こす。一実施例では、プリンタへリクエストを送ることなしに、或いはプリンタからユーザインターフェースデータを受信することなしに、ユニバーサルデバイスドライバは表示722,724のデータを生成する。
【００８１】
ユーザがプリンタ１を選択したと仮定する。これに応じて、表示726に示されるように、一般的なユーザインターフェース706は除去され、ユニバーサルデバイスドライバはプリンタユーザインターフェース708の表示を引き起こし、このプリンタユーザインターフェースは、デバイスドライバが、要求されているプリンタとやりとりを行い且つそのユーザインターフェースを説明するデータを受信した後に作成される。このプリンタユーザインターフェースは、例えば、ジョブ設定の選択ウィジェット710,712及び印刷ボタンを含む。
【００８２】
ユーザがウィジェット710を選択し、そのウィジェットがチェックボックスであったと仮定する。これに応じて、ウィジェット710がチェックされている更新された表示728を、ユニバーサルデバイスドライバは生成及び表示する。更新された表示を生成することは、ユニバーサルデバイスドライバがプリンタと通信し、ウィジェット710のユーザ選択を反映している更新された画像マップ又はユーザインターフェースデータを取得することを含んでもよい。更新された表示は、ユーザがユーザインターフェースとやりとりすることに応じて、ユニバーサルデバイスドライバによって必要に応じて反復的に生成されてよい。
【００８３】
プリンタユーザインターフェース708の中でユーザが更に印刷ボタンを選択したと仮定する。これに応じて、表示730に示されるように、ユニバーサルデバイスドライバは、ジョブデータをプリンタに送り、印刷が始まったことをアプリケーションに通知する。既に決定されているジョブ設定に基づいて、プリンタはジョブデータを印刷できる。デバイスドライバからの信号(通知)を受信したことに応じて、アプリケーションは「ジョブ印刷．．．」メッセージ714又は同様な情報をアプリケーションのユーザインターフェースで表示する。
【００８４】
図４の方法並びに図５，図６及び図７の方法は、組み合わせて使用されてもよい。その代替例の場合、周辺装置はユニバーサルデバイスドライバへ構造化書類(例えば、XML書類)を送り、その構造化書類は、ユーザインターフェースデータを与え、ユーザインターフェースを実現できる画像マップファイルのデータを含む。様々な実施例の中では、画像マップファイルはユーザインターフェースパネルの総てを表現してもよいし、或いは画像マップが、比較的静的なユーザインターフェースパネルの一部分を表現し、XMLのような構造化テキストが、比較的動的なユーザインターフェースパネルの他の部分の要素及び外観を規定してもよい。
【００８５】
表３は一例を示す。
【００８６】
表３−画像を含むユーザインターフェースデータの例
【表４】
0005266967.tif 000005
【００８７】
更に、代替例では、ユニバーサルデバイスドライバが機能自覚周辺装置に送るユーザインターフェースチケットは、XMLのような構造化テキストで表現されてもよいが、ユーザ選択の座標位置を特定してもよい。
【００８８】
表４は一例を示す。
【００８９】
表４−座標を含むユーザインターフェースチケットの例
【表５】
0005266967.tif 000006
【００９０】
別の代替例の場合、画像マップに現れるユーザインターフェースは、抽象レイヤと共に構造化テキスト書類に統合され、抽象化レイヤは、その画像に重なり、その画像に関するユーザインターフェースロジックをもたらす。この方法の場合、ユニバーサルデバイスドライバは、画像内の或る領域を、ユーザインターフェース要素の抽象名称に対応付ける。抽象レイヤは、内部的な表現だけに使用され、ユーザには表示されない。
【００９１】
図８Ａは、ユーザインターフェース選択領域の画像マップ例を示す。図８Ｂは、周辺装置のユーザインターフェースの画像マップの例を示す。
【００９２】
図８Ａを参照するに、周辺装置のユーザインターフェースの簡略表現は、３つのボタン−ボタン１，ボタン２，ボタン３−を含む。ボタン１，ボタン２，ボタン３のラベルは、構造化テキスト書類に統合される抽象レイヤの表現である。ボタンの隅(角)をなす画素の座標位置は、図８Ａに示されている。
【００９３】
図８Ａに表現されている抽象名称は、図８Ｂに示されるような形式でユーザに表示されてもよい。更に、図８Ｂの形式は、BMP,JPG又はGIFファイルのような画像マップで実現されてもよい。
【００９４】
表５は構造化テキスト例を示し、機能自覚周辺装置からユニバーサルデバイスドライバへ図８Ａ，８Ｂのユーザインターフェースを説明するデータを伝送するのに使用され、その際、画像マップ中のボタン１，ボタン２，ボタン３を命名する抽象レイヤがその説明構造に統合される。
【００９５】
表５−ユーザインターフェース画像に関する抽象化を伴う構造化テキストの例
【表６】
0005266967.tif 000007
【００９６】
表６はユーザインターフェースチケットの例を示し、そのユーザインターフェースチケットは、ユーザがボタン１をクリックしたことを示すように、デバイスドライバにより機能自覚周辺装置に送られる。
【００９７】
表６−抽象化を含むユーザインターフェースチケットの例
【表７】
0005266967.tif 000008
【００９８】
上記の各方法の成果の１つは、機能自覚周辺装置とやりとりしたリクエストを受け取った時点の機能自覚周辺装置の備える機能に基づいて、ユーザインターフェースが動的に生成されることである。ユニバーサルデバイスドライバからのリクエストに応答してユーザインターフェースを説明することのできる（ユーザインターフェースデータを送信することができる）如何なる機能自覚周辺装置とでも、ユニバーサルデバイスドライバは所望のユーザインターフェースを備えるドライバとして機能することができる。この場合、基本的にはユーザがアプリケーションプログラムとやりとりする際の方法又はアプリケーションプログラムにおける変更は必須でない。さらに、基本的にはオペレーティングシステムの変更も必須でない。ユーザアプリケーションがデバイスドライバ(即ち、上記のユニバーサルデバイスドライバ)と共に使用される場合、ユーザの処理は変わらない。しかしながら、ユーザがやりとりを行うユーザインターフェースは、機能自覚周辺装置での機能が更新されるにつれて刻々と変化するが、ホストコンピュータでユニバーサルデバイスドライバを更新することは必須でない。
【００９９】
３．０  ハードウエア概要
図９は本発明の実施例で使用されるコンピュータシステム９００のブロック図を示す。コンピュータシステム９００は、情報を通信するためのバス９０２又は他の通信手段と、バス９０２に結合された情報を処理するプロセッサ９０４とを有する。コンピュータシステム９００は、ランダムアクセスメモリ(RAM)又は他のダイナミックストレージデバイスのようなバス９０２に結合されたメインメモリ９０７を有し、メインメモリはプロセッサ９０４で実行される命令や情報を格納する。メインメモリ９０７は、プロセッサ９０４で実行される命令の実行中に、一時的な変数又は他の中間的な情報を格納するのに使用されてもよい。コンピュータシステム９００は、プロセッサ９０４のための命令や静的な情報を格納する、バス９０２に結合されたリードオンリメモリ(ROM)又は他のスタティックストレージデバイスを更に含む。磁気ディスク又は他の光ディスクのようなストレージデバイス９１０は、情報及び命令を格納するために用意されてバス９０２に結合される。
【０１００】
コンピュータシステム９００は、ユーザに情報を表示するために、陰極線管(CRT)のようなディスプレイ９１２にバス９０２を介して結合されてもよい。英数字その他のキーを含む入力装置９１４は、情報及び命令選択内容をプロセッサ９０４に通知するためにバス９０２に結合される。他の種類のユーザ入力装置は、カーソル制御装置９１６（例えば、マウス、トラックボール、スタイラス又はカーソル方向キー）であり、指示情報及び命令選択をプロセッサ９０４に通知し且つディスプレイ９１２でのカーソルの動きを制御する。この入力装置は典型的には第１軸（例えば、ｘ）及び第２軸（例えば、ｙ）の２軸による２つの自由度を有し、装置が平面上の位置を指定できるようにする。
【０１０１】
本発明は無線通信アーキテクチャのコンピュータシステム９００を利用することに関連する。本発明の一実施例によれば、メインメモリ９０７に含まれる１以上の命令の１以上のシーケンスを実行するプロセッサ９０４に応じて、無線通信がコンピュータシステム９００によって提供される。そのような命令は、ストレージデバイス９１０のような他のコンピュータ読取可能な媒体からメインメモリ９０７に読み込まれてもよい。メインメモリ９０７に含まれている命令シーケンスの実行は、本願で説明されるプロセスステップをプロセッサ９０４が実行することを引き起こす。マルチプロセッシング構成の１以上のプロセッサが、メインメモリ９０７に含まれている命令シーケンスを実行するのに使用されてもよい。代替実施例では、本発明を実施するために、ハードワイヤード回路が、代替的に使用されてもよいし或いはソフトウエア命令との組み合わせで使用されてもよい。すなわち本発明の実施例はハードウエア回路及びソフトウエアの特定の如何なる組み合わせにも限定されない。
【０１０２】
ここで使用されているように「マシン読取可能な媒体」なる用語は、命令をプロセッサ９０４の実行に備えて提供することに関与する如何なる媒体にも関連する。コンピュータシステム９００を利用して実現される例の場合、様々なマシン読取可能な媒体が含まれ、例えば、実行に備えて命令をプロセッサ９０４に提供する際に使用される。そのような媒体は多くの形態をとってよく、限定ではないが、記憶媒体及び伝送媒体を含む。ストレージ媒体は、不揮発性媒体及び揮発性媒体の双方を含む。不揮発性媒体は、例えば、ストレージデバイス９１０のような光又は磁気ディスクを含む。揮発性媒体は、メインメモリ９０７のようなダイナミックメモリを含む。伝送媒体は、同軸ケーブル、銅線及び光ファイバを含み、バス９０２を構成するワイヤを含む。伝送媒体は、無線電波及び赤外線データ通信の際に生成されるもののような、音波又は光波の形式をとってもよい。そのような媒体は、その媒体で運ばれる命令が、マシンの中に命令を読み込む物理的手段により検出されることを可能にするように実現可能でなければならない。
【０１０３】
マシン読取可能な媒体の一般的な形態は、フロッピディスク、フレキシブルディスク、ハードディスク、磁気テープその他の如何なる磁気媒体、CD-ROMその他の如何なる光媒体、パンチカード、紙テープ又は穴のパターンを有する他の如何なる物理的媒体、RAM、PROM、EPROM、フラッシュEPROMその他のメモリチップ、カートリッジ、上記のような搬送波又はコンピュータが読み取ることの可能な他の如何なる媒体でも含む。
【０１０４】
マシン読取可能な様々な形態は、１以上の命令の１以上のシーケンスをプロセッサ９０４に実行に備えて搬送する際にも適用可能である。例えば命令は初期には遠く離れたリモートコンピュータの磁気ディスクで搬送されてもよい。リモートコンピュータは自身のダイナミックメモリからその命令をロードし、モデムを用いて電話回線を介して命令を送信してもよい。コンピュータシステム９００付近のモデムは電話回線でそのデータを受信し、赤外線送信機を用いてそのデータを赤外線信号に変換する。バス９０２に結合された赤外線検出器は、赤外線信号で搬送されたデータを受信し、そのデータをバス９０２に置く。バス９０２はデータをメインメモリ９０７に運び、プロセッサ９０４はメインメモリから命令を抽出して実行する。メインメモリ９０７で受信された命令は、プロセッサ９０４で実行される前又はその後にストレージデバイス９１０に選択的に格納されてもよい。
【０１０５】
コンピュータシステム９００はバス９０２に結合された通信インターフェース９１８も含む。通信インターフェース９１８は、ローカルネットワーク９２２に接続されるネットワークリンク９２０に結合する双方向データ通信をもたらす。例えば、通信インターフェース９１８は、データ通信接続を対応するタイプの電話回線に与える統合サービスディジタルネットワーク(ISDN)カード又はモデムでもよい。別の例では、通信インターフェース９１８は、データ通信接続をコンパチブルなLANに与えるLANカードでもよい。無線リンクが使用されてもよい。どの実現手段でも、通信インターフェース９１８は、電気的な、電磁的な又は光学的な信号を送信及び受信し、様々なタイプの情報を表現するディジタルデータストリームを運ぶ。
【０１０６】
ネットワークリンク９２０は典型的には１以上のネットワークを介して他のデータ装置とのデータ通信をもたらす。例えば、ネットワークリンク９２０はローカルネットワーク９２２を介してホストコンピュータとのコネクションを提供する、或いはインターネットサービスプロバイダ(ISP)９２６により運営されるデータ機器とのコネクションを提供する。そしてISP９２６はデータ通信サービスをワールドワイドパケットデータ通信ネットワーク(今日、インターネット９２８として一般に言及されている)を介して提供する。ローカルネットワーク９２２及びインターネット９２８の双方は、ディジタルデータストリームを搬送する、電気的な、電磁的な又は光学的な信号を使用する。様々なネットワークを介する信号や、ネットワークリンク９２０における通信インターフェース９１８を介する信号は、コンピュータシステムに及びそこからディジタルデータを搬送し、例えば情報を伝送する搬送波の形式をとってもよい。
【０１０７】
コンピュータシステム９００は、ネットワーク、ネットワークリンク９２０及び通信インターフェースを介して、メッセージを送信し及びプログラムコードを含むデータを受信する。インターネットの例では、サーバ９３０はインターネット９２８、ISP９２６、ローカルネットワーク９２２及び通信インターフェース９１８を介して、アプリケーションプログラムに関する要求されたコードを送信するかもしれない。本発明によれば、そのような或るダウンロードされるアプリケーションは、監視システムが、選択されたネットワーク要素を上述のように監視するように構築する。プロセッサ９０４は受信したコードを受信したときに実行してもよいし、後の実行に備えてストレージデバイス９１０又は他の不揮発性ストレージに格納していたかのように実行してもよい。このようにコンピュータシステム９００は搬送波の形式でアプリケーションコードを取得してもよい。
【０１０８】
４．０  拡張性及び代替例
以上の説明により、本発明の実施例が多くの具体的詳細を参照しながら説明され、その具体的詳細は実現手段毎に異なってよい。本発明に関する独占排他権のインジケータであって、出願人が本発明であると主張するものは、特定の態様で本願により許可される特許請求の範囲であり、その特定の形態の特許請求の範囲は以後の如何なる補正をも含む。特許請求の範囲に登場している用語についての明示的に言及されたどの定義も、特許請求の範囲で使用されるそのような用語の意味を規定する。それ故に、どのような方法によっても、特許請求の範囲で明示的には引用されていない要素、特性、特徴、利点又は属性の何れも特許請求の範囲を限定するよう解釈されるべきでない。従って明細書及び図面は限定的な意味ではなく例示的に解釈されるべきである。
【図面の簡単な説明】
【０１０９】
【図１】ユニバーサルデバイスドライバが使用されるコンピュータシステム例を示す図である。
【図２】図１のユニバーサルデバイスドライバ及び周辺装置間で通信されるデータを示す図である。
【図３】ユニバーサルデバイスドライバの動作方法例を示す図である。
【図４】ユニバーサルデバイスドライバ、ユーザインターフェースデータ及びユーザインターフェースチケットを利用する印刷ジョブの処理例を示す図である。
【図５】周辺装置のユーザインターフェースを有する画像マップ例を示す図である。
【図６】ユニバーサルデバイスドライバ及びユーザインターフェースの画像マップを利用する印刷ジョブの処理例を示す図である。
【図７】ユニバーサルデバイスドライバとのユーザのやりとりの際に生じる一連の表示画面例を示す図である。
【図８Ａ】ユーザインターフェース選択領域の画像マップ例を示す図である。
【図８Ｂ】周辺装置のユーザインターフェースの画像マップ例を示す図である。
【図９】本発明の一実施例が使用されるコンピュータシステム例900を示すブロック図である。
【符号の説明】
【０１１０】
１００  ユニバーサルデバイスドライバ
１０２  ユーザ
１０４  ホストコンピュータ
１０６  オペレーティングシステム
１０８  インターフェース
１１０  アプリケーションプログラム
１１２，１１４  機能自覚周辺装置
１１６  ネットワーク
２０２  通信プロトコル
２０４  ジョブデータ
２０６  ユーザインターフェースデータ
２０８  ユーザインターフェースチケット
９００  コンピュータシステム
９０２  バス
９０４  プロセッサ
９０７  メインメモリ
９０８  リードオンリメモリ
９１０  ストレージデバイス
９１２  ディスプレイ
９１４  入力装置
９１６  カーソル制御部
９１８  通信インターフェース
９２０  ネットワークリンク
９２２  ローカルネットワーク
９２４  ホスト
９２６  インターネットサービスプロバイダ
９２８  インターネット
９３０  サーバ
【図１】
0005266967.tif 000009
【図２】
0005266967.tif 000010
【図３】
0005266967.tif 000011
【図４】
0005266967.tif 000012
【図５】
0005266967.tif 000013
【図６】
0005266967.tif 000014
【図７】
0005266967.tif 000015
【図８Ａ】
0005266967.tif 000016
【図８Ｂ】
0005266967.tif 000017
【図９】
0005266967.tif 000018