(57)【要約】【課題】  出荷された製品に対して従来の技術を採用するためには、ユーザにファームウエアを更新させたり、或は製品を回収してプログラムを書き換えるなどの処置が必要になり実用的でない。【解決手段】  ネットワークを介して接続されているノードＢとの間でプロトコルＡによりノードＢの状態を取得し（７０２，７０７）、ネットワークを介してノードＢと接続されているノードＣとの間でのプロトコルＢによるメッセージを、ノードＢから獲得し（７０４）、このメッセージの前後におけるノードＢの状態の変化に基づいて、そのメッセージをプロトコルＡ用のコマンドに対応付け、その対応付けられたプロトコルＡ用のコマンドとメッセージとに基づいてプロトコルＢの対応するコマンドを作成してノードＣに送信する。【選択図】  図７
2006352584.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得手段と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得手段と、
前記メッセージの前後において前記取得手段により取得した前記第１機器の状態の変化に基づいて、前記第２プロトコルのコマンドを作成して前記第２機器に送信する送信手段と、
を有することを特徴とする通信装置。
【請求項２】
前記送信手段は、前記メッセージの前後において前記取得手段により取得した前記第１機器の状態の変化に基づいて、前記メッセージを前記第１プロトコル用のコマンドに対応付ける対応付け手段を備え、
前記対応付け手段により対応付けられた前記第１プロトコル用のコマンドと前記メッセージとに基づいて前記第２プロトコルの対応するコマンドを作成して前記第２機器に送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１機器のアドレスに対応付けて、前記取得手段により取得された前記第１機器の状態を示すデータ、及び前記獲得手段により獲得されたメッセージを記憶する記憶手段を更に有することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記ネットワークに接続されている機器のアドレスに対応付けて前記第１プロトコルでの通信が可能かどうかを記憶する手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得工程と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得工程と、
前記メッセージの前後において前記取得工程で取得した前記第１機器の状態の変化に基づいて、前記第２プロトコルのコマンドを作成して前記第２機器に送信する送信工程と、を有することを特徴とする通信装置の制御方法。
【請求項６】
前記送信工程は、前記メッセージの前後において前記取得工程で取得した前記第１機器の状態の変化に基づいて、前記メッセージを前記第１プロトコル用のコマンドに対応付ける対応付け工程を備え、
前記対応付け工程で対応付けられた前記第１プロトコル用のコマンドと前記メッセージとに基づいて前記第２プロトコルの対応するコマンドを作成して前記第２機器に送信することを特徴とする請求項５に通信装置の制御方法。
【請求項７】
前記第１機器のアドレスに対応付けて、前記取得工程で取得された前記第１機器の状態を示すデータ、及び前記獲得工程で獲得されたメッセージを記憶する記憶工程を更に有することを特徴とする請求項５又は６に記載の通信装置の制御方法。
【請求項８】
前記ネットワークに接続されている機器のアドレスに対応付けて前記第１プロトコルでの通信が可能かどうかを記憶する工程を更に有することを特徴とする請求項５乃至７のいずれか１項に記載の通信装置の制御方法。
【請求項９】
請求項５乃至８のいずれか１項に記載の制御方法を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プロトコルにより通信を行う通信装置、その制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
通信に用いられるプロトコルは数多く存在し、様々な形態や層（レイヤ）で存在する。例えば、プロトコルの階層化のモデルは、国際標準化機構（ＩＳＯ）や国際電気通信連合（ＩＴＵ）等により７階層のＯＳＩ参照モデルとして標準化されており、これに従ってプロトコルを分類することができる。現在、インターネットで標準であるＩＰは第３層（ネットワーク層）のプロトコルであり、ＴＣＰやＵＤＰは第４層（トランスポート層）のプロトコル、そしてＨＴＴＰやＦＴＰ，ＳＭＴＰ，ＰＯＰなどは第５層（セッション層）以上のプロトコルである。またネットワーク機器や家電に用いられるようなＵＰｎＰなどの統合的なプロトコルも存在している。これらの通信プロトコルをネットワーク機器や家電製品に実装して各ノード間のInteroperabiliry（相互接続性）を確保することが一般化してきている。
【０００３】
しかし上述したように、様々な通信プロトコルが存在し、それぞれ異なる規格、仕様、目的が存在している。また同じ目的を達成するものでも、異なるプロトコルが数種類存在することも事実である。
【０００４】
このためユーザは、ネットワーク機器や家電製品を購入する際には、同一のプロトコルが実装されている製品を選択しなければならない。更に、同一のプロトコルが実装されている製品を選択しても、プロトコル自身の改良（バージョンアップ）や、新しい製品における新しいプロトコルの出現等により、これら機器間や製品間でのInteroperabiliryを確保できなくなる可能性がある。
【０００５】
このような問題に対して、それぞれ異なったプロトコルを採用するネットワークのノード間で通信を行う技術が特許文献１に記載されている。この特許文献１は、ネッワーク上にあるノードがどの種類のプロトコルを使用するかを、その機器の送信アドレスとプロトコルの種類とに対応付けて記憶しておき、その記憶した情報を基に、機器ごとにプロトコルを切り替えて通信する技術を開示している。これを実現するためには、各機器は前もって数種類のプロトコルを実装している必要がある。各機器において、実装するプロトコルの数には制限があり、存在するプロトコルを全て実装することは事実上不可能である。また、このような技術では、実装されていないプロトコルや未知のプロトコルに対応することは不可能である。
【特許文献１】特開平８−９７８７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように異なるプロトコルを使用するネットワーク機器や家電機器同士、また同一のプロトコルであってもバージョンの違いによりネットワーク機器や家電機器同士でInteroperabiliryを確保できなくなるという問題があった。
【０００７】
また特許文献１の技術は、主として製品の出荷時における対応に関するもので、出荷後の対応は全く考慮されていない。出荷された製品に対して特許文献１の技術を採用するためには、ユーザにファームウエアを更新させたり、或は製品を回収してプログラムを書き換えるなどの処置が必要になり、実用的でない。
【０００８】
本発明は、上記従来技術の欠点を解決することにある。
【０００９】
また本願発明の特徴は、ネットワーク機器や家電機器などのネットワークに接続された機器がファームウエアをアップデートすることなく未知のプロトコルに対応できるようにすることにある。
【課題を解決するための手段】
【００１０】
本発明の一態様に係る通信装置は以下のような構成を備える。即ち、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得手段と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得手段と、
前記メッセージの前後において前記取得手段により取得した前記第１機器の状態の変化に基づいて、前記第２プロトコルのコマンドを作成して前記第２機器に送信する送信制御手段とを有することを特徴とする。
【００１１】
本発明の一態様に係る通信装置の制御方法は以下のような工程を備える。即ち、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得工程と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得工程と、
前記メッセージの前後において前記取得工程で取得した前記第１機器の状態の変化に基づいて、前記第２プロトコルのコマンドを作成して前記第２機器に送信する送信制御工程とを有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、装置のプログラムやファームウエアを変更することなく、未知のプロトコルに対処して通信を行うことができるという効果がある。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１４】
図１は、本発明の実施の形態に係る通信システムの全体構成を説明する図である。
【００１５】
この通信システムでは、ネットワーク１００にデジタルカメラ１０１、デジタルビデオカメラ１０２、プリンタ１０３、スキャナ１０４、プロジェクタ１０５が接続されている。尚、本実施の形態では、これらデバイスがネットワーク１００に接続されている場合で説明するが、本発明はこれに限定されるものではない。
【００１６】
上記それぞれの機器は、それぞれに実装されているプログラムを実行するために必要な資源、例えば計算機能（ＭＰＵ，プログラムメモリ等）、データ保持機能（メモリ等）などを持ち、それによる機器そのものを制御する制御機能と、ネットワーク１００を介して他の機器と通信するための通信機能を有する。また後述するプロトコル学習制御機能を有している。尚、これら各種機能は、メモリに記憶されたプログラムに従って実行される中央演算装置（ＭＰＵ）による制御に基づいて達成される場合で説明する。
【００１７】
図２は、本発明の実施の形態に係る上述した各機器の制御部のハードウェア構成を示すブロック図である。従って、カメラ、プリンタ、スキャナ等の各種機器は、それぞれの機能、例えばカメラやプリンタといった機能を実現するために、図２に示す構成以外に、例えばプリンタエンジン、レンズユニット、画像処理部、操作部等を備えているが、ここではそれらの構成の説明は省略して示している。
【００１８】
２００は各ユニット間を接続するための入出力バス（アドレスバス、データバス、及び制御バス）である。タイマ２０１は、ＭＰＵ２０６の指示に基づいて計時動作を実行し、指示された時間間隔で割り込みを発生させる。また、いわゆるウォッチドッグタイマ機能や計時機能を有する。ＲＯＭ２０２は、ＭＰＵ２０６により実行されるプログラムのコードや変化しない固定データを記憶する。ＲＡＭ２０３は、主メモリとしてプログラム実行時のワークエリアを提供している。パラレルコントローラ２０４は、ＭＰＵ２０６で扱われる並列データをそのまま外部装置と入出力する。シリアルコントローラ２０５は、ＭＰＵ２０６で扱われる並列データを直列データとして出力したり、直列データを並列データに変換して入力する。ＭＰＵ２０６は、プログラムの命令を逐次実行するとともに、割り込み制御等を実行している。デバイスコントローラ２０７は、ハードディスク、ディスプレイ（表示部）など一般的な外部入出力装置と接続され、これら装置を制御している。ＤＭＡＣ２０８はＤＭＡ制御部で、メモリと外部装置間でＤＭＡによるデータの授受を制御する。Ａ／Ｄコンバータ２０９は、アナログ信号を入力してデジタルにデータに変換している。ここではセンサ等により感知されたアナログ信号を入力して数値化する。Ｄ／Ａコンバータ２１０は、デジタルデータをアナログ信号に変換しており、外部のアクチュエータ等の操作制御を行うのに使用される。
【００１９】
図３は、本実施の形態に係るプロトコル学習制御機能３００のモジュール構成を示すブロック図である。
【００２０】
このプロトコル学習制御機能３００は、上述のデジタルカメラ１０１、プロジェクタ１０２、スキャナ１０３、プリンタ１０４、デジタルビデオカメラ１０５などの機器に実装される。ここでは、このプロトコル学習制御機能３００は、ＭＰＵ２０６とＲＯＭ２０２に記憶されたプログラムにより実現されている。
【００２１】
このプロトコル学習制御機能３００は、コマンドディスパッチモジュール３０１、プロトコル制御モジュール３０２、プロトコルモジュール３０３、学習コントロールモジュール３０４、仮想プロトコルモジュール３０５、テーブル読み出し書き込みモジュール３０６、プロトコル監視モジュール３０７、コマンドテーブル３０８、プロトコル記録テーブル３０９を備えている。以下、それぞれを詳しく説明する。
【００２２】
コマンドディスパッチモジュール３０１は、上述のデジタルカメラ１０１、プロジェクタ１０２等の機器に実装されたアプリケーション（ＲＯＭ２０２に記憶されている）からの要求を受付け、製品出荷時に実装されている既存プロトコルを起動するか、学習結果で得た新規仮想プロトコルを起動するかを選択する。このコマンドディスパッチモジュール３０１は、後述するコマンドテーブル３０８を検索して、既存或は新規仮想プロトコルを選択するか判断する。更に、このコマンドディスパッチモジュール３０１は、上述の判断結果から、後述するプロトコル制御モジュール３０２か、後述する学習コントロールモジュール３０４のいずれかを呼び出す機能も有する。
【００２３】
プロトコル制御モジュール３０２は、後述するプロトコルモジュール３０３の制御を行う。また学習コントロールモジュール３０４からのリクエストを受付ける機能と、その結果を受け渡す機能も有する。
【００２４】
プロトコルモジュール３０３は、ＵＰｎＰ（Universal Plug and Play），Ｊｉｎｉ，Ｊｘｔａ等の機器制御用プロトコルが実装されたモジュールであり、それぞれのプロトコルの機能を有する。これは製品出荷時点で予め実装されているものを想定しているが、これらプロトコルに限定されるものではない。
【００２５】
学習コントロールモジュール３０４は、コマンドディスパッチモジュール３０１からのリクエストを受取り、後述する仮想プロトコルモジュール３０５を制御する。またプロトコル制御モジュール３０２に対してリクエストを発行する機能を有する。また、この学習コントロールモジュール３０４は、後述するプロトコル監視モジュール３０７に対してネットワークメッセージの監視開始、監視終了などの制御を行う機能と、プロトコル監視モジュール３０７からのメッセージを受け取る機能を有する。学習コントロールモジュール３０４は、後述するテーブル読み出し書き込みモジュール３０６の制御とメッセージの受け渡しを行う。仮想プロトコルモジュール３０５は、学習コントロールモジュール３０４からの指示により、ネットワーク１００を介して他の機器に対してメッセージを送信するとともに、他の機器からのメッセージを受信する。
【００２６】
テーブル読み出し書き込みモジュール３０６は、学習コントロールモジュール３０４の指示により、後述するコマンドテーブル３０８とプロトコル記録テーブル３０９に対してデータの読み込み、書き出しを指示し、これら指示に基づくデータの受け渡しを行う。
【００２７】
プロトコル監視モジュール３０７は、学習コントロールモジュール３０４の指示によりネットワーク１００に流れるメッセージを監視し、そのメッセージを取得する。また学習コントロールモジュール３０４に先のメッセージを受け渡す機能も有する。コマンドテーブル３０８は、後述するデータを検索可能な状態で、永続的にデータを保存するデータベースであり、その内容の検索、読み書き、追加、削除可能である。プロトコル記録テーブル３０９は、後述するデータを検索可能な状態で、永続的にデータを保存するデータベースであり、その内容の検索、読み書き、追加、削除が可能である。
【００２８】
図４は、本実施の形態に係るコマンドテーブル３０８の一例を示す図である。
【００２９】
コマンドテーブル３０８は、ＩＰアドレス（IPAddress）欄４０１と、Existing欄４０２とを有し、それぞれの欄に対して、検索、読み書き、追加、削除が可能である。ここではＩＰアドレス欄４０１のそれぞれに対して、Existing欄４０２の内容が一意に特定される。ここでＩＰアドレス欄４０１には、ネットワーク１００に接続されている機器のＩＰアドレスが格納されている。Existing欄４０２には「True」（既存プロトコルが存在する）又は「false」（存在しない）の文字列が格納される。
【００３０】
図５は、本実施の形態に係るプロトコル記録テーブル３０９の一例を示す図である。
【００３１】
このプロトコル記録テーブル３０９は、ＩＰアドレス（IPAddress）欄５０１、メッセージ（Message）欄５０２、beforeStat欄５０３、afterStat欄５０４、existingCommand欄５０５を有している。それぞれの欄に対して、その内容の検索、読み書き、追加、削除が可能である。またＩＰアドレス欄５０１のそれぞれに対して、Message欄５０２、beforeStat欄５０３、afterStat欄５０４、existingCommand欄５０５がそれぞれ一意に特定される。ＩＰアドレス欄５０１は、ネットワーク１００に接続されている機器のＩＰアドレスを格納する。Message欄５０２は、モニタしているネットワーク１００を流れるメッセージを格納する。beforeStat欄５０３、afterStat欄５０４は、ネットワーク１００に接続されている機器の状態を示す情報を格納しており、beforeStat欄５０３はメッセージ欄５０２で示すメッセージが送信される前の、その機器（ＩＰアドレスで指定される）の状態を示し、afterStat欄５０４はメッセージが送信された後の、その機器の状態を示している。またexistingCommand欄５０５は、そのメッセージで送信された内容に対応する、自機器に製品出荷時に予め実装されているプロトコルのコマンドが格納される。
【００３２】
図４と図５を参照して、本実施の形態の具体例を説明すると、図５の５１０は、ＩＰアドレスが「192.168.0.11」であるプリンタ１０３のプロトコル記録テーブルのレコード例を示し、メッセージを受信する前のプリンタ１０３の状態は「アイドル(idle)」であり、受信後の状態が「処理中(processing)」に変化している。更に、この５１０において、existingCommand欄５０５には、対応するコマンドとして、プリンタ１０３に対して印刷を指示する「print」が格納されている。
【００３３】
更に、図５の５１１は、ＩＰアドレスが「192.168.0.20」であるスキャナ１０４のプロトコル記録テーブルのレコード例を示し、メッセージを受信する前のスキャナ１０４の状態は「アイドル(idle)」であり、受信後の状態が「処理中(processing)」に変化している。更に、このレコード５１１において、existingCommand欄５０５には、対応するコマンドとして、スキャナに対して読み取りを指示する「scan」が格納されている。
【００３４】
更に、図５の５１２は、ＩＰアドレスが「192.168.0.12」である照明機器（不図示）のプロトコル記録テーブルのレコード例を示し、メッセージを受信する前の照明機器の状態は「オフ」であり、受信後の状態が「オン」に変化している。更に、このレコード５１２において、existingCommand欄５０５には、対応するコマンドとして、照明機器に対して点灯を指示する「lighton」が格納されている。
【００３５】
次に、本実施の形態に係る通信システムにおける処理の流れを図６を参照して説明する。
【００３６】
図６は、本発明の実施の形態に係る通信システムの構成を示す概念図である。
【００３７】
図において、ノードＡ（NodeA）６００、ノードＢ（NodeB）６０１、ノードＣ（NodeC）６０２のそれぞれは、図１のデジタルカメラ１０１、デジタルビデオカメラ１０２、プリンタ１０３、プリンタ１０４、スキャナ１０５、プロジェクタ１０６等に対応している。しかし、本発明は上記のデバイスに限定されるものではない。
【００３８】
ここでノードＡ６００、ノードＢ６０１には、既存プロトコルとしてＵＰｎＰプロトコルが実装され、ノードＢ６０１とノードＣ６０２には、新規プロトコルとしてXMLWebServiceプロトコルが実装されているとする。しかし、本発明は上記プロトコルに限定されるものではない。
【００３９】
ここで、ノードＡ６００とノードＢ６０１が既存プロトコル（ＵＰｎＰプロトコル（以下、プロトコルＡ））を使用し、ノードＢ６０１とノードＣ６０２が新規プロトコル（XMLWebServiceプロトコル（以下、プロトコルＢ））を使用している状況において、ノードＡ６００がノードＢ６０１とノードＣ６０２の通信を学習し、ノードＡ６００がプロトコルＢを使用できるまでの処理の流れを説明する。
【００４０】
ノードＡ６００の学習コントロールモジュール３０４がプロトコル制御モジュール３０２に対してノードＢ６０１の状態を取得するよう指示を出す。この指示を受けたプロトコル制御モジュール３０２は、プロトコルＡを用いてノードＢ６０１の状態を取得する。こうして取得したノードＢ６０１の状態を、ノードＡ６００の学習コントロールモジュール３０４がノードＢ６０１のＩＰアドレスと共に受け取り、テーブル読み出し書き込みモジュール３０６に渡し、プロトコル記録テーブル３０９に保持するように指示する。テーブル読み出し書き込みモジュール３０６は、プロトコル記録テーブル３０９のＩＰアドレス欄５０１とbeforeStat欄５０３に書き込みを行う。
【００４１】
図５を参照して具体例で説明する。
【００４２】
ここでは、ノードＢ６０１がプリンタ１０３の場合で説明する。ノードＢ６０１の初期状態では、ノードＢ６０１はメッセージの受信前で「アイドル」状態にあるため、レコード５１０のＩＰアドレス欄５０１にはプリンタ１０３のＩＰアドレスが書き込まれ、beforeStat欄５０３には、受信前の状態「アイドル」が記録される。
【００４３】
次にノードＡ６００の学習コントロールモジュール３０４は、プロトコル監視モジュール３０７に対して、ノードＣ６０２からネットワーク１００に流れるメッセージの監視、記録をするように指示する。そしてノードＣ６０２からノードＢ６０１に対して何らかのメッセージが送信されるとプロトコル監視モジュール３０７は、そのメッセージを獲得して保持し、学習コントロールモジュール３０４に受け渡す。このメッセージを受け取った学習コントロールモジュール３０４は、テーブル読み出し書き込みモジュール３０６に対して書き込みを指示する。テーブル読み出し書き込みモジュール３０６は、そのＩＰアドレス（メッセージの送信先アドレス）と同一のレコードのMessage欄５０２に、その取得したメッセージを書き込む。
【００４４】
図５の例では、レコード５１０のメッセージ欄５０２に、そのメッセージの内容が記録される。
【００４５】
このメッセージの書き込み指示を出した学習コントロールモジュール３０４は、次にプロトコル制御モジュール３０２に対して、先と同じようにノードＢ６０１の状態を取得する指示を出す。この指示を受けたプロトコル制御モジュール３０２は、プロトコルＡを用いてノードＢ６０１の状態を取得する。こうして取得したノードＢ６０１の状態を学習コントロールモジュール３０４がノードＢ６０１のＩＰアドレスと共に受け取り、テーブル読み出し書き込みモジュール３０６に渡し、プロトコル記録テーブル３０９に保持するように指示する。これによりテーブル読み出し書き込みモジュール３０６は、プロトコル記録テーブル３０９のＩＰアドレス欄５０１にある、同じＩＰアドレスのレコードにafterStat欄５０４の書き込みを行う。
【００４６】
図５の例では、ノードＡ６００は、ノードＢ６０１が、図５のレコード５１０のメッセージ欄５０２で示すメッセージをノードＣ６０２から受信した後、その状態が「アイドル」から「処理中」に変更されたことを認識する。これにより、レコード５１０のafterStat欄５０４には「処理中」が記憶される。
【００４７】
このようにして、ノードＡ６００は、上述したノードＢ６０１の状態の取得、テーブルへ３０９の記録、ノードＣ６０２からノードＢ６０１に送信されるメッセージの取得、記録、ノードＢ６０１の状態の取得、記録の作業を繰り返す。
【００４８】
上記の繰り返しから、ノードＡの学習コントロールモジュール３０４は、テーブル読み出し書き込みモジュール３０６を用いて、プロトコル記録テーブル３０９に記録されたデータを読み出す。この読み取ったデータから、ノードＣ６０２からメッセージを受け取る前のノードＢ６０１の状態と、受け取った後のノードＢ６０１の状態とを比較する。そして、このような状態の変化を発生させる、ノードＡが有しているプロトコルＡのコマンドを選択し、テーブル読み込み書き込みモジュール３０６により、プロトコル記録テーブル３０９のexistingCommand欄５０５に書き込む。
【００４９】
図５の例では、レコード５１０のexistingCommand欄５０５には、プリンタ１０３が「アイドル」状態から「処理中」に変化するコマンドであり、かつプロトコルＡと共通しているコマンドとして「print」が記録されている。
【００５０】
こうしてノードＡ６００の学習コントロールモジュール３０４は、テーブル読み出し書き込みモジュール３０６を用いてノードＢ６０１のＩＰアドレスと共に、図４のコマンドテーブル３０８のＩＰアドレス欄４０１にＩＰアドレスを、Existing欄４０２に「True」（プロトコルＡが存在している）を記録する。更に、ノードＡの学習コントロールモジュール３０４は、ノードＣ６０２のＩＰアドレスと共に、コマンドテーブル３０８のＩＰアドレス欄４０１にＩＰアドレス、Existing欄４０２に「false」（プロトコルＡが存在しない）を記録する。
【００５１】
他の機器に対しても同様にして、ノードＡ６００は、上述と同様の手順でプロトコル記録テーブル３０９、コマンドテーブル３０８のデータを作成し、各機器のＩＰアドレスに対応付けて、各テーブルに記録する。そしてデジタルカメラ１０１、プロジェクタ１０２などに実装されたアプリケーションからの要求を受付けると、メッセージの送信先のＩＰアドレスを取得し、テーブル読み出し書き込みモジュール３０６を用いて、コマンドテーブル３０８のＩＰアドレス欄４０１にある同一の値があるレコードからExisting欄４０２の値を取得する。このExisting欄４０２の値が「True」の場合は、既存プロトコルＡを使用すると判断し、プロトコル制御モジュール３０２を起動する。一方、Existing欄４０２の値が「false」の場合は、プロトコルＢを使用すると判断し、学習コントロールモジュール３０４にコマンドを受け渡す。
【００５２】
このコマンドとＩＰアドレスを受け取った学習コントロールモジュール３０４は、テーブル読み出し書き込みモジュール３０６を用いてプロトコル記録テーブル３０９を検索し、ＩＰアドレス欄５０１の値と同じＩＰアドレスのレコードから、更に、exsitingCommand欄５０５に記録されているコマンドを導き出す。また、そのレコードのMessage欄５０２を取得し、そのコマンドと共に仮想プロトコルモジュール３０５に受け渡す。これにより仮想プロトコルモジュール３０５は、プロトコルＡの「print」コマンドを、Message欄５０２のメッセージに代えて、例えばノードＣ６０２に対して送信する。
【００５３】
こうしてノードＡ６００は、ノードＢ６０１とノードＣ６０２との通信によりノードＢ６０１から得られた情報を基に、ノードＢ６０１とノードＣ６０２との間でのプロトコルＢのコマンドを取得し、それに基づいて仮想プロトコルＢによるノードＣ６０２との通信が可能になる。
【００５４】
尚、上記説明では、図５のレコード５１０の場合で説明したが、他のレコード５１１，５１２の場合も同様にして作成できる。
【００５５】
次に、図７に示す処理の流れ図を参照して、上述したノードＡ〜Ｃにおける通信処理について説明する。
【００５６】
図７は、本発明の実施の形態に係る通信システム（図６）におけるデータの流れ、及び処理の流れを説明する図である。
【００５７】
ノードＡ６００において、学習コントロールモジュール３０４がプロトコル制御モジュール３０２に対してノードＢ６０１の状態を取得するよう指示を出す。この指示を受けたプロトコル制御モジュール３０２は、プロトコルＡを用いてノードＢ６０１に状態を問合せる（７０１）。そして７０２で、ノードＢ６０１から返送される状態（ここではアイドル）を受信して、ノードＢ６０１の状態を取得する。即ち、ノードＡ６００のプロトコル制御モジュール３０２は、ネットワークを介して接続されているノードＢ６０１（第１機器）との間でプロトコルＡ（第１プロトコル）により当該ノードＢ６０１の状態を取得する。こうして取得したノードＢ６０１の状態を、ノードＢ６０１のＩＰアドレスに対応するプロトコル記録テーブル３０９に記録する（７２０）。ここではプロトコル記録テーブル３０９のＩＰアドレス欄５０１にノードＢ６０１のＩＰアドレスを記録し、beforeStat欄５０３に、その取得した状態を記録する。
【００５８】
次に、ノードＣ６０２からネットワーク１００に流れるメッセージを監視しており、ノードＣ６０２からノードＢ６０１に対して何らかのメッセージが送信されると（７０３）、ノードＢ６０１は、そのメッセージに応じた処理を開始する（７０５）。ノードＡのプロトコル監視モジュール３０７は、ノードＣ６０２からノードＢ６０１に送られたメッセージを獲得し（７０４）、学習コントロールモジュール３０４に受け渡す。即ち、ノードＡ６００のプロトコル監視モジュール３０７は、ネットワークを介して接続されているノードＢ６０１とノードＣ６０２（第２機器）との間でのプロトコルＢ（第２プロトコル）によるメッセージ７０３を獲得する。これにより、そのノードＢ６０１のＩＰアドレスと同一のレコード５１０のプロトコル記録テーブル３０９のMessage欄５０２に、その取得したメッセージが書き込まれる（７２１）。
【００５９】
次に７０６で、ノードＡ６００からノードＢ６０１に対してノードＢ６０１の状態を取得する指示を出す。この状態ではノードＢ６０１は既に処理を開始しているので、その状態は「アイドル」状態から「処理中」に変更されている。こうしてノードＡ６００は、プロトコルＡを用いてノードＢ６０１の状態を取得する（７０７）。即ち、ノードＡ６００のプロトコル制御モジュール３０２は、ネットワークを介して接続されているノードＢ６０１（第１機器）との間でプロトコルＡ（第１プロトコル）により当該ノードＢ６０１の状態を取得する。ここでは取得したノードＢ６０１の状態をノードＢ６０１のＩＰアドレスと共に受け取り、テーブル読み出し書き込みモジュール３０６に渡し、プロトコル記録テーブル３０９に記録する（７２２）。上述した処理を同じノードＢ６０１，或は他のノードに対して実行することにより、プロトコル記録テーブル３０９には、各ノードのＩＰアドレスに対応して、受信したメッセージや、そのメッセージによるノードの状態変化が複数記録される。
【００６０】
次に７０８で、ノードＡの学習コントロールモジュール３０４は、テーブル読み出し書き込みモジュール３０６を用いて、プロトコル記録テーブル３０９に記録されたデータを読み出す。この読み取ったデータから、ノードＣ６０２からメッセージを受け取る前のノードＢ６０１の状態と、そのメッセージを受け取った後のノードＢ６０１の状態とを比較する。そして、このような状態の変化を発生させる、ノードＡが有しているプロトコルＡのコマンドを選択し、テーブル読み込み書き込みモジュール３０６により、プロトコル記録テーブル３０９のexistingCommand欄５０５に書き込む。
【００６１】
例えば、ノードＢ６０１がプリンタである場合、そのプリンタが「アイドル」状態から「処理中」に移行するのは、プリント命令を受信した場合であると考えられる。そこで、図５の例では、レコード５１０のexistingCommand欄５０５には、プロトコルＡの対応するコマンド「print」が記憶されている。従って、コマンドテーブル３０８のノードＣ６０２に対応するExisting欄４０２には「false」が記録されることになる。即ち、メッセージ７０３の前後において取得したノードＢ６０１の状態の変化に基づいて、メッセージ７０３をプロトコルＡ（第１プロトコル）用のコマンド（ここでは、「print」）に対応付ける。
【００６２】
このようにして次に７０９で、仮想プロトコルモジュール３０５は、例えばプロトコルＡの「print」コマンドを、Message欄５０２のメッセージに代えるなどして、仮想プロトコルＢを作成する。次に７１０では、ノードＣ６０２との通信が指示されたかどうかを判定し、ノードＣとの通信が指示されると７１１に進み、コマンドテーブル３０８に記録されているノードＣ６０２のＩＰアドレスに対応するExisting欄４０２の内容を確認し、ここでは「false」が記憶されているので、７０９で作成した仮想プロトコルＢ（７１２）に従ってノードＣ６０２との間で通信を行う。具体的には、例えばノードＣがスキャナである場合、そのスキャナにより画像をスキャンさせたい場合には、図５のレコード５１１に記録されているexisitingCommand「scan」に対応するメッセージ欄５０２のメッセージを送信する。即ち、ノードＡ６００の仮想プロトコルモジュール３５は、メッセージ７０３の前後において取得したノードＢ６０１の状態の変化に基づいて、プロトコルＢのコマンドを作成してノードＣ６０２に送信する。詳細には、対応付けられたプロトコルＡ用のコマンド（例えば、「scan」）とメッセージとに基づいてプロトコルＢの対応するコマンドを作成してノードＣ６０２に送信する。
【００６３】
図６の構成において、ノードＡ、Ｂ、Ｃはどのような機器であってもよい。特に、各ノード間で画像の転送を行う場合のプロトコルを習得することにより、画像（ファイルなど）を扱うノード（機器）の全てで有効に活用できる。例えば、プリンタが画像を受信した場合は印刷を意味し、カメラであればその画像を記憶することになる。
【００６４】
図８は、ディスプレイ（表示ユニット）（ノードＢ）とデジタルカメラ（ノードＣ）との間での画像データの転送シーケンス（プロトコルＢ）を説明する図である。この場合も、ノードＡはプロトコルＡを有しており、ノードＢの状態をモニタしてプロトコルＢでの通信を行うことを意図しているものとする。
【００６５】
まず８０１の以前に、ノードＡはノードＢが「アイドル」状態にあることを認識しているものとする。これは図７の７０１，７０２と同様にしてノードＢ６０１との間でプロトコルＡを用いて取得できる。次に８０１で、ノードＣからジョブがある旨が通知される。そして、その要求に対して「ＯＫ」で応答する際（８０２）、ノードＢの状態は「アイドル」から「レディ」状態になる。ノードＡ６００は、ノードＢ６０１とノードＣ６０２との間でのプロトコルＢによるメッセージCreateJpbを獲得する。ノードＡ６００は、ノードＢ６０１との間でプロトコルＡにより当該ノードＢ６０１の状態「レディ」を取得する。次に８０３で、表示すべきデータ（メッセージ）がノードＣからノードＢに送信される。これにより、ノードＢの状態は、「レディ」からデータを受信したモード「Received（受信済）（画像の表示開始）」に移行する。ノードＡ６００は、ノードＢ６０１とノードＣ６０２との間でのプロトコルＢによるメッセージSendを獲得する。ノードＡ６００は、ノードＢ６０１との間でプロトコルＡにより当該ノードＢ６０１の状態「Received（受信済）（画像の表示開始）」を取得する。
【００６６】
これら情報を取得してプロトコル記録テーブル３０９に記憶しているノードＡでは、ディスプレイ（ノードＢ）が「アイドル」状態から「レディ」状態に移行するコマンド（８０１）に対応する、プロトコルＡのコマンドを求める。更に、ノードＡは、ディスプレイ（ノードＢ）が「レディ」状態から「受信済」状態に移行するコマンド（８０３）に対応する、プロトコルＡのコマンドを求める。そして、これらコマンドを使用して仮想プロトコルＢを作成し、ノードＡとノードＣ（デジタルカメラ）との通信を行うことができるようになる。即ち、ノードＡは、ノードＢの状態の変化に基づいて、プロトコルＢで、データを送信するために用いられるコマンド（CreateJob、Send）を知ることができる。
【００６７】
ノードＡからノードＣ（デジタルカメラ）に画像を転送するには、まずプロトコルＢのCreateJobに相当するメッセージをノードＣ（カメラ）に送信する。
そのメッセージに対して「ＯＫ」で応答する際、ノードＣ（デジタルカメラ）は「アイドル」状態から「レディ」状態に移行する。
【００６８】
次に、保存すべきデータ（画像）が付与されたプロトコルBのSendに対応するメッセージがノードＡからノードＣに送信される。これにより、ノードＣの状態は、「レディ」からデータを受信したモード「Received（受信済）（画像の保存開始）」に移行する。即ち、ノードＡは、プロトコルＢを用いてデータをノードＣに送信する場合、ノードＢの状態の変化に基づいて学習したプロトコルＢで用いられるデータを送信するためのコマンドを作成してノードＣに送信する。
【００６９】
以上のようにノードＡとノードＣの通信が先に作成した仮想プロトコルＢで可能となる。
【００７０】
なお本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが、その供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００７１】
プログラムを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。その他のプログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００７２】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満足するユーザに対してインターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００７３】
またコンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００７４】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施の形態に係る通信システムの全体構成を説明する図である。
【図２】本発明の実施の形態に係る各機器の制御部のハードウェア構成を示すブロック図である。
【図３】本実施の形態に係るプロトコル学習制御機能のモジュール構成を示すブロック図である。
【図４】本実施の形態に係るコマンドテーブルの一例を示す図である。
【図５】本実施の形態に係るプロトコル記録テーブルの一例を示す図である。
【図６】本発明の実施の形態に係る通信システムの構成を示す概念図である。
【図７】本発明の実施の形態に係る通信システム（図６）におけるデータの流れ、及び処理の流れを説明する図である。
【図８】ディスプレイ（表示ユニット）（ノードＢ）とデジタルカメラ（ノードＣ）との間での画像データの転送シーケンス（プロトコルＢ）を説明する図である。
【図１】
2006352584.tif 000003
【図２】
2006352584.tif 000004
【図３】
2006352584.tif 000005
【図４】
2006352584.tif 000006
【図５】
2006352584.tif 000007
【図６】
2006352584.tif 000008
【図７】
2006352584.tif 000009
【図８】
2006352584.tif 000010