(57)【特許請求の範囲】
【請求項１】
画像を表示する表示手段と、
ユーザーによる操作を受け付ける操作手段と、
スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムを実行することにより、前記表示手段および前記操作手段を制御する第１実行手段と、
前記第１の種類とは異なる第２の種類のプログラム言語で記述された第２のプログラムを実行することにより、通信可能な装置を探索する探索処理を実行する第２実行手段と、を備え、
前記第１実行手段は、前記操作手段により起動操作が受け付けられることに応じて、前記第２実行手段を起動する起動手段と、
前記第２実行手段が起動されてから前記探索処理が終了するまでの間に、予め定められた割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得手段と、
前記装置情報取得手段により前記装置識別情報が取得されるごとに、前記取得された装置識別情報を前記表示手段に表示する割込時表示手段と、を含み、
前記探索処理は、探索条件の異なる複数の分割処理を含み、
前記第２実行手段は、前記第１実行手段により起動されることに応じて、前記複数の分割処理をそれぞれ実行する複数のサブ実行手段を起動するスレッド起動手段と、
前記起動された複数のサブ実行手段のすべてが前記複数の分割処理のうち対応する担当分割処理を終了することを条件に、前記第１実行手段に前記探索処理の終了を通知する終了通知手段と、を備え、
前記複数のサブ実行手段それぞれは、
前記複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、前記第１実行手段に対して割り込みを発生するとともに、前記第１実行手段に前記検出された装置の装置識別情報を出力する出力手段と、を含む、情報処理装置。
【請求項２】
前記第１実行手段は、前記第２実行手段が起動されてから前記第２実行手段が前記探索処理を終了するまでの間に、前記操作手段により前記探索処理の実行の中止を指示する操作が受け付けられることに応じて、前記第２実行手段に中止指示を出力する中止指示手段を、含み、
前記第２実行手段は、前記第１実行手段から中止指示が入力されることに応じて、前記複数のサブ実行手段のうち前記担当分割処理を終了していないサブ実行手段にサブ中止指示を出力するサブ中止指示手段を含み、
前記複数のサブ実行手段それぞれは、さらに、前記第２実行手段からサブ中止指示が入力されることに応じて、前記担当分割処理の実行を中止する、請求項１に記載の情報処理装置。
【請求項３】
前記第１実行手段は、前記第２実行手段が起動されてから前記第２実行手段が前記探索処理を終了するまでの間、前記探索処理を実行中であることを示す画像を表示する探索中通知手段を、さらに含む、請求項１または２に記載の情報処理装置。
【請求項４】
画像を表示する表示手段と、
ユーザーによる操作を受け付ける操作手段と、を備えた情報処理装置を制御するコンピューターで実行される装置探索プログラムであって、
スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムと、前記第１の種類とは異なる第２の種類のプログラム言語で記述され、通信可能な装置を探索する探索処理を定めた第２のプログラムと、を含み、
前記第１のプログラムは、前記操作手段により起動操作が受け付けられることに応じて、前記第２のプログラムを前記コンピューターに実行させる起動ステップと、
前記コンピューターにより前記第２のプログラムが実行されてから前記コンピューターが前記第２のプログラムを実行するスレッドが前記探索処理を終了するまでの間に、割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得ステップと、
前記装置情報取得ステップにおいて前記装置識別情報が取得されるごとに、前記取得された装置識別情報を前記表示手段に表示する割込時表示ステップと、を前記コンピューターに実行させ、
前記探索処理は、探索条件の異なる複数の分割処理を含み、
前記第２のプログラムは、前記複数の分割処理をそれぞれ定めた複数のサブプログラムと、前記コンピューターが前記複数のサブプログラムをそれぞれ実行する複数のサブスレッドを制御するスレッド制御プログラムと、を含み、
前記起動ステップは、前記操作手段により前記起動操作が受け付けられることに応じて、前記スレッド制御プログラムを前記コンピューターに実行させ、
前記スレッド制御プログラムは、前記複数のサブプログラムを前記コンピューターに実行させるスレッド起動ステップと、
前記コンピューターが前記複数のサブプログラムをそれぞれ実行する複数のサブスレッドのすべてが前記複数の分割処理のうち対応する担当分割処理を終了することを条件に、前記コンピューターが前記第１のプログラムを実行する第１実行スレッドに前記探索処理の終了を通知する終了通知ステップを、前記コンピューターに実行させ、
前記複数のサブプログラムそれぞれは、
前記複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、前記第１実行スレッドに対して割り込みを発生するとともに、前記第１実行スレッドに前記検出された装置の装置識別情報を出力する出力ステップと、を前記コンピューターに実行させる、装置探索プログラム。
【請求項５】
前記第１のプログラムは、さらに、前記コンピューターに前記スレッド制御プログラムを実行させてから前記コンピューターが前記スレッド制御プログラムを実行する制御スレッドから前記探索処理の終了が通知されるまでの間に、前記操作手段により前記探索処理の実行の中止を指示する操作が受け付けられることに応じて、前記制御スレッドに中止指示を出力する中止指示ステップを、前記コンピューターに実行させ、
前記スレッド制御プログラムは、さらに、前記第１実行スレッドから中止指示が入力されることに応じて、前記複数のサブスレッドのうち前記担当分割処理を終了していないサブスレッドにサブ中止指示を出力するサブ中止指示ステップを、前記コンピューターに実行させ、
前記複数のサブプログラムそれぞれは、さらに、前記制御スレッドからサブ中止指示が入力されることに応じて、前記複数の分割処理のうち対応する担当分割処理の実行を中止するステップを、前記コンピューターに実行させる、請求項４に記載の装置探索プログラム。
【請求項６】
前記第１のプログラムは、さらに、前記コンピューターにより第２のプログラムが実行されてから前記コンピューターが第２のプログラムを実行するスレッドが前記探索処理を終了するまでの間、前記探索処理を実行中であることを示す画像を表示する探索中通知ステップを、前記コンピューターに実行させる、請求項４または５に記載の装置探索プログラム。
【請求項７】
画像を表示する表示手段と、
ユーザーによる操作を受け付ける操作手段と、を備えた情報処理装置を制御するコンピューターで実行される装置探索方法であって、
スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムを前記コンピューターに実行させることにより、前記表示手段および前記操作手段を制御する第１実行ステップと、
前記第１の種類とは異なる第２の種類のプログラム言語で記述された第２のプログラムを前記コンピューターに実行させることにより、通信可能な装置を探索する探索処理を実行する第２実行ステップと、を含み、
前記第１実行ステップは、前記操作手段により起動操作が受け付けられることに応じて、前記コンピューターに前記第２のプログラムを実行させる起動ステップと、
前記コンピューターが前記第２のプログラムを実行してから前記コンピューターが前記第２のプログラムを実行するスレッドが前記探索処理を終了するまでの間に、予め定められた割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得ステップと、
前記装置情報取得ステップにおいて前記装置識別情報が取得されるごとに、前記取得された装置識別情報を前記表示手段に表示する割込時表示ステップと、を含み、
前記探索処理は、探索条件の異なる複数の分割処理を含み、
前記第２実行ステップは、前記第１実行ステップにおいて起動されることに応じて、前記複数の分割処理をそれぞれ実行する複数のサブ実行プログラムを前記コンピューターに実行させるスレッド起動ステップと、
前記コンピューターが前記複数のサブ実行プログラムをそれぞれ実行する複数のサブ実行スレッドのすべてが前記複数の分割処理のうち対応する担当分割処理を終了することを条件に、前記コンピューターが前記第１のプログラムを実行する第１実行スレッドに前記探索処理の終了を通知する終了通知ステップと、を含み、
前記複数のサブ実行スレッドそれぞれは、
前記複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、前記第１実行スレッドに対して割り込みを発生するとともに、前記第１実行スレッドに前記検出された装置の装置識別情報を出力する出力ステップを含む、装置探索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置、装置探索プログラムおよび探索方法に関し、特に、ハイブリッドアプリケーションプログラムを実行可能な情報処理装置、その情報処理装置で実行される装置探索プログラムおよび探索方法に関する。
【背景技術】
【０００２】
オフィス等では、複合機（ＭＦＰ）等の画像処理装置が複数台設置される場合があり、それら複数のＭＦＰは、ローカルエリアネットワーク（ＬＡＮ）に接続されるのが一般的である。このようなネットワーク環境において、ネットワークに接続された複数のＭＦＰの検出を可能にした探索サービスが用いられている。探索サービスに用いられるプロトコルの一例としては、ＳＳＤＰ（Ｓｉｍｐｌｅ  Ｓｅｒｖｉｃｅ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）、ＷＳＤ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  ｏｎ  Ｄｅｖｉｃｅｓ）、ＳＬＰ（Ｓｅｒｖｉｃｅ  Ｌｏｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）、ｍＤＮＳ（ｍｕｌｔｉｃａｓｔ  Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）が知られている。複数のＭＦＰを遠隔操作可能なパーソナルコンピューター（以下「ＰＣ」という）、スマートフォンまたはタブレット端末等の携帯情報装置においては、これらのプロトコルを用いて遠隔操作の対象となるＭＦＰを探索することが可能である。
【０００３】
一方、ハイブリッドアプリケーションプログラムを制作するためのフレームワークとしてＣｏｒｄｏｖａが知られている。このハイブリッドアプリケーションプログラムを用いれば、ユーザーインターフェース部分を、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）装置のオペレーティングシステムに依存しない記述言語で記述し、装置のハードウェア資源を制御する部分等のオペレーティングシステムに依存する部分を、Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋またはＯｂｊｅｃｔｉｖｅ−Ｃといった開発言語で記述することが可能となる。
【０００４】
しかしながら、ハイブリッドアプリケーションプログラムにおいては、ユーザーインターフェース部分と、オペレーティングシステムに依存する部分とが連携して動作する。具体的には、ユーザーインターフェース部分でユーザーの指示を受け付け、オペレーティングシステムに依存する部分で装置の探索を実行し、ユーザーインターフェース部分で探索結果を表示する一連の処理を実行する。それぞれの処理の順番とそれぞれの処理が実行されるタイミングが定められるため、ユーザーインターフェース部分が装置の探索結果を入手できるのは、オペレーティングシステムに依存する部分による装置の探索処理が完了した後になる。換言すれば、探索処理により複数のＭＦＰの全てが検出された後に探索結果を表示するため、複数のＭＦＰのすべてが検出されるまで探索結果を表示することができず、探索結果が表示されるまでのレスポンスタイムが長くなるといった問題がある。
【特許文献１】特表２０１５−５２４１２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の一つは、スレッド制御の命令をサポートしていないプログラム言語で記述されたプログラムで、装置を探索する探索処理の結果を表示する場合に、レスポンスタイムを短くした情報処理装置を提供することである。
【０００６】
この発明の他の目的は、スレッド制御の命令をサポートしていないプログラム言語で記述されたプログラムで、装置を探索する探索処理の結果を表示する場合に、レスポンスタイムを短くした装置探索プログラムを提供することである。
【０００７】
この発明のさらに他の目的は、スレッド制御の命令をサポートしていないプログラム言語で記述されたプログラムで、装置を探索する探索処理の結果を表示する場合に、レスポンスタイムを短くした探索方法を提供することである。
【課題を解決するための手段】
【００１４】
この発明の他の局面によれば、情報処理装置は、画像を表示する表示手段と、ユーザーによる操作を受け付ける操作手段と、スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムを実行することにより、表示手段および操作手段を制御する第１実行手段と、第１の種類とは異なる第２の種類のプログラム言語で記述された第２のプログラムを実行することにより、通信可能な装置を探索する探索処理を実行する第２実行手段と、を備え、第１実行手段は、操作手段により起動操作が受け付けられることに応じて、第２実行手段を起動する起動手段と、第２実行手段が起動されてから探索処理が終了するまでの間に、予め定められた割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得手段と、装置情報取得手段により装置識別情報が取得されるごとに、取得された装置識別情報を表示手段に表示する割込時表示手段と、を含み、探索処理は、探索条件の異なる複数の分割処理を含み、第２実行手段は、第１実行手段により起動されることに応じて、複数の分割処理をそれぞれ実行する複数のサブ実行手段を起動するスレッド起動手段と、起動された複数のサブ実行手段のすべてが複数の分割処理のうち対応する担当分割処理を終了することを条件に、第１実行手段に探索処理の終了を通知する終了通知手段と、を備え、複数のサブ実行手段それぞれは、複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、第１実行手段に対して割り込みを発生するとともに、第１実行手段に検出された装置の装置識別情報を出力する出力手段と、を含む。
【００１５】
この局面に従えば、探索処理は、探索条件の異なる複数の分割処理を含み、第２実行手段は、複数の分割処理をそれぞれ実行する複数のサブ実行手段を起動し、複数のサブ実行手段のすべてが対応する担当分割処理を終了することを条件に、第１実行手段に探索処理の終了を通知し、複数のサブ実行手段それぞれは、担当分割処理を実行し、通信可能な装置を検出するごとに、第１実行手段に対して割り込みを発生するとともに、検出された装置の装置識別情報を出力する。このため、探索処理を、複数の分割処理に分割して並列で実行するので、レスポンスタイムをさらに短くすることができる。
【００１６】
好ましくは、第１実行手段は、第２実行手段が起動されてから第２実行手段が探索処理を終了するまでの間に、操作手段により探索処理の実行の中止を指示する操作が受け付けられることに応じて、第２実行手段に中止指示を出力する中止指示手段を、含み、第２実行手段は、第１実行手段から中止指示が入力されることに応じて、複数のサブ実行手段のうち担当分割処理を終了していないサブ実行手段にサブ中止指示を出力するサブ中止指示手段を含み、複数のサブ実行手段それぞれは、さらに、第２実行手段からサブ中止指示が入力されることに応じて、担当分割処理の実行を中止する。
【００１７】
この局面に従えば、第１のプログラムを実行する第１実行手段が、探索処理の実行の中止を指示する操作を受け付けると、複数のサブ実行手段が担当分割処理の実行を中止する。このため、ユーザーは、探索処理を途中で中止させることができる。
【００１８】
好ましくは、第１実行手段は、第２実行手段が起動されてから第２実行手段が探索処理を終了するまでの間、探索処理を実行中であることを示す画像を表示する探索中通知手段を、さらに含む。
【００１９】
この局面に従えば、第１のプログラムを実行する第１実行手段は、第２実行手段が探索処理を終了するまでの間、探索処理を実行中であることを示す画像を表示するので、ユーザーに探索処理を実行中であることを通知することができる。
【００２６】
この発明の他の局面によれば、装置探索プログラムは、画像を表示する表示手段と、ユーザーによる操作を受け付ける操作手段と、を備えた情報処理装置を制御するコンピューターで実行される装置探索プログラムであって、スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムと、第１の種類とは異なる第２の種類のプログラム言語で記述され、通信可能な装置を探索する探索処理を定めた第２のプログラムと、を含み、第１のプログラムは、操作手段により起動操作が受け付けられることに応じて、第２のプログラムをコンピューターに実行させる起動ステップと、コンピューターにより第２のプログラムが実行されてからコンピューターが第２のプログラムを実行するスレッドが探索処理を終了するまでの間に、割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得ステップと、装置情報取得ステップにおいて装置識別情報が取得されるごとに、取得された装置識別情報を表示手段に表示する割込時表示ステップと、をコンピューターに実行させ、探索処理は、探索条件の異なる複数の分割処理を含み、第２のプログラムは、複数の分割処理をそれぞれ定めた複数のサブプログラムと、コンピューターが複数のサブプログラムをそれぞれ実行する複数のサブスレッドを制御するスレッド制御プログラムと、を含み、起動ステップは、操作手段により起動操作が受け付けられることに応じて、スレッド制御プログラムをコンピューターに実行させ、スレッド制御プログラムは、複数のサブプログラムをコンピューターに実行させるスレッド起動ステップと、コンピューターが複数のサブプログラムをそれぞれ実行する複数のサブスレッドのすべてが複数の分割処理のうち対応する担当分割処理を終了することを条件に、コンピューターが第１のプログラムを実行する第１実行スレッドに探索処理の終了を通知する終了通知ステップを、コンピューターに実行させ、複数のサブプログラムそれぞれは、複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、第１実行スレッドに対して割り込みを発生するとともに、第１実行スレッドに検出された装置の装置識別情報を出力する出力ステップと、をコンピューターに実行させる。
【００２７】
この局面に従えば、探索処理は、探索条件の異なる複数の分割処理を含み、コンピューターがスレッド制御プログラムを実行するスレッドは、コンピューターが複数のサブプログラムをそれぞれ実行する複数のサブスレッドを起動し、複数のサブスレッドのすべてが対応する担当分割処理を終了することを条件に、コンピューターが第１のプログラムを実行する第１実行スレッドに探索処理の終了を通知し、複数のサブスレッドそれぞれは、担当分割処理を実行し、通信可能な装置を検出するごとに、第１実行スレッドに対して割り込みを発生するとともに、検出された装置の装置識別情報を出力する。このため、探索処理を、複数のスレッドで並列で実行するので、レスポンスタイムをさらに短くすることができる。
【００２８】
好ましくは、第１のプログラムは、さらに、コンピューターにスレッド制御プログラムを実行させてからコンピューターがスレッド制御プログラムを実行する制御スレッドから探索処理の終了が通知されるまでの間に、操作手段により探索処理の実行の中止を指示する操作が受け付けられることに応じて、制御スレッドに中止指示を出力する中止指示ステップを、コンピューターに実行させ、スレッド制御プログラムは、さらに、第１実行スレッドから中止指示が入力されることに応じて、複数のサブスレッドのうち担当分割処理を終了していないサブスレッドにサブ中止指示を出力するサブ中止指示ステップを、コンピューターに実行させ、複数のサブプログラムそれぞれは、さらに、制御スレッドからサブ中止指示が入力されることに応じて、複数の分割処理のうち対応する担当分割処理の実行を中止するステップを、コンピューターに実行させる。
【００２９】
この局面に従えば、コンピューターが第１のプログラムを実行する第１実行スレッドが、探索処理の実行の中止を指示する操作を受け付けると、複数のサブスレッドが担当分割処理の実行を中止する。このため、ユーザーは、探索処理を途中で中止させることができる。
【００３０】
好ましくは、第１のプログラムは、さらに、コンピューターにより第２のプログラムが実行されてからコンピューターが第２のプログラムを実行するスレッドが探索処理を終了するまでの間、探索処理を実行中であることを示す画像を表示する探索中通知ステップを、コンピューターに実行させる。
【００３１】
この局面に従えば、コンピューターが第１のプログラムを実行する第１実行スレッドは、コンピューターが第２のプログラムを実行するスレッドが探索処理を終了するまでの間、探索処理を実行中であることを示す画像を表示するので、ユーザーに探索処理を実行中であることを通知することができる。
【００３２】
この発明の他の局面によれば、装置探索方法は、画像を表示する表示手段と、ユーザーによる操作を受け付ける操作手段と、を備えた情報処理装置を制御するコンピューターで実行される探索方法であって、スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムをコンピューターに実行させることにより、表示手段および操作手段を制御する第１実行ステップと、第１の種類とは異なる第２の種類のプログラム言語で記述された第２のプログラムをコンピューターに実行させることにより、通信可能な装置を探索する探索処理を実行する第２実行ステップと、を含み、第２実行ステップは、探索処理に含まれる探索条件の異なる複数の分割処理を順に実行し、通信可能な装置を検出するごとに、コンピューターが第１のプログラムを実行する第１実行スレッドに対して割り込みを発生するとともに、第１実行スレッドに検出された装置の装置識別情報を出力する出力ステップを含み、第１実行ステップは、操作手段により起動操作が受け付けられることに応じて、コンピューターに第２のプログラムを実行させる起動ステップと、コンピューターが第２のプログラムを実行してからコンピューターが第２のプログラムを実行する第２実行スレッドが探索処理を終了するまでの間に、第２実行スレッドが発生する割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得ステップと、装置情報取得ステップにおいて装置識別情報が取得されるごとに、取得された装置識別情報を表示手段に表示する割込時表示ステップと、を含む。
【００３３】
この発明の他の局面によれば、装置探索方法は、画像を表示する表示手段と、ユーザーによる操作を受け付ける操作手段と、を備えた情報処理装置を制御するコンピューターで実行される装置探索方法であって、スレッド制御の命令をサポートしていない第１の種類のプログラム言語で記述された第１のプログラムをコンピューターに実行させることにより、表示手段および操作手段を制御する第１実行ステップと、第１の種類とは異なる第２の種類のプログラム言語で記述された第２のプログラムをコンピューターに実行させることにより、通信可能な装置を探索する探索処理を実行する第２実行ステップと、を含み、第１実行ステップは、操作手段により起動操作が受け付けられることに応じて、コンピューターに第２のプログラムを実行させる起動ステップと、コンピューターが第２のプログラムを実行してからコンピューターが第２のプログラムを実行するスレッドが探索処理を終了するまでの間に、予め定められた割り込みを検出することに応じて、通信可能な装置を識別するための装置識別情報を取得する装置情報取得ステップと、装置情報取得ステップにおいて装置識別情報が取得されるごとに、取得された装置識別情報を表示手段に表示する割込時表示ステップと、を含み、探索処理は、探索条件の異なる複数の分割処理を含み、第２実行ステップは、第１実行ステップにおいて起動されることに応じて、複数の分割処理をそれぞれ実行する複数のサブ実行プログラムをコンピューターに実行させるスレッド起動ステップと、コンピューターが複数のサブ実行プログラムをそれぞれ実行する複数のサブ実行スレッドのすべてが複数の分割処理のうち対応する担当分割処理を終了することを条件に、コンピューターが第１のプログラムを実行する第１実行スレッドに探索処理の終了を通知する終了通知ステップと、を含み、複数のサブ実行スレッドそれぞれは、複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、第１実行スレッドに対して割り込みを発生するとともに、第１実行スレッドに検出された装置の装置識別情報を出力する出力ステップを含む。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施の形態の１つにおけるプリントシステムの全体概要を示す図である。
【図２】携帯情報装置の構成の概要の一例を示す図である。
【図３】第１の実施の形態における携帯情報装置が備えるＣＰＵが有する機能の一例を示すブロック図である。
【図４】第１の実施の形態における表示制御処理の流れの一例を示すフローチャートである。
【図５】第１の実施の形態における周辺装置探索処理の流れの一例を示すフローチャートである。
【図６】第１の実施の形態における割込処理の流れの一例を示すフローチャートである。
【図７】第１の実施の形態におけるプリントシステムにおけるデータの流れを示す図である。
【図８】第２の実施の形態における携帯情報装置が備えるＣＰＵが有する機能の一例を示すブロック図である。
【図９】第２の実施の形態における表示制御処理の流れの一例を示すフローチャートである。
【図１０】第２の実施の形態におけるスレッド制御処理の流れの一例を示すフローチャートである。
【図１１】第２の実施の形態における周辺装置探索処理の流れの一例を示すフローチャートである。
【図１２】第２の実施の形態におけるプリントシステムにおけるデータの流れを示す図である。
【発明を実施するための形態】
【００３５】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００３６】
＜第１の実施の形態＞
図１は、本発明の実施の形態の１つにおけるプリントシステムの全体概要を示す図である。図１を参照して、プリントシステム１は、画像処理装置として機能するＭＦＰ１００，１００Ａ，１００Ｂと、無線局５と、ＭＦＰ１００，１００Ａ，１００Ｂのいずれかを遠隔操作可能な遠隔操作装置として機能する携帯情報装置２００，２００Ａ，２００Ｂと、を含む。ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）１００，１００Ａ，１００Ｂ、および無線局５は、ネットワーク３に接続される。携帯情報装置２００，２００Ａ，２００Ｂは、無線局５を通して、ネットワーク３に接続される。
【００３７】
ネットワーク３は、ローカルエリアネットワーク（ＬＡＮ）であり、接続形態は有線または無線を問わない。また、ネットワーク３は、ＬＡＮに限らず、ワイドエリアネットワーク（ＷＡＮ）、公衆交換電話網（ＰＳＴＮ）、インターネット等であってもよい。
【００３８】
携帯情報装置２００，２００Ａ，２００Ｂは、スマートフォン、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）など、ユーザーが携帯して使用するコンピューターである。ここでは、携帯情報装置２００，２００Ａ，２００Ｂを、スマートフォンとする場合を例に説明する。携帯情報装置２００，２００Ａ，２００Ｂのハードウェア構成および機能は同じなので、ここでは特に言及しない限り携帯情報装置２００を例に説明する。
【００３９】
本実施の形態におけるプリントシステム１において、携帯情報装置２００，２００Ａ，２００Ｂそれぞれは、ＭＦＰ１００，１００Ａ，１００Ｂを遠隔操作する。この場合、携帯情報装置２００，２００Ａ，２００Ｂそれぞれは、ＭＦＰ１００，１００Ａ，１００Ｂを遠隔操作する遠隔操作装置として機能し、ＭＦＰ１００，１００Ａ，１００Ｂそれぞれは、携帯情報装置２００，２００Ａ，２００Ｂいずれかによって遠隔操作される遠隔制御装置として機能する。携帯情報装置２００，２００Ａ，２００Ｂには、ＭＦＰ１００，１００Ａ，１００Ｂを遠隔操作するための遠隔操作プログラム、例えば、プリンタードライバープログラムがインストールされる。遠隔操作プログラムは、ＭＦＰ１００，１００Ａ，１００Ｂに共通し、ＭＦＰ１００，１００Ａ，１００Ｂのいずれにも対応可能なアプリケーションプログラムである。一方、ＭＦＰ１００には、携帯情報装置２００により遠隔操作され、処理を実行する遠隔制御プログラムがインストールされている。ここでは、携帯情報装置２００がＭＦＰ１００を遠隔操作する場合を例に説明する。
【００４０】
また、携帯情報装置２００，２００Ａ，２００Ｂは、遠隔操作の対象となる装置を決定するために、ネットワーク３に接続されているＭＦＰ１００，１００Ａ，１００Ｂを探索する処理を実行する。本実施の形態においては、ＭＦＰ１００，１００Ａ，１００Ｂそれぞれは、探索サービスに用いられる複数のプロトコルのうち少なくとも１つに対応している。このため、携帯情報装置２００，２００Ａ，２００Ｂそれぞれは、複数のプロトコルそれぞれを用いてＭＦＰ１００，１００Ａ，１００Ｂを検出する。
【００４１】
本実施の形態においては、ＭＦＰ１００がＳＳＤＰのプロトコルに対応し、ＭＦＰ１００Ａ，１００ＢそれぞれがＷＳＤのプロトコルに対応する場合を例に説明する。この場合、携帯情報装置２００，２００Ａ，２００Ｂそれぞれは、ＳＳＤＰのプロトコルを用いてＭＦＰ１００を検出し、ＷＳＤのプロトコルを用いてＭＦＰ１００Ａ，１００Ｂを検出する。なお、ＭＦＰ１００，１００Ａ，１００Ｂが用いるプロトコルが予め定められている場合、例えば、ＭＦＰ１００，１００Ａ，１００ＢすべてがＳＳＤＰのプロトコルを用いることが予め定められている場合、携帯情報装置２００，２００Ａ，２００Ｂそれぞれは、ＳＳＤＰのプロトコルでＭＦＰ１００，１００Ａ，１００Ｂを探索すれば十分である。
【００４２】
図２は、携帯情報装置の構成の概要の一例を示す図である。図２を参照して、本実施の形態における携帯情報装置２００は、携帯情報装置２００の全体を制御するためのＣＰＵ２０１と、カメラ２０２と、データを不揮発的に記憶するフラッシュメモリ２０３と、通話部２０５と接続された無線通信部２０４と、情報を表示する表示部２０６と、ユーザーの操作を受け付ける操作部２０７と、無線ＬＡＮＩ／Ｆ２０８と、加速度センサー２１０と、外部記憶装置２１１と、を含む。
【００４３】
表示部２０６は、液晶表示装置（ＬＣＤ）、有機ＥＬＤ等の表示装置であり、画像を表示する。操作部２０７は、メインキー２０７Ａと、タッチパネル２０７Ｂとを備える。タッチパネル２０７Ｂは、静電容量方式である。なお、タッチパネル２０７Ｂは、静電容量方式に限らず、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式等の他の方式を用いることができる。
【００４４】
タッチパネル２０７Ｂは、検出面中でユーザーにより指示される位置を検出する。タッチパネル１６５の検出面は、表示部２０６の上面または下面に表示部２０６に重畳して設けられる。ここでは、タッチパネル２０７Ｂの検出面のサイズと、表示部２０６の表示面のサイズとを同じにしている。このため、表示面の座標系と検出面の座標系は同じである。タッチパネル２０７Ｂは、ユーザーが、表示部２０６の表示面を指示する位置を検出面で検出し、検出した位置の座標をＣＰＵ２０１に出力する。表示面の座標系と検出面の座標系は同じなので、タッチパネル２０７Ｂが出力する座標を、表示面の座標に置き換えることができる。以下、ユーザーが表示部２０６の表示面を指示することによりタッチパネル２０７Ｂが検出面で検出して出力する座標を、表示部２０６の表示面の座標ともいう。
【００４５】
タッチパネル２０７Ｂは、マルチタッチ対応のタッチパネルである。このため、タッチパネル１６５は、ユーザーが、表示部２０６の表示面を一度に複数個所を複数の指で指示する場合、検出面で表示部２０６の表示面中でユーザーにより指示された複数の位置を検出し、検出した複数の位置をそれぞれ示す複数の座標を、ＣＰＵ２０１に出力する。
【００４６】
カメラ２０２は、レンズおよび光電変換素子を備え、レンズで集光した光を光電変換素子に結像し、光電変換素子は受光した光を光電変換して画像データをＣＰＵ２０１に出力する。光電変換素子は、ＣＭＯＳ(Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）センサー、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）センサー等である。
【００４７】
無線通信部２０４は、電話通信網に接続された携帯電話用基地局と無線通信する。無線通信部２０４は、携帯情報装置２００を電話通信網に接続し、通話部２０５を用いた通話を可能とする。無線通信部２０４は、携帯電話用基地局から受信した無線信号を復調した音声信号を復号して通話部２０５に出力する。また、無線通信部２０４は、通話部２０５から入力される音声を符号化し、携帯電話用基地局に送信する。通話部２０５は、マイクおよびスピーカーを備え、無線通信部２０４から入力される音声をスピーカーから出力し、マイクから入力される音声を無線通信部２０４に出力する。さらに、無線通信部２０４は、ＣＰＵ２０１により制御され、携帯情報装置２００を電子メールサーバーに接続し、電子メールを送受信する。
【００４８】
無線ＬＡＮＩ／Ｆ２０８は、無線局５と通信し、携帯情報装置２００をネットワーク３に接続するためのインターフェースである。携帯情報装置２００に、ＭＦＰ１００，１００Ａ，１００ＢそれぞれのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスを登録しておくことにより、携帯情報装置２００は、ＭＦＰ１００，１００Ａ，１００Ｂと通信することができ、データの送受信が可能となる。なお、本実施の形態においては、携帯情報装置２００が無線ＬＡＮＩ／Ｆ２０８を用いて、ＭＦＰ１００，１００Ａ，１００Ｂと通信する場合を例に説明するが、他の通信方法を用いて通信するようにしてもよい。具体的には、携帯情報装置２００、ＭＦＰ１００，１００Ａ，１００Ｂが、例えばＢｌｕｅｔｏｏｔｈ（登録商標）等の近距離無線装置を搭載する場合には、携帯情報装置２００が、ＭＦＰ１００，１００Ａ，１００Ｂのいずれかと、１対１で通信するようにしてもよい。
【００４９】
フラッシュメモリ２０３は、ＣＰＵ２０１が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。ＣＰＵ２０１は、フラッシュメモリ２０３に記録されたプログラムを、ＣＰＵ２０１が備えるＲＡＭにロードして実行する。
【００５０】
加速度センサー２１０は、互いに直交するＸ軸、Ｙ軸およびＺ軸の３方向の加速度を測定する３軸加速度センサーである。加速度センサー２１０は、検出した加速度をＣＰＵ２０１に出力する。
【００５１】
外部記憶装置２１１は、携帯情報装置２００に着脱自在であり、遠隔操作プログラムを記憶したＣＤ−ＲＯＭ２１１Ａが装着可能である。ＣＰＵ２０１は、外部記憶装置２１１を介してＣＤ−ＲＯＭ２１１Ａにアクセス可能である。ＣＰＵ２０１は、外部記憶装置２１１に装着されたＣＤ−ＲＯＭ２１１Ａに記録された遠隔操作プログラムを、ＣＰＵ２０１が備えるＲＡＭにロードして実行することが可能である。
【００５２】
なお、ＣＰＵ２０１が実行するプログラムとして、フラッシュメモリ２０３またはＣＤ−ＲＯＭ２１１Ａに記録されたプログラムについて説明したが、ネットワーク３に接続された他のコンピューターが、フラッシュメモリ２０３に記憶されたプログラムを書換えたプログラム、または、追加して書き込んだ新たなプログラムであってもよい。さらに、携帯情報装置２００が、ネットワーク３に接続された他のコンピューターからダウンロードしたプログラムでもよい。ここでいうプログラムは、ＣＰＵ２０１が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【００５３】
なお、ＣＰＵ２０１が実行するプログラムを記憶する媒体としては、ＣＤ−ＲＯＭ２１１Ａに限られず、光ディスク（ＭＯ（Ｍａｇｎｅｔｉｃ  Ｏｐｔｉｃａｌ  ｄｉｓｃ）／ＭＤ（Ｍｉｎｉ  Ｄｉｓｃ）／ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ））、ＩＣカード、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）などの半導体メモリであってもよい。
【００５４】
図３は、第１の実施の形態における携帯情報装置が備えるＣＰＵが有する機能の一例を示すブロック図である。図３に示す機能は、携帯情報装置２００が備えるＣＰＵ２０１が第１の実施の形態における装置探索プログラムを実行することによりＣＰＵ２０１に形成される機能である。第１の実施の形態における装置探索プログラムは、スレッド制御のコマンドをサポートしていないプログラム言語で記述された表示制御プログラムと、スレッド制御のコマンドをサポートしているプログラム言語で記述された周辺装置探索プログラムと、を含む。
【００５５】
表示制御プログラムは、ＨＴＭＬおよびＪａｖａＳｃｒｉｐｔ（登録商標）等の記述言語で記述される。表示制御プログラムは、ＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ）等の文書の視覚的な構造を定めるスタイルシートを含んでもよい。ＨＴＭＬおよびＪａｖａＳｃｒｉｐｔ（登録商標）の記述言語は、それがインストールされる装置のオペレーティングシステムに依存しない汎用的なプログラムング言語である。このため、例えば、携帯情報装置２００，２００Ａ，２００Ｂで、オペレーティングシステムが異なる場合であっても携帯情報装置２００，２００Ａ，２００Ｂそれぞれに同一の表示制御プログラムをインストールすることができる。このため、表示制御プログラムを開発が容易となる。
【００５６】
周辺装置探索プログラムは、Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋またはＯｂｊｅｃｔｉｖｅ−Ｃ等のプログラム言語で記述される。実際には、ＣＰＵ２０１は、Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋またはＯｂｊｅｃｔｉｖｅ−Ｃ等のプログラム言語で記述されたソースプログラムをコンパイルした実行ファイルを実行する。以下、周辺装置探索プログラムというときは、ソースプログラムをコンパイルした実行ファイルを含む。周辺装置探索プログラムは、それがインストールされる装置のオペレーティングシステムに依存するプログラム言語である。このため、例えば、携帯情報装置２００，２００Ａ，２００Ｂで、オペレーティングシステムが異なる場合、携帯情報装置２００，２００Ａ，２００Ｂのオペレーティングシステムにそれぞれ対応する周辺装置探索プログラムをインストールする必要がある。
【００５７】
図３を参照して、ＣＰＵ２０１は、第１実行部２５１と、第２実行部２５３と、を含む。第１実行部２５１は、ＣＰＵ２０１が、表示制御プログラムを実行する表示制御スレッドであり、第２実行部２５３は、メインスレッドにより起動され、周辺装置探索プログラムを実行する探索スレッドである。第１実行部２５１は、表示部２０６および操作部２０７を制御し、ユーザーの操作を受け付けるとともに、受け付けられた操作に対する応答をユーザーに通知するユーザーにインターフェースである。
【００５８】
第１実行部２５１は、操作受付部２６１と、起動部２６３と、中止指示部２６５と、探索中通知部２６７と、装置情報取得部２６９と、割込時表示部２７１と、を含む。第２実行部２５３は、探索部２７３と、出力部２７５と、終了通知部２７７と、を含む。
【００５９】
操作受付部２６１は、ユーザーが操作部２０７に入力する操作を受け付ける。操作受付部２６１は、操作部２０７がユーザーによる起動操作を受け付けることに応じて、起動部２６３および探索中通知部２６７に起動指示を出力する。起動操作は、ＣＰＵ２０１に表示制御プログラムの実行を指示する操作である。例えば、表示部２０６に起動操作を割り当てた探索指示ボタンを表示し、タッチパネル２０７Ｂが探索指示ボタン内の位置を検出すると、起動操作を受け付ける。また、操作受付部２６１は、操作部２０７がユーザーによる中止操作を受け付けることに応じて、中止指示部２６５に中止指示を出力する。中止操作は、ＣＰＵ２０１に装置探索処理の実行の中止を指示する操作である。例えば、表示部２０６に中止操作を割り当てた中止指示ボタンを表示し、タッチパネル２０７Ｂが中止指示ボタン内の位置を検出すると、中止操作を受け付ける。
【００６０】
起動部２６３は、操作受付部２６１から起動指示が入力されることに応じて、第２実行部２５３を起動する。具体的には、起動部２６３は、ＣＰＵ２０１に周辺装置探索プログラムの実行を指示する。第２実行部２５３は、ＣＰＵ２０１が周辺装置探索プログラムを実行する探索スレッドである。起動部２６３は、第２実行部２５３を起動すると、第２実行部２５３を起動したことを示す信号を中止指示部２６５に出力する。
【００６１】
中止指示部２６５は、起動部２６３から第２実行部２５３を起動したことを示す信号が入力された後、操作受付部２６１から中止指示が入力されることに応じて、第２実行部２５３を終了させるとともに、探索中通知部２６７に表示中止指示を出力する。具体的には、中止指示部２６５は、第２実行部２５３を終了させるコマンドをオペレーティングシステムに出力する。これにより、第２実行部２５３は、オペレーティングシステムにより終了させられる。
【００６２】
探索部２７３は、起動部２６３により起動されることに応じて、探索処理を実行する。探索処理は、予め定められたプロトコルにしたがって、無線ＬＡＮＩ／Ｆ２０８が通信可能な周辺装置を検出する処理である。具体的には、探索部２７３は、探索処理のために予め定められたプロトコルにしたがって、無線ＬＡＮＩ／Ｆ２０８を介して探索コマンドを送信し、探索コマンドに応答する周辺装置が返信する応答コマンドを受信する。探索部２７３は、探索処理のために予め定められたプロトコルが複数の場合、複数のプロトコルを順に選択し、選択した通信プロトコルで周辺装置を探索する処理を実行する。本実施の形態においては、ＭＦＰ１００がＳＳＤＰのプロトコルに対応し、ＭＦＰ１００Ａ，１００ＢそれぞれがＷＳＤのプロトコルに対応している。このため、探索部２７３は、ＳＳＤＰのプロトコルに従った探索処理と、ＷＳＤのプロトコルに従った探索処理とを実行する。
【００６３】
探索部２７３は、無線ＬＡＮＩ／Ｆ２０８が周辺装置から応答コマンドを受信することに応じて、出力部２７５に受信された応答コマンドを出力する。出力部２７５は、オペレーテンングシステムを介して、割り込みにより応答コマンドを第１実行部２５１に出力する。
【００６４】
探索部２７３は、探索コマンドを送信することにより探索処理を開始し、探索コマンドを送信してから所定時間経過すると探索処理を終了する。探索部２７３は、探索処理を開始してから終了するまでの間に、応答コマンドを受信するごとに、受信された応答コマンドを出力部２７５に出力し、出力部２７５は、応答コマンドが入力されるごとに、割り込みにより応答コマンドを第１実行部２５１に出力する。このため、第２実行部２５３によって応答コマンドが受信されるごとに、第１実行部２５１に応答コマンドが出力される。応答コマンドは、応答コマンドを送信してきた装置に関する情報である装置情報を含む。装置情報は、装置を識別するための装置識別情報を少なくとも含む。装置情報は、装置の種類を示す情報を含んでもよい。探索部２７３は、ＳＳＤＰのプロトコルに従った探索処理およびＷＳＤのプロトコルに従った探索処理のすべてを終了すると、通知指示を終了通知部２７７に出力する。
【００６５】
終了通知部２７７は、探索部２７３から終了指示が入力されることに応じて、第１実行部２５１に探索処理が終了したことを通知する。具体的には、第１実行部２５１に終了信号を出力する。
【００６６】
装置情報取得部２６９は、出力部２７５から割り込みによる応答コマンドが入力される。装置情報取得部２６９は、割り込みを検出すると、出力部２７５から出力される応答コマンドを取得する。装置情報取得部２６９は、応答コマンドを取得すると、応答コマンドを割込時表示部２７１に出力する。割込時表示部２７１は、応答コマンドが入力されるごとに、応答コマンドに含まれる装置情報を、表示部２０６に表示する。表示部２０６の予め定められた領域に装置情報を順に並べて表示する。
【００６７】
探索中通知部２６７は、操作受付部２６１から起動指示が入力されることに応じて、探索処理を実行中であることをユーザーに通知する。具体的には、探索中通知部２６７は、表示部２０６にスプラッシュスクリーンを表示する。スプラッシュスクリーンは、探索処理を実行中であることを示す画像であり、例えば、砂時計を示す画像であってもよいし、所定の領域の表示態様が時間の経過に伴って変化する動画像であってもよい。探索中通知部２６７は、探索処理を実行中であることを示す画像を、表示部２０６の表示面中の一部に表示する。なお、探索処理を実行中であることを示す画像は、表示部２０６の表示面の全体に表示してもよい。
【００６８】
探索中通知部２６７は、操作受付部２６１から起動指示が入力された後、終了通知部２７７から終了信号が入力されることに応じて、探索処理を実行中であることを示す画像の表示を終了する。これにより、ユーザーに、探索処理が終了したことを通知することができる。また、探索中通知部２６７は、操作受付部２６１から起動指示が入力された後、終了通知部２７７から終了信号が入力される前に、操作受付部２６１から中止指示が入力されることに応じて、探索処理を実行中であることを示す画像の表示を終了する。これにより、ユーザーに、探索処理が途中で中止したことを通知することができる。
【００６９】
図４は、第１の実施の形態における表示制御処理の流れの一例を示すフローチャートである。表示制御処理は、携帯情報装置２００が備えるＣＰＵ２０１が表示制御プログラムを実行することによりＣＰＵ２０１により実行される処理である。以下、ＣＰＵ２０１が表示制御プログラムを実行するスレッドを表示制御スレッドという。表示制御プログラムは、装置探索プログラムの一部である。図４を参照して、ＣＰＵ２０１は、操作部２０７が起動操作を受け付けたか否かを判断する（ステップＳ０１）。起動操作を受け付けるまで待機状態となり（ステップＳ０１でＮＯ）、起動操作を受け付けたならば（ステップＳ０１でＹＥＳ）、処理をステップＳ０２に進める。
【００７０】
ステップＳ０２においては、探索スレッドを起動する。具体的には、ＣＰＵ２０１に周辺装置探索プログラムを実行させる。以下、ＣＰＵ２０１が周辺装置探索プログラムを実行するスレッドを探索スレッドという。次のステップＳ０３においては、探索スレッドから終了信号が入力されたか否かを判断する。探索スレッドから終了信号が入力されたならば処理を終了するが、そうでなければ処理をステップＳ０４に進める。
【００７１】
ステップＳ０４においては、中止操作を受け付けたか否かを判断する。中止操作を受け付けたならば処理をステップＳ０５に進めるが、そうでなければ処理をステップＳ０３に戻す。ステップＳ０５においては、ステップＳ０１において起動した探索スレッドを終了させ、処理を終了する。
【００７２】
図５は、第１の実施の形態における周辺装置探索処理の流れの一例を示すフローチャートである。周辺装置探索処理は、携帯情報装置２００が備えるＣＰＵ２０１が、周辺装置探索プログラムを実行する処理である。ＣＰＵ２０１が、周辺装置探索プログラムを実行するスレッドは、表示制御処理のステップＳ０１において起動される探索スレッドである。図５を参照して、ＣＰＵ２０１は、表示制御スレッドを検出する（ステップＳ２１）。表示部２０６を制御するスレッドを、オペレーティングシステムに問い合わせることにより、表示制御スレッドを検出する。
【００７３】
次のステップＳ２２においては、通信プロトコルを選択する。装置探索のための通信プロトコルとして予め定められたＳＳＤＰおよびＷＳＤのプロトコルのうちから１つを選択する。そして、無線ＬＡＮＩ／Ｆ２０８を介して、ステップＳ２２において選択たされたプロトコルに対応する探索コマンドを送信する（ステップＳ２３）。次のステップＳ２４においては、無線ＬＡＮＩ／Ｆ２０８が、ステップＳ２３において送信された探索コマンドに応答する周辺装置が送信する応答コマンドを受信した中否かを判断する。応答コマンドを受信したならば処理をステップＳ２５に進めるが、そうでなければ処理をステップＳ２６に進める。ステップＳ２５においては、ステップＳ２１において検出された表示制御スレッドに割り込みを発生させ、応答コマンドを出力する。
【００７４】
次のステップＳ２６においては、ステップＳ２３において探索コマンドを送信してから所定時間が経過したか否かを判断する。所定時間が経過したならば処理をステップＳ２８に進めるが、そうでなければ処理をステップＳ２７に進める。
【００７５】
ステップＳ２７においては、探索スレッドの終了を検出したか否かを判断する。オペレーティングシステムにより終了が指示されたならば探索スレッドの終了を検出する。探索スレッドの終了を検出したならば処理を終了するが、そうでなければ処理をステップＳ２４に戻す。
【００７６】
ステップＳ２８においては、装置探索のためのプロトコルとして予め定められたＳＳＤＰおよびＷＳＤのプロトコルのうちステップＳ２２において選択されていないプロトコルが存在するか否かを判断する。未選択のプロトコルが存在するならば処理をステップＳ２２に戻すが、そうでなければ処理を終了する。
【００７７】
図６は、第１の実施の形態における割込処理の流れの一例を示すフローチャートである。割込処理は、ＣＰＵ２０１が、割込時表示プログラムを実行することによりＣＰＵ２０１により実行される処理であり、表示制御処理を実行している段階で、ＣＰＵ２０１が割り込みの発生を検出することに応じて、実行する処理である。割込時表示プログラムは、表示制御プログラムの一部である。図６を参照して、ＣＰＵ２０１は、割り込みが発生したか否かを判断する（ステップＳ１１）。割り込みの発生を検出するまで待機状態となり、割り込みの発生を検出したならば処理をステップＳ１２に進める。
【００７８】
ステップＳ１２においては、応答コマンドを取得する。割り込みを発生させた探索スレッドが出力する応答コマンドを取得する。そして、取得された応答コマンドに含まれる装置情報を表示部２０６に表示し、処理を終了する。
【００７９】
図７は、第１の実施の形態におけるプリントシステムにおけるデータの流れを示す図である。図７を参照して、縦方向上から下に向かって時間の流れを示し、表示制御スレッド、探索スレッド、ＭＦＰ１００，１００Ａ，１００Ｂそれぞれが送受信するデータを矢印で示している。
【００８０】
まず、表示制御スレッドが探索スレッドを起動とともに、探索処理を実行中であることを示す画像を表示する。探索スレッドは、表示制御スレッドにより起動されると、ＳＳＤＰのプロトコルに従った探索コマンドをブロードキャストで送信する。これにより、ＭＦＰ１００，１００Ａ，１００ＢそれぞれにおいてＳＳＤＰのプロトコルに従った探索コマンドが受信される。ＭＦＰ１００は、ＳＳＤＰのプロトコルに対応しているので、ＭＦＰ１００が探索コマンドに応答して、応答コマンドを探索スレッドに返信する。一方、ＭＦＰ１００Ａ，１００Ｂは、ＳＳＤＰのプロトコルに対応していないので、探索コマンドを無視する。探索スレッドは、ＭＦＰ１００から受信される応答コマンドを、割り込みにより表示制御スレッドに出力する。表示制御スレッドにおいては、応答コマンドを受信することに応じて、応答コマンドに含まれる装置情報を表示する。
【００８１】
次に、探索スレッドは、ＳＳＤＰのプロトコルに従った探索処理が終了すると、ＷＳＤのプロトコルに従った探索コマンドをブロードキャストで送信する。これにより、ＭＦＰ１００，１００Ａ，１００ＢそれぞれにおいてＷＳＤのプロトコルに従った探索コマンドが受信される。ＭＦＰ１００は、ＷＳＤのプロトコルに対応していないので、探索コマンドを無視する。ＭＦＰ１００Ａ，１００Ｂは、ＳＳＤＰのプロトコルに対応しているので、ＭＦＰ１００Ａ，１００Ｂそれぞれが探索コマンドに応答して、応答コマンドを探索スレッドに返信する。探索スレッドは、ＭＦＰ１００Ａから受信される応答コマンドを、割り込みにより表示制御スレッドに出力し、ＭＦＰ１００Ｂから受信される応答コマンドを、割り込みにより表示制御スレッドに出力する。表示制御スレッドにおいては、応答コマンドを受信することに応じて、応答コマンドに含まれる装置情報を表示する。
【００８２】
探索スレッドは、ＷＳＤのプロトコルに従った探索処理が終了すると、終了信号を表示制御スレッドに出力し、処理を終了する。終了信号が入力される表示制御スレッドは、探索処理を実行中であることを示す画像の表示を中止する。
【００８３】
以上説明したように、第１の実施の形態における携帯情報装置は、情報処理装置として機能し、スレッド制御の命令をサポートしていない記述言語で記述された表示制御プログラムを実行することにより、表示部２０６および操作部２０７を制御する第１実行部２５１と、スレッド制御の命令をサポートしているプログラム言語で記述された周辺装置探索プログラムを実行することにより、通信可能な装置を探索する第２実行部２５３と、を備る。第１実行部２５１は、操作部２５１により起動操作が受け付けられることに応じて、第２実行部２５３を起動し、第２実行部２５３が起動されてから探索処理が終了する前に、第２実行部２５３によって探索された通信可能な装置の装置識別情報を取得し、表示する。このため、ユーザーによる起動操作を受け付けてから装置識別情報を表示するまでの時間を短くすることができる。その結果、スレッド制御の命令をサポートしていないプログラム言語で記述された表示制御プログラムで、装置を探索する探索処理の結果を表示する場合に、レスポンスタイムを短くすることができる。また、表示制御プログラムは、オペレーティングシステムに依存しない記述言語で記述されるので、１種類を作成すればよいので、開発が容易である。
【００８４】
また、第２実行部２５３は、通信可能な装置を検出するごとに、第１実行部２５１に対して割り込みを発生するとともに、第１実行部２５１に検出された装置の装置識別情報を出力する。このため、第１実行部２５１は、通信可能な装置が検出されるごとに、検出された装置の装置識別情報を表示することができる。
【００８５】
また、表示制御プログラムを実行する第１実行部２５１が、探索処理の実行の中止を指示する操作を受け付けると、周辺装置探索プログラムを実行する第２実行部２５３が探索処理の実行を中止する。このため、ユーザーは、探索処理を途中で中止させることができる。
【００８６】
また、第１実行部２５１は、第２実行部２５３が起動されてから第２実行部２５３が探索処理を終了するまでの間、探索処理を実行中であることを示す画像を表示部２０６に表示する。このため、ユーザーに探索処理を実行中であることを通知することができる。
【００８７】
なお、第１の実施の形態において、探索部２７３は、装置探索のための複数のプロトコルにそれぞれに対応する探索処理を順に実行するようにした。これとは別に、探索部２７３は、ネットワークアドレスをサブネットマスクで複数に細分化し、細分化された複数のサブネットマスクそれぞれに対応する探索処理を順に実行するようにしてもよい。この場合、探索部２７３は、複数のサブネットマスクの数と同じ数の探索処理を順に実行する。また、探索の対象となる複数の装置が予め定められている場合には、探索部２７３が複数の装置それぞれを探索する探索処理を順に実行するようにしてもよい。この場合には、探索部２７３は、複数の装置の数と同じ数の探索処理を順に実行する。さらに、複数の装置をグループ化し、探索部２７３が、複数のグループそれぞれに対応する探索処理を実行するようにしてもよい。この場合には、探索部２７３は、複数のグループの数と同じ数の探索処理を順に実行する。
【００８８】
＜第２の実施の形態＞
第２の実施の形態におけるプリントシステムの全体概要は、図１に示した全体概要と同じである。また、第２の実施の形態における携帯情報装置２００の構成は、図２に示した構成と同じである。したがって、ここでは説明を繰り返さない。
【００８９】
第２の実施の形態における携帯情報装置２００は、複数の探索処理をそれぞれ実行する複数の探索スレッドを起動する点で第１の実施の形態における携帯情報装置２００と、異なる。第１の実施の形態における携帯情報装置２００は、ＳＳＤＰのプロトコルおよびＷＳＤのプロトコルのいずれかに従って探索処理を実行した後、別のプロトコルのプロトコルに従って探索処理を実行する。第２の実施の形態における携帯情報装置２００は、ＳＳＤＰのプロトコルに対応する探索処理を実行する探索スレッドと、ＷＳＤのプロトコルに対応する探索処理を実行する探索スレッドと、を並列で起動する。
【００９０】
図８は、第２の実施の形態における携帯情報装置が備えるＣＰＵが有する機能の一例を示すブロック図である。図８に示す機能は、携帯情報装置２００が備えるＣＰＵ２０１が第２の実施の形態における装置探索プログラムを実行することによりＣＰＵ２０１に形成される機能である。第２の実施の形態における装置探索プログラムは、スレッド制御のコマンドをサポートしていないプログラム言語で記述された表示制御プログラムと、スレッド制御のコマンドをサポートしているプログラム言語で記述されたスレッド制御プログラムおよび周辺装置探索プログラムと、を含む。
【００９１】
表示制御プログラムは、ＨＴＭＬおよびＪａｖａＳｃｒｉｐｔ（登録商標）等の記述言語で記述される。表示制御プログラムは、ＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ）等の文書の視覚的な構造を定めるスタイルシートを含んでもよい。ＨＴＭＬおよびＪａｖａＳｃｒｉｐｔ（登録商標）の記述言語は、それがインストールされる装置のオペレーティングシステムに依存しない汎用的なプログラムング言語である。このため、例えば、携帯情報装置２００，２００Ａ，２００Ｂで、オペレーティングシステムが異なる場合であっても携帯情報装置２００，２００Ａ，２００Ｂそれぞれに同一の表示制御プログラムをインストールすることができる。
【００９２】
スレッド制御プログラムおよび周辺装置探索プログラムは、Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋またはＯｂｊｅｃｔｉｖｅ−Ｃ等のプログラム言語で記述される。実際には、ＣＰＵ２０１は、Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋またはＯｂｊｅｃｔｉｖｅ−Ｃ等のプログラム言語で記述されたソースプログラムをコンパイルした実行ファイルを実行する。以下、スレッド制御プログラムおよび周辺装置探索プログラムというときは、それらのソースプログラムをコンパイルした実行ファイルを含む。スレッド制御プログラムおよび周辺装置探索プログラムは、それらがインストールされる装置のオペレーティングシステムに依存するプログラム言語である。このため、例えば、携帯情報装置２００，２００Ａ，２００Ｂで、オペレーティングシステムが異なる場合、携帯情報装置２００，２００Ａ，２００Ｂのオペレーティングシステムにそれぞれ対応するスレッド制御プログラムおよび周辺装置探索プログラムをインストールする必要がある。
【００９３】
図８を参照して、第２の実施の形態における携帯情報装置２００が備えるＣＰＵ２０１が有する機能が、図３に示した機能と異なる点は、第１実行部２５１の起動部２６３および装置情報取得部２６９が、起動部２６３Ａおよび装置情報取得部２６９Ａに変更された点、第２実行部２５３が、第２実行部２５５、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂに変更された点である。その他の機能は、図３に示した機能と同じなので、ここでは説明を繰り返さない。
【００９４】
起動部２６３Ａは、操作受付部２６１から起動指示が入力されることに応じて、第２実行部２５３を起動する。具体的には、起動部２６３Ａは、ＣＰＵ２０１にスレッド制御プログラムの実行を指示する。第２実行部２５５は、ＣＰＵ２０１がスレッド制御プログラムを実行するスレッド制御スレッドである。起動部２６３Ａは、第２実行部２５５を起動すると、第２実行部２５５を起動したことを示す信号を中止指示部２６５に出力する。
【００９５】
第２実行部２５５は、スレッド起動部２８１と、サブ中止指示部２８３と、終了通知部２８５と、を含む。スレッド起動部２８１は、起動部２６３Ａにより第２実行部２５３が起動されることに応じて、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂを起動する。具体的には、スレッド起動部２８１は、ＣＰＵ２０１にＳＳＤＰのプロトコルに対応する周辺装置探索プログラムの実行を指示するとともに、ＣＰＵ２０１にＷＳＤのプロトコルに対応する周辺装置探索プログラムの実行を指示する。これにより、ＣＰＵ２０１は、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂを形成する。
【００９６】
第１サブ実行部２５３Ａは、ＣＰＵ２０１がＳＳＤＰのプロトコルに対応する周辺装置探索プログラムを実行するサブ探索スレッドである。第２サブ実行部２５３Ｂは、ＣＰＵ２０１がＷＳＤのプロトコルに対応する周辺装置探索プログラムを実行するサブ探索スレッドである。スレッド起動部２８１は、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂを起動することに応じて、それらを識別するためのスレッド識別情報をサブ中止指示部２８３および終了通知部２８５に出力する。
【００９７】
なお、ここでは、ＳＳＤＰのプロトコルに対応するサブ探索スレッドと、およびＷＳＤのプロトコルに対応するサブ探索スレッドとを起動する場合を例に説明するが、スレッド起動部２８１は、装置探索のために予め定められたプロトコルの数と同じ数のサブ探索スレッドを起動する。
【００９８】
第１サブ実行部２５３Ａは、第１探索部２７３Ａと、第１出力部２７５Ａと、第１サブ終了通知部２７７Ａと、を含む。第１探索部２７３Ａは、スレッド起動部２８１により起動されることに応じて、ＳＳＤＰのプロトコルに対応する第１探索処理を実行する。具体的には、第１探索部２７３Ａは、ＳＳＤＰのプロトコルに従って、無線ＬＡＮＩ／Ｆ２０８を介して探索コマンドを送信し、探索コマンドに応答する周辺装置が返信する、ＳＳＤＰのプロトコルに従った応答コマンドを受信する。
【００９９】
第１探索部２７３Ａは、無線ＬＡＮＩ／Ｆ２０８が探索コマンドに応答する周辺装置から応答コマンドを受信することに応じて、第１出力部２７５Ａに受信された応答コマンドを出力する。第１探索部２７３Ａは、探索コマンドを送信することにより探索処理を開始し、探索コマンドを送信してから所定時間経過すると探索処理を終了する。第１探索部２７３Ａは、探索処理を開始してから終了するまでの間に、応答コマンドを受信するごとに、受信された応答コマンドを第１出力部２７５Ａに出力する。第１探索部２７３Ａは、第１の種類のプロトコルに対応する探索処理を終了すると、終了信号を第１サブ終了通知部２７７Ａに出力する。
【０１００】
第１出力部２７５Ａは、第１探索部２７３Ａから応答コマンドが入力されることに応じて、オペレーテンングシステムを介して、割り込みにより応答コマンドを第１実行部２５１に出力する。なお、第１出力部２７５Ａは、表示部２０６を制御する表示制御スレッドをオペレーティングシステムに問い合わせることにより、第１実行部２５１を検出するようにしてもよい。この場合、第１出力部２７５Ａは、オペレーティングシステムから取得するスレッド識別情報で特定される表示制御スレッドである第１実行部２５１に割り込みを発生させ、応答コマンドを出力する。
【０１０１】
第１サブ終了通知部２７７Ａは、第１探索部２７３Ａから終了信号が入力されることに応じて、第２実行部２５５の終了通知部２８５に第１の探索処理が終了したことを通知する。具体的には、第１サブ終了通知部２７７Ａは、終了通知部２８５にサブ終了信号を出力する。
【０１０２】
第２サブ実行部２５３Ｂは、第２探索部２７３Ｂと、第２出力部２７５Ｂと、第２サブ終了通知部２７７Ｂと、を含む。第２探索部２７３Ｂは、スレッド起動部２８１により起動されることに応じて、ＷＳＤのプロトコルに対応する第２探索処理を実行する。具体的には、第２探索部２７３Ｂは、ＷＳＤのプロトコルに従って、無線ＬＡＮＩ／Ｆ２０８を介して探索コマンドを送信し、探索コマンドに応答する周辺装置が返信する、ＷＳＤのプロトコルに従った応答コマンドを受信する。
【０１０３】
第２探索部２７３Ｂは、無線ＬＡＮＩ／Ｆ２０８が周辺装置から応答コマンドを受信することに応じて、第２出力部２７５Ｂに受信された応答コマンドを出力する。第２探索部２７３Ｂは、探索コマンドを送信することにより探索処理を開始し、探索コマンドを送信してから所定時間経過すると探索処理を終了する。第２探索部２７３Ｂは、探索処理を開始してから終了するまでの間に、応答コマンドを受信するごとに、受信された応答コマンドを第２出力部２７５Ｂに出力する。第２探索部２７３Ｂは、第２の種類のプロトコルに対応する探索処理を終了すると、終了信号を第２サブ終了通知部２７７Ｂに出力する。
【０１０４】
第２出力部２７５Ｂは、オペレーテンングシステムを介して、割り込みにより応答コマンドを第１実行部２５１に出力する。なお、第２出力部２７５Ｂは、表示部２０６を制御する表示制御スレッドをオペレーティングシステムに問い合わせることにより、第１実行部２５１を検出するようにしてもよい。この場合、第２出力部２７５Ｂは、オペレーティングシステムから取得するスレッド識別情報で特定される表示制御スレッドである第１実行部２５１に割り込みを発生させ、応答コマンドを出力する。
【０１０５】
第２サブ終了通知部２７７Ｂは、第２探索部２７３Ｂから終了信号が入力されることに応じて、第２実行部２５５の終了通知部２８５に第２の探索処理が終了したことを通知する。具体的には、第２サブ終了通知部２７７Ｂは、終了通知部２８５にサブ終了信号を出力する。
【０１０６】
終了通知部２８５は、スレッド起動部２８１からスレッド起動部２８１により起動された探索スレッドのスレッド識別情報が入力される。ここでは、終了通知部２８５は、スレッド起動部２８１から第１サブ実行部２５３Ａのスレッド識別情報と第２サブ実行部２５３Ｂのスレッド識別情報と、が入力される。
【０１０７】
終了通知部２８５は、スレッド起動部２８１により起動されたすべての探索スレッドが終了することに応じて、探索中通知部２６７に終了信号を出力する。具体的には、終了通知部２８５は、第１サブ終了通知部２７７Ａからサブ終了信号が入力され、かつ、第２サブ終了通知部２７７Ｂからサブ終了信号が入力されることに応じて、探索中通知部２６７に終了信号を出力する。
【０１０８】
また、終了通知部２８５は、第１サブ終了通知部２７７Ａからサブ終了信号が入力されることに応じて、第１サブ実行部２５３Ａのスレッド識別情報を含む第１終了信号をサブ中止指示部２８３に出力する。終了通知部２８５は、第２サブ終了通知部２７７Ｂからサブ終了信号が入力されることに応じて、第２サブ実行部２５３Ｂのスレッド識別情報を含む第２終了信号をサブ中止指示部２８３に出力する。
【０１０９】
中止指示部２６５が第２実行部２５５を終了させる場合、第２実行部２５５は、オペレーティングシステムによって終了される。サブ中止指示部２８３は、オペレーティングシステムにより終了される場合、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂを終了させる。具体的には、サブ中止指示部２８３は、スレッド起動部２８１から第１サブ実行部２５３Ａのスレッド識別情報が入力される場合、第１サブ実行部２５３Ａが起動したことを検出する。サブ中止指示部２８３は、スレッド起動部２８１から第２サブ実行部２５３Ｂのスレッド識別情報が入力される場合、第２サブ実行部２５３Ａが起動したことを検出する。また、サブ中止指示部２８３は、終了通知部２８５から第１終了信号が入力される場合、第１サブ実行部２５３Ａが探索処理を終了したことを検出し、終了通知部２８５から第２終了信号が入力される場合、第２サブ実行部２５３Ｂが探索処理を終了したことを検出する。サブ中止指示部２８３は、オペレーティングシステムにより終了される場合、第１サブ実行部２５３Ａが終了していない場合は第１サブ実行部２５３Ａを終了させ、第２サブ実行部２５３Ａが終了していない場合は第２サブ実行部２５３Ｂを終了させる。
【０１１０】
サブ中止指示部２８３は、第１サブ実行部２５３Ａを終了させる場合、第１サブ実行部２５３Ａを終了させるコマンドをオペレーティングシステムに出力し、第２サブ実行部２５３Ｂを終了させる場合、第２サブ実行部２５３Ｂを終了させるコマンドをオペレーティングシステムに出力する。なお、サブ中止指示部２８３は、第１サブ実行部２５３Ａを終了させる場合、第１サブ実行部２５３Ａに終了コマンドを出力するようにし、第２サブ実行部２５３Ｂを終了させる場合、第２サブ実行部２５３Ｂに終了コマンドを出力するようにしてもよい。この場合、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂそれぞれは、第２実行部２５５が有するサブ中止指示部２８３から終了コマンドが入力されることに応じて、第１の探索処理または第２の探索処理をそれぞれ終了する。
【０１１１】
装置情報取得部２６９Ａは、第１出力部２７５Ａおよび第２出力部２７５Ｂそれぞれから割り込みによる応答コマンドが入力される。装置情報取得部２６９は、割り込みを検出すると、第１出力部２７５Ａから出力される応答コマンドまたは第２出力部２７５Ｂから出力される応答コマンドを取得する。装置情報取得部２６９Ａは、応答コマンドを取得すると、応答コマンドを割込時表示部２７１に出力する。
【０１１２】
図９は、第２の実施の形態における表示制御処理の流れの一例を示すフローチャートである。第２の実施の形態における表示制御処理は、携帯情報装置２００が備えるＣＰＵ２０１が表示制御プログラムを実行することによりＣＰＵ２０１により実行される処理である。図９を参照して、ＣＰＵ２０１は、操作部２０７が起動指示を受け付けたか否かを判断する（ステップＳ０１）。起動指示を受け付けるまで待機状態となり（ステップＳ０１でＮＯ）、起動指示を受け付けたならば（ステップＳ０１でＹＥＳ）、処理をステップＳ０２Ａに進める。
【０１１３】
ステップＳ０２Ａにおいては、スレッド制御スレッドを起動する。具体的には、ＣＰＵ２０１にスレッド制御プログラムを実行させる。以下、ＣＰＵ２０１がスレッド制御プログラムを実行するスレッドをスレッド制御スレッドという。次のステップＳ０３Ａにおいては、スレッド制御スレッドから終了信号が入力されたか否かを判断する。スレッド制御スレッドから終了信号が入力されたならば処理を終了するが、そうでなければ処理をステップＳ０４に進める。
【０１１４】
ステップＳ０４においては、中止操作を受け付けたか否かを判断する。中止操作を受け付けたならば処理をステップＳ０５Ａに進めるが、そうでなければ処理をステップＳ０３Ａに戻す。ステップＳ０５Ａにおいては、ステップＳ０１において起動したスレッド制御スレッドを終了させ、処理を終了する。
【０１１５】
第２の実施の形態における携帯情報装置２００が備えるＣＰＵ２０１は、図９に示した第２の実施の形態における表示制御処理を実行している間、図６に示した割込処理と同様の処理を実行する。
【０１１６】
図１０は、第２の実施の形態におけるスレッド制御処理の流れの一例を示すフローチャートである。スレッド制御処理は、携帯情報装置２００が備えるＣＰＵ２０１が、スレッド制御プログラムを実行することによりＣＰＵ２０１が実行する処理である。携帯情報装置２００が備えるＣＰＵ２０１が、スレッド制御プログラムを実行するスレッドは、表示制御処理のステップＳ０１において起動されるスレッド制御スレッドである。図１０を参照して、ＣＰＵ２０１は、装置探索のためのプロトコルを選択する（ステップＳ３１）。装置探索のためのプロトコルとして予め定められたＳＳＤＰおよびＷＳＤのうちから１つを選択する。次のステップＳ３２においては、ステップＳ３１において選択されたプロトコルに対応する装置探索処理を実行するサブ探索スレッドを起動する。具体的には、ＣＰＵ２０１に、ステップＳ３１において選択されたプロトコルに対応する周辺装置探索プログラムを実行させる。以下、ＣＰＵ２０１が装置探索プロトコルに対応する周辺装置探索プログラムを実行するスレッドをサブ探索スレッドという。次のステップＳ３３においては、ステップＳ３２において起動したサブ探索スレッドのスレッド識別情報を取得する。次のステップＳ３４においては、装置探索のためのプロトコルとして予め定められたＳＳＤＰおよびＷＳＤのうち、ステップＳ３１において選択されていないプロトコルが存在するか否かを判断する。そのようなプロトコルが存在するならば処理をステップＳ３１に戻し、存在しなければ処理をステップＳ３５に進める。
【０１１７】
ステップＳ３５においては、ステップＳ３２において起動したサブ探索スレッドのすべてが終了したか否かを判断する。サブ探索スレッドのすべてが終了したならば処理を終了するが、そうでなければ処理をステップＳ３６に進める。
【０１１８】
ステップＳ３６においては、スレッド制御スレッドの終了を検出したか否かを判断する。オペレーティングシステムにより終了が指示されたならばスレッド制御スレッドの終了を検出する。スレッド制御スレッドの終了を検出したならば処理をステップＳ３７に進めるが、そうでなければ処理をステップＳ３５に戻す。
【０１１９】
ステップＳ３７においては、ステップＳ３２において起動したサブ探索スレッドのうち終了していないサブ探索スレッドのすべてを終了させ、処理を終了する。
【０１２０】
図１１は、第２の実施の形態における周辺装置探索処理の流れの一例を示すフローチャートである。第２の実施の形態における周辺装置探索処理は、携帯情報装置２００が備えるＣＰＵ２０１が、第２の実施の形態における周辺装置探索プログラムを実行することによりＣＰＵ２０１により実行される処理である。ＣＰＵ２０１が、第２の実施の形態における周辺装置探索プログラムを実行するスレッドは、スレッド制御処理のステップＳ３２において起動されるサブ探索スレッドである。図１１を参照して、図５に示した第１の実施の形態における周辺装置探索処理と異なる点は、ステップＳ２２およびステップＳ２８が削除された点、ステップＳ２３およびステップＳ２４がステップＳ２３ＡおよびステップＳ２４Ａに変更された点である。その他の処理は、図５に示した処理と同じなので、ここでは説明を繰り返さない。ステップＳ２３Ａにおいては、第２の実施の形態における装置探索プログラムに割り当てられたプロトコルに対応する探索コマンドを送信する。ステップＳ２４においては、第２の実施の形態における装置探索プログラムに割り当てられたプロトコルに対応する応答コマンドを受信したか否かを判断する。
【０１２１】
図１２は、第２の実施の形態におけるプリントシステムにおけるデータの流れを示す図である。図１２を参照して、縦方向上から下に向かって時間の流れを示し、表示制御スレッド、スレッド制御スレッド、ＳＳＤＰのプロトコルに対応する第１探索スレッド、ＷＳＤのプロトコルに対応する第２探索スレッド、ＭＦＰ１００，１００Ａ，１００Ｂそれぞれが送受信するデータを矢印で示している。
【０１２２】
まず、表示制御スレッドがスレッド制御スレッドを起動するとともに、探索処理を実行中であることを示す画像を表示する。スレッド制御スレッドは、表示制御スレッドにより起動されると、第１探索スレッドおよび第２探索スレッドを起動する。第１探索スレッドは、スレッド制御スレッドにより起動されるとＳＳＤＰのプロトコルに従った探索コマンドをブロードキャストで送信する。これにより、ＭＦＰ１００，１００Ａ，１００ＢそれぞれにおいてＳＳＤＰのプロトコルに従った探索コマンドが受信される。ＭＦＰ１００は、ＳＳＤＰのプロトコルに対応しているので、ＭＦＰ１００が探索コマンドに応答して、応答コマンドを第１探索スレッドに返信する。一方、ＭＦＰ１００Ａ，１００Ｂは、ＳＳＤＰのプロトコルに対応していないので、探索コマンドを無視する。第１探索スレッドは、ＭＦＰ１００から受信される応答コマンドを、割り込みにより表示制御スレッドに出力する。第１探索スレッドは、ＳＳＤＰのプロトコルに従った探索処理が終了すると、サブ終了信号をスレッド制御スレッドに出力し、処理を終了する。表示制御スレッドにおいては、応答コマンドを受信することに応じて、応答コマンドに含まれる装置情報を表示する。
【０１２３】
一方、第２探索スレッドは、スレッド制御スレッドにより起動されるとＷＳＤのプロトコルに従った探索コマンドをブロードキャストで送信する。これにより、ＭＦＰ１００，１００Ａ，１００ＢそれぞれにおいてＷＳＤのプロトコルに従った探索コマンドが受信される。ＭＦＰ１００は、ＷＳＤのプロトコルに対応していないので、探索コマンドを無視する。ＭＦＰ１００Ａ，１００Ｂは、ＷＳＤのプロトコルに対応しているので、ＭＦＰ１００Ａ，１００Ｂそれぞれが探索コマンドに応答して、応答コマンドを第２探索スレッドに返信する。第２探索スレッドは、ＭＦＰ１００Ａから受信される応答コマンドを、割り込みにより表示制御スレッドに出力し、ＭＦＰ１００Ｂから受信される応答コマンドを、割り込みにより表示制御スレッドに出力する。第２探索スレッドは、ＷＳＤのプロトコルに従った探索処理が終了すると、サブ終了信号をスレッド制御スレッドに出力し、処理を終了する。表示制御スレッドにおいては、応答コマンドを受信することに応じて、応答コマンドに含まれる装置情報を表示する。
【０１２４】
スレッド制御スレッドは、第１探索スレッドからサブ終了信号が入力され、かつ、第２探索スレッドからサブ終了信号が入力されると、表示制御スレッドに終了信号を出力する。終了信号が入力される表示制御スレッドは、探索処理を実行中であることを示す画像の表示を中止する。
【０１２５】
第２の実施の形態における携帯情報装置２００において、探索処理は、ＳＳＤＰのプロトコルに対応する探索処理と、ＳＳＤＰとは探索条件の異なるＷＳＤのプロトコルに対応する探索処理を含み、第２実行部２５３は、第１実行部２５１により起動されることに応じて、ＳＳＤＰのプロトコルに対応する探索処理を実行する第１サブ実行部２５３Ａと、ＳＳＤＰとは探索条件の異なるＷＳＤのプロトコルに対応する探索処理複数の分割処理を実行する第２サブ実行部２５３Ｂを起動し、第１サブ実行部２５３ＡがＳＳＤＰのプロトコルに対応する探索処理を終了し、かつ第２サブ実行部２５３ＢがＷＳＤのプロトコルに対応する探索処理を終了することを条件に、第１実行部２５１に探索処理の終了を通知する。第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂそれぞれは、通信可能な装置を検出するごとに、第１実行部２５１に対して割り込みを発生するとともに、第１実行部２５１に検出された装置の装置識別情報を出力する。このため、探索処理を、複数の分割処理に分割して並列で実行するので、第１の実施の形態における携帯情報装置２００よりもレスポンスタイムをさらに短くすることができる。
【０１２６】
また、第１実行部２５１は、第２実行部２５３が起動されてから第２実行部２５３が探索処理を終了するまでの間に、操作部２０７により探索処理の実行の中止を指示する操作が受け付けられることに応じて、第２実行部２５３に中止指示を出力し、第２実行部２５３は、中止指示が入力されることに応じて、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂにサブ中止指示を出力し、第１サブ実行部２５３Ａおよび第２サブ実行部２５３Ｂそれぞれは、さらに、第２実行部２５３からサブ中止指示が入力されることに応じて、探索処理の実行を中止する。このため、ユーザーは、探索処理を途中で中止させることができる。
【０１２７】
なお、第２の実施の形態において、第２実行部２５５が起動する複数のサブ探索スレッドは、装置探索のための複数のプロトコルそれぞれに対応するようにした。これとは別に、第２実行部２５５が起動する複数のサブ探索スレッドを、ネットワークアドレスをサブネットマスクで複数に細分化し、細分化された複数のサブネットマスクそれぞれに対応させるようにしてもよい。この場合、第２実行部２５５は、複数のサブネットマスクの数と同じ数のサブ探索スレッドを起動する。また、探索の対象となる複数の装置が予め定められている場合には、第２実行部２５５が起動する複数のサブ探索スレッドを複数の装置それぞれに対応させるようにしてもよい。この場合には、第２実行部２５５は、複数の装置の数と同じ数のサブ探索スレッドを起動する。さらに、複数の装置をグループ化し、第２実行部２５５が起動する複数のサブ探索スレッドを複数のグループそれぞれに対応させるようにしてもよい。この場合には、第２実行部２５５は、複数のグループの数と同じ数のサブ探索スレッドを起動する。
【０１２８】
なお、上述した実施の形態においては、情報処理装置の一例として、携帯情報装置２００を例に説明したが、図４〜図６、または、図９〜図１１に示した装置探索処理を、携帯情報装置２００に実行させる装置探索方法、およびその装置探索方法を携帯情報装置２００を制御するＣＰＵ２０１に実行させる装置探索プログラムとして発明を捉えることができるのは言うまでもない。
【０１２９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１３０】
＜付記＞
（１）  前記第２実行ステップは、通信可能な装置を検出するごとに、前記コンピューターが前記第１のプログラムを実行する第１実行スレッドに対して割り込みを発生するとともに、前記第１実行スレッドに前記検出された装置の装置識別情報を出力する出力ステップを含む、請求項１３に記載の探索方法。
（２）  前記第１実行ステップは、前記コンピューターが前記第２のプログラムを実行してから前記コンピューターが前記第２のプログラムを実行する第２実行スレッドが前記探索処理を終了するまでの間に、前記操作手段により前記探索処理の実行の中止を指示する操作が受け付けられることに応じて、前記第２実行スレッドに中止指示を出力する中止指示ステップを、含み、
前記第２実行ステップは、前記第１実行スレッドから中止指示が入力されることに応じて、前記探索処理の実行を中止するステップを含む、（１）に記載の探索方法。
（３）  前記探索処理は、探索条件の異なる複数の分割処理を含み、
前記第２のプログラムは、前記複数の分割処理をそれぞれ定めた複数のサブプログラムと、前記コンピューターが前記複数のサブプログラムをそれぞれ実行する複数のサブスレッドを制御するスレッド制御プログラムと、を含み、
前記起動ステップは、前記操作手段により前記起動操作が受け付けられることに応じて、前記スレッド制御プログラムを前記コンピューターに実行させ、
前記第２実行ステップは、前記複数のサブプログラムを前記コンピューターに実行させるスレッド起動ステップと、
前記コンピューターが前記複数のサブプログラムをそれぞれ実行する複数のサブスレッドのすべてが前記複数の分割処理のうち対応する担当分割処理を終了することを条件に、前記コンピューターが前記第１のプログラムを実行する第１実行スレッドに前記探索処理の終了を通知する終了通知ステップと、を含み、
前記コンピューターが前記複数のサブプログラムをそれぞれ実行する複数のサブスレッドそれぞれに、前記複数の分割処理のうち対応する担当分割処理を実行し、通信可能な装置を検出するごとに、前記第１実行スレッドに対して割り込みを発生するとともに、前記第１実行スレッドに前記検出された装置の装置識別情報を出力する出力ステップを、実行させる、請求項１３に記載の探索方法。
（４）  前記第１実行ステップは、前記コンピューターが前記第２のプログラムを実行してから前記コンピューターが前記第２のプログラムを実行する第２実行スレッドが前記探索処理を終了するまでの間に、前記操作手段により前記探索処理の実行の中止を指示する操作が受け付けられることに応じて、前記コンピューターが前記第２のプログラムを実行する第２実行スレッドに中止指示を出力する中止指示ステップを、含み、
前記第２実行ステップは、前記コンピューターが前記第１のプログラムを実行する前記第１実行スレッドから中止指示が入力されることに応じて、前記コンピューターが前記複数のサブプログラムをそれぞれ実行する複数のサブスレッドのうち前記担当分割処理を終了していないサブスレッドにサブ中止指示を出力するサブ中止指示ステップを含み、
前記複数のサブスレッドそれぞれは、さらに、前記第２実行スレッドからサブ中止指示が入力されることに応じて、前記担当分割処理の実行を中止するステップを実行させる、（３）に記載の探索方法。
（５）  前記第１実行ステップは、前記コンピューターが前記第２のプログラムを実行してから前記コンピューターが前記第２のプログラムを実行する第２実行スレッドが前記探索処理を終了するまでの間、前記探索処理を実行中であることを示す画像を表示する探索中通知ステップを、さらに含む、請求項１３、（１）〜（４）のいずれかに記載の探索方法。
【符号の説明】
【０１３１】
１  プリントシステム、３  ＬＡＮ、５  無線局、１００，１００Ａ，１００Ｂ  ＭＦＰ、２００，２００Ａ，２００Ｂ  携帯情報装置、２０１  ＣＰＵ、２０２  カメラ、２０３  フラッシュメモリ、２０４  無線通信部、２０５  通話部、２０６  表示部、２０７  操作部、２０７Ａ  メインキー、２０７Ｂ  タッチパネル、２１０  加速度センサー、２１１  外部記憶装置、２５１  第１実行部、２５３，２５５  第２実行部、２５３Ａ  第１サブ実行部、２５３Ｂ  第２サブ実行部、２６１  操作受付部、２６３  起動部、２６３Ａ  起動部、２６５  中止指示部、２６７  探索中通知部、２６９，２６９Ａ  装置情報取得部、２７１  割込時表示部、２７３  探索部、２７３Ａ  第１探索部、２７３Ｂ  第２探索部、２７５  出力部、２７５Ａ  第１出力部、２７５Ｂ  第２出力部、２７７  終了通知部、２７７Ａ  第１サブ終了通知部、２７７Ｂ  第２サブ終了通知部、２８１  スレッド起動部、２８３  サブ中止指示部、２８５  終了通知部。
【図１】
0006642039.tif 000002
【図２】
0006642039.tif 000003
【図３】
0006642039.tif 000004
【図４】
0006642039.tif 000005
【図５】
0006642039.tif 000006
【図６】
0006642039.tif 000007
【図７】
0006642039.tif 000008
【図８】
0006642039.tif 000009
【図９】
0006642039.tif 000010
【図１０】
0006642039.tif 000011
【図１１】
0006642039.tif 000012
【図１２】
0006642039.tif 000013