JP2008097176A - デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム - Google Patents

デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム Download PDF

Info

Publication number
JP2008097176A
JP2008097176A JP2006276091A JP2006276091A JP2008097176A JP 2008097176 A JP2008097176 A JP 2008097176A JP 2006276091 A JP2006276091 A JP 2006276091A JP 2006276091 A JP2006276091 A JP 2006276091A JP 2008097176 A JP2008097176 A JP 2008097176A
Authority
JP
Japan
Prior art keywords
communication
control unit
request
data
printer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006276091A
Other languages
English (en)
Inventor
Yoichi Ikeda
洋一 池田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2006276091A priority Critical patent/JP2008097176A/ja
Publication of JP2008097176A publication Critical patent/JP2008097176A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】デバイスとの通信を所定数に制限するための容易な仕組みを提供する。
【解決手段】デバイスと接続される装置は、通信要求に応じて前記デバイスとの通信を行う通信制御部と、デバイスに関連する処理を行う処理部とを備える。通信制御部は、一の通信要求に対応する通信が完了するまで、他の通信要求に対応する通信を制限する。処理部は、通信要求と所定のコールバック関数の指定を通信制御部に対して行う。さらに、通信制御部は、指定されたコールバック関数を呼び出すことにより、通信要求を行った処理部に、デバイスとの通信により取得されたデータを与える。
【選択図】図2

Description

本発明は、デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラムに関する。
ネットワークに接続されたクライアント装置に対してプリンタなどのデバイスの機能を提供するデバイスサーバ装置が知られている。デバイスサーバ装置は、クライアント装置が接続されているネットワークに接続されると共に、デバイスと所定のインタフェースを介して接続される。デバイスとの接続インターフェースとしては、例えば、USB(Universal Serial Bus)やIEEE1394を始めとするシリアルバスが知られている(特許文献1)。デバイスサーバ装置とデバイスとの間の通信は、インタフェースやプロトコルの仕様により単一に制限される場合がある。単一に制限されるとは、デバイスに対する一の通信要求に対応する通信が完了するまで、デバイスに対する他の全ての通信要求に対応する通信が行われないように制限されることを意味する。
かかる場合には、デバイスサーバ装置は、上記制限を守るためのなんらかの仕組みが必要になる。例えば、デバイスサーバ装置が、デバイスとの通信を必要とする複数の処理モジュールを有しており、それぞれ独立して通信要求を発行することができる場合、複数の処理モジュールが、互いに同期を取りながら通信要求を発行するタイミングを調整して上記制限を守ることが考えられる。
特開2002−217920号公報
しかしながら、上述技術では、例えば、新たな処理モジュールをデバイスサーバ装置に追加する場合には、新たな処理モジュールと、既存の処理モジュールとの間でも同期を取る仕組みを構築する必要があるなど、仕組みが煩雑になるおそれがあった。なおこのような課題は、デバイスサーバ装置においてデバイスの通信が単一に制限される場合に限らず、デバイスと接続される装置において、デバイスとの通信が所定数に制限される場合に共通する課題であった。
本発明は、上記課題の少なくとも一部を解決するためになされたものであり、デバイスとの通信を所定数に制限するための容易な仕組みを提供することを目的とする。
上記課題の少なくとも一部を解決するため、本発明の第1の態様は、デバイスと接続される装置を提供する。第1の態様に係る装置は、通信の要求に応じて前記デバイスとの通信を行う通信制御部であって、一の前記通信の要求に対応する通信が完了するまで、他の前記通信の要求に対応する通信を制限する、前記通信制御部と、前記デバイスに関連する処理を行う処理部であって、前記通信の要求と所定のコールバック関数の指定を前記通信制御部に対して行う、前記処理部と、を備え、前記通信制御部は、前記指定されたコールバック関数を呼び出すことにより、前記通信要求を行った前記処理部に、前記デバイスとの通信により取得されたデータを与える。
第1の態様に係る装置によれば、容易な仕組みで、当該装置とデバイスとの間の通信の制限を実現することができる。
第1の態様に係る装置において、前記通信制御部は、前記指定されたコールバック関数を複数回に亘って呼び出すことにより、一の前記通信の要求により取得されるデータを前記複数回に分けて前記通信の要求を行った前記処理部に与えても良い。こうすれば、一の通信要求に対応する通信により取得されたデータが大きくても、複数回に分けてコールバックを行うことにより、取得されたデータを処理部に渡すことができる。
第1の態様に係る装置において、複数の前記処理部を備えても良い。本装置では、通信制御部が装置とデバイスとの間の通信の制限を実現する。従って、装置とデバイスとの間の通信の制限を実現するために複数の処理部は、互いに同期を取るなどして通信要求のタイミングを調整する必要がない。この結果、装置とデバイスとの間の通信の制限を実現するための煩雑さを解消または低減することができる。
第1の態様に係る装置は、ネットワークを介してクライアント装置と接続されるサーバ装置であり、前記処理部の一つは、前記クライアント装置からの要求に応じて、前記クライアント装置に対して前記デバイスが有するデータを送信するネットワーク制御部であり、前記ネットワーク制御部は、前記デバイスが有するデータを取得するための前記通信要求のときに、前記クライアント装置を特定するためのクライアント特定情報を、前記通信制御部に対して通知し、前記通信制御部は、前記指定されたコールバック関数を呼び出すときに、前記通知されたクライアント特定情報を前記ネットワーク制御部に通知しても良い。こうすれば、コールバック関数は、クライアント特定情報に従って、適切なクライアントにデバイスから取得したデータを送信することができる。
なお、本発明は、種々の態様で実現することが可能であり、例えば、デバイスと接続されると共に、前記デバイスに関連する処理を行う処理部を有する装置において、前記デバイスとの通信を制御する方法のような方法発明として実現することができる。さらに、本発明は、上記装置または方法をコンピュータに実現させるコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の態様で実現することができる。
以下、本発明について、図面を参照しつつ、実施例に基づいて説明する。
A.実施例:
・ネットワークシステムの構成:
図1を参照して、本実施例におけるネットワークシステムの構成について説明する。図1は、ネットワークシステムの概略構成を示す説明図である。ネットワークシステムは、図1に示すように、プリントサーバ装置100と、プリンタ200と、クライアント装置としての計算機(以下、単にクライアントという。)300a、300bと、を含む。クライアント300a、300bと、プリントサーバ装置100とは、LANなどのネットワークNWを介して互いに接続されている。プリントサーバ装置100と、プリンタ200とは、USB(Universal Serial Bus)ケーブルCVを用いて接続されている。プリンタ200とプリントサーバ装置100とは、同一の筐体の中に納められていても良いし、それぞれ別体の筐体に納められていても良い。
プリントサーバ装置100は、図1に示すように、中央演算装置(CPU)110と、メモリ120と、USBホストインタフェース(IF)部130と、ネットワークインタフェース(IF)部140と、操作部150と、を備えている。
USBホストIF部130は、USBケーブルCVを介してプリンタ200などのローカルデバイスと通信するためのインタフェースであり、USB規格に従ったデータ通信をUSBケーブルCV接続されたローカルデバイスとの間で実行する。
ネットワークIF部140は、ネットワークNWを介してクライアント300a、300bと通信するためのインタフェースであり、イーサネットの仕様に対応したケーブルを介してネットワークNWと接続される。
操作部150は、ユーザからの操作を受け付ける構成要素であり、例えば、ユーザからの操作を受け付けるためのボタンが配置された操作パネルである。
CPU110は、メモリ120に格納されている各種プログラムを実行することにより、プリントサーバとしての機能を実現する。
メモリ120には、種々のプログラムやデータが格納されるが、図1においては、本実施例における処理に必要な構成を選択的に図示し、本明細書においては、図示された構成について説明する。メモリ120には、制御プログラム122が格納されている。
制御プログラム122は、クライアント300a、300bの要求に応じてプリンタ200に印刷を実行させるプリントサービスや、クライアント300a、300bの要求、あるいは、操作部150を介して受け付けられた要求に応じてプリンタ200の情報を提供したりプリンタ200の設定・制御を行ったりするプリンタ管理サービスなど、プリントサーバとしての機能を実現するためのプログラムである。制御プログラム122は、プリンタ200に関する処理を行う処理モジュールとして、起動・終了制御部M1と、設定データ制御部M2と、ネットワーク制御部M3とを含む。制御プログラム122は、さらに、処理モジュールM1〜M3の下位モジュールとして、ネットワークIF部140を介した通信を制御するネットワークプロトコル部124と、USBホストIF部130を介した通信を制御するUSB通信制御部126とを含む。
起動・終了制御部M1は、操作部150を介して受け付けられた要求に応じて、プリンタ200の起動や終了を行う。
設定データ制御部M2は、操作部150を介して受け付けられた要求に応じて、プリンタ200の各種設定を行う。
ネットワーク制御部M3は、クライアント300a、300bからネットワークNWを介して受け付けられた要求に応じて、プリンタ200の制御、例えば、印刷の実行や各種設定、あるいは、プリンタ200が保持する情報(後述するMIBデータ)の取得を行う。
終了制御部M1、設定データ制御部M2、および、ネットワーク制御部M3は、上述したプリンタ200に関する処理を行うために、プリンタ200と通信する必要がある。例えば、終了制御部M1は、起動コマンドや終了コマンドを、プリンタ200に送信して、その応答を受信する必要があり、設定データ制御部M2は、設定データをプリンタ200に送信して、その応答を受信する必要がある。また、ネットワーク制御部M3は、例えば、MIBデータをプリンタ200に送信してもらう必要がある。USB通信制御部126は、上位モジュールである処理モジュールM1〜M3から通信要求、例えば、起動コマンドおよび終了コマンドの送信要求や、MIBデータの取得要求(以下、単にデータ要求という。)を受け付け、処理モジュールM1〜M3のためにプリンタ200との通信を実行する。
ネットワークプロトコル部124は、上位モジュールであるネットワーク制御部M3のためにクライアント300a、300bとの通信を実行する。具体的には、ネットワークプロトコル部124は、HTTP層およびTCP/IP層の処理を行う。
プリンタ200は、図1に示すように、CPU210と、メモリ220と、USBデバイスインタフェース(IF)部230と、プリンタエンジン240とを備えている。
USBデバイスIF部230は、USBケーブルCVを介してプリントサーバ装置100と通信するためのインタフェースである。
プリンタエンジン240は、実際に印刷を行う機構部分であり、感光体ドラム等、用紙に印刷するためのハードウェア群から成る。
CPU210は、メモリ220に格納されている制御プログラム222を実行することにより、プリンタ200の各構成要素の制御を行う。例えば、CPU210は、上述したUSBデバイスIF部230を制御して、プリントサーバ装置100から印刷データを受け取り、プリンタエンジン240を制御して、受け取った印刷データに基づく印刷を行う。
メモリ220には、CPU210によるプリンタ200の制御を実現するための上述した制御プログラム222が格納されている。メモリ220は、さらに、MIB(Management Information Base)と呼ばれる形式で記述されたプリンタ200に関する種々の情報(MIBデータ)が格納されているMIB格納部224を備えている。MIBデータは、例えば、プリンタの設定情報や、印刷に使用した紙の種類や枚数の情報、印刷に使用したトナー量あるいはインク量の情報、および紙ジャム等の種々の障害情報などを含む。
クライアント300は、例えば、CPUやメモリを備える周知のパーソナルコンピュータであり、HTTPクライアントプログラム(図示省略)がインストールされている。クライアント300はHTTPクライアントプログラムを用いて、プリントサーバ装置100にアクセスすることにより、プリントサーバ装置100が提供する上述のサービスを利用することができる。
・ネットワークシステムの動作:
プリントサーバ装置100が、クライアント300aからのデータ要求を受け付け、該要求に対する応答として要求されたデータをクライアント300aに対して送信するデータ要求処理動作を具体例として、図2を参照しながらネットワークシステムの動作を説明する。図2は、データ要求処理動作のシーケンスを示す第1のシーケンス図である。
クライアント300aは、プリンタ200に関する情報、具体的には、上述したMIBデータを要求するデータ要求を、プリントサーバ装置100に対して送信する(ステップ[1])。プリントサーバ装置100に受信されたデータ要求は、ネットワークプロトコル部124を介して、ネットワーク制御部M3に渡される。ネットワーク制御部M3は、その際、データ要求の要求元(クライアント300a)を、例えば、IPアドレスにより認識しておく。
ネットワーク制御部M3は、コールバック関数を指定する関数指定と、データ要求の要求元であるクライアントを特定するためのクライアント特定情報と共に、データ要求をUSB通信制御部126に渡して、プリンタ200との通信を要求する(ステップ[2])。具体的には、ネットワーク制御部M3は、USB通信制御部126を構成する関数、すなわち、プリンタ200との通信を行う関数をコールして、データ要求と、コールバック関数のアドレスと、クライアント特定情報(例えば、IPアドレス)とを、引数として当該関数に渡す。ここで、ネットワーク制御部M3は、コールバック関数として、ネットワーク制御部M3を構成する関数のうち、クライアントに応答を送信する関数を指定しておく。
USB通信制御部126は、プリンタ200とUSBケーブルCVを介した通信を行い、ネットワーク制御部M3から受け取ったデータ要求を、プリンタ200に対して送信する(ステップ[3])。
プリンタ200の制御プログラム222は、USBデバイスIF部230を介して、USB通信制御部126からデータ要求を受け取ると、データ要求に従ってデータをUSB通信制御部126に送信する(ステップ[4])。具体的には、制御プログラム222は、MIB格納部224からMIBデータを取得し、取得したMIBデータをUSB通信制御部126に送信する。
USB通信制御部126は、メモリ220に確保された受信バッファにプリンタ200から受信したデータを順次格納していく。本具体例では、プリンタ200から受信すべきデータが、受信バッファより大きく受信バッファの2倍未満であり、2回に分けてプリンタ200からのデータを受信する場合を示す。USB通信制御部126は、受信バッファが足りなくなると、受信バッファに格納されたデータとクライアント特定情報とを、コールバックによりネットワーク制御部M3に渡す(ステップ[5])。具体的には、USB通信制御部126は、ステップ[2]で受け取ったコールバック関数のアドレスによって指定されたコールバック関数を呼び出し(コールバックし)、当該コールバック関数の引数として、ステップ[2]で受け取ったクライアント特定情報と、受信バッファに格納されたデータをネットワーク制御部M3に渡す。USB通信制御部126は、USBプロトコルに従ったフロー制御により、プリンタ200からのデータの受信を一時的に停止しておく。
ネットワーク制御部M3は、受け取ったデータをクライアント300aに対して送信する(ステップ[6])。具体的には、コールバックされた関数(ネットワーク制御部M3を構成する関数)が、引数として受け取ったクライアント特定情報によりクライアント300aを特定し、引数として受け取ったデータをクライアント300aに対して、ネットワークプロトコル部124を介して送信する。
ネットワーク制御部M3は、受け取ったデータをクライアント300aに対して送信すると、コールバックの応答をUSB通信制御部126に返す(ステップ[7])。すなわち、ステップ[5]においてコールバックされた関数の戻り値をUSB通信制御部126に返す。ここで返される戻り値は、例えば、処理が問題なく終了したことを示す「TRUE」値などであり、受信データは含まれない。
USB通信制御部126は、コールバックの応答を受け取ると、受信バッファを初期化し、フロー制御により停止していた受信を再開してプリンタ200から残りのデータを受信し、受信バッファに格納する(ステップ[8])。この結果、ステップ[3]においてプリンタ200に送信されたデータ要求に対応するプリントサーバ装置100−プリンタ200間の通信は完了する。
USB通信制御部126は、全てのデータを受信すると、ステップ[5]と同様にして、受信バッファに格納されたデータとクライアント特定情報とを、コールバックによりネットワーク制御部M3に渡す(ステップ[9])。ネットワーク制御部M3は、ステップ[6]と同様にして、受け取ったデータをクライアント300aに対して送信し(ステップ[10])、送信後にステップ[7]と同様にして、コールバックの応答をUSB通信制御部126に返す(ステップ[11])。
USB通信制御部126は、コールバックにより、ネットワーク制御部M3からの通信要求に対応して受信した全てのデータをネットワーク制御部M3に渡し、最後のコールバックの応答を受け取ると、ステップ[2]における通信要求に対する応答をネットワーク制御部M3に返す(ステップ[12]。具体的には、USB通信制御部126は、ステップ[2]においてネットワーク制御部M3によってコールされた関数(プリンタ200との通信を行う関数)の戻り値を、ネットワーク制御部M3に返す。
なお、以上では、ネットワーク制御部M3からUSB通信制御部126に対して通信要求が行われる場合を例に説明したが、他の上位モジュールである起動・終了制御部M1および設定データ制御部M2からUSB通信制御部126に対して行われる通信要求も、同様に処理される。例えば、起動・終了制御部M1が、起動コマンドをプリンタ200に対して送信する通信要求や、設定データ制御部M2が設定データをプリンタ200に対して送信する通信要求も同様に処理される。
また、以上では、プリンタ200から受信すべきデータ(受信データ)が、受信バッファより大きく受信バッファの2倍未満である場合を例に説明したが、受信データが受信バッファより小さい場合は、一回のコールバックで全ての受信データをネットワーク制御部M3に渡せば良いし、受信データが受信バッファの2倍より大きい場合は、3回以上のコールバックに分けて受信データをネットワーク制御部M3に渡せばよい。すなわち、コールバックの回数を増やすことにより、USB通信制御部126は、あらゆる大きさの受信データをネットワークプロトコル部124に渡すことができる。ここで重要なことは、受信データがどれほど大きくても、コールバックの回数が増えるだけであり、ネットワーク制御部M3からUSB通信制御部126への通信要求(ステップ[2])は1回であり、その通信要求に対する応答(ステップ[12]の応答)も1回であることである。すなわち、プリンタ200−USB通信制御部126間の一回の通信は、上位モジュールからUSB通信制御部126への一回の通信要求(プリンタ200との通信を行う関数のコール)に応じて開始される。そして、プリンタ200−USB通信制御部126間の一回の通信が終了した後に、該通信要求に対する応答(プリンタ200との通信を行う関数の戻り値)が必ず1回だけ、USB通信制御部126から上位モジュールに返される。
この結果、USB通信制御部126は、プリンタ200−USB通信制御部126間の通信を容易に単一に制限することができる。単一に制限するとは、上述したように、デバイスに対する一の通信要求に対応する通信が完了するまで、デバイスに対する他の通信要求に対応する通信は制限されることを意味する。本実施例においてUSB通信制御部126は、プリンタ200−USB通信制御部126間の通信を、単一に制限している。
2つのクライアント300a、300bからほぼ同時に、データ要求をプリントサーバ装置100に対して送信した場合のデータ要求処理動作を具体例として、図3を参照しながらUSB通信制御部126がプリンタ200−USB通信制御部126間の通信を単一に制限する仕組みを説明する。図3は、データ要求処理動作のシーケンスを示す第2のシーケンス図である。
プリントサーバ装置100が、クライアント300aからのデータ要求Aを、先に受信すると(ステップ[A1])、図2を参照して説明した処理が実行される(ステップ[A2]〜[A8])。ここでは、図2を見やすくするため、USB通信制御部126は、1回のコールバックでプリンタ200から受信されたデータをネットワーク制御部M3に渡していることとしているが、上述したように受信データの大きさに応じて複数回のコールバックが行われることは、上述したとおりである。ステップ[A2]〜[A8]の処理を行っている間に、クライアント300bから他のデータ要求Bが受信されると(ステップ[B1])、ネットワーク制御部M3は、先に受信されたデータ要求Aに対する処理と同様に、USB通信制御部126にデータ要求Bを渡して通信要求を行う(ステップ[B2])、すなわち、データ要求Bを引数としてプリンタ200との通信を行う関数をコールする。
新たなデータ要求Bを渡されたUSB通信制御部126は、データ要求Aを渡して行われた通信要求に対する応答を返す(ステップ[A8])まで、すなわち、データ要求Aを引数としてコールされた関数の返値を返すまで、データ要求Bに対する処理(ステップ[B3]〜[B8]を行わず、データ要求Aを渡して行われた通信要求に対する応答を返した後に、データ要求Bに対する処理を行う。上述したように、データ要求Aを渡して行われた通信要求に対する応答を返した時点では、データ要求Aに対応するプリンタ200−プリントサーバ装置100間の通信(ステップ[A3]および[A4])は必ず完了しているので、こうすることによりUSB通信制御部126は、プリンタ200−USB通信制御部126間の通信を容易に単一に制限することができる。つまり、USB通信制御部126は、単純に、上位モジュールからの通信要求を受け付けた順に一つずつ処理していくだけで、プリンタ200−USB通信制御部126間の通信を単一に制限することができる。具体的には、通信要求を渡すために上位モジュールから関数をコールされたら、コールされた順に渡された通信要求を処理し、処理が終了して関数の戻り値を返した後に、次にコールされたときに渡された通信要求を処理していけば良い。
ここで、理解の容易のため、図4を参照して、従来技術におけるデータ要求処理動作を第1比較例として説明する。図4は、第1比較例におけるデータ要求処理動作のシーケンスを示すシーケンス図である。図4に示すように、従来技術では、USB通信制御部は、ネットワーク制御部から関数をコールされることにより、データ要求を渡されると(ステップ[2])、すなわち、通信要求を受けると、プリンタと通信を行って(ステップ[3][4])取得したデータを、通信要求に対する応答としてネットワーク制御部に渡していた(ステップ[5])。すなわち、データ要求を渡されたときにコールされた関数の戻り値として、データをネットワーク制御部に返していた。通信要求とその応答、すなわち、関数のコールと、戻り値を返すこと(リターン)は、1対1に対応するものであるので、プリンタから受信されるべきデータが受信バッファより大きい場合には、全ての受信データをネットワーク制御部に渡すことができなかった。
仮に、USB通信制御部が、受信バッファよりも大きいデータを、通信要求に対する応答としてネットワーク制御部に渡そうとする場合には、例えば、複数回の通信要求をネットワーク制御部からUSB通信制御部に対して行ってもらうことが考えられる。これを、図5を参照して第2比較例として説明する。図5は、第2比較例におけるデータ要求処理動作のシーケンスを示す第1のシーケンス図である。
かかる場合には、USB通信制御部は、ネットワーク制御部から関数をコールされることにより、データ要求を渡されると(図5:ステップ[2])、すなわち、通信要求を受けると、プリンタと通信を行って(ステップ[3][4])取得したデータを受信バッファに格納する。USB通信制御部は、受信バッファが足りなくなると、フロー制御によりプリンタからのデータの受信を一時的に停止し、受信バッファに格納されたデータを、通信要求に対する応答としてネットワーク制御部に渡す(ステップ[5])。その際に、USB通信制御部は、例えば、続きのデータが存在することをネットワーク制御部に通知する。具体的には、データ要求を渡されたときにコールされた関数の戻り値として、受信バッファに格納されたデータと、続きのデータが存在すること示す値を返す。そして、ネットワーク制御部が渡されたデータをクライアントに送信した(ステップ[6])後に、2回目の通信要求を行う(ステップ[7])。ネットワーク制御部は、2回目の通信要求を受けて、受信バッファを初期化して、残りのデータをプリンタから受信し(ステップ[8])、2回目の通信要求に対する応答として残りのデータをネットワーク制御部に渡す(ステップ[9]。この結果、デバイス−USB制御部間の一回の通信のために、上位モジュールであるネットワーク制御部は、複数回(図5の例では2回)の通信要求をUSB通信制御部に対して行うことになる。
もし、以上の説明したような第2比較例によると、USB通信制御部は、プリンタ−USB通信制御部間の通信を単一に制御することが煩雑になる。これを、2つのクライアントA、Bbからほぼ同時に、データ要求を第2比較例のプリントサーバ装置に対して送信した場合のデータ要求処理動作を具体例として、図6を参照しながら説明する。図6は、第2比較例におけるデータ要求処理動作のシーケンスを示す第2のシーケンス図である。
プリントサーバ装置が、クライアントAからのデータ要求Aを、先に受信すると(ステップ[A1])、図5を参照して説明した処理が実行される(ステップ[A2]〜[A10])。USB通信制御部が1回目の通信要求に関する処理(ステップ[A3]〜[A5])を行っている間に、クライアントBから他のデータ要求Bが受信されたとする。この時、ネットワーク制御部は、特に同期などを取ることもなく、USB通信制御部にデータ要求Bを渡して通信要求を行うものとする(ステップ[B2])。そして、USB制御部は、実施例におけるUSB通信制御部126のように、単純に、通信要求を受け付けた順に一つずる処理していくものとする。そうすると、USB通信制御部は、クライアントAからのデータ要求Aに対応するプリンタ−USB通信制御部間の通信のための2回目の通信要求(ステップ[A7])に関する処理(ステップ[A8][A9])を行う前にクライアントBからのデータ要求Bをプリンタに対して送ってしまう(ステップ[B3])。そうすると、第2比較例におけるUSB通信制御部は、プリンタ−USB通信制御部間の通信を単一に制限することができない。したがって、第2比較例におけるUSB通信制御部がプリンタ−USB通信制御部間の通信を単一に制限しようとすると、煩雑な仕組みを備える必要がある。例えば、USB通信制御部が上位モジュールから受け付けた通信要求が、現在プリンタ−USB通信制御部間で行っている通信のための複数回目の通信要求であるか、新規の通信要求であるかを判断する仕組み、および、複数回目の通信要求を受け付けるまで、新規の通信要求を処理せずに保持しておく仕組みを備える必要がある。あるいは、上位モジュールであるネットワーク制御部がUSB通信制御部に対して通信要求を行うタイミングを調整する仕組みを備える必要がある。
この点、図1〜3を参照して説明した本実施例によれば、USB通信制御部126がコールバックを用いて受信データを上位モジュール(例えば、ネットワーク制御部M3)に渡すことにより、プリンタ200−USB通信制御部126間の通信と、上位モジュールからUSB通信制御部126への通信要求およびその応答とが、必ず1対1の関係となる。この結果、上述のとおり、USB通信制御部126は、容易にプリンタ200−USB通信制御部126間の通信を単一に制限することができる。
そして、USB通信制御部126がプリンタ200−USB通信制御部126の通信を単一に制限することにより、上位モジュールは、プリンタ200−USB通信制御部126を単一に制限することを意識することなく、任意のタイミングでUSB通信制御部126に対して通信要求を行うことができる。したがって、プリントサーバ装置100の制御プログラム122が複数の上位モジュール(例えば、図1:処理モジュールM1〜M3)を備える場合であっても、上位モジュール間で同期を取り、通信要求を行うタイミングを調整する等の処理は必要ない。この結果、制御プログラム122に、新たなサービスを提供する上位モジュールを追加することも容易になる。
さらに、上記実施例では、ネットワーク制御部M3がUSB通信制御部126にデータ要求を渡して通信要求を行うとき、USB通信制御部126にクライアント特定情報を渡しておく。そして、ネットワーク制御部M3は、USB通信制御部126からのコールバックにより受信データを受け取るときに、ネットワーク制御部M3からクライアント特定情報を受け取る。これにより、受け取った受信データをどのクライアントに対して送信すればよいかを認識することができる。これは、ネットワーク制御部M3においてクライアントからデータ要求を受け付けると共に、USB通信制御部126にデータ要求を渡して通信要求を行う関数と、USB通信制御部126から受信データを受け取る関数(コールバックされる関数)が異なるため、後者の関数がクライアントを特定できるようにする必要があるためである。
B.変形例:
・第1変形例:
上記実施例では、上位モジュール(例えば、ネットワーク制御部M3)は、USB通信制御部126から受信データを受け取るとき、必ずコールバック関数の引数として受け取っているが、もし受信データが受信バッファより小さくなり、通信要求に対する一度の応答により受信データを受け取ることができる場合には、通信要求に対する応答により受信データを受け取っても良い。例えば、上位モジュールは、受信データが小さく通信要求に対する一度の応答により受信データを受け取ることができることが明らかな場合には、コールバック関数の指定を行わないでUSB通信制御部126に対して通信要求を行い、受信データが大きく通信要求に対する一度の応答により受信データを受け取ることができない場合あるいはできない可能性がある場合には、実施例のようにコールバック関数の指定を行ってUSB通信制御部126に対して通信要求を行う。そして、USB通信制御部126は、コールバック関数の指定が行われた場合には、コールバックにより受信データを上位モジュールに渡し、コールバック関数の指定が行われなかった場合には、通信要求に対する応答として受信データを上位モジュールに渡すこととしても良い。かかる場合でも、プリンタ200−USB通信制御部126間の通信と、上位モジュールからUSB通信制御部126への通信要求およびその応答とが、必ず1対1の関係となるので、上記実施例と同様に、USB通信制御部126は、容易にプリンタ200−USB通信制御部126間の通信を単一に制限することができる。
・第2変形例:
上記実施例では、USB通信制御部126は、プリンタ200から受信した受信データを全てコールバックにより上位モジュールに渡し、通信要求に対する応答によっては受信データを渡していない。これに代えて、受信データを複数回に分けて上位モジュールに渡す必要がある場合に、コールバックにより受信データの一部を渡し、通信要求に対する応答により一部を渡すこととしても良い。ただし、通信要求に対する応答は一度だけにすることが好ましい。例えば、受信データをプリンタ200から受信して受信バッファに格納する際、受信バッファが足りなくなった場合には、コールバックにより受信バッファに格納した受信データを上位モジュールに渡し、最後まで受信データを受け取った場合には、通信要求に対する応答により受信データを上位モジュールに渡すようにしても良い。かかる場合でも、プリンタ200−USB通信制御部126間の通信と、上位モジュールからUSB通信制御部126への通信要求およびその応答とが、必ず1対1の関係となるので、上記実施例と同様に、USB通信制御部126は、容易にプリンタ200−USB通信制御部126間の通信を単一に制限することができる。
・第3変形例:
上記実施例では、プリンタ200−USB通信制御部126間の通信が単一に制限される場合について説明したが、単一に制限される場合に限らず、所定の数に制限される場合に用いられる。例えば、プリンタ200−USB通信制御部126間の通信が2つまでに制限される場合であれば、USB通信制御部126は、一の通信要求に対応するプリンタ200−USB通信制御部126間の通信が完了するまで、一の通信要求から2つ後に受け付けられた通信要求に対応するプリンタ200−USB通信制御部126間の通信を制限すれば良い。一般的に言えば、一の通信要求に対応するプリンタ200−USB通信制御部126間の通信が完了するまで、他のいずれかの通信要求に対応するプリンタ200−USB通信制御部126間の通信を制限する必要がある場合には、図2に示すようなコールバックを利用したシーケンスを適用することで、このような制限を容易に実現することができる。
・第4変形例:
上記実施例では、プリントサーバ装置100とプリンタ200との間は、USBケーブルCVにより接続され、USB規格に従った通信が行われるが、プリントサーバ装置100とプリンタ200との間は、他のインターフェースを用いて接続されていても良い。例えば、IEEE1394バス接続、などの有線接続や、ブルートゥース接続,赤外線接続などの無線接続で接続するようにしてもよい。
・第5変形例:
上記実施例では、プリンタ200と接続されるプリントサーバ装置100を例として用いているが、他の種類のデバイスと接続されるサーバ装置であっても良い。例えば、スキャナ、ファクシミリ、コピー機、プリンタ、スキャナなどの機能を複数備える複合機などに接続されるサーバ装置であっても良い。さらに一般的に言えば、サーバ装置に限らず、なんらかのデバイスと接続される装置であって、デバイスとの間の通信を所定数に制限する必要があれば、本発明を適用することができる。
・第6変形例:
上記実施例において、ハードウエアによって実現されていた構成の一部をソフトウエアに置き換えても良く、逆にソフトウエアによって実現されていた構成の一部をハードウエアに置き換えても良い。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
ネットワークシステムの概略構成を示す説明図。 データ要求処理動作のシーケンスを示す第1のシーケンス図。 データ要求処理動作のシーケンスを示す第2のシーケンス図。 第1比較例におけるデータ要求処理動作のシーケンスを示すシーケンス図。 第2比較例におけるデータ要求処理動作のシーケンスを示す第1のシーケンス図。 第2比較例におけるデータ要求処理動作のシーケンスを示す第2のシーケンス図。
符号の説明
100…プリントサーバ装置
110…CPU
120…メモリ
122…制御プログラム
124…ネットワークプロトコル部
126…USB通信制御部
130…USBホストIF部
140…ネットワークIF部
150…操作部
200…プリンタ
210…CPU
220…メモリ
222…制御プログラム
224…MIB格納部
230…USBデバイスIF部
240…プリンタエンジン
300a、300b…クライアント
CV…USBケーブル
M1…終了制御部
M1…処理モジュール
M2…設定データ制御部
M3…ネットワーク制御部
NW…ネットワーク

Claims (6)

  1. デバイスと接続される装置であって、
    通信の要求に応じて前記デバイスとの通信を行う通信制御部であって、一の前記通信の要求に対応する通信が完了するまで、他の前記通信の要求に対応する通信を制限する、前記通信制御部と、
    前記デバイスに関連する処理を行う処理部であって、前記通信の要求と所定のコールバック関数の指定を前記通信制御部に対して行う、前記処理部と、
    を備え、
    前記通信制御部は、前記指定されたコールバック関数を呼び出すことにより、前記通信の要求を行った前記処理部に、前記デバイスとの通信により取得されたデータを与える、装置。
  2. 請求項1に記載の装置において、
    前記通信制御部は、前記指定されたコールバック関数を複数回に亘って呼び出すことにより、一の前記通信の要求により取得されるデータを前記複数回に分けて前記通信の要求を行った前記処理部に与える、装置。
  3. 請求項1または請求項2に記載の装置において、
    複数の前記処理部を備える装置。
  4. 請求項1ないし請求項3のいずれかに記載の装置は、ネットワークを介してクライアント装置と接続されるサーバ装置であり、
    前記処理部の一つは、前記クライアント装置からの要求に応じて、前記クライアント装置に対して前記デバイスが有するデータを送信するネットワーク制御部であり、
    前記ネットワーク制御部は、前記デバイスが有するデータを取得するための前記通信の要求のときに、前記クライアント装置を特定するためのクライアント特定情報を、前記通信制御部に対して通知し、
    前記通信制御部は、前記指定されたコールバック関数を呼び出すときに、前記通知されたクライアント特定情報を前記ネットワーク制御部に通知する、装置。
  5. デバイスと接続されると共に、前記デバイスに関連する処理を行う処理部を有する装置において、前記デバイスとの通信を制御する方法であって、
    前記処理部から前記デバイスとの通信を要求する通信の要求と、所定のコールバック関数の指定とを受け付け、
    前記通信の要求に応じて前記デバイスとの通信によりデータを取得し、
    前記指定されたコールバック関数を呼び出すことにより、前記取得されたデータを前記通信の要求を行った前記処理部に供与し、
    一の前記通信の要求に対応する通信が完了するまで、他の前記通信の要求に対応する通信を制限する、方法。
  6. デバイスと接続されると共に、前記デバイスに関連する処理を行う処理部を有する装置における前記デバイスとの通信制御をコンピュータに実現させるコンピュータプログラムであって、
    前記処理部から前記デバイスとの通信を要求する通信の要求と、所定のコールバック関数の指定とを受け付ける第1の機能と、
    前記通信の要求に応じて前記デバイスとの通信によりデータを取得する第2の機能と、
    前記指定されたコールバック関数を呼び出すことにより、前記取得されたデータを前記通信の要求を行った前記処理部に供与する第3の機能と、
    一の前記通信の要求に対応する通信が完了するまで、他の前記通信の要求に対応する通信を制限する第4の機能と、
    を前記コンピュータに実現させるコンピュータプログラム。
JP2006276091A 2006-10-10 2006-10-10 デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム Withdrawn JP2008097176A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006276091A JP2008097176A (ja) 2006-10-10 2006-10-10 デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006276091A JP2008097176A (ja) 2006-10-10 2006-10-10 デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2008097176A true JP2008097176A (ja) 2008-04-24

Family

ID=39379981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006276091A Withdrawn JP2008097176A (ja) 2006-10-10 2006-10-10 デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2008097176A (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07193669A (ja) * 1993-12-24 1995-07-28 Canon Inc ファクシミリ装置
JPH11203081A (ja) * 1998-01-14 1999-07-30 Fuji Xerox Co Ltd 出力装置およびホスト装置
JP2001134390A (ja) * 1999-11-02 2001-05-18 Canon Inc 画像形成システム、ジョブ送信方法、情報処理装置および記憶媒体
JP2003114805A (ja) * 2001-10-09 2003-04-18 Hitachi Ltd 情報処理装置および方法
JP2003131854A (ja) * 2001-10-26 2003-05-09 Sharp Corp 印刷システム
WO2005003980A1 (ja) * 2003-07-01 2005-01-13 T & D Corporation 多目的半導体集積回路装置
WO2006082782A1 (ja) * 2005-02-02 2006-08-10 Silex Technology, Inc. 周辺機器利用方法および周辺機器サーバ

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07193669A (ja) * 1993-12-24 1995-07-28 Canon Inc ファクシミリ装置
JPH11203081A (ja) * 1998-01-14 1999-07-30 Fuji Xerox Co Ltd 出力装置およびホスト装置
JP2001134390A (ja) * 1999-11-02 2001-05-18 Canon Inc 画像形成システム、ジョブ送信方法、情報処理装置および記憶媒体
JP2003114805A (ja) * 2001-10-09 2003-04-18 Hitachi Ltd 情報処理装置および方法
JP2003131854A (ja) * 2001-10-26 2003-05-09 Sharp Corp 印刷システム
WO2005003980A1 (ja) * 2003-07-01 2005-01-13 T & D Corporation 多目的半導体集積回路装置
WO2006082782A1 (ja) * 2005-02-02 2006-08-10 Silex Technology, Inc. 周辺機器利用方法および周辺機器サーバ

Similar Documents

Publication Publication Date Title
JP5995525B2 (ja) システム、画像形成装置、サーバー及びその制御方法
JP3774508B2 (ja) イベント関連情報を自動的に伝送する装置
JP4645164B2 (ja) ネットワーク型プラグアンドプレイに対応したネットワーク装置の制御
US9069497B2 (en) Information processing apparatus having relay virtual printer and functional relay virtual printer
JP4508114B2 (ja) ネットワーク型プラグアンドプレイに対応したネットワーク中継制御
TWI225337B (en) A system for processing print jobs
JP2013131016A (ja) 印刷中継装置、印刷システム、印刷中継装置の制御方法、およびコンピュータプログラム
JP5729979B2 (ja) 印刷中継システム、印刷システム、画像形成装置、印刷中継システムを制御する制御方法、およびプログラム
JP5063253B2 (ja) ネットワークシステムおよび通信方法
JP2011114806A (ja) 通信装置及び方法、並びにプログラム
JP2012043398A (ja) コンテンツ印刷システム、および印刷中継システム、および制御方法、およびプログラム
JP2014106883A (ja) 情報処理装置、印刷サーバーシステム、その制御方法、およびプログラム。
CN103324450B (zh) 信息处理设备和信息处理方法
JP2005346739A (ja) プリンタおよびプリンタジョブデータの転送方法
JP6794281B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2016021157A (ja) Usb接続の一台の機器で複数の機能を持つことを可能にするプログラム
JP2008097176A (ja) デバイスと接続される装置、デバイスとの通信を制御する方法、および、通信制御のためのコンピュータプログラム
JPWO2005055044A1 (ja) 印刷装置および印刷方法
JP4139541B2 (ja) プリンタおよびプリンタジョブデータの転送方法
JP4743597B2 (ja) 画像形成装置および画像形成システムならびに画像制御機器
JP4243831B2 (ja) プリンタおよびプリンタジョブデータの転送方法
JP2004234313A (ja) プリンタサーバ及び端末装置
JP2012027601A (ja) コンテンツ印刷システム、および印刷中継システム、および制御方法、およびプログラム
JP4720708B2 (ja) 印刷装置及び印刷方法
JP4262007B2 (ja) ネットワーク装置及びデータ処理システムの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20111025