(57)【要約】【課題】ＵＳＢ規格に準拠し、印刷データ処理中にリアルタイムなプリンタステータス情報を取得することができ、印刷データ受信中に印刷を強制的に停止させることができ、ノーマルデータ及びパケットデータを容易に取り扱うことができ、かつ、ＰＤＬデータを容易に取り扱うことができるようにする。【解決手段】通信機能部を備えるホストと、第１通信部、第２通信部及び中継部を備える画像形成装置とを有し、前記第１通信部は前記中継部を介して前記通信機能部とデータの通信を行い、前記第２通信部は前記中継部を介して前記通信機能部とデータの通信を行う。【選択図】　　　　　図１
2004078823.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）通信機能部を備えるホストと、
（ｂ）第１通信部、第２通信部及び中継部を備える画像形成装置とを有し、
（ｃ）前記第１通信部は前記中継部を介して前記通信機能部とデータの通信を行い、前記第２通信部は前記中継部を介して前記通信機能部とデータの通信を行うことを特徴とする画像形成システム。
【請求項２】
前記第１通信部はノーマルデータの通信を行い、前記第２通信部はパケットデータの通信を行う請求項１に記載の画像形成システム及び画像形成装置。
【請求項３】
前記第１通信部は第１のＰＤＬ言語の通信を行い、前記第２通信部は第２のＰＤＬ言語の通信を行う請求項１に記載の画像形成システム。
【請求項４】
（ａ）前記画像形成装置は、前記第１通信部及び第２通信部のうちの少なくとも一つの機能情報を前記中継部を介して通信する機能情報通信部を備え、
（ｂ）前記ホストは、前記通信機能部により前記中継部を介し前記機能情報通信部から機能情報を取得し、該機能情報がホストに対応しているか判断し、対応していない場合に報知する請求項１に記載の画像形成システム。
【請求項５】
前記機能情報通信部は、前記ホストから第１通信部及び第２通信部のうちの少なくとも一つの機能情報取得依頼を受けると、該当する通信部に繋がる処理装置の機能情報を前記中継装置を介して通信する請求項４に記載の画像形成システム。
【請求項６】
（ａ）ホストと第１通信部及び第２通信部とが接続される中継部と、
（ｂ）該中継部を介して前記ホストとデータの通信を行う第１通信部と、
（ｃ）前記中継部を介して前記ホストとデータの通信を行う第２通信部とを有することを特徴とする画像形成装置。
【請求項７】
前記第１通信部は画像データの通信を行い、前記第２通信部は制御データの通信を行う請求項６に記載の画像形成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像形成システム及び画像形成装置に関するものである。
【０００２】
【従来の技術】
従来、画像形成システムとしてのプリンタシステムにおいては、パーソナルコンピュータ、サーバ等のホスト装置において作成された印刷データ等の画像データに基づいて、プリンタ等の画像形成装置において紙等の印刷媒体上に画像を形成するようになっている。
【０００３】
図２は従来のプリンタシステムの概略図である。
【０００４】
図に示されるように、ホスト装置としてのホスト２１０と画像形成装置としてのプリンタ２２１とはＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）ケーブル２３８によって接続されている。
【０００５】
そして、前記ホスト２１０は、アプリケーション２１１、該アプリケーション２１１から出力されたデータをプリンタ言語に変換するプリンタドライバ２１２、バスリセット発生時にプリンタ２２１から構成情報を取得し、プリンタ２２１とのインターフェイスを決定するセットアップ処理２１３、該セットアップ処理２１３で取得したＵＳＢディスクリプタ情報に基づいてデバイスの登録、受信先及び送信先を特定し、データを送受信する転送制御部２１４、ポート毎の受信先、送信先情報及び転送手段等の情報を格納するポート情報２１５、送信データを一時的に格納する送信バッファ２１６、プリンタ２２１から受信したデータを一時的に格納する受信バッファ２１７、前記送信バッファ２１６及び受信バッファ２１７と後述されるＵＳＢチップ（Ｃｈｉｐ）２２０との間のデータ転送を行うＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）コントローラ２１９、並びに、該ＤＭＡコントローラ２１９によって送信されたデータをプリンタ２２１に出力し、該プリンタ２２１からデータを受信するＵＳＢチップ２２０を有する。
【０００６】
また、プリンタ２２１は、ホスト２１０から受信したデータを後述される送受信バッファ２２４及び受信バッファ２２５に格納し、後述されるＤＭＡコントローラ２２３によって渡された送信データをホスト２１０に出力するＵＳＢチップ２２２、該ＵＳＢチップ２２２と送受信バッファ２２４、受信バッファ２２５及び後述される送信バッファ２２６との間のデータ転送を行うＤＭＡコントローラ２２３、後述されるセットアップ処理２２９の送受信データを一時的に格納する送受信バッファ２２４、ホスト２１０から出力される印刷データを一時的に格納する受信バッファ２２５、後述されるＰＤＬ（Ｐａｇｅ　Ｄｅｓｃｒｉｐｔｉｏｎ　Ｌａｎｇｕａｇｅ）判定処理部２３０から受信したリバース情報を一時的に格納する送信バッファ２２６、受信先及び送信先を特定し、データの振り分けを行う転送制御部２２７、エンドポイント毎の受信先情報、送信先情報等を格納するエンドポイント情報２２８、バスリセット発生時にホスト２１０との制御情報をやり取りするセットアップ処理２２９、受信したデータをセンシングし、ＰＤＬ言語を判定し、データを適切なＰＤＬ処理に振り分けるＰＤＬ判定処理部２３０、バスリセット時、ホスト２１０からのセットアップ情報問合せ時に、プリンタ２２１が返すＵＳＢディスクリプタ情報２３１、前記ホスト２１０からプラグアンドプレイの問合せがあった場合に、プリンタ２２１が返すＰｎＰ（Ｐｌｕｇａｎｄ　Ｐｌａｙ：プラグアンドプレイ）情報２３２、プリンタ言語をディスプレイリストに変換し、後述される展開処理部２３６に通知する編集処理部２３３、前記ディスプレイリストを渡されたデータをイメージデータに変換し、後述されるエンジン２３７に渡す展開処理部２３６、並びに、イメージデータを印刷するエンジン２３７を有する。
【０００７】
なお、前記プリンタ２２１の編集処理部２３３は、ＰＣＬ言語処理２３４、ＰＳ言語処理２３５等によって構成される。
【０００８】
次に、前記ホスト２１０のＵＳＢチップ２２０及びプリンタ２２１のＵＳＢチップ２２２の構成について説明する。
【０００９】
図３は従来のＵＳＢチップの構造を示す図である。
【００１０】
図３に示されるように、前記ホスト２１０上のＵＳＢチップ２２０におけるＵＳＢデバイス２４０は、データ格納用待ち行列としての送信用のＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ　Ｆｉｒｓｔ−Ｏｕｔ）２４０ａ及び受信用のＦＩＦＯ２４０ｂを有する。
【００１１】
そして、前記送信用のＦＩＦＯ２４０ａは、コントロール転送で取り扱う制御データの送信、バルクアウト転送で取り扱うアプリケーションデータの送信に使用される。また、受信用のＦＩＦＯ２４０ｂは、ホスト２１０からのコントロール転送問合せに対するレスポンスデータの受信、バルクイン転送によってプリンタ２２１から送信されるプリンタステータス情報等の受信用に使用される。
【００１２】
さらに、前記プリンタ２２１上のＵＳＢチップ２２２のＵＳＢデバイス２５０は、該ＵＳＢデバイス２５０の機能をサポートし、コントロール転送用のＦＩＦＯ２５０ａ、バルクアウト転送用のＦＩＦＯ２５０ｂ及びバルクイン転送用のＦＩＦＯ２５０ｃを有する。
【００１３】
そして、コントロール転送用のＦＩＦＯ２５０ａは、ホスト２１０からのコマンドや各種情報を受信したり、ホスト２１０からのコマンドや各種情報に対するレスポンスを送信したりするために使用される。また、バルクアウト転送用のＦＩＦＯ２５０ｂは、ホスト２１０からの印刷データを受信するために使用され、バルクイン転送用のＦＩＦＯ２５０ｃは、ホスト２１０からの送信許可に対してレスポンスを送信するために使用される。
【００１４】
そして、ＵＳＢ上でやり取りされる通信データは、それぞれ、４〔ｂｉｔ〕から成るパイプ番号、特定デバイスを識別するための７〔ｂｉｔ〕のアドレス情報から成るエンドポイント情報を含むパケット構造になっていて、前記エンドポイント情報に基づいて各パケットデータを該当するＦＩＦＯに振り分けられる。
【００１５】
次に、前記構成のプリンタシステムにおけるＵＳＢデータ転送の動作について説明する。
【００１６】
図４は従来のプリンタシステムにおけるＵＳＢデータ転送の動作を示すフローチャートである。
【００１７】
まず、ホスト２１０のセットアップ処理２１３はバスリセットを検出すると、プリンタ２２１のＵＳＢデバイス２５０に対してコントロール転送を用いてＵＳＢディスクリプタ情報を問い合わせる（ステップＳ１）。すると、前記ホスト２１０からのＵＳＢディスクリプタ情報の問合せに対し、プリンタ２２１はＵＳＢデイスクリプタ情報２３１をホスト２１０に返す（ステップＳ２）。そして、ホスト２１０のセットアップ処理２１３は、入手したＵＳＢディスクリプタ情報２３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ２２１に通知する（ステップＳ３）。
【００１８】
続いて、前記プリンタ２２１のセットアップ処理２２９は、通知されたインターフェイス情報によってＵＳＢチップ２２２を設定する（ステップＳ４）。その後、前記転送制御部２２７は、プリンタ２２１からコントロール転送を用いてプリンタ２２１のＰｎＰ情報２３２を取得し、ポート情報を登録する。なお、登録したポート情報と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ５）。そして、ユーザによって印刷が指示されたアプリケーション２１１は、プリンタドライバ２１２に対して印刷を指示する（ステップＳ６）。
【００１９】
続いて、印刷が指示されたプリンタドライバ２１２は、印刷データを生成し、転送制御部２１４に対して送信を要求する（ステップＳ７）。また、送信が要求された転送制御部２１４は、バルクアウト転送を用いて印刷データをプリンタ２２１に通知する（ステップＳ８）。そして、前記アプリケーション２１１は、プリンタ２２１のステータスを取得したい場合、該ステータスの取得要求をプリンタドライバ２１２に指示する（ステップＳ９）。
【００２０】
続いて、ステータスの取得が要求されたプリンタドライバ２１２は、ステータス問合せコマンドを生成し、転送制御部２１４に対して送信を要求する（ステップＳ１０）。そして、送信が要求された転送制御部２１４は、バルクアウト転送を用いてステータス問合せコマンドをプリンタ２２１に通知する（ステップＳ１１）。また、前記ステータス問合せコマンドを受信したプリンタ２２１は、ステータス情報を生成する（ステップＳ１２）。
【００２１】
続いて、前記プリンタドライバ２１２は、プリンタリバース情報を読み込むように転送制御部２１４に要求する（ステップＳ１３）。そして、読込みが要求された転送制御部２１４は、プリンタ２２１にバルクイン転送を開始し、プリンタ２２１にリバースデータの送信を許可する（ステップＳ１４）。すると、前記プリンタ２２１は、リバースデータの転送が許可されるのを受けてバルクイン転送によってリバースデータをホスト２１０に転送する（ステップＳ１５）。そして、前記転送制御部２１４はリバースデータを受け取り、プリンタドライバ２１２にデータを渡し、ステータス情報を表示する（ステップＳ１６）。
【００２２】
なお、前記プリンタシステムにおいて、印刷中でも印刷の強制停止及び印刷中のリアルタイムステータスの所得を可能とするために、仮想チャネルを実現することができるＩＥＥＥ１２８４．４規格のプロトコルを導入して印刷データと制御データとを別チャネルに分ける技術が提案されている（特開２００１−１８４９２公報、特開２００１−２２５４２公報参照）。
【００２３】
また、通常のノーマルデータとＩＥＥＥ１２８４．４規格のパケットとが付加されたパケットデータを識別するために、メニューの設定で判断したり、コンパチ、ＥＣＰモード等の通信モードによって判断したり、データ通信中の信号線の変化によって判断したりする技術も提案されている（特開平１１−１６８５２４号公報参照）。
【００２４】
【発明が解決しようとする課題】
しかしながら、前記従来のプリンタシステムにおいては、リアルタイムなステータスを取得するためにＩＥＥＥ１２８４．４規格を使用しているので、ＩＥＥＥ１２８４．４規格のパケット単位に６バイトのヘッダ情報が付加されてしまう。そのため、各デバイス間でやり取りするデータ量が多くなりプリンタシステムのスループットが低下してしまう。
【００２５】
また、ノーマルデータとパケットデータとを識別する仕組みがＩＥＥＥ１２８４．４規格にだけ対応しているので、ＵＳＢ規格には対応することができない。
【００２６】
さらに、ホスト２１０から送信されてきた印刷データをＰＤＬ判定処理部２３０によって判断し、該当するＰＤＬ処理に振り分けているので、実装されるＰＤＬが多くなるとＰＤＬ判定処理部２３０の動作が複雑になり、新しいＰＤＬを追加する度に組込み工数及び評価に時間がかかってしまう。
【００２７】
本発明は、前記従来の問題点を解決して、ＵＳＢ規格に準拠し、印刷データ処理中にリアルタイムなプリンタステータス情報を取得することができ、印刷データ受信中に印刷を強制的に停止させることができ、ノーマルデータ及びパケットデータを容易に取り扱うことができ、かつ、ＰＤＬ言語を容易に取り扱うことができる画像形成システム及び画像形成装置を提供することを目的とする。
【００２８】
【課題を解決するための手段】
そのために、本発明の画像形成システムにおいては、通信機能部を備えるホストと、第１通信部、第２通信部及び中継部を備える画像形成装置とを有し、前記第１通信部は前記中継部を介して前記通信機能部とデータの通信を行い、前記第２通信部は前記中継部を介して前記通信機能部とデータの通信を行う。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００３０】
図１は本発明の第１の実施の形態におけるプリンタシステムの概略図である。
【００３１】
図において、６０は、パーソナルコンピュータ、サーバ等のホスト装置としてのホストであり、周辺機器としての画像形成装置であるプリンタ７１と、ＵＳＢケーブル３８によって接続されている。
【００３２】
本実施の形態において、画像形成システムとしてのプリンタシステムは、ホスト６０において作成された印刷データをプリンタ７１に送信し、前記印刷データに基づいて、紙等の印刷媒体上に画像を形成する、すなわち、印刷を行うようになっている。なお、ホスト６０とプリンタ７１との間ではＵＳＢ規格に準拠してデータの送受信を行う。
【００３３】
そして、前記ホスト６０は、アプリケーション１１、該アプリケーション１１から出力されたデータをプリンタ言語に変換するプリンタドライバ１２、前記アプリケーション１１からの指示によってプリンタ７１のステータス取得、印刷の強制停止等をコントロールするプリンタ制御用ドライバ６１、バスリセット発生時にプリンタ７１との通信手段を決定するセットアップ処理１３、該セットアップ処理１３で取得したＵＳＢデイスクリプタ情報に基づいてデバイスの登録、受信先及び送信先を特定し、データを送受信する転送制御部１４、ポート毎の受信先、送信先情報及び転送手段等の情報を格納するポート情報１５、送信データを一時的に格納する送信バッファ１６、プリンタ７１から受信したデータを一時的に格納する受信バッファ１７、前記送信バッファ１６及び受信バッファ１７と後述されるＵＳＢチップ２０との間のデータ転送を行うＤＭＡコントローラ１９、並びに、該ＤＭＡコントローラ１９によって送信されたデータをプリンタ７１に出力し、該プリンタ７１からデータを受信するＵＳＢチップ２０を有する。
【００３４】
また、プリンタ７１は、ホスト６０から受信したデータを後述される送受信バッファ２４ａ、送受信２４ｂ、受信バッファ２５ａ、及び受信バッファ２５ｂに格納し、後述されるＤＭＡコントローラ２３によって渡された送信データをホスト６０に出力するＵＳＢチップ２２、該ＵＳＢチップ２２と送受信バッファ２４ａ、送受信バッファ２４ｂ、受信バッファ２５ａ、受信バッファ２５ｂ、後述される送信バッファ２６ａ及び送信バッファ２６ｂとの間のデータ転送を行うＤＭＡコントローラ２３、後述されるセットアップ処理２９の送受信データを一時的に格納する送受信バッファ２４ａ、送受信バッファ２４ｂ、ホスト６０から出力されるプリンタ制御用コマンドを受信する受信バッファ２５ａ、後述されるプリンタ制御処理７２からホスト６０に送信するデータを格納する送信バッファ２６ａ、ホスト６０から出力される印刷データを一時的に格納する受信バッファ２５ｂ、後述されるＰＤＬ判定処理部３０からホスト６０に送信するリバース情報を一時的に格納する送信バッファ２６ｂ、受信先及び送信先を特定し、データの振り分けを行う転送制御部２７、エンドポイント毎の受信先情報、送信先情報等を格納するエンドポイント情報２８、バスリセット発生時にホスト６０との通信手段を決定するセットアップ処理２９、ホスト６０からステータス問合せ、印刷の強制停止等のコマンドを解析し、該当する処理を行うプリンタ制御処理７２、受信したデータをセンシングし、ＰＤＬ言語を判定し、データを適切なＰＤＬ処理に振り分けるＰＤＬ判定処理部３０、バスリセット時、ホスト１０からのセットアップ情報問合せ時に、プリンタ７１が返すＵＳＢデイスクリプタ情報３１、前記ホスト６０からプラグアンドプレイ情報の問合せがあった場合に、プリンタ７１が返すＰｎＰ情報３２、プリンタ言語をディスプレイリストに変換し、後述される展開処理部３６に通知する編集処理部３３、前記ディスプレイリストを渡されたデータをイメージデータに変換し、後述されるエンジン３７に渡す展開処理部３６、並びに、イメージデータを印刷するエンジン３７を有する。
【００３５】
なお、前記プリンタ７１の編集処理部３３は、ＰＣＬ言語処理３４、ＰＳ言語処理３５等を有する。
【００３６】
次に、前記プリンタ７１のＵＳＢチップ２２の構成について説明する。
【００３７】
図５は本発明の第１の実施の形態におけるＵＳＢチップの構造を示す図である。
【００３８】
図５に示されるように、前記プリンタ７１上のＵＳＢチップ２２は、ＵＳＢデバイス８１及びＵＳＢデバイス８２、並びに、該二つのＵＳＢデバイス８１及びＵＳＢデバイス８２を拡張する機能を有するＵＳＢハブ（ＨＵＢ）８０によって構成される。
【００３９】
そして、前記ＵＳＢデバイス８１は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ａに関連付けられたデータ格納用待ち行列としてのＦＩＦＯ８１ａ、前記プリンタ制御処理７２のデータを受信する受信バッファ２５ａに関連付けられたＦＩＦＯ８１ｂ、及び、前記プリンタ制御処理７２のデータを送信する送信バッファ２６ａに関連付けられたＦＩＦＯ８１ｃを有する。
【００４０】
また、前記ＵＳＢデバイス８２は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ｂに関連付けられたＦＩＦＯ８２ａ、前記ＰＤＬ判定処理部３０のデータを受信する受信バッファ２５ｂに関連付けられたＦＩＦＯ８２ｂ、及び前記ＰＤＬ判定処理部３０のデータを送信する送信バッファ２６ｂに関連付けられたＦＩＦＯ８２ｃを有する。
【００４１】
なお、ホスト６０からは、ＵＳＢデバイス８１及びＵＳＢデバイス８２という別々の装置が接続されているように認識される。
【００４２】
次に、前記ポート情報１５の構成について説明する。
【００４３】
図６は本発明の第１の実施の形態におけるポート情報の構成を示す図である。
【００４４】
図６に示されるように、ポート情報１５は、転送制御部２７が上位処理（プリンタドライバ１２、セットアップ処理１３等）からの書込要求によってＵＳＢデバイス８１及びＵＳＢデバイス８２のどのエンドポイントにデータを送信するか、又は、読込要求によってＵＳＢデバイス８１及びＵＳＢデバイス８２のどのエンドポイントに問合せを行ったらよいのかを決定するために使用される。そして、ポート情報１５は、上位処理がＵＳＢデバイス８１又はびＵＳＢデバイス８２のうちの特定のＵＳＢデバイスを指定するために使用するポート番号情報、及び、前記ＵＳＢデバイス８１及びＵＳＢデバイス８２に実装されている各エンドポイント情報を有する。
【００４５】
また、該エンドポイント情報２８は、ＵＳＢデバイス８１又はびＵＳＢデバイス８２のうちの特定のＵＳＢデバイスのパイプ情報を指定するエンドポイントアドレス、前記エンドポイントにおけるＵＳＢデータ転送種類を示す転送方式、及び、前記エンドポイントにおいて送受信可能なパケットの最大パケットサイズ情報を格納するＭａｘ　Ｐａｃｋｅｔ　Ｓｉｚｅ（最大パケットサイズ）を有する。
【００４６】
次に、前記プリンタ７１におけるＵＳＢディスクリプタ情報３１の構成について説明する。
【００４７】
図７は本発明の第１の実施の形態におけるＵＳＢディスクリプタ情報の構成を示す図である。
【００４８】
図７に示されるように、前記ＵＳＢディスクリプタ情報３１は、デバイスのベンダ情報、プロダクトＩＤ情報等から成るデバイス情報、前記デバイスがサポートするインターフェイスの数、電源仕様情報等から成る構成情報、前記デバイスの種類（プリンタ、ストレージデバイス等）、プリンタ７１が複数のインターフェイスを有していた場合、ホスト６０が特定のインターフェイスを指定することができるようにするためのＩＤ情報、エンドポイント数情報等から成るインターフェイス情報、及び、前記エンドポイントのアドレス情報、サポート転送方法、最大パケットサイズ情報等をエンドポイント毎に示したエンドポイント情報を有する。そして、本実施の形態において、前記ＵＳＢディスクリプタ情報３１は、ＵＳＢデバイス８１用のＵＳＢディスクリプタ情報３１、及び、ＵＳＢデバイス８２用のＵＳＢディスクリプタ情報３１によって構成される。
【００４９】
次に、前記ＰｎＰ情報３２の構成について説明する。
【００５０】
図８は本発明の第１の実施の形態におけるＰｎＰ情報の構成を示す図である。
【００５１】
図８に示されるように、本実施の形態において、ＰｎＰ情報３２は、ＵＳＢデバイス８１用のプリンタＡ制御用サービスのＰｎＰ情報３２、及び、ＵＳＢデバイス８２用のプリンタＡのＰｎＰ情報３２によって構成される。
【００５２】
次に、前記エンドポイント情報２８の構成について説明する。
【００５３】
図９は本発明の第１の実施の形態におけるエンドポイント情報の構成を示す図である。
【００５４】
図９に示されるように、前記エンドポイント情報２８には、ホスト６０からのデータ受信時、通知されたエンドエンドポイント情報を元にデータを該当する処理に振り分ける情報が格納される。そして、前記エンドポイント情報２８は、ＵＳＢデバイスの数に対応する数のエンドポイント情報を有し、それぞれのエンドポイント情報は、エンドポイントに関連付けられたパイプ情報、送受信可能なパケットの最大パケットサイズ情報を格納するＭａｘ　Ｐａｃｋｅｔ　Ｓｉｚｅ、及び、前記エンドポイントに対してデータ受信があった場合、ＣＡＬＬ（コール）するＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ（コールバック機能）から成る。
【００５５】
次に、前記構成のプリンタシステムにおけるＵＳＢデータ転送の動作について説明する。
【００５６】
図１０は本発明の第１の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第１のフローチャート、図１１は本発明の第１の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第２のフローチャートである。
【００５７】
まず、ホスト６０のセットアップ処理１３は、バスリセットを検出すると、ＵＳＢデバイス８１に対してコントロール転送を用いてＵＳＢデイスクリプタ情報３１を問い合わせる（ステップＳ２１）。すると、前記ホスト６０からのＵＳＢデイスクリプタ情報３１の問合せに対し、プリンタ７１のＵＳＢデバイス８１は、ＵＳＢデバイス８１用に用意されたＵＳＢディスクリプタ情報３１をコントロール転送を用いてホスト６０に返す（ステップＳ２２）。そして、前記ホスト６０のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ７１に通知する（ステップＳ２３）。
【００５８】
続いて、プリンタ７１のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス８１を設定する（ステップＳ２４）。その後、前記転送制御部１４は、プリンタ７１からコントロール転送を用いてＵＳＢデバイス８１におけるプリンタ制御処理７２用に用意されたＰｎＰ情報３２を取得し、ポート情報１５を登録する。なお、登録したポート情報１５と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ２５）。そして、ホスト６０のセットアップ処理１３は、ＵＳＢデバイス８２に対してコントロール転送を用いてＵＳＢデイスクリプタ情報３１を問い合わせる（ステップＳ２６）。また、ホスト６０からのＵＳＢデイスクリプタ情報３１の問合せに対し、ＵＳＢデバイス８２は、該ＵＳＢデバイス８２用に用意されたＵＳＢデイスクリプタ情報３１をコントロール転送を用いて前記ホスト６０に返す（ステップＳ２７）。
【００５９】
続いて、該ホスト６０のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ７１に通知する（ステップＳ２８）。そして、プリンタ７１上のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス８２を設定する（ステップＳ２９）。その後、前記転送制御部１４は、プリンタ７１からコントロール転送を用いてＵＳＢデバイス８２におけるＰＤＬ判定処理部３０用に用意されたＰｎＰ情報３２を取得し、ポート情報１５を登録する。なお、登録したポート情報１５と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ３０）。
【００６０】
ユーザによって印刷が指示されたアプリケーション１１は、プリンタドライバ１２に対して印刷を指示する（ステップＳ３１）。
【００６１】
続いて、印刷が指示されたプリンタドライバ１２は、印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ３２）。そして、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、印刷データをＵＳＢデバイス８２に通知する（ステップＳ３３）。また、通知された印刷データは、転送制御部２７によってＰＤＬ判定処理部３０に送信される（ステップＳ３４）。そして、印刷中にアプリケーション１１がプリンタ７１のステータスを取得したい場合は、印刷データの転送を一時中断し、ステータスの取得要求をプリンタ制御用ドライバ６１に要求する（ステップＳ３５）。
【００６２】
続いて、ステータスの取得が要求されたプリンタ制御用ドライバ６１は、ステータス問合せコマンドを生成し、転送制御部１４に対して送信を要求する（ステップＳ３６）。そして、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、ステータス問合せコマンドをＵＳＢデバイス８１に通知する（ステップＳ３７）。ここで、ステータスが問い合わせられたプリンタ７１は、ステータス情報を生成する（ステップＳ３８）。また、前記転送制御部１４は、プリンタリバース情報を読み込むようにＵＳＢチップ２０に要求する（ステップＳ３９）。
【００６３】
続いて、読込みが要求された転送制御部１４は、プリンタ７１にバルクイン転送を開始し、プリンタ７１にリバースデータの送信を許可する（ステップＳ４０）。すると、前記プリンタ７１は、リバースデータの送信の許可を受けて、バルクイン転送によって生成したステータス情報をホスト６０に転送する（ステップＳ４１）。また、前記転送制御部１４はステータス情報を受け取り、プリンタ制御用ドライバ６１にデータを渡してステータスを表示する（ステップＳ４２）。そして、前記転送制御部１４は、まだ印刷データが残っていた場合、再度バルクアウト転送によって印刷データをＵＳＢデバイス８２に通知する（ステップＳ４３）。そして、通知されたデータは、転送制御部２７によってＰＤＬ判定処理部３０に渡される（ステップＳ４４）。
【００６４】
次に、前記ホスト６０がプリンタ７１にデータを送信する際に共通で使用されるホストデータ送信処理の動作について説明する。
【００６５】
図１２は本発明の第１の実施の形態におけるホストデータ送受信処理の動作を示すフローチャートである。
【００６６】
まず、プリンタ７１へのリクエストが発生すると、ホスト６０の転送制御部１４は、リクエストがあったポート番号と一致するポートがポート情報１５に登録されているかどうかを検索する（ステップＳ５１）。そして、転送制御部１４はリクエストがあったポート番号と一致するものがあったかどうかを判断する（ステップＳ５２）。一致するものがあった場合は、プリンタ７１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ５３）。また、一致するものがなかった場合は、指定されたパラメータが誤っているので、エラー要求を通知する（ステップＳ６４）。そして、処理を終了する。
【００６７】
続いて、転送制御部１４は、プリンタ６１へのリクエストがセットアップ要求であるかどうかを判断し（ステップＳ５３）、セットアップ要求である場合は、セットアップトークンパケットを生成して送信を要求し（ステップＳ５６）、また、セットアップ要求でない場合は、プリンタ７１へのリクエストが書込要求であるかどうかを判断する（ステップＳ５４）。そして、書込要求である場合は、アウトトークンパケットを生成し、送信を要求する（ステップＳ５７）。また、書込要求でない場合は、プリンタ７１へのリクエストが読込要求であるかどうかを判断する（ステップＳ５５）。ここで、読込要求である場合は、ＩＮトークンパケットを生成し、送信を要求する（ステップＳ５８）。また、読込要求でない場合は、エラー要求を通知する（ステップＳ６４）。そして、処理を終了する。
【００６８】
続いて、転送制御部１４は、データパケットを生成して送信を要求する（ステップＳ５９）。そして、送信を要求した転送制御部１４は、プリンタ７１からの応答がＮＡＣＫであるかどうかを判断する（ステップＳ６０）。ここで、ＮＡＣＫである場合は、プリンタ７１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ５３）。また、ＡＣＫである場合は、前記転送制御部１４は、プリンタ７１へのリクエストが読込要求であるかどうかを判断する（ステップＳ６１）。そして、読込要求である場合は、受信バッファからデータを取り出し、読込要求があった処理に通知する。リバースデータを通知し、処理を終了する（ステップＳ６３）。また、読込要求でない場合は、転送するデータをすべて送信したかどうかを判断する（ステップＳ６２）。最後に、すべて送信した場合は処理を終了し、すべて送信していない場合は、プリンタ７１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ５３）。
【００６９】
次に、ホスト６０から通知されたデータを受信する際に共通で使用するプリンタデータ受信処理の動作について説明する。
【００７０】
図１３は本発明の第１の実施の形態におけるプリンタデータ送受信処理の動作を示すフローチャートである。
【００７１】
まず、ホスト６０からのデータ受信を認識すると、転送制御部２７は、受信したエンドポイントが有するパイプ番号情報に対応するエンドポイント情報がエンドポイント情報２８に登録されているかどうかを検索する（ステップＳ７１）。そして、エンドポイント情報２８と一致するものがあったかどうかを判断する（ステップＳ７２）。ここで、一致するものがあった場合は、該当するエンドポイントの転送方法情報をエンドポイント情報２８から読み込む（ステップＳ７３）。また、一致するものがなかった場合は、イリーガルなパケットであるので、パケットデータを受け捨て、処理を終了する（ステップＳ７６）。
【００７２】
続いて、転送制御部２７は読み込んだ転送方法とホスト６０から受信したトークンパケットの指定とが正しいかどうかを判断する（ステップＳ７４）。正しい場合は、エンドポイント情報２８中の該当するエンドポイントのＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎを使用し、該当する処理にリクエストコマンド及びデータを通知し、処理を終了する（ステップＳ７５）。また、正しくない場合は、イリーガルなパケットであるので、パケットデータを受け捨て、処理を終了する（ステップＳ７６）。
【００７３】
次に、図１０のステップＳ２３におけるデバイス識別処理のサブルーチンについて説明する。
【００７４】
図１４は本発明の第１の実施の形態におけるデバイス識別処理のサブルーチンを示す図である。
【００７５】
まず、ホスト６０のセットアップ処理１３は、ＵＳＢデイスクリプタ情報３１からインターフェイスデバイスクラス情報を読み込む（ステップＳ２３−１）。そして、インターフェイスデバイスクラス情報がプリンタクラスであるかどうかを判断する（ステップＳ２３−２）。ここで、インターフェイスデバイスクラス情報がプリンタクラスである場合は、取得したＵＳＢデイスクリプタ情報３１からポート情報１５のポート番号情報以外の情報を、図６に示されるようなフォーマットに従って生成する（ステップＳ２３−３）。また、インターフェイスデバイスクラス情報がプリンタクラスでない場合は、各デバイスクラスに従ってポート情報１５を生成する（ステップＳ２３−４）。そして、ＵＳＢデイスクリプタ情報３１中からインターフェイスＩＤ情報をプリンタ７１に送信し、通信するインターフェイスを特定し、処理を終了する（ステップＳ２３−５）。
【００７６】
次に、図１０のステップＳ２５におけるポート登録処理のサブルーチンについて説明する。
【００７７】
図１５は本発明の第１の実施の形態におけるポート登録処理のサブルーチンを示す図である。
【００７８】
まず、ホスト６０の転送制御部１４は、プリンタ７１のＵＳＢデバイス８１、８２に対してＰｎＰ情報３２を問い合わせ、ＰｎＰ情報３２を取得する（ステップＳ２５−１）。そして、新しいポートをオープンし、そのポート番号情報をポート情報１５に格納する（ステップＳ２５−２）。続いて、取得したＰｎＰ情報及び生成したポート番号情報を元にポートを登録する（ステップＳ２５−３）。また、既に同一のデバイス情報が情報がないかどうか登録されているポートを検索する（ステップＳ２５−４）。そして、同一のデバイスが存在するかどうかを判断する（ステップＳ２５−５）。ここで、同一のデバイスが存在する場合は、処理を終了し、同一のデバイスが存在しない場合は、ＰｎＰ情報３２を元にドライバのインストールをユーザに表示し、処理を終了する（ステップＳ２５−６）。
【００７９】
次に、前記セットアップ処理用の受信関数Ｃａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎの動作について説明する。
【００８０】
図１６は本発明の第１の実施の形態におけるセットアップ処理用の受信関数の動作を示す第１のフローチャート、図１７は本発明の第１の実施の形態におけるセットアップ処理用の受信関数の動作を示す第２のフローチャートである。
【００８１】
まず、受信通知を受けたセットアップ処理１３はＳＥＴＵＰ（セットアップ）トークンであるかどうかを判断する（ステップＳ８１）。該ＳＥＴＵＰトークンである場合、ＳＥＴＵＰトークンを受け取ったセットアップ処理１３は、ＵＳＢデバイス８１に要求があったかどうかを判断する（ステップＳ８２）。そして、ＵＳＢデバイス８１に要求があった場合は、送受信バッファ２４ａからデータパケットを読み込む（ステップＳ８３）。また、ＵＳＢデバイス８２に要求があった場合は、送受信バッファ２４ｂからデータパケットを読み込む（ステップＳ８４）。
【００８２】
続いて、セットアップ処理１３はそのコマンドがＵＳＢデイスクリプタ情報３１の取得要求であるかどうかを判断する（ステップＳ８５）。そして、ＵＳＢデイスクリプタ情報３１の取得要求である場合は、該当するＵＳＢデバイスのＵＳＢデイスクリプタ情報３１を該当する送信バッファに格納する（ステップＳ８６）。また、ＵＳＢデイスクリプタ情報３１の取得要求でない場合は、セットアップ処理１３はそのコマンドがＰｎＰ情報３２の取得要求であるかどうかを判断する（ステップＳ８７）。
【００８３】
ここで、ＰｎＰ情報３２の取得要求である場合、該当するＵＳＢデバイスのＰｎＰ情報３２を該当する送信バッファに格納する（ステップＳ８８）。また、ＰｎＰ情報３２の取得要求でない場合、セットアップ処理１３はそのコマンドがインターフェイスＩＤの指定であるかどうかを判断する（ステップＳ８９）。そして、インターフェイスＩＤの指定である場合は、該当するＵＳＢデバイスの初期化を行う（ステップＳ９０）。また、インターフェイスＩＤの指定でない場合は、その他のコマンドに該当する処理を行う（ステップＳ９１）。
【００８４】
なお、前述されたように、ＳＥＴＵＰトークンであるかどうかを判断して、ＳＥＴＵＰトークンでない場合、受信通知を受けたセットアップ処理１３はＩＮ（イン）トークンであるかどうかを判断する（ステップＳ９２）。そして、ＩＮトークンである場合、セットアップ処理１３は、ＵＳＢデバイス８１に要求があったかどうかを判断する（ステップＳ９３）。ここで、ＵＳＢデバイス８１に要求があった場合は、処理対象の送受信バッファを送受信バッファ２４ａに設定する（ステップＳ９４）。また、ＵＳＢデバイス８２に要求があった場合は、処理対象の送受信バッファを送受信バッファ２４ｂに設定する（ステップＳ９５）。
【００８５】
続いて、セットアップ処理１３は、送受信バッファ２４ａ又は送受信バッファ２４ｂに送信データがあるかどうかを判断する（ステップＳ９６）。そして、送信データがある場合は、送信データを該当する送受信バッファから読み込み、ＵＳＢデバイスに対してデータ送信を要求し、処理を終了する（ステップＳ９７）。また、送信データがない場合は処理を終了する。
【００８６】
なお、前述されたように、ＩＮトークンであるかどうかを判断して、ＩＮトークンでない場合、ＯＵＴ（アウト）トークンを受け取ったと認識したセットアップ処理１３は、ＵＳＢデバイス８２に要求があったかどうかを判断する（ステップＳ９８）。そして、ＵＳＢデバイス８１に要求があった場合は、送受信バッファ２４ａからデータを読み込む（ステップＳ９９）。また、ＵＳＢデバイス８２に要求がない場合は送受信バッファ２４ｂからデータを読み込む（ステップＳ１００）。そして、読み込んだデータに基づいてデータの書換えを行い、処理を終了する（ステップＳ１０１）。
【００８７】
このように、本実施の形態においては、印刷データを取り扱うデバイスと制御データを取り扱うデバイスとを別のデバイスにすることによって、ジャム等が発生して印刷処理がビジー状態となっても、プリンタ７１のリアルタイムなステータスを取得することができる。また、印刷途中のデータのキャンセルを容易に指示することができる。
【００８８】
次に、本発明の第２の実施の形態について説明する。なお、第１の実施の形態と同じ構造を有するものについては、同じ符号を付与することによってその説明を省略する。
【００８９】
図１８は本発明の第２の実施の形態におけるプリンタシステムの概略図である。
【００９０】
前記第１の実施の形態においては、ホスト６０（図１）にプリンタ制御用ドライバ６１が配設されていたが、図１８に示されるように、本実施の形態においては、該プリンタ制御用ドライバ６１に変えて、印刷データ及び制御データをパケット化し、仮想チャネル機能及びフロー制御機能を実現するＩＥＥＥ１２８４．４ドライバ８１がホスト８０に配設される。
【００９１】
また、前記第１の実施の形態においては、プリンタ７１にプリンタ制御処理７２が配設されていたが、本実施の形態においては、該プリンタ制御処理７２に代えて、印刷データ及び制御データをパケット化し、仮想チャネル機能及びフロー制御機能を実現するＩＥＥＥ１２８４．４処理９２がプリンタ９１に配設される。
【００９２】
さらに、フォントデータ等のデータをハードディスクとしてのＨＤＤ９４にダウンロードするダウンロードサービス９３、ダウンロードされたデータを格納するＨＤＤ９４が配設される。そして、ＰｎＰ情報９８及びエンドポイント情報９９の内容が、前記第１の実施の形態と異なっている。
【００９３】
次に、前記プリンタ９１のＵＳＢチップ２２の構成について説明する。
【００９４】
図１９は本発明の第２の実施の形態におけるＵＳＢチップの構造を示す図である。
【００９５】
図１９に示されるように、前記プリンタ９１のＵＳＢチップ２２は、ＵＳＢデバイス９６及びＵＳＢデバイス９７並びに該二つのＵＳＢデバイス９６及びＵＳＢデバイス９７を拡張する機能を備えるＵＳＢハブ９５を有する。
【００９６】
そして、前記ＵＳＢデバイス９６は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ａに関連付けられたデータ格納用待ち行列としてのＦＩＦＯ９６ａ、前記ホスト８０の１２８４．４ドライバ８１のデータを受信する受信バッファ２５ａに関連付けられたＦＩＦＯ９６ｂ、及び、前記１２８４．４ドライバ８１のデータを送信する送信バッファ２６ａに関連付けられたＦＩＦＯ９６ｃを有する。
【００９７】
また、前記ＵＳＢデバイス９７は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ｂに関連付けられたＦＩＦＯ９７ａ、前記ＰＤＬ判定処理部３０のデータを受信する受信バッファ２５ｂに関連付けられたＦＩＦＯ９７ｂ、及び、前記ＰＤＬ判定処理部３０のデータを送信する送信バッファ２６ｂに関連付けられたＦＩＦＯ９７ｃを有する。
【００９８】
次に、前記ＰｎＰ情報９８の構成について説明する。
【００９９】
図２０は本発明の第２の実施の形態におけるＰｎＰ情報の構成を示す図である。
【０１００】
図２０に示されるように、本実施の形態においては、ＵＳＢデバイス９６用の１２８４．４プロトコル対応のＰｎＰ情報９８、及びＵＳＢデバイス９７用の１２８４．４プロトコル対応のＰｎＰ情報９８によって構成される。
【０１０１】
次に、前記エンドポイント情報９９の構成について説明する。
【０１０２】
図２１は本発明の第２の実施の形態におけるエンドポイント情報の構成を示す図である。
【０１０３】
図２１に示されるように、本実施の形態においては、エンドポイント情報９９は、パイプ＃１のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報が１２８４．４処理９２用の受信関数であり、パイプ＃２のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報が１２８４．４処理９２用の送信関数である。そして、データが受信された際に、１２８４．４処理９２で用意された送受信処理にデータを通知することができる。
【０１０４】
なお、本実施の形態におけるポート情報１５及びＵＳＢデイスクリプタ情報３１については、前記第１の実施の形態と同様であるので、図６及び７を援用して説明する。
【０１０５】
次に、前記構成のプリンタシステムにおけるＵＳＢデータ転送の動作について説明する。
【０１０６】
図２２は本発明の第２の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第１のフローチャート、図２３は本発明の第２の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第２のフローチャートである。
【０１０７】
まず、ホスト８０のセットアップ処理１３は、バスリセットを検出すると、ＵＳＢデバイス９６に対してコントロール転送を用いてＵＳＢデイスクリプタ情報３１を問い合わせる（ステップＳ１１１）。すると、ホスト８０からのＵＳＢデイスクリプタ情報３１の問合せに対し、ＵＳＢデバイス９６は、ＵＳＢデバイス９６用に用意されたＵＳＢデイスクリプタ情報３１をコントロール転送を用いてホスト８０に返す（ステップＳ１１２）。そして、ホスト８０上のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ９１に通知する（ステップＳ１１３）。
【０１０８】
続いて、プリンタ９１のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス９６を設定する（ステップＳ１１４）。その後、前記転送制御部１４は、プリンタ９１からコントロール転送を用いてＵＳＢデバイス９６におけるＩＥＥＥ１２８４．４処理９２用に用意されたＰｎＰ情報９８を取得し、ポート情報１５を登録する。なお、登録した該ポート情報１５と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ１１５）。そして、ホスト８０のセットアップ処理１３は、ＵＳＢデバイス９７に対してコントロール転送を用いてＵＳＢデイスクリプタ情報３１を問い合わせる（ステップＳ１１６）。また、ホスト８０からのＵＳＢデイスクリプタ情報３１の問合せに対し、ＵＳＢデバイス９７は、ＵＳＢデバイス９７用に用意されたＵＳＢデイスクリプタ情報３１をコントロール転送を用いてホスト８０に返す（ステップＳ１１７）。
【０１０９】
続いて、ホスト８０のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ９１に通知する（ステップＳ１１８）。そして、プリンタ９１のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス９７を設定する（ステップＳ１１９）。その後、前記転送制御部１４は、プリンタ９１からコントロール転送を用いてＵＳＢデバイス９７におけるＰＤＬ判定処理部３０用に用意されたＰｎＰ情報９８を取得し、ポート情報１５を登録する。なお、登録したポート情報１５と一致するドライバがない場合、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ１２０）。
【０１１０】
続いて、ユーザによって印刷が指示されたアプリケーション１１は、プリンタドライバ１２に対して印刷を指示する（ステップＳ１２１）。そして、印刷が指示されたプリンタドライバ１２は印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ１２２）。また、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、印刷データをＵＳＢデバイス９７に通知する（ステップＳ１２３）。そして、通知された印刷データは、転送制御部２７によってＰＤＬ判定処理部３０に送信される（ステップＳ１２４）。また、アプリケーション１１がＨＤＤ９４にフォントデータをダウンロードしたい場合は、ダウンロード要求をＩＥＥＥ１２８４．４ドライバ８１に要求する（ステップＳ１２５）。
【０１１１】
続いて、ダウンロード要求によって、ＩＥＥＥ１２８４．４ドライバ８１はダウンロードデータをパケット化し、転送制御部１４に対して送信を要求する（ステップＳ１２６）。そして、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、ＩＥＥＥ１２８４．４パケット付きダウンロードデータをＵＳＢデバイス９６に通知する（ステップＳ１２７）。また、フォントダウンロードが要求されたプリンタ９１は、ＩＥＥＥ１２８４．４パケットを外し、ＨＤＤ９４にデータをダウンロードする（ステップＳ１２８）。その後、前記転送制御部１４は、ダウンロードが正常に終了したかどうかの結果情報を読み込むように転送制御部１４に要求する（ステップＳ１２９）。そして、プリンタ９１はリバースデータの転送が許可されるのを受けて、バルクイン転送によってＨＤＤ９４のダウンロード結果情報をホスト８０に転送する（ステップＳ１３０）。また、前記転送制御部１４はＨＤＤ９４のダウンロード結果情報を受け取り、アプリケーション１１にデータを渡し、そのＨＤＤ９４のダウンロード結果情報を表示する（ステップＳ１３１）。
【０１１２】
なお、ホスト８０がプリンタ９１にデータを送信する際に共通で使用されるホストデータ送信処理、ホスト８０から通知されたデータを受信する際に共通で使用するプリンタデータ受信処理、デバイス識別処理、ポート登録処理及びセットアップ処理用受信関数の処理については、前記第１の実施の形態と同様であるので説明を省略する。
【０１１３】
このように、本実施の形態においては、ノーマルな印刷データを取り扱うデバイスとパケット付きのデータを取り扱うデバイスとを別のデバイスにすることによって、ノーマルデータ及びパケットデータの取扱いを容易に行うことができる。
【０１１４】
次に、本発明の第３の実施の形態について説明する。なお、第１及び第２の実施の形態と同じ構造を有するものについては、同じ符号を付与することによってその説明を省略する。
【０１１５】
図２４は本発明の第３の実施の形態におけるプリンタシステムの概略図である。
【０１１６】
前記第１の実施の形態においては、ホスト６０（図１）にプリンタドライバ１２及びプリンタ制御用ドライバ６１が配設されていたが、本実施の形態においては、図２４に示されるように、前記プリンタドライバ１２及びプリンタ制御用ドライバ６１に変えて、ＰＣＬデータを取り扱うＰＣＬプリンタドライバ１０１及びＰＳプリンタドライバ１０２がホスト１００に配設される。
【０１１７】
また、前記第１の実施の形態においては、プリンタ７１にプリンタ制御処理７２及びＰＤＬ判定処理部３０が配設されていたが、本実施の形態においては、プリンタ１１１から前記プリンタ制御処理７２及びＰＤＬ判定処理部３０を取り除き、受信バッファ２５ａ及び送信バッファ２６ａにＰＣＬ言語処理３４を関連付け、受信バッファ２５ｂ及び送信バッファ２６ｂにＰＳ言語処理３５を関連付けるようになっている。
【０１１８】
そして、ＰｎＰ情報１１５及びエンドポイント情報１１６の内容が、前記第１の実施の形態と異なっている。
【０１１９】
次に、前記プリンタ１１１のＵＳＢチップ２２の構成について説明する。
【０１２０】
図２５は本発明の第３の実施の形態におけるＵＳＢチップの構造を示す図である。
【０１２１】
図２５に示されるように、前記プリンタ１１１上のＵＳＢチップ２２は、ＵＳＢデバイス１１３及びＵＳＢデバイス１１４並びに該二つのＵＳＢデバイス１１３及びＵＳＢデバイス１１４を拡張する機能を有するＵＳＢハブ１１２を有する。
【０１２２】
そして、前記ＵＳＢデバイス１１３は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ａに関連付けられたデータ格納用待ち行列としてのＦＩＦＯ１１３ａ、前記ＰＣＬ言語処理３４のデータを受信する受信バッファ２５ａに関連付けられたＦＩＦＯ１１３ｂ、及び、前記ＰＣＬ言語処理３４のデータを送信する送信バッファ２６ａに関連付けられたＦＩＦＯ１１３ｃを有する。
【０１２３】
また、前記ＵＳＢデバイス１１４は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ｂに関連付けられたＦＩＦＯ１１４ａ、前記ＰＳ言語処理３５のデータを受信する受信バッファ２５ｂに関連付けられたＦＩＦＯ１１４ｂ、及び、前記ＰＳ言語処理３５のデータを送信する送信バッファ２６ｂに関連付けられたＦＩＦＯ１１４ｃを有する。
【０１２４】
次に、前記ＰｎＰ情報１１５の構成について説明する。
【０１２５】
図２６は本発明の第３の実施の形態におけるＰｎＰ情報の構成を示す図である。
【０１２６】
図２６に示されるように、本実施の形態においては、ＵＳＢデバイス１１３用のＰＣＬプリンタのＰｎＰ情報１１５、及び、ＵＳＢデバイス１１４用のＰＳプリンタのＰｎＰ情報１１５によって構成される。
【０１２７】
次に、前記エンドポイント情報１１６の構成について説明する。
【０１２８】
図２７は本発明の第３の実施の形態におけるエンドポイント情報の構成を示す図である。
【０１２９】
図２７に示されるように、本実施の形態においては、エンドポイント情報１１６は、ＵＳＢデバイス１１３用のパイプ＃１のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＣＬ言語処理３４用の受信関数であり、パイプ＃２のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＣＬ言語処理３４用の送信関数である。また、ＵＳＢデバイス１１４用のパイプ＃１のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＳ言語処理３５用の受信関数であり、パイプ＃２のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＳ言語処理３５用の送信関数である。
【０１３０】
そして、データが受信された際に、それぞれ、ＰＣＬ言語処理３４、ＰＳ言語処理３５で用意された送受信処理にデータを通知することができる。
【０１３１】
なお、本実施の形態におけるポート情報１５及びＵＳＢデイスクリプタ情報３１については、前記第１の実施の形態と同様であるので、図６及び７を援用して説明する。
【０１３２】
次に、前記構成のプリンタシステムにおけるＵＳＢデータ転送の動作について説明する。
【０１３３】
図２８は本発明の第３の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第１のフローチャート、図２９は本発明の第３の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第２のフローチャートである。
【０１３４】
まず、ホスト１００のセットアップ処理１３はバスリセットを検出すると、ＵＳＢデバイス１１３に対してコントロール転送を用いてＵＳＢデイスクリプタ情報３１を問い合わせる（ステップＳ１４１）。すると、ホスト１００からのＵＳＢデイスクリプタ情報３１の問合せに対し、ＵＳＢデバイス１１３は、ＵＳＢデバイス１１３用に用意されたＵＳＢデイスクリプタ情報３１をコントロール転送を用いてホスト１００に返す（ステップＳ１４２）。そして、ホスト１００のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ１１１に通知する（ステップＳ１４３）。
【０１３５】
続いて、プリンタ１１１のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス１１３を設定する（ステップＳ１４４）。その後、前記転送制御部１４は、プリンタ１１１からコントロール転送を用いてＵＳＢデバイス１１３におけるＰＣＬ言語処理３４用に用意されたＰｎＰ情報１１５を取得し、ポート情報１５を登録する。なお、登録した該ポート情報１５と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ１４５）。そして、ホスト１００上のセットアップ処理１３は、ＵＳＢデバイス１１４に対してコントロール転送を用いてＵＳＢデイスクリプタ情報３１を問い合わせる（ステップＳ１４６）。また、ホスト１００からのＵＳＢデイスクリプタ情報３１の問合せに対し、ＵＳＢデバイス１１４は、ＵＳＢデバイス１１４用に用意されたＵＳＢデイスクリプタ情報３１をコントロール転送を用いてホスト１００に返す（ステップＳ１４７）。
【０１３６】
続いて、ホスト１００のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報３１によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、使用するインターフェイスを決定し、使用するインターフェイスＩＤ情報をプリンタ１１１に通知する（ステップＳ１４８）。そして、プリンタ１１１上のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス１１４を設定する（ステップＳ１４９）。その後、前記転送制御部１４は、プリンタ１１１からコントロール転送を用いてＵＳＢデバイス１４４におけるＰＳ言語処理３５用に用意されたＰｎＰ情報１１５を取得し、ポート情報１５を登録する。なお、登録したポート情報１５と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ１５０）。
【０１３７】
続いて、ユーザによって印刷が指示されたアプリケーション１１は、ＰＳプリンタドライバ１０２に対して印刷を指示する（ステップＳ１５１）。そして、印刷が指示されたＰＳプリンタドライバ１０２は、ＰＳ言語用の印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ１５２）。また、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、印刷データをＵＳＢデバイス１１４に通知する（ステップＳ１５３）。そして、通知された印刷データは、転送制御部２７によってＰＳ言語処理３５に渡される（ステップＳ１５４）。また、ユーザによって印刷が指示されたアプリケーション１１は、ＰＣＬプリンタドライバ１０１に対して印刷を指示する（ステップＳ１５５）。
【０１３８】
続いて、印刷が指示されたＰＣＬプリンタドライバ１０１は、ＰＣＬ言語用の印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ１５６）。そして、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、印刷データをＵＳＢデバイス１１３に通知する（ステップＳ１５７）。また、通知された印刷データは、転送制御部２７によってＰＣＬ言語処理３４に送信される（ステップＳ１５８）。
【０１３９】
なお、ホスト１００がプリンタ１１１にデータを送信する際に共通で使用されるホストデータ送信処理、ホスト１００から通知されたデータを受信する際に共通で使用するプリンタデータ受信処理、デバイス識別処理、ポート登録処理及びセットアップ処理用受信関数の処理については、前記第１の実施の形態と同様であるので説明を省略する。
【０１４０】
このように、本実施の形態においては、ＰＣＬプリンタドライバ１０１とＰＳプリンタドライバ１０２とを別のデバイスとして取り扱うことができるので、余分な言語判定処理を行うことなく各ＰＤＬに受け渡すことができ、スループットを向上させることができる。
【０１４１】
また、新しいＰＤＬ言語を追加した際でも、複雑な言語判定処理を追加する必要がないので、ＰＤＬの移植性を高くすることができる。
【０１４２】
次に、本発明の第４の実施の形態について説明する。なお、第１〜第３の実施の形態と同じ構造を有するものについては、同じ符号を付与することによってその説明を省略する。
【０１４３】
図３０は本発明の第４の実施の形態におけるプリンタシステムの概略図である。
【０１４４】
図３０に示されるように、ホスト１２０においては、ポート情報１２１で管理する内容が前記第３の実施の形態と異なっている。
【０１４５】
また、プリンタ１３１においては、ＵＳＢデイスクリプタ情報１３２及びエンドポイント情報１３３の内容が前記第３の実施の形態と異なり、ベンダ固有ファンクション情報１３４が前記第３の実施の形態に追加される。
【０１４６】
さらに、前記ＵＳＢチップ２２には後述されるＵＳＢデバイス１３５が一つ実装されるだけであるので、セットアップ処理２９用の送受信バッファ２４も一つでよい。
【０１４７】
次に、前記プリンタ１３１のＵＳＢチップ２２の構成について説明する。
【０１４８】
図３１は本発明の第４の実施の形態におけるＵＳＢチップの構造を示す図である。
【０１４９】
図３１に示されるように、前記プリンタ１３１上のＵＳＢチップ２２は、ＵＳＢデバイス１３５だけを有する。
【０１５０】
そして、前記ＵＳＢデバイス１３５は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４ａに関連付けられたデータ格納用待ち行列としてのＦＩＦＯ１３５ａ、前記ＰＣＬ言語処理３４のデータを受信する受信バッファ２５ａに関連付けられたＦＩＦＯ１３５ｂ、前記ＰＣＬ言語処理３４のデータを送信する送信バッファ２６ａに関連付けられたＦＩＦＯ１３５ｃ、前記ＰＳ言語処理３５のデータを受信する受信バッファ２５ｂに関連付けられたＦＩＦＯ１３５ｄ、及び、前記ＰＳ言語処理３５のデータを送信する送信バッファ２６ｂに関連付けられたＦＩＦＯ１３５ｅを有する。
【０１５１】
次に、前記ポート情報１２１の構成について説明する。
【０１５２】
図３２は本発明の第４の実施の形態におけるポート情報の構成を示す図である。
【０１５３】
図３２に示されるように、ポート情報１２１は、フォーマットとしては前記第１の実施の形態と同様であるが、ＵＳＢデバイス毎にポート情報が構成されているのではなく、一つのＵＳＢデバイス１３５で複数のポート情報が生成される。
【０１５４】
例えば、ＵＳＢデバイス１３５中に二つのファンクションが実装されている場合、ポート番号１０のエンドアドレスをＵＳＢデバイス１３５のエンドポイント＃０、＃１、＃２から、ポート番号１１のエンドアドレスもＵＳＢデバイス１３５のエンドポイント＃０、＃３、＃４から構成することができる。
【０１５５】
次に、前記プリンタ１３１におけるＵＳＢディスクリプタ情報１３２の構成について説明する。
【０１５６】
図３３は本発明の第４の実施の形態におけるＵＳＢディスクリプタ情報の構成を示す図である。
【０１５７】
図３３に示されるように、前記ＵＳＢディスクリプタ情報１３２は、エンドポイント情報として、一つのコントロール転送、一つのバルクアウト転送、及び、一つのバルクイン転送をサポートする標準プリンタインターフェイス情報＃１、並びに、一つのコントロール転送、二つのバルクアウト転送、及び、二つのバルクイン転送をサポートするベンダ固有インターフェイス情報＃２によって構成される。
【０１５８】
そして、ベンダ固有インターフェイスは、ベンダ固有インターフェイス情報＃２中のデバイスクラス情報をプリンタクラスにし、デバイスサブクラスをベンダ固有のサブクラス情報である０ｘＦＦを格納する。
【０１５９】
次に、前記ベンダ固有ファンクション情報１３４の構成について説明する。
【０１６０】
図３４は本発明の第４の実施の形態におけるベンダ固有ファンクション情報の構成を示す図である。
【０１６１】
図３４に示されるように、前記ベンダ固有ファンクション情報１３４は、ベンダがサポートしているファンクション数、そのファンクション情報のデータ長、そのファンクションで使用するエンドポイント数、そのファンクションで使用するエンドポイント情報、そのファンクションにおけるＰｎＰ情報１１５のデータ長、及び、そのファンクションのＰｎＰ文字列情報によって構成される。
【０１６２】
本実施の形態においては、ファンクション情報＃１としてＰＣＬプリンタに関する情報が、ファンクション情報＃２としてＰＳプリンタに関する情報が格納される。
【０１６３】
次に、前記エンドポイント情報１３３の構成について説明する。
【０１６４】
図３５は本発明の第４の実施の形態におけるエンドポイント情報の構成を示す図である。
【０１６５】
図３５に示されるように、前記エンドポイント情報１３３は、一つのＵＳＢデバイス１３５用の情報だけであり、パイプ＃１のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＣＬ言語用の受信関数、パイプ＃２のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＣＬ言語用の送信関数、パイプ＃３のＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＳ言語用の受信関数、及びパイプ＃４のＣａｌｌ
Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報がＰＳ言語用の送信関数から成る。
【０１６６】
なお、本実施の形態におけるＰｎＰ情報１１５については、前記第３の実施の形態と同様であるので、図２６を援用して説明する。
【０１６７】
次に、前記構成のプリンタシステムにおけるＵＳＢデータ転送の動作について説明する。
【０１６８】
図３６は本発明の第４の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示すフローチャートである。なお、本実施の形態においては、ベンダ固有インターフェイスが選択されることを前提に説明する。
【０１６９】
まず、ホスト１２０のセットアップ処理１３はバスリセットを検出すると、ＵＳＢデバイス１３５に対してコントロール転送を用いてＵＳＢデイスクリプタ情報１３２を問い合わせる（ステップＳ１７１）。すると、ホスト１２０からのＵＳＢデイスクリプタ情報１３２の問合せに対し、ＵＳＢデバイス１３５はＵＳＢデイスクリプタ情報１３２をコントロール転送を用いてホスト１２０に返す（ステップＳ１７２）。そして、ホスト１２０のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報１３２によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、ベンダ固有インターフェイスをサポートしていた場合、ベンダ固有インターフェイスＩＤ情報をプリンタ１３１に通知する（ステップＳ１７３）。
【０１７０】
続いて、該プリンタ１３１のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス１３５を設定する（ステップＳ１７４）。そして、前記転送制御部１４は、プリンタ１３１からコントロール転送を用いてベンダ固有ファンクション情報１３４を取得し、ポート情報１２１を登録する。なお、登録した該ポート情報１２１と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ１７５）。その後、ユーザによって印刷が指示されたアプリケーション１１は、ＰＳプリンタドライバ１０２に対して印刷を指示する（ステップＳ１７６）。そして、印刷が指示されたＰＳプリンタドライバ１０２はＰＳ言語用の印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ１７７）。また、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、印刷データをＵＳＢデバイス１３５のパイプ＃３に通知する（ステップＳ１７８）。
【０１７１】
続いて、通知された印刷データは、転送制御部２７によってＰＳ言語処理部３５に渡される（ステップＳ１７９）。その後、ユーザによって印刷が指示されたアプリケーション１１は、ＰＣＬプリンタドライバ１０１に対して印刷を指示する（ステップＳ１８０）。そして、印刷が指示されたＰＣＬプリンタドライバ１０１はＰＣＬ言語用の印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ１８１）。また、送信が要求された転送制御部１４は、転送先を特定してバルクアウト転送によって、印刷データをＵＳＢデバイス１３５のパイプ＃１に通知する（ステップＳ１８２）。そして、通知された印刷データは、転送制御部２７によってＰＣＬ言語処理部３４に渡される（ステップＳ１８３）。
【０１７２】
次に、図３６のステップＳ１７３におけるデバイス識別処理のサブルーチンについて説明する。
【０１７３】
図３７は本発明の第４の実施の形態におけるデバイス識別処理のサブルーチンを示す図である。
【０１７４】
まず、ホスト１２０のセットアップ処理１３は、ＵＳＢデイスクリプタ情報１３２からインターフェイスデバイスクラス情報を読み込む（ステップＳ１７３−１）。そして、インターフェイスデバイスクラス情報がプリンタクラスであるかどうかを判断する（ステップＳ１７３−２）。インターフェイスデバイスクラス情報がプリンタクラスである場合は、取得したＵＳＢデイスクリプタ情報１３２からサブクラス情報がベンダ固有であるかどうかを判断する（ステップＳ１７３−３）。そして、サブクラス情報がベンダ固有である場合は、転送制御部２７がベンダ固有インターフェイスをサポートしているかどうかを判断する（ステップＳ１７３−４）。また、ベンダ固有インターフェイスをサポートしている場合は、インターフェイス選択をベンダ固有インターフェイスに決定し、プリンタ１３１にベンダ固有インターフェイスを選択したことを示すためにベンダ固有インターフェイスＩＤ情報をコントロール転送によって送信する（ステップＳ１７３−５）。
【０１７５】
ここで、前述されたように、取得したＵＳＢデイスクリプタ情報１３２からサブクラス情報がベンダ固有であるかどうかを判断してサブクラス情報がベンダ固有でない場合、及び、転送制御部２７がベンダ固有インターフェイスをサポートしているかどうかを判断してベンダ固有インターフェイスをサポートしていない場合、インターフェイス選択を標準プリンタクラスインターフェイスに決定し、プリンタ１３１に標準プリンタクラスインターフェイスを選択したことを示すために標準プリンタクラスインターフェイスＩＤ情報をコントロール転送によって送信する（ステップＳ１７３−６）。そして、ポート情報１２１に対し、決められたフォーマットでポート番号情報以外のデータを格納し、処理を終了する（ステップＳ１７３−７）。
【０１７６】
また、前述されたように、インターフェイスデバイスクラス情報がプリンタクラスであるかどうかを判断してインターフェイスデバイスクラス情報がプリンタクラスでない場合、各デバイスクラスに従い、決められたフォーマットでポート情報１５にデータを格納し、処理を終了する（ステップＳ１７３−８）。
【０１７７】
次に、図３６のステップＳ１７５におけるポート登録処理のサブルーチンについて説明する。
【０１７８】
図３８は本発明の第４の実施の形態におけるポート登録処理のサブルーチンを示す図である。
【０１７９】
まず、ホスト１２０の転送制御部１４は、ベンダ固有インターフェイスが選択されているかどうかを判断する（ステップＳ１７５−１）。ベンダ固有インターフェイスが選択されている場合は、プリンタ１３１に対してベンダ固有ファンクション情報１３４を問い合わせる（ステップＳ１７５−２）。そして、入手したベンダ固有ファンクション情報１３４中のファンクション数分のファンクション情報を処理したかどうかを判断する（ステップＳ１７５−３）。ここで、ファンクション数分のファンクション情報を処理した場合は処理を終了し、ファンクション数分のファンクション情報を処理していない場合は、ベンダ固有ファンクション情報１３４中のファンクション情報＃ｎのエンドポイント情報１３３をポート情報１２１に格納する（ステップＳ１７５−４）。
【０１８０】
続いて、転送制御部１４は、ベンダ固有ファンクション情報１３４中のファンクション情報＃ｎのＰｎＰ情報１１５を特定する（ステップＳ１７５−５）。そして、新しいポートをオープンし、そのポート番号情報をポート情報１２１に格納する（ステップＳ１７５−６）。また、特定したＰｎＰ情報１１５及び生成したポート番号情報を元にポート情報１２１を登録する（ステップＳ１７５−７）。さらに、既に同一のデバイス情報がないかどうか登録されているポートを検索する（ステップＳ１７５−８）。
【０１８１】
続いて、転送制御部１４は、同一のデバイスが存在するかどうかを判断する（ステップＳ１７５−９）。同一のデバイスが存在する場合はベンダ固有ファンクション数カウンタをデクリメントする（ステップＳ１７５−１１）。また、同一のデバイスが存在しない場合は、登録されたＰｎＰ情報１１５を元にドライバのインストールをユーザに表示し（ステップＳ１７５−１０）し、その後、ベンダ固有ファンクション数カウンタをデクリメントする（ステップＳ１７５−１１）。そして、再び、入手したベンダ固有ファンクション情報１３４中のファンクション数分のファンクション情報を処理したかどうかを判断する（ステップＳ１７５−３）。
【０１８２】
また、前述されたように、ベンダ固有インターフェイスが選択されているかどうかを判断してベンダ固有インターフェイスが選択されていない場合、プリンタ１３１に対してＰｎＰ情報１１５を問い合わせ、ＰｎＰ情報１１５を取得する（ステップＳ１７５−１２）。そして、新しいポートをオープンし、そのポート番号情報をポート情報１２１に格納する（ステップＳ１７５−１３）。さらに、取得したＰｎＰ情報１１５及び生成したポート番号情報に基づいてポート情報１２１を登録する（ステップＳ１７５−１４）。そして、既に同一のデバイス情報がないかどうか登録されているポートを検索する（ステップＳ１７５−１５）。
【０１８３】
続いて、転送制御部１４は、同一のデバイスが存在するかどうかを判断する（ステップＳ１７５−１６）。同一のデバイスが存在する場合は処理を終了し、同一のデバイスが存在しない場合は、ＰｎＰ情報１１５に基づいてドライバのインストールをユーザに表示し、処理を終了する（ステップＳ１７５−１７）。
【０１８４】
次に、前記セットアップ処理用の受信関数Ｃａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎの動作について説明する。
【０１８５】
図３９は本発明の第４の実施の形態におけるセットアップ処理用の受信関数の動作を示すフローチャートである。
【０１８６】
この場合、本実施の形態におけるセットアップ処理用の受信関数には、前記第１の実施の形態におけるセットアップ処理用の受信関数に、ＰｎＰ情報取得要求があった際に、ホスト１２０からの設定インターフェイス情報を判断する処理が追加される。そして、設定インターフェイスがベンダ固有インターフェイスであった場合に、ベンダ固有ファンクション情報１３４を送受信バッファ２４に格納する処理が追加される。さらに、ホスト１２０からの設定インターフェイスＩＤ指定があった際に、ホスト１２０からの設定インターフェイス情報を判断する処理、及び、インターフェイスがベンダ固有インターフェイスであった場合に、ベンダ固有仕様に沿ったＵＳＢデバイスの初期化処理が追加される。
【０１８７】
ここで、受信通知を受けたセットアップ処理１３はＳＥＴＵＰトークンであるかどうかを判断する（ステップＳ１９１）。ＳＥＴＵＰトークンである場合は送受信バッファ２４から受信データを読み込む（ステップＳ１９２）。そして、ＵＳＢデイスクリプタ情報１３２の取得要求であるかどうかを判断する（ステップＳ１９３）。ここで、ＵＳＢデイスクリプタ情報１３２の取得要求である場合は、対象先の送受信バッファ２４にＵＳＢデイスクリプタ情報１３２を格納し、処理を終了する（ステップＳ１９４）。
【０１８８】
また、ＵＳＢデイスクリプタ情報１３２の取得要求でない場合は、ＰｎＰ情報１１５の取得要求であるかどうかを判断する（ステップＳ１９５）。そして、ＰｎＰ情報１１５の取得要求である場合は、設定インターフェイスがベンダ固有インターフェイスであるかどうかを判断する（ステップＳ１９６）。ここで、設定インターフェイスがベンダ固有インターフェイスである場合は、標準のＰｎＰ情報１１５を送受信バッファ２４に格納し、処理を終了する（ステップＳ１９７）。また、設定インターフェイスがベンダ固有インターフェイスでない場合は、ベンダ固有ファンクション情報１３４を送受信バッファ２４に格納し、処理を終了する（ステップＳ１９８）。
【０１８９】
なお、前述されたように、ＰｎＰ情報１１５の取得要求であるかどうかを判断してＰｎＰ情報１１５の取得要求でない場合、インターフェイスＩＤの指定であるかどうかを判断する（ステップＳ１９９）。そして、インターフェイスＩＤの指定でない場合は、その他コマンドに該当する処理を行って処理を終了する（ステップＳ２０３）。また、インターフェイスＩＤの指定である場合は、設定インターフェイスがベンダ固有インターフェイスであるかどうかを判断する（ステップＳ２００）。ここで、設定インターフェイスがベンダ固有インターフェイスである場合は、ベンダ固有仕様に沿ったＵＳＢデバイスの初期化を行い、処理を終了する（ステップＳ２０２）。また、設定インターフェイスがベンダ固有インターフェイスでない場合、すなわち、標準インターフェイスである場合は、標準プリンタ仕様に沿ったＵＳＢデバイスの初期化を行い、処理を終了する（ステップＳ２０１）。
【０１９０】
ここで、前述されたように、ＳＥＴＵＰトークンであるかどうかを判断してＳＥＴＵＰトークンでない場合、受信通知を受けたセットアップ処理１３はＩＮトークンであるかどうかを判断する（ステップＳ２０４）。そして、ＩＮトークンでない場合は、読み込んだデータに基づいてデータの書換えを行い、処理を終了する（ステップＳ２０７）。また、ＩＮトークンである場合は、送受信バッファ２４に送信データがあるかどうかを判断する（ステップＳ２０５）。そして、送信データがない場合は処理を終了する。また、送信データがある場合は、　送信データを該当する送受信バッファ２４から読み込み、ＵＳＢデバイス１３５に対してデータ送信を要求し、処理を終了する（ステップＳ２０６）。
【０１９１】
なお、ホスト１２０がプリンタ１３１にデータを送信する際に共通で使用されるホストデータ送信処理、ホスト１２０から通知されたデータを受信する際に共通で使用するプリンタデータ受信処理については、前記第１の実施の形態と同様であるので説明を省略する。
【０１９２】
このように、本実施の形態においては、ＵＳＢチップ２２内にハブ機能及び複数のＵＳＢデバイス機能を有さずに、前記実施の形態の機能を実現することができるので、前記実施の形態と比較してコストを低減することができる。
【０１９３】
次に、本発明の第５の実施の形態について説明する。なお、第１〜第４の実施の形態と同じ構造を有するものについては、同じ符号を付与することによってその説明を省略する。
【０１９４】
図４０は本発明の第５の実施の形態におけるプリンタシステムの概略図である。
【０１９５】
図４０に示されるように、ホスト１３０においては、ポート情報１３１で管理する内容が前記第４の実施の形態と異なっている。
【０１９６】
また、プリンタ１４１においては、ＵＳＢデイスクリプタ情報１４３、エンドポイント情報１４２、及び、ベンダ固有ファンクション情報１４４の内容が前記第４の実施の形態と異なっている。
【０１９７】
また、アプリケーションデータを振り分けるストリーム切替処理１４５及び切替情報１４６が追加され、プリンタ１４１は、送受信用のバッファとして、セットアップ処理２９用の送受信バッファ２４、ストリーム切替処理１４５用の受信バッファ２５及びストリーム切替処理１４５用の送信バッファ２６を有する。
【０１９８】
次に、前記プリンタ１４１のＵＳＢチップ２２の構成について説明する。
【０１９９】
図４１は本発明の第５の実施の形態におけるＵＳＢチップの構造を示す図である。
【０２００】
図４１に示されるように、前記プリンタ１４１上のＵＳＢチップ２２は、ＵＳＢデバイス１４７だけを有する。
【０２０１】
そして、該ＵＳＢデバイス１４７は、前記セットアップ処理２９のデータを送受信する送受信バッファ２４に関連付けられたデータ格納用待ち行列としてのＦＩＦＯ１４７ａ、前記ストリーム切替処理１４５のデータを受信する受信バッファ２５に関連付けられたＦＩＦＯ１４７ｂ、及び、前記ストリーム切替処理１４５のデータを送信する送信バッファ２６に関連付けられたＦＩＦＯ１４７ｃを有する。
【０２０２】
次に、前記ポート情報１３１の構成について説明する。
【０２０３】
図４２は本発明の第５の実施の形態におけるポート情報の構成を示す図である。
【０２０４】
図４２に示されるように、ポート情報１３１には、各ポート情報１３１毎にプリンタ１４１上のファンクションを指定するファンクションＩＤ情報が、前記第４の実施の形態に追加される。
【０２０５】
次に、前記プリンタ１４１におけるＵＳＢディスクリプタ情報１４３の構成について説明する。
【０２０６】
図４３は本発明の第５の実施の形態におけるＵＳＢディスクリプタ情報の構成を示す図である。
【０２０７】
図４３に示されるように、前記ＵＳＢディスクリプタ情報１４３は、エンドポイント情報として、一つのコントロール転送、一つのバルクアウト転送及び一つのバルクイン転送をサポートする標準プリンタインターフェイス情報＃１、並びに一つのコントロール転送、一つのバルクアウト転送及び一つのバルクイン転送をサポートするベンダ固有インターフェイス情報＃２によって構成される。
【０２０８】
そして、ベンダ固有インターフェイスは、ベンダ固有インターフェイス情報＃２中のデバイスクラス情報をプリンタクラスにし、デバイスサブクラスをベンダ固有のサブクラス情報である０ｘＦＦを格納しておくことによってホスト１３０に認識させる。
【０２０９】
次に、前記ベンダ固有ファンクション情報１４４の構成について説明する。
【０２１０】
図４４は本発明の第５の実施の形態におけるベンダ固有ファンクション情報の構成を示す図である。
【０２１１】
図４４に示されるように、前記ベンダ固有ファンクション情報１４４は、ベンダがサポートしているファンクション数、そのファンクション情報のＩＤ情報であるファンクションＩＤ、そのファンクションにおけるＰｎＰ情報のデータ長、及びそのファンクションのＰｎＰ文字列情報によって構成される。
【０２１２】
本実施の形態においては、ファンクション情報＃１としてＰＣＬプリンタに関する情報が、ファンクション情報＃２としてＰＳプリンタに関する情報が格納される。
【０２１３】
次に、前記エンドポイント情報１４２の構成について説明する。
【０２１４】
図４５は本発明の第５の実施の形態におけるエンドポイント情報の構成を示す図である。
【０２１５】
図４５に示されるように、前記エンドポイント情報１４２は、Ｃａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報としてストリーム切替処理１４５用送受信処理が格納されている。
【０２１６】
次に、前記切替情報１４６の構成について説明する。
【０２１７】
図４６は本発明の第５の実施の形態における切替情報の構成を示す図である。
【０２１８】
図４６に示されるように、前記切替情報１４６は、プリンタ１４１上に存在するファンクションに割り当てたファンクションＩＤ、及び、そのファンクションＩＤが指定された後に、受信したデータを通知するために使用する関数であるＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎによって構成され、プリンタ１４１上に実装されるファンクション分のデータが切替情報１４６に格納される。
【０２１９】
なお、本実施の形態におけるＰｎＰ情報１１５については、前記第３の実施の形態と同様であるので、図２６を援用して説明する。
【０２２０】
次に、前記構成のプリンタシステムにおけるＵＳＢデータ転送の動作について説明する。
【０２２１】
図４７は本発明の第５の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示すフローチャートである。なお、本実施の形態においては、ベンダ固有インターフェイスが選択されることを前提に説明する。
【０２２２】
まず、ホスト１３０上のセットアップ処理１３はバスリセットを検出すると、ＵＳＢデバイス１４７に対してコントロール転送を用いてＵＳＢディスクリプタ情報１４３を問い合わせる（ステップＳ２１１）。すると、ホスト１３０からのＵＳＢディスクリプタ情報１４３の問合せに対し、ＵＳＢデバイス１４７はＵＳＢディスクリプタ情報１４３をコントロール転送を用いてホスト１３０に返す（ステップＳ２１２）。そして、ホスト１３０上のセットアップ処理１３は、入手したＵＳＢデイスクリプタ情報１４３によって、接続されているデバイスの機器情報及び転送手段のサポート状況を認識し、ベンダ固有インターフェイスをサポートしていた場合、ベンダ固有インターフェイスＩＤ情報をプリンタ１４１に通知する（ステップＳ２１３）。
【０２２３】
続いて、該プリンタ１４１上のセットアップ処理２９は、通知されたインターフェイスＩＤ情報によってＵＳＢデバイス１４７を設定する（ステップＳ２１４）。そして、前記転送制御部１４は、プリンタ１４１からコントロール転送を用いてベンダ固有ファンクション情報１４４を取得し、ポート情報１３１を登録する。なお、登録したポート情報１３１と一致するドライバがない場合は、ユーザに対して新しいデバイスが検出されたことを通知する（ステップＳ２１５）。その後、ユーザによって印刷が指示されたアプリケーション１１は、ＰＳプリンタドライバ１０２に対して印刷を指示する（ステップＳ２１６）。また、印刷が指示されたＰＳプリンタドライバ１０２はＰＳ言語用の印刷データを生成し、転送制御部１４に対して送信を要求する（ステップＳ２１７）。さらに、出力先を判定する処理を行う（ステップＳ２１８）。そして、送信が要求された転送制御部１４は、前に送信したアプリケーションデータがＰＳデータでなかった場合、コントロール転送によって、ストリーム指定コマンドをプリンタ１４１に転送する（ステップＳ２１９）。
【０２２４】
続いて、ストリーム指定コマンドを受信したセットアップ処理２９は、ストリーム選択情報を変更する（ステップＳ２２０）。そして、前記転送制御部１４はバルクアウト転送によって、印刷データをＵＳＢデバイス１４７のパイプ＃１に通知する（ステップＳ２２１）。さらに、通知された印刷データは、転送制御部２７によってストリーム切替処理１４５に渡され、指定されたストリーム指定情報を元にデータを該当するファンクションに通知する（ステップＳ２２０）。そして、データ振分け処理を行う（ステップＳ２２２）。
【０２２５】
次に、前記ホスト１３０がプリンタ１４１にデータを送信する際に共通で使用されるホストデータ送信処理の動作について説明する。
【０２２６】
図４８は本発明の第５の実施の形態におけるホストデータ送受信処理の動作を示すフローチャートである。
【０２２７】
この場合、書込要求があった際に、最後に送信したファンクションＩＤ情報と今回送信するデータのファンクションＩＤ情報とが異なるかどうかを判断する処理が追加される。そして、最後に送信したファンクションＩＤ情報と今回送信するデータのファンクションＩＤ情報とが異なる場合、コントロール転送によってストリーム指定コマンドを送信する処理であるセットアップトークンパケットを生成して送信する処理が追加される。さらに、該当するファンクションＩＤ情報指定用のデータパケットを生成して送信する処理、及び、最後に送信したファンクションＩＤ情報を格納する処理が、前記第１の実施の形態に追加される。
【０２２８】
まず、プリンタ１４１へのリクエストが発生すると、転送制御部１４は、リクエストがあったポート番号と一致するポートがポート情報１３１に登録されているかどうかを検索する（ステップＳ２３１）。そして、リクエストがあったポート番号と一致するものがあったかどうかを判断する（ステップＳ２３２）。一致するものがあった場合は、プリンタ１４１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ２３３）また、一致するものがなかった場合は、エラーを通知し、処理を終了する（ステップＳ２４８）。
【０２２９】
続いて、転送制御部１４は、プリンタ１４１へのリクエストがセットアップ要求であるかどうかを判断し（ステップＳ２３３）、セットアップ要求である場合は、セットアップトークンパケットを生成して送信を要求し（ステップＳ２３４）、また、セットアップ要求でない場合は、プリンタ１４１へのリクエストが書込要求であるかどうかを判断する（ステップＳ２３６）。そして、書込要求である場合は、最後に送信したファンクションＩＤ情報と今回送信するデータのファンクションＩＤ情報とが異なるかどうかを判断する（ステップＳ２３７）。ここで、ファンクションＩＤ情報が異ならない場合は、アウトトークンパケットを生成し、送信を要求する（ステップＳ２３８）。
【０２３０】
なお、前述されたように、プリンタ１４１へのリクエストが書込要求であるかどうかを判断して、書込要求でない場合、転送制御部１４は、プリンタ１４１へのリクエストが読込要求であるかどうかを判断する（ステップＳ２４２）。ここで、読込要求である場合は、ＩＮトークンパケットを生成し、送信を要求する（ステップＳ２４３）。また、読込要求でない場合は、エラー要求があった処理に通知し、処理を終了する（ステップＳ２４８）。
【０２３１】
また、前述されたように、最後に送信したファンクションＩＤ情報と今回送信するデータのファンクションＩＤ情報とが異なるかどうかを判断して、ファンクションＩＤ情報が異なる場合、転送制御部１４は、セットアップトークンパケットを生成し、送信を要求する（ステップＳ２３９）。そして、該当するファンクションＩＤ情報指定用のデータパケットを生成して送信する（ステップＳ２４０）。最後に送信したファンクションＩＤ情報を格納し（ステップＳ２４１）、再び、プリンタ１４１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ２３３）。
【０２３２】
なお、前述されたように、プリンタ１４１へのリクエストがセットアップ要求であるかどうかを判断して、セットアップ要求である場合は、転送制御部１４は、セットアップトークンパケットを生成し、送信を要求する（ステップＳ２３４）。続いて、データパケットを生成し、送信を要求する（ステップＳ２３５）。そして、送信を要求した転送制御部１４は、プリンタ１４１からの応答がＮＡＣＫであるかどうかを判断する（ステップＳ２４４）。ここで、ＮＡＣＫである場合は、プリンタ１４１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ２３３）。また、ＡＣＫである場合は、前記転送制御部１４は、ＩＮトークンであるかどうかを判断する（ステップＳ２４５）。そして、ＩＮトークンである場合は、リバースデータを通知し、処理を終了する（ステップＳ２４７）。また、ＩＮトークンでない場合は、転送するデータをすべて送信したかどうかを判断する（ステップＳ２４６）。そして、すべて送信した場合は処理を終了し、すべて送信していない場合、プリンタ１４１へのリクエストがセットアップ要求であるかどうかを判断する（ステップＳ２３３）。
【０２３３】
次に、図４７のステップＳ２１５におけるポート登録処理のサブルーチンについて説明する。
【０２３４】
図４９は本発明の第５の実施の形態におけるポート登録処理のサブルーチンを示す図である。
【０２３５】
この場合、ポート登録処理においては、プリンタ１４１のベンダ固有ファンクション情報１４４からファンクションＩＤ情報をポート情報１３１に格納する処理が、前記第４の実施の形態と異なる。
【０２３６】
まず、ホスト１３０の転送制御部１４は、ベンダ固有インターフェイスが選択されているかどうかを判断する（ステップＳ２１５−１）。ベンダ固有インターフェイスが選択されている場合は、プリンタ１４１に対してベンダ固有ファンクション情報１４４を問い合わせる（ステップＳ２１５−２）。そして、入手したベンダ固有ファンクション情報１４４中のファンクション数分のファンクション情報を処理したかどうかを判断する（ステップＳ２１５−３）。ここで、ファンクション数分のファンクション情報を処理した場合は処理を終了し、ファンクション数分のファンクション情報を処理していない場合は、ベンダ固有ファンクション情報１４４中のファンクションＩＤをポート情報１３１に格納する（ステップＳ２１５−４）。
【０２３７】
続いて、転送制御部１４は、ベンダ固有ファンクション情報１４４中のファンクション情報＃ｎのＰｎＰ情報１１５を特定する（ステップＳ２１５−５）。そして、新しいポートをオープンし、そのポート番号情報をポート情報１３１に格納する（ステップＳ２１５−６）。また、特定したＰｎＰ情報１１５及び生成したポート番号情報を元にポート情報１２１を登録する（ステップＳ２１５−７）。さらに、既に同一のデバイス情報がないかどうか登録されているポートを検索する（ステップＳ２１５−８）。
【０２３８】
続いて、転送制御部１４は、同一のデバイスが存在するかどうかを判断する（ステップＳ２１５−９）。同一のデバイスが存在する場合はベンダ固有ファンクション数カウンタをデクリメントする（ステップＳ２１５−１１）。また、同一のデバイスが存在しない場合は、登録されたＰｎＰ情報１１５を元にドライバのインストールをユーザに表示し（ステップＳ２１５−１０）し、その後、ベンダ固有ファンクション数カウンタをデクリメントする（ステップＳ２１５−１１）。そして、再び、入手したベンダ固有ファンクション情報１４４中のファンクション数分のファンクション情報を処理したかどうかを判断する（ステップＳ２１５−３）。
【０２３９】
また、前述されたように、ベンダ固有インターフェイスが選択されているかどうかを判断してベンダ固有インターフェイスが選択されていない場合、プリンタ１４１に対してＰｎＰ情報１１５を問い合わせ、該ＰｎＰ情報１１５を取得する（ステップＳ２１５−１２）。そして、新しいポートをオープンし、そのポート番号情報をポート情報１３１に格納する（ステップＳ２１５−１３）。さらに、取得したＰｎＰ情報１１５及び生成したポート番号情報を元にポート情報１３１を登録する（ステップＳ２１５−１４）。そして、既に同一のデバイス情報がないかどうか登録されているポートを検索する（ステップＳ２１５−１５）。
【０２４０】
続いて、転送制御部１４は、同一のデバイスが存在するかどうかを判断する（ステップＳ２１５−１６）。同一のデバイスが存在する場合は処理を終了し、同一のデバイスが存在しない場合は、ＰｎＰ情報１１５を元にドライバのインストールをユーザに表示し、処理を終了する（ステップＳ２１５−１７）。
【０２４１】
次に、前記セットアップ処理用の受信関数Ｃａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎの動作について説明する。
【０２４２】
図５０は本発明の第５の実施の形態におけるセットアップ処理用の受信関数の動作を示すフローチャートである。
【０２４３】
この場合、本実施の形態におけるセットアップ動作においては、ベンダオプションコマンドであるストリーム切替コマンドであるかどうかを判断し、ストリーム切替コマンドである場合、現在、プリンタ１４１で設定されているインターフェイスがベンダ固有インターフェイスであるかどうかをを判断し、ベンダ固有インターフェイスである場合、切替情報１４６中にホスト１３０から通知されたファンクションＩＤ情報があるかどうかを判断し、該当するファンクションＩＤがある場合、ストリーム切替情報をホスト１３０から通知されたファンクションＩＤに変更する処理が、前記第４の実施の形態と異なる。
【０２４４】
ここで、受信通知を受けたセットアップ処理１３はＳＥＴＵＰトークンであるかどうかを判断する（ステップＳ２５１）。ＳＥＴＵＰトークンである場合は送受信バッファ２４から受信データを読み込む（ステップＳ２５２）。そして、ＵＳＢディスクリプタ情報１４３の取得要求であるかどうかを判断する（ステップＳ２５３）。ここで、ＵＳＢディスクリプタ情報１４３の取得要求である場合は、対象先の送受信バッファ２４にＵＳＢディスクリプタ情報１４３を格納し、処理を終了する（ステップＳ２５４）。
【０２４５】
また、ＵＳＢディスクリプタ情報１４３の取得要求でない場合は、ＰｎＰ情報１１５の取得要求であるかどうかを判断する（ステップＳ２５５）。そして、ＰｎＰ情報１１５の取得要求である場合は、設定インターフェイスがベンダ固有インターフェイスであるかどうかを判断する（ステップＳ２５６）。ここで、設定インターフェイスがベンダ固有インターフェイスである場合は、標準のＰｎＰ情報１１５を送受信バッファ２４に格納し、処理を終了する（ステップＳ２５７）。また、設定インターフェイスがベンダ固有インターフェイスでない場合は、ベンダ固有ファンクション情報１４４を送受信バッファ２４に格納し、処理を終了する（ステップＳ２５８）。
【０２４６】
なお、前述されたように、ＰｎＰ情報１１５の取得要求であるかどうかを判断してＰｎＰ情報１１５の取得要求でない場合、ストリーム切替コマンドであるかどうかを判断する（ステップＳ２５９）。そして、ストリーム切替コマンドである場合、現在、プリンタ１４１で設定されているインターフェイスがベンダ固有インターフェイスであるかどうかを判断する（ステップＳ２６０）。ここで、設定インターフェイスがベンダ固有インターフェイスである場合、切替情報１４６中にホスト１３０から通知されたファンクションＩＤ情報があるかどうかを判断し、該当するファンクションＩＤがある場合、ストリーム切替情報をホスト１３０から通知されたファンクションＩＤに変更し、処理を終了する（ステップＳ２６１）。また、設定インターフェイスがベンダ固有インターフェイスでない場合、すなわち、標準インターフェイスである場合は処理を終了する。
【０２４７】
また、前述されたように、ストリーム切替コマンドであるかどうかを判断してストリーム切替コマンドでない場合、インターフェイスＩＤの指定であるかどうかを判断する（ステップＳ２６２）。そして、インターフェイスＩＤの指定である場合、標準プリンタ仕様に沿ったＵＳＢデバイスの初期化を行い、処理を終了する（ステップＳ２６３）。また、インターフェイスＩＤの指定でない場合、ベンダ固有仕様に沿ったＵＳＢデバイスの初期化を行い、処理を終了する（ステップＳ２６４）。
【０２４８】
ここで、前述されたように、ＳＥＴＵＰトークンであるかどうかを判断してＳＥＴＵＰトークンでない場合、受信通知を受けたセットアップ処理１３はＩＮトークンであるかどうかを判断する（ステップＳ２６５）。そして、ＩＮトークンでない場合は、読み込んだデータに基づいてデータの書換えを行い、処理を終了する（ステップＳ２６８）。また、ＩＮトークンである場合は、送受信バッファ２４に送信データがあるかどうかを判断する（ステップＳ２６６）。そして、送信データがない場合は処理を終了する。また、送信データがある場合は、　送信データを該当する送受信バッファ２４から読み込み、ＵＳＢデバイス１４７に対してデータ送信を要求し、処理を終了する（ステップＳ２６７）。
【０２４９】
次に、図４７のステップＳ２２０におけるストリーム切替処理のサブルーチンについて説明する。
【０２５０】
図５１は本発明の第５の実施の形態におけるストリーム切替処理のサブルーチンを示す図である。
【０２５１】
まず、転送制御部１４は、設定されたファンクションＩＤ情報をキーに切替情報１４６中のファンクションＩＤと一致するＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎ情報を読み込む（ステップＳ２２０−１）。そして、検索したＣａｌｌ　Ｂａｃｋ　Ｆｕｎｃｔｉｏｎを使用し、受信したデータを該当するファンクションに通知し、処理を終了する（ステップＳ２２０−２）。
【０２５２】
なお、ホスト１２０から通知されたデータを受信する際に共通で使用するプリンタデータ受信処理については、前記第１の実施の形態と同様であるので説明を省略する。また、デバイス識別処理については、前記第３の実施の形態と同様であるので、説明を省略する。
【０２５３】
このように、本実施の形態においては、最小限のＵＳＢチップの構成で、前記実施の形態における機能を実現することができるので、コストを低減することができる。
【０２５４】
また、前記ＵＳＢチップの構成に依存せずに機能を追加することができるので、拡張性を高くすることができる。
【０２５５】
なお、本発明は前記実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能であり、それらを本発明の範囲から排除するものではない。
【０２５６】
【発明の効果】
以上詳細に説明したように、本発明によれば、画像形成システムにおいては、通信機能部を備えるホストと、第１通信部、第２通信部及び中継部を備える画像形成装置とを有し、前記第１通信部は前記中継部を介して前記通信機能部とデータの通信を行い、前記第２通信部は前記中継部を介して前記通信機能部とデータの通信を行う。
【０２５７】
この場合、周辺機器にジャム等が発生して印刷処理がビジー状態となっても、周辺機器のリアルタイムなステータスを取得することができる。また、印刷途中のデータのキャンセルを容易に指示することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるプリンタシステムの概略図である。
【図２】従来のプリンタシステムの概略図である。
【図３】従来のＵＳＢチップの構造を示す図である。
【図４】従来のプリンタシステムにおけるＵＳＢデータ転送の動作を示すフローチャートである。
【図５】本発明の第１の実施の形態におけるＵＳＢチップの構造を示す図である。
【図６】本発明の第１の実施の形態におけるポート情報の構成を示す図である。
【図７】本発明の第１の実施の形態におけるＵＳＢディスクリプタ情報の構成を示す図である。
【図８】本発明の第１の実施の形態におけるＰｎＰ情報の構成を示す図である。
【図９】本発明の第１の実施の形態におけるエンドポイント情報の構成を示す図である。
【図１０】本発明の第１の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第１のフローチャートである。
【図１１】本発明の第１の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第２のフローチャートである。
【図１２】本発明の第１の実施の形態におけるホストデータ送受信処理の動作を示すフローチャートである。
【図１３】本発明の第１の実施の形態におけるプリンタデータ送受信処理の動作を示すフローチャートである。
【図１４】本発明の第１の実施の形態におけるデバイス識別処理のサブルーチンを示す図である。
【図１５】本発明の第１の実施の形態におけるポート登録処理のサブルーチンを示す図である。
【図１６】本発明の第１の実施の形態におけるセットアップ処理用の受信関数の動作を示す第１のフローチャートである。
【図１７】本発明の第１の実施の形態におけるセットアップ処理用の受信関数の動作を示す第２のフローチャートである。
【図１８】本発明の第２の実施の形態におけるプリンタシステムの概略図である。
【図１９】本発明の第２の実施の形態におけるＵＳＢチップの構造を示す図である。
【図２０】本発明の第２の実施の形態におけるＰｎＰ情報の構成を示す図である。
【図２１】本発明の第２の実施の形態におけるエンドポイント情報の構成を示す図である。
【図２２】本発明の第２の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第１のフローチャートである。
【図２３】本発明の第２の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第２のフローチャートである。
【図２４】本発明の第３の実施の形態におけるプリンタシステムの概略図である。
【図２５】本発明の第３の実施の形態におけるＵＳＢチップの構造を示す図である。
【図２６】本発明の第３の実施の形態におけるＰｎＰ情報の構成を示す図である。
【図２７】本発明の第３の実施の形態におけるエンドポイント情報の構成を示す図である。
【図２８】本発明の第３の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第１のフローチャートである。
【図２９】本発明の第３の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示す第２のフローチャートである。
【図３０】本発明の第４の実施の形態におけるプリンタシステムの概略図である。
【図３１】本発明の第４の実施の形態におけるＵＳＢチップの構造を示す図である。
【図３２】本発明の第４の実施の形態におけるポート情報の構成を示す図である。
【図３３】本発明の第４の実施の形態におけるＵＳＢディスクリプタ情報の構成を示す図である。
【図３４】本発明の第４の実施の形態におけるベンダ固有ファンクション情報の構成を示す図である。
【図３５】本発明の第４の実施の形態におけるエンドポイント情報の構成を示す図である。
【図３６】本発明の第４の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示すフローチャートである。
【図３７】本発明の第４の実施の形態におけるデバイス識別処理のサブルーチンを示す図である。
【図３８】本発明の第４の実施の形態におけるポート登録処理のサブルーチンを示す図である。
【図３９】本発明の第４の実施の形態におけるセットアップ処理用の受信関数の動作を示すフローチャートである。
【図４０】本発明の第５の実施の形態におけるプリンタシステムの概略図である。
【図４１】本発明の第５の実施の形態におけるＵＳＢチップの構造を示す図である。
【図４２】本発明の第５の実施の形態におけるポート情報の構成を示す図である。
【図４３】本発明の第５の実施の形態におけるＵＳＢディスクリプタ情報の構成を示す図である。
【図４４】本発明の第５の実施の形態におけるベンダ固有ファンクション情報の構成を示す図である。
【図４５】本発明の第５の実施の形態におけるエンドポイント情報の構成を示す図である。
【図４６】本発明の第５の実施の形態における切替情報の構成を示す図である。
【図４７】本発明の第５の実施の形態におけるプリンタシステムのＵＳＢデータ転送の動作を示すフローチャートである。
【図４８】本発明の第５の実施の形態におけるホストデータ送受信処理の動作を示すフローチャートである。
【図４９】本発明の第５の実施の形態におけるポート登録処理のサブルーチンを示す図である。
【図５０】本発明の第５の実施の形態におけるセットアップ処理用の受信関数の動作を示すフローチャートである。
【図５１】本発明の第５の実施の形態におけるストリーム切替処理のサブルーチンを示す図である。
【符号の説明】
３８　　ＵＳＢケーブル
６０、８０、１００、１２０、１３０　　ホスト
７１、９１、１１１、１３１、１４１　　プリンタ
８０、９５、１１２　　ＵＳＢハブ
８１、８２、９６、９７、１１３、１１４、１３５、１４７　　ＵＳＢデバイス
【図１】
2004078823.tif 000003
【図２】
2004078823.tif 000004
【図３】
2004078823.tif 000005
【図４】
2004078823.tif 000006
【図５】
2004078823.tif 000007
【図６】
2004078823.tif 000008
【図７】
2004078823.tif 000009
【図８】
2004078823.tif 000010
【図９】
2004078823.tif 000011
【図１０】
2004078823.tif 000012
【図１１】
2004078823.tif 000013
【図１２】
2004078823.tif 000014
【図１３】
2004078823.tif 000015
【図１４】
2004078823.tif 000016
【図１５】
2004078823.tif 000017
【図１６】
2004078823.tif 000018
【図１７】
2004078823.tif 000019
【図１８】
2004078823.tif 000020
【図１９】
2004078823.tif 000021
【図２０】
2004078823.tif 000022
【図２１】
2004078823.tif 000023
【図２２】
2004078823.tif 000024
【図２３】
2004078823.tif 000025
【図２４】
2004078823.tif 000026
【図２５】
2004078823.tif 000027
【図２６】
2004078823.tif 000028
【図２７】
2004078823.tif 000029
【図２８】
2004078823.tif 000030
【図２９】
2004078823.tif 000031
【図３０】
2004078823.tif 000032
【図３１】
2004078823.tif 000033
【図３２】
2004078823.tif 000034
【図３３】
2004078823.tif 000035
【図３４】
2004078823.tif 000036
【図３５】
2004078823.tif 000037
【図３６】
2004078823.tif 000038
【図３７】
2004078823.tif 000039
【図３８】
2004078823.tif 000040
【図３９】
2004078823.tif 000041
【図４０】
2004078823.tif 000042
【図４１】
2004078823.tif 000043
【図４２】
2004078823.tif 000044
【図４３】
2004078823.tif 000045
【図４４】
2004078823.tif 000046
【図４５】
2004078823.tif 000047
【図４６】
2004078823.tif 000048
【図４７】
2004078823.tif 000049
【図４８】
2004078823.tif 000050
【図４９】
2004078823.tif 000051
【図５０】
2004078823.tif 000052
【図５１】
2004078823.tif 000053