(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024180783
(43)【公開日】2024-12-27
(54)【発明の名称】情報処理装置、制御方法、及びプログラム
(51)【国際特許分類】
G06F 9/44 20180101AFI20241220BHJP
H04N 1/00 20060101ALI20241220BHJP
H04L 67/025 20220101ALI20241220BHJP
【FI】
G06F9/44
H04N1/00 127
H04L67/025
【審査請求】未請求
【請求項の数】26
【出願形態】OL
(21)【出願番号】P 2024172554
(22)【出願日】2024-10-01
(62)【分割の表示】P 2022189866の分割
【原出願日】2022-11-29
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【弁理士】
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【弁理士】
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【弁理士】
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【弁理士】
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【弁理士】
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】井浦 雅貴
(57)【要約】
【課題】 通信装置を検索するための処理をより適切に実行することを目的とする。
【解決手段】 情報処理装置のホストOS上で所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行ステップを実行させるプログラムを提供することによって課題を解決する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
所定のプログラムであって、
情報処理装置のコンピュータに、
前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行ステップと、
前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行ステップと、
を実行させることを特徴とするプログラム。
【請求項2】
前記所定の処理は、前記Wi-Fi Directによる検索の実行を前記ホストOSに指示する処理を含むことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記情報処理装置が属しているネットワーク上の装置を、前記Wi-Fi Directよる検索の方法と異なる第1の方法で検索するための第1の処理を前記所定のプログラムによって実行する第3実行ステップと、
前記第1の処理が実行された場合、前記第1の方法による検索の結果に基づく処理を実行する第4実行ステップと、
をさらに実行させることを特徴とする請求項1に記載のプログラム。
【請求項4】
前記第1の処理は、ソケットAPI(Application Programming Interface)により前記ホストOSに前記第1の方法による検索の実行を指示する処理であることを特徴とする請求項3に記載のプログラム。
【請求項5】
前記第1の方法による検索は、ブロードキャスト検索又はマルチキャスト検索であることを特徴とする請求項3に記載のプログラム。
【請求項6】
前記第1の方法による検索の結果に基づく処理は、前記第1の方法による検索により発見された装置を表示する処理及び、前記第1の方法による検索により発見された装置と通信する処理のうち少なくとも一方を含むことを特徴とする請求項3に記載のプログラム。
【請求項7】
前記Wi-Fi Directによる検索の結果に基づく処理は、前記Wi-Fi Directによる検索により発見された装置を表示する処理を含み、
前記第1の方法による検索の結果に基づく処理は、前記第1の方法による検索により発見された装置を表示する処理を含み、
前記Wi-Fi Directによる検索により発見された装置と前記第1の方法による検索により発見された装置とが区別可能なように、前記Wi-Fi Directによる検索により発見された装置と前記第1の方法による検索により発見された装置とが表示されるように制御されることを特徴とする請求項6に記載のプログラム。
【請求項8】
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記情報処理装置が属しているネットワーク上の装置を、前記Wi-Fi Directよる検索の方法と異なる第2の方法で検索するための第2の処理を前記所定のプログラムによって実行する第5実行ステップと、
前記第2の処理が実行された場合、前記第2の方法による検索の結果に基づく処理を実行する第6実行ステップと、
をさらに実行させることを請求項1に記載のプログラム。
【請求項9】
前記第2の処理は、ソケットAPI(Application Programming Interface)と異なるAPIにより前記ゲストOSに前記第2の方法による検索の実行を指示する処理であることを特徴とする請求項8に記載のプログラム。
【請求項10】
前記第2の処理は、ネットワークサービスディスカバリAPI(Application Programming Interface)により前記ゲストOSに前記第2の方法による検索の実行を指示する処理であることを特徴とする請求項8に記載のプログラム。
【請求項11】
前記第2の方法による検索は、DNS based service discovery protocolが利用された検索であることを特徴とする請求項8に記載のプログラム。
【請求項12】
前記第2の方法による検索は、ユニキャスト検索であることを特徴とする請求項8に記載のプログラム。
【請求項13】
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作している場合、前記第2の処理が実行された後に、前記第2の方法による検索で発見された少なくとも1つの装置を、Wi-Fi Directよる検索の方法と異なり且つ前記第2の方法と異なる第3の方法で検索するための第3の処理を前記所定のプログラムによって実行する第7実行ステップと、
前記第3の処理が実行された場合、前記第3の方法による検索の結果に基づく処理を実行する第8実行ステップと、
をさらに実行させることを特徴とする請求項8に記載のプログラム。
【請求項14】
前記第3の処理は、前記第2の方法による検索で発見された装置全てに対して、前記第3の方法による検索のためのパケットを送信するための処理であることを特徴とする請求項13に記載のプログラム。
【請求項15】
前記第3の処理は、前記第2の方法による検索で発見された装置のうちユーザから選択された装置に対して、前記第3の方法による検索のためのパケットを送信するための処理であることを特徴とする請求項13に記載のプログラム。
【請求項16】
前記第3の処理は、ソケットAPI(Application Programming Interface)により前記ゲストOSに前記第3の方法による検索の実行を指示する処理であることを特徴とする請求項13に記載のプログラム。
【請求項17】
前記第3の方法による検索の結果に基づく処理は、前記第3の方法による検索により発見された装置を表示する処理及び、前記第3の方法による検索により発見された装置と通信する処理のうち少なくとも一方を含むことを特徴とする請求項13に記載のプログラム。
【請求項18】
前記第3の方法による検索は、ユニキャスト検索であることを特徴とする請求項13に記載のプログラム。
【請求項19】
前記情報処理装置により実行された検索により発見された装置に対して、印刷を実行させるための印刷ジョブを送信するための処理を実行する送信ステップをさらに実行させることを特徴とする請求項1に記載のプログラム。
【請求項20】
前記情報処理装置により実行された検索により発見された装置に対して、スキャンを実行させるためのジョブであり、前記所定のプログラムによって作成されたスキャンジョブを送信するための処理を前記所定のプログラムにより実行する送信ステップをさらに実行させることを特徴とする請求項1に記載のプログラム。
【請求項21】
前記スキャンジョブを送信するための処理は、前記所定のプログラムが、前記ホストOSに前記スキャンジョブの送信を指示する処理であり、
前記ホストOS上で前記所定のプログラムが動作しており、前記ゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、前記スキャンジョブを送信するための処理が前記所定のプログラムにより実行され、
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記スキャンジョブを送信するための処理が実行されないよう前記所定のプログラムにより制御されることを特徴とする請求項20に記載のプログラム。
【請求項22】
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定のプログラムとは異なるプログラムであり、前記ホストOSに標準搭載されたスキャン機能を司る他のプログラムに関する処理を前記所定のプログラムにより実行する第7実行ステップと、
をさらに実行させることを特徴とする請求項21に記載のプログラム。
【請求項23】
前記他のプログラムに関する処理は、前記他のプログラムを使用するようユーザを促す処理、前記他のプログラムを起動するための操作を提示する処理、前記他のプログラムを起動するか否かをユーザに確認する処理、及び前記他のプログラムを起動する処理のうち少なくとも1つであることを特徴とする請求項22に記載のプログラム。
【請求項24】
前記Wi-Fi Directによる検索の結果に基づく処理は、前記Wi-Fi Directによる検索により発見された装置を表示する処理、前記Wi-Fi Directによる検索により発見された装置と接続する処理及び、前記Wi-Fi Directによる検索により発見された装置と通信する処理のうち少なくとも一方を含むことを特徴とする請求項1に記載のプログラム。
【請求項25】
所定のプログラムを有する情報処理装置の制御方法であって、
前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行ステップと、
前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行ステップと、
を有することを特徴とする制御方法。
【請求項26】
所定のプログラムを有する情報処理装置であって、
前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行手段と、
前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行手段と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、情報処理装置が通信装置を、ブロードキャストやWi-Fi Direct(登録商標)によって検索する技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、情報処理装置が通信装置を検索する形態が普及するにつれ、通信装置を検索する処理をより適切に実行することが要望されている。
【0005】
そこで本発明は、通信装置を検索するための処理をより適切に実行することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために為されたものであり、所定のプログラムであって、情報処理装置のコンピュータに、前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行ステップと、前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行ステップと、を実行させることを特徴とする。
【発明の効果】
【0007】
本発明によれば、通信装置を検索するための処理をより適切に実行することが可能となる。
【図面の簡単な説明】
【0008】
【
図2】WFDモードにおける無線接続シーケンスを示す図
【
図4】通信アプリによる装置の検索のフローチャートを示す図
【
図5】通信装置が応答結果として返すXMLデータの例を示す図
【
図6】通信アプリによるスキャン機能のフローチャートを示す図
【
図8】通信アプリによるスキャン機能のフローチャートを示す図
【発明を実施するための形態】
【0009】
以下に図面を参照して、本発明の好適な実施形態を例示的に説明する。ただし、本発明については、その趣旨を逸脱しない範囲で、当業者の通常の知識に基づいて、以下に記載する実施形態に対して適宜変更、改良が加えられたものについても本発明の範囲に入ることが理解されるべきである。
【0010】
(第1実施形態)
本実施形態の通信システムに含まれる情報処理装置及び通信装置について説明する。情報処理装置として、本実施形態ではスマートフォンを例示しているが、これに限定されず、携帯端末、ノートPC、タブレット端末、PDA(Personal Digital Assistant)、デジタルカメラ等、種々のものを適用可能である。また、通信装置として、情報処理装置と無線通信を行うことが可能な装置であれば、種々のものを適用可能である。例えば、プリンタであれば、インクジェットプリンタ、フルカラーレーザービームプリンタ、モノクロプリンタ等に適用することができる。また、プリンタのみならずスキャナ、複写機、ファクシミリ装置、携帯端末、スマートフォン、ノートPC、タブレット端末、PDA、デジタルカメラ、音楽再生デバイス、テレビ、スマートスピーカ等にも適用可能である。その他、複写機能、FAX機能、印刷機能、スキャナ機能等の複数の機能を備える複合機にも適用可能である。本実施形態では通信装置は、印刷機能、スキャナ機能等を有するマルチファンクションプリンタであるものとする。
【0011】
<各装置のハードウェア構成について>
まず、本実施形態の通信システムに含まれる情報処理装置と、当該情報処理装置と通信可能な通信装置の構成について
図1のブロック図を参照して説明する。また、本実施形態では以下の構成を例に記載するが、特にこの図のとおりに機能を限定するものではない。
【0012】
情報処理装置101は、入力インタフェース102、CPU103、ROM104、RAM105、外部記憶装置106、出力インタフェース107、操作表示部108、通信部109、近距離無線通信部110、撮影装置111等を有する。
【0013】
入力インタフェース102は、ユーザからのデータ入力や動作指示を受け付けるためのインタフェースであり、物理キーボードやボタン、タッチパネル等で構成される。なお、後述の出力インタフェース107と入力インタフェース102とを同一の構成とし、画面の出力とユーザからの操作の受け付けを同一の構成で行うような形態としても良い。
【0014】
CPU103は、システム制御部であり、情報処理装置101の全体を制御する。
【0015】
ROM104は、CPU103が実行する制御プログラムやデータテーブル、組み込みオペレーティングシステム(以下、OSという。)プログラム等の固定データを格納する。本実施形態では、ROM104に格納されている各制御プログラムは、ROM104に格納されている組み込みOSの管理下で、スケジューリングやタスクスイッチ、割り込み処理等のソフトウェア実行制御を行う。なお本実施形態において、ROM104が保持し、情報処理装置101上で動作するOSは、Google社によって提供されるAndroid(登録商標) OS又はGoogle社によって提供されるChrome(登録商標) OSであるものとする。情報処理装置101上で動作するOSがChrome OSである場合、ROM104は、後述するAndroid OS用のアプリを情報処理装置101上で動作させるための仮想Android OSも保持するものとする。
【0016】
RAM105は、バックアップ電源を必要とするSRAM(Static Random Access Memory)等で構成される。なお、RAM105は、図示しないデータバックアップ用の1次電池によってデータが保持されているため、プログラム制御変数等の重要なデータを揮発させずに格納することができる。また、情報処理装置101の設定情報や情報処理装置101の管理データ等を格納するメモリエリアもRAM105に設けられている。また、RAM105は、CPU103の主メモリとワークメモリとしても用いられる。
【0017】
外部記憶装置106は、通信装置151と通信する機能を有するアプリケーションプログラム(以降、通信アプリと記載する)を備えている。なお通信アプリは具体的には例えば、通信装置151に印刷を実行させるための印刷機能や、通信装置151にスキャンを実行させるためのスキャン機能を有するアプリである。ただしこの形態に限定されず、印刷機能とスキャン機能いずれかの機能を有するアプリであっても良いし、他の機能を有するアプリであっても良い。また、外部記憶装置106は、通信装置151が解釈可能な印刷情報を生成する印刷情報生成プログラム、通信部109を介して接続している通信装置151との間で送受信する情報送受信制御プログラム等の各種プログラムを備えている。これらのプログラムが使用する各種情報を保存している。また、通信部を介して他の情報処理装置やインターネットから得た画像データも保存している。なお本実施形態において通信アプリは、Android OS用のアプリであるものとする。
【0018】
出力インタフェース107は、操作表示部108がデータの表示や情報処理装置101の状態の通知を行うための制御を行うインタフェースである。
【0019】
操作表示部108は、LED(発光ダイオード)やLCD(液晶ディスプレイ)などから構成され、データの表示や情報処理装置101の状態の通知を行う。なお、操作表示部108上に、数値入力キー、モード設定キー、決定キー、取り消しキー、電源キー等のキーを備えるソフトキーボードを設置することで、操作表示部108を介してユーザからの入力を受け付けても良い。
【0020】
通信部109は、通信装置151等の装置と接続して、データ通信を実行するための構成である。例えば、通信部109は、通信装置151内のアクセスポイント(不図示)に接続可能である。通信部109と通信装置151内のアクセスポイントが接続することで、情報処理装置101と通信装置151は相互に通信可能となる。以下において、アクセスポイントをAPと表現することもある。なお、通信部109は無線通信で通信装置151とダイレクトに通信しても良いし、情報処理装置101の外部且つ通信装置151の外部に存在するアクセスポイント131を介して通信しても良い。無線通信方式としては、本実施形態では、IEEE802.11シリーズの通信規格が用いられるものとする。なおIEEE802.11シリーズの通信規格とはすなわち、Wi-Fi(登録商標)である。また、アクセスポイント131としては、例えば、無線LANルーター等の機器などが挙げられる。なお、本実施形態において、情報処理装置101と通信装置151とが外部アクセスポイントを介さずにダイレクトに接続する方式をダイレクト接続方式という。また、情報処理装置101と通信装置151とが外部のアクセスポイント131を介して接続する方式をインフラストラクチャ(以下、インフラ)接続方式という。
【0021】
近距離無線通信部110は、通信装置151等の装置と近距離で無線接続して、データ通信を実行するための構成であり、通信部109とは異なる通信方式によって通信を行う。近距離無線通信部110により使用される近距離無線通信方式は例えば、Bluetooth(登録商標)やNFC(Near Field Communication)である。Bluetoothは、Bluetooth Classicであっても良いし、Bluetooth Low Energyであっても良い。近距離無線通信部110は、通信装置151内の近距離無線通信部157と接続可能である。
【0022】
撮影装置111は撮影素子で撮影した画像をデジタルデータに変換する装置である。デジタルデータは一度RAM105に格納する。その後、CPU154が実行するプログラムで所定の画像フォーマットに変換し、画像データとして外部記憶装置106に保存する。
【0023】
ROM152は、CPU154が実行する制御プログラムやデータテーブル、OSプログラム等の固定データを格納する。
【0024】
通信装置151は、ROM152、RAM153、CPU154、プリントエンジン155、通信部156、近距離無線通信部157、入力インタフェース158、出力インタフェース159、操作表示部160、スキャン制御部161等を有する。通信装置151は、接続モード(通信モード)が設定されることにより、設定された接続モードで動作することが可能である。
【0025】
通信部156は、通信装置151が他の装置と通信するための構成であり、本実施形態では、通信部156はIEEE802.11シリーズの通信規格によって通信するものとする。通信部156は、通信装置151内部のアクセスポイントとして、情報処理装置101等の装置と接続するためのアクセスポイントを有している。なお、該アクセスポイントは、情報処理装置101の通信部109に接続可能である。なお、通信部156は無線通信で情報処理装置101とダイレクトに通信しても良いし、アクセスポイント131を介して通信しても良い。また、通信部156は、アクセスポイントとして機能するハードウェアを備えていてもよいし、アクセスポイントとして機能させるためのソフトウェアにより、アクセスポイントとして動作してもよい。なお本実施形態では、通信部156及び近距離無線通信部157は、1つの無線チップで実現されるものとする。すなわち本実施形態では、IEEE802.11シリーズの通信規格の通信機能と近距離無線通信方式による通信機能の両方に対応したコンボチップが用いられるものとする。しかしこの形態に限定されず、通信部156及び近距離無線通信部157がそれぞれ別の無線チップによって実現されても良い。
【0026】
RAM153は、バックアップ電源を必要とするDRAM等で構成される。なお、RAM153は、図示しないデータバックアップ用の電源が供給されることによってデータが保持されているため、プログラム制御変数等の重要なデータを揮発させずに格納することができる。また、RAM153は、CPU154の主メモリとワークメモリとしても用いられ、情報処理装置101等から受信した印刷情報を一旦保存するための受信バッファや各種の情報を保存する。
【0027】
ROM152は、CPU154が実行する制御プログラムやデータテーブル、OSプログラム等の固定データを格納する。本実施形態では、ROM152に格納されている各制御プログラムは、ROM152に格納されている組み込みOSの管理下で、スケジューリングやタスクスイッチ、割り込み処理等のソフトウェア実行制御を行う。また、通信装置151の設定情報や通信装置151の管理データ等の電源供給がされていない場合も保持する必要があるデータを格納するメモリエリアもROM152に設けられている。
【0028】
CPU154は、システム制御部であり、通信装置151の全体を制御する。
【0029】
プリントエンジン155、RAM153に保存された情報や情報処理装置101等から受信した印刷ジョブに基づき、インク等の記録剤を用いて紙等の記録媒体上に画像形成し、印刷結果を出力する。この時、情報処理装置101等から送信される印刷ジョブは、送信データ量が大きく、高速な通信が求められるため、近距離無線通信部157よりも高速に通信可能な通信部156を介して受信する。
【0030】
近距離無線通信部157は、情報処理装置101等の装置と近距離で無線接続して、データ通信を実行するための構成であり、通信部156とは異なる通信方式によって通信を行う。近距離無線通信部110により使用される近距離無線通信方式は例えば、Bluetooth(登録商標)やNFCである。Bluetoothは、Bluetooth Classicであっても良いし、Bluetooth Low Energyであっても良い。近距離無線通信部157は、近距離無線通信部110と接続可能である。
【0031】
入力インタフェース158は、ユーザからのデータ入力や動作指示を受け付けるためのインタフェースであり、物理キーボードやボタン、タッチパネル等で構成される。なお、後述の出力インタフェース159と入力インタフェース158とを同一の構成とし、画面の出力とユーザからの操作の受け付けを同一の構成で行うような形態としても良い。出力インタフェース159は、操作表示部160がデータの表示や通信装置151の状態の通知を行うための制御を行うインタフェースである。
【0032】
操作表示部160は、LED(発光ダイオード)やLCD(液晶ディスプレイ)などの表示部から構成され、データの表示や通信装置151の状態の通知を行う。なお、操作表示部160上に、数値入力キー、モード設定キー、決定キー、取り消しキー、電源キー等のキーを備えるソフトキーボードを設置することで、操作表示部160を介してユーザからの入力を受け付けても良い。
【0033】
スキャン制御部161は、付図示の原稿台やADFに積載された原稿のスキャンを実行するイメージセンサユニット(読み取り部)を含む。なおイメージセンサユニットは、原稿に光を照射する光源やその反射光を読み取り、光電変換する素子を配列したイメージセンサを含む。スキャン制御部161は、イメージセンサユニットによって原稿を読み取ることで得られたアナログ電気信号をA/D(アナログ/デジタル)変換することで画像データを取得する。スキャン制御部161は、取得された画像データをRAM153へ記憶するために、DMA(ダイレクトメモリアクセス)転送を行う回路も備える。
【0034】
<ダイレクト接続方式について>
ダイレクト接続とは、アクセスポイント131等の外部装置を介さずに装置同士が直接(すなわちPeer to Peerで)無線接続する形態を指す。通信装置151は、接続モードの1つとして、ダイレクト接続により通信するためのモード(ダイレクト接続モード)で動作可能である。Wi-Fi通信において、ダイレクト接続により通信するためのモードにはソフトウェアAPモードやWi-Fi Direct(登録商標)モード等の様に複数のモードが存在する。Wi-Fi Directを以下において、WFDと表記する。
【0035】
WFDによって、ダイレクト接続を実行するモードをWFDモードという。WFDはWi-Fi Allianceによって策定された規格であり、IEEE802.11シリーズの通信規格に含まれる規格である。WFDモードでは機器探索情報により通信相手となる機器が探索された後に、P2Pのグループオーナ(GO)と、P2Pのクライアントの役割を決定した上で、残りの無線接続の処理を行うことになる。グループオーナはWi-Fiの親局(親機)に相当し、クライアントはWi-Fiの子局(子機)に相当する。この役割決定は、例えばP2PではGO Negotiationに対応する。なお役割決定が行われる前の状態のWFDモードでは、通信装置151は、親局でも子局でもない状態である。具体的には、まず通信を行う機器との間で、一方の機器が、機器探索情報を発行し、WFDモードで接続する機器を探索する。通信相手となる他方の機器が探索されると、両者の間で、互いの機器で供給可能なサービスや機能に関する情報を確認する。なお、この機器供給情報確認はオプションであり、必須ではない。この機器供給情報確認フェーズは、例えばP2PのProvision Discoveryに対応する。次に、この機器供給情報を互いに確認することで、その役割として、どちらがP2Pのクライアントとなり、どちらがP2Pのグループオーナとなるかを決定する。次に、クライアントとグループオーナが決定したら、両者の間で、WFDによる通信を行うためのパラメータを交換する。交換したパラメータに基づいて、P2Pのクライアントとグループオーナとの間で残りの無線接続の処理、IP接続の処理を行う。なおWFDモードでは、通信装置151は、上述したGO Negotiationを実行せずに、通信装置151が必ずGOとして動作していても良い。すなわち通信装置151は、Autonomous GOモードであるWFDモードとして動作しても良い。また通信装置151がWFDモードで動作している状態とはすなわち例えば、WFDによる接続が確立されていないが通信装置151がGOとして動作している状態や、WFDによる接続が確立されており、且つ通信装置151がGOとして動作している状態である。
【0036】
ソフトウェアAPモードでは、通信を行う機器(例えば、情報処理装置101と通信装置151)との間で、一方の機器(例えば、情報処理装置101)が、各種サービスを依頼する役割を果たすクライアントとなる。そして、もう一方の機器が、Wi-Fiにおけるアクセスポイントの機能をソフトウェアの設定により実現する。ソフトウェアAPはWi-Fiの親局に相当し、クライアントはWi-Fiの子局に相当する。ソフトウェアAPモードでは、クライアントは、機器探索情報によりソフトウェアAPとなる機器を探索する。ソフトウェアAPが探索されると、クライアントとソフトウェアAPとの間で残りの無線接続の処理(無線接続の確立等)を経て、その後、IP接続の処理(IPアドレスの割当等)を行うことになる。なお、クライアントとソフトウェアAPとの間で無線接続を実現する場合に送受信されるコマンドやパラメータについては、Wi-Fi規格で規定されているものを用いればよく、ここでの説明は省略する。
【0037】
本実施形態において、通信装置151がダイレクト接続を確立・維持している場合、通信装置151が属するネットワーク内で、親局として動作する。なお、親局とは無線ネットワークを構築する装置であり、無線ネットワークへの接続に用いられるパラメータを子局に対して提供する装置である。無線ネットワークへの接続に用いられるパラメータとは、例えば、親局が利用するチャネルに関するパラメータである。子局は、当該パラメータを受信することで、親局が利用しているチャネルを用いて、親局が構築している無線ネットワークに接続する。ダイレクト接続モードにおいては、通信装置151が親局として動作するため、ダイレクト接続モードにおける通信にいずれの周波数帯を用いるのか、及びいずれのチャネルを用いるのかを、通信装置151が決定することが可能である。本実施形態では、通信装置151は、ダイレクト接続モードにおける通信に、2.4GHzの周波数帯に対応するチャネルと、5GHzの周波数帯に対応チャネルとを使用可能であるものとする。そして、いずれの周波数帯を使用するか(すなわち、いずれの周波数帯のチャネルを使用するか)は、通信装置151が表示する画面による設定により、ユーザが任意に設定可能であるものとする。ただし本実施形態では、通信装置151は、通信装置151が表示する画面において5GHzが選択されたとしても、ダイレクト接続モードにおける通信に、5GHzの周波数帯のうちDFS(Dynamic Frequency Selection)帯に対応するチャネルは使用しないものとする。言い換えれば通信装置151は、ダイレクト接続モードにおける通信に、5GHzの周波数帯のうちDFS帯以外の周波数帯に対応するチャネルのみ使用するものとする。なおDFS帯に対応するチャネルを使用している状態で、当該チャネルに対応する周波数帯のレーダー波が検知された場合に、現在使用しているチャネルを変更しなければならない。そのような、レーダー波の検知によりチャネル変更が生じうる周波数帯をDFS帯という。なお例えばDFS機能に対応した無線チップを使用している場合等は、ダイレクト接続モードにおける通信に、5GHzの周波数帯のうちDFS(Dynamic Frequency Selection)帯に対応するチャネルが使用可能であっても良い。
【0038】
図2はWFDモードにおける無線接続シーケンスを示す図である。なお、本シーケンスにおいて各装置が実行する処理は、各装置が備えるROM等のメモリに格納された各種プログラムを、各装置が備えるCPUがRAMに読み出して実行することにより実現される。また、本処理は、各装置がWFD機能を実行するための所定のアプリケーションを起動している状態で、WFDによる接続を確立するための所定の操作をユーザから受け付けた場合に開始されるものとする。なお、WFDによる接続を確立するための所定の操作とは例えば、「ダイレクト接続モードの有効/無効」ボタンを選択する操作である。なお当該操作は、ダイレクト接続モードを起動するための操作に相当する。
【0039】
まず、S201にて、情報処理装置101は、機器探索情報を送信し、通信相手の装置として、WFD機能に対応している装置を検索する。
【0040】
続いて、S202にて、通信装置151は、受信した機器探索情報が、現在ダイレクト接続モードに使用しているチャネルと同じチャネルが使用されて送信された情報である場合は、当該情報に対する応答である機器探索応答を情報処理装置101に送信する。これにより、情報処理装置101は、WFD機能に対応している装置として、通信装置151を発見することになる。なお、情報処理装置101が通信装置151を発見した後、各装置の間で、各装置が供給可能なサービスや機能に関する情報を交換する処理が行われても良い。
【0041】
続いて、S203にて、情報処理装置101と通信装置151との間で、GO Negotiationを実行する。クライアントとグループオーナが決定したら、両者の間で、WFDによる通信を行うためのパラメータを交換する。交換したパラメータに基づいて、P2Pのクライアントとグループオーナとの間で残りの無線接続の処理、IP接続の処理を行う。なお上述したように、通信装置151がAutonomous GOモードとして動作することで、GO Negotiationが省略されて通信装置151が必ずGOとして動作しても良い。また、通信装置151がGOとして動作する場合には、通信装置151は、親局としてWFDの通信に用いる周波数帯とチャネルを決定する。このため、GOとして動作する通信装置151は、5GHzと2.4GHzのうちどちらの周波数帯域を用いるか、及び、決定した周波数帯域に対応するチャネルのうちどのチャネルを用いるかを選択することができる。
【0042】
その後、S204にて、各装置は、交換したパラメータに基づいて、且つ、GOにより決定されたチャネルにより、WFDによる無線接続の確立処理を実行する。
【0043】
<インフラストラクチャ(インフラ)接続方式について>
インフラ接続は、通信を行う機器(例えば、情報処理装置101と通信装置151)のネットワークを統括するアクセスポイント(例えば、アクセスポイント131)と接続し、機器同士がアクセスポイントを介して通信するための接続形態である。通信装置151は、接続モードの1つとして、インフラ接続で通信するためのモード(インフラ接続モード)でも動作可能である。
【0044】
インフラ接続において、各機器は機器探索情報によりアクセスポイントを探索する。アクセスポイントが探索されると、機器とアクセスポイントとの間で残りの無線接続の処理(無線接続の確立等)を経て、その後、IP接続の処理(IPアドレスの割当等)を行うことになる。なお、機器とアクセスポイントとの間で無線接続を実現する場合に送受信されるコマンドやパラメータについては、Wi-Fi規格で規定されているものを用いればよく、ここでの説明は省略する。
【0045】
本実施形態において通信装置151がインフラ接続モードで動作する際はアクセスポイント131が親局、通信装置151が子機として動作する。すなわち本実施形態では、インフラ接続は、子機として動作する通信装置151と親機として動作する装置との間の接続を指す。通信装置151がインフラ接続を確立しており、且つ情報処理装置101もアクセスポイント131とのインフラ接続を確立している場合、通信装置151と情報処理装置101との間で、アクセスポイント131を介した通信が可能となる。インフラ接続における通信に使用されるチャネルは、アクセスポイント131により決定されるため、通信装置151は、アクセスポイント131により決定されたチャネルを使用してインフラ接続における通信を実行する。本実施形態では、通信装置151は、インフラ接続における通信に、2.4GHzの周波数帯に対応するチャネルと、5GHzの周波数帯に対応チャネルとを使用可能であるものとする。なお通信装置151は、インフラ接続における通信には、5GHzの周波数帯のうちDFS帯に対応するチャネルも使用可能である。なお、情報処理装置101は、通信装置151とアクセスポイント131を介して通信するためには、アクセスポイント131によって形成され、情報処理装置101が属するネットワーク上に、通信装置151が属していることを認識する必要がある。
【0046】
また、情報処理装置101と通信装置151がインフラ接続によりアクセスポイント131と接続している場合、情報処理装置101によって実行されるブロードキャストによる通信装置151の発見が可能となる。
【0047】
<情報処理装置101のソフトウェア構成について>
次に、本実施形態における情報処理装置101のソフトウェア構成について説明する。
図3(a)は、情報処理装置101上で動作するホストOSが、Android OSである場合における情報処理装置101のソフトウェア構成の例である。この形態においては、Android OS上でAndroid OS用のアプリが動作する。この形態では、情報処理装置101のソフトウェア構成にChrome OSは含まれないものとする。この形態のように、情報処理装置101の最下層で動作するOSがAndroid OSである(Chrome OSでない)環境を、以下において第1環境と呼ぶ。第1環境とは、具体的には例えば、情報処理装置101にホストOSが搭載されているがゲストOSが搭載されておらず、通信アプリがホストOS上で動作している環境である。また例えば、第1環境とは、具体的には例えば、情報処理装置101にホストOSもゲストOSも搭載されているが、通信アプリはホストOS上で動作しており、ゲストOSを介さず動作している(ゲストOS上では動作していない)環境である。
【0048】
図3(b)は、情報処理装置101上で動作するホストOSが、Chrome OSである場合における情報処理装置101のソフトウェア構成の例である。この形態においては、Chrome OS上で仮想OSである仮想Android OSが動作する。そして、仮想Android OS上でAndroid OS用のアプリが動作する。この形態のように、情報処理装置101の最下層で動作するOSがChrome OSであり、そのChrome OS上で仮想Android OSが動作する環境を、以下において第2環境と呼ぶ。なお本実施形態において仮想OSとは、ホストOSに対応しないアプリをホストOS上で動作させるためのプログラムであり、ゲストOSである。なお仮想OSは、Android OS等の既存のOS全体であっても良いし、既存のOS全体から一部モジュールが省略されたものであっても良いし、既存のOSとは別個に作成されたプログラムであっても良い。また仮想OSは例えば、Virtual Machine方式やコンテナ方式等の仮想化技術によって実現される。
【0049】
ここで、第2環境においてAndroid OS用のアプリを動作させる場合、以下に示すような課題が生じる。
【0050】
まず従来、情報処理装置101が通信アプリによって通信する相手となる装置を検索するための方法として、ブロードキャスト検索という方法が知られている。ブロードキャスト検索とは、ブロードキャスト検索用パケットの送信及び応答の受信によって装置を発見する方法である。ブロードキャスト検索においてまず、具体的にはまず通信アプリは、ソケットAPI(Application Programming Interface)を実行することで、ブロードキャスト検索用パケットの送信を行うよう、情報処理装置101のOSに指示する。すると当該OSは、情報処理装置101が属している(接続している)ネットワークを形成しているアクセスポイント(ここではアクセスポイント131)に対して、ブロードキャスト検索用パケットを送信する。ブロードキャスト検索用パケットとは、IPアドレスが格納される領域に、ブロードキャスト検索用の値であり、パケットの送信先を指定しないことに対応する値が設定されているパケットである。本実施形態では、ブロードキャスト検索用パケットの内容は通信アプリにより指定される。すなわち、ブロードキャスト検索用パケットの内容を解釈可能な装置は、通信アプリに対応した装置である。そして通信アプリに対応した装置とは、具体的には例えば、通信アプリのベンダーによって提供される印刷装置である。本実施形態においては、通信装置151は通信アプリに対応した装置であるものとする。ブロードキャスト検索用パケットを受信したアクセスポイント131は、自身が形成しているネットワークに属している全ての装置に、当該パケットを送信する。そして当該パケットを解釈可能な装置が当該パケットを受信した場合は、当該パケットの送信元である情報処理装置101に応答をアクセスポイント131経由で送信する。そして情報処理装置101のOSは、応答を受信し、受信した応答を通信アプリに送信する。これにより情報処理装置101は、応答を送信した各装置を通信アプリにより発見することができ、ブロードキャスト検索の結果に基づく処理を実行可能である。検索の結果に基づく処理とは具体的には例えば、検索の結果を表示する処理や、検索により発見された装置と通信する処理である。
【0051】
また、情報処理装置101が通信アプリによって通信する相手となる装置を検索するための方法として、マルチキャスト検索という方法が知られている。マルチキャスト検索とは、マルチキャスト検索用パケットの送信及び応答の受信によって装置を発見する方法である。マルチキャスト検索においてまず、具体的にはまず通信アプリは、ソケットAPIを実行することで、マルチキャスト検索用パケットの送信を行うよう、情報処理装置101のOSに指示する。すると当該OSは、情報処理装置101が属している(接続している)ネットワークを形成しているアクセスポイント(ここではアクセスポイント131)に対して、マルチキャスト検索用パケットを送信する。マルチキャスト検索用パケットとは、IPアドレスが格納される領域に、マルチキャスト検索用の値であり、パケットの送信先として特定の種類の装置を指定することに対応する値が設定されているパケットである。本実施形態では、マルチキャスト検索用パケットの内容は通信アプリにより指定される。すなわち、マルチキャスト検索用パケットの内容を解釈可能な装置は、通信アプリに対応した装置である。マルチキャスト検索用パケットを受信したアクセスポイント131は、自身が形成しているネットワークに属している全ての装置のうち、マルチキャスト検索用パケットによって指定された種類の装置に、当該パケットを送信する。そして当該パケットを解釈可能な装置が当該パケットを受信した場合は、当該パケットの送信元である情報処理装置101に応答をアクセスポイント131経由で送信する。そして情報処理装置101のOSは、応答を受信し、受信した応答を通信アプリに送信する。これにより情報処理装置101は、応答を送信した各装置を通信アプリにより発見することができ、マルチキャスト検索の結果に基づく処理を実行可能である。
【0052】
ところで、ブロードキャスト検索用パケットやマルチキャスト検索用パケットの内容の指定を担うのは通信アプリだが、それらのパケットの送信を担うのは、情報処理装置101において一番下層で動作するOSである。そのため第2環境においてAndroid OS用のアプリが動作する環境においては、Chrome OSがブロードキャスト検索やマルチキャスト検索を実行する必要がある。しかしながら、第2環境においてAndroid OS用のアプリが動作する場合は、Chrome OSは、自身が有するFirewallにより、Android OS用のアプリが指示元でありソケットAPIが用いられたブロードキャスト検索やマルチキャスト検索は実行しないよう制御することある。結果として、第2環境で通信アプリが動作している場合は、通信アプリはブロードキャスト検索やマルチキャスト検索の結果に基づく処理を実行できないことがあるという課題がある。なおChrome OS用のアプリが指示元のブロードキャスト検索やマルチキャスト検索はChrome OSのFirewallによってはブロックされない。そのため、もし情報処理装置101が、Chrome OS上でChrome OS用アプリを動作させており、そのアプリからソケットAPIによりブロードキャスト検索やマルチキャスト検索の実行の指示が行われた場合は、Chrome OSはブロードキャスト検索やマルチキャスト検索を実行可能である。
【0053】
また本実施形態では通信アプリは、WFDによる装置の検索に対応している。そのため、通信アプリが動作している情報処理装置101がWFDに対応していれば、通信アプリは、情報処理装置101のOSに、WFDによる装置の検索を指示し、当該検索の結果を受信することで、当該検索の結果に基づく処理を実行可能である。
【0054】
しかしながら、Chrome OSを搭載した装置やchrome OS自体が、WFDに対応しておらず、WFDによる装置の検索が実行できないことが多い。第2環境で通信アプリが動作している場合は、通信アプリはWFDによる装置の検索の結果に基づく処理を実行できないことがあるという課題がある。
【0055】
また、本実施形態では、通信アプリは、通信装置151にスキャンを実行させるためのスキャンジョブを送信し、当該スキャンジョブによって実行されたスキャンによって取得された画像データ(スキャンデータ)を通信装置151から取得する機能(スキャン機能)を有するものとする。しかしながら第2環境において通信アプリが動作している場合は、通信装置151によって取得されたスキャンデータを通信アプリが取得できないことがあるという課題がある。
【0056】
通信アプリは、プッシュスキャンを実行する通信装置151にスキャンジョブを通信装置151に送信する場合、通信アプリ内に、WebDAV(Web-based Distributed Authoring and Versioning)サーバを起動する。このとき、通信アプリが動作する環境が第2環境である場合、仮想Android OSは、WebDAVサーバが利用するインタフェースとして設定される仮想インタフェースのIPアドレスを割り当てる。このIPアドレスを、第1アドレスと呼ぶ。そして、通信アプリは、スキャンジョブの送信を仮想Android OSに指示する。ここでスキャンジョブは、送信元のアドレスとしての第1アドレスと、送信先のアドレスとしての通信装置151のIPアドレスと、送信元のポート番号としての第1ポート番号とを含む。その後、仮想Android OSは、当該スキャンジョブの送信をChrome OSに指示する。なおこのときChrome OSは、アドレス変換処理であるNAT(Network Address Translation)を実行する。具体的には例えば、Chrome OSは、送信元のアドレスを第1アドレスから第2アドレスに変換し、送信元のポート番号を第1ポート番号から第2ポート番号に変換する。その後、変換後のアドレスやポート番号を用いて、スキャンジョブを通信装置151に送信する。なお変換されたアドレスは、スキャンジョブのパケットのうちヘッダーに格納される。
【0057】
ここで通信装置151はプッシュスキャンを実行する装置であるものとする。そのため、スキャンジョブが通信装置151によって受信されると、情報処理装置101と通信装置151との間の通信のセッションは一旦切断される。そのため、通信装置151はスキャンデータを情報処理装置101に送信するためには、情報処理装置101と通信装置151との間の通信のセッションを再度確立する必要がある。
【0058】
その場合通信装置151は、スキャンデータの送信先を示すIPアドレスを指定する必要があるが、上述のように通信装置151が受信したスキャンジョブには、第1アドレスがchrome OSによって変換された後のIPアドレスである第2アドレスが含まれている。そのため、通信装置151は、第1アドレスを取得することができない。また、スキャンジョブのパケットのうちヘッダーでない部分に含まれる第1アドレスを参照するなどして、第1アドレスを取得できたとしても、第1アドレスは、情報処理装置101内部のプライベートIPアドレスであるため、新しく確立されたセッションでは通信装置151は第1アドレス宛にはデータを送ることができない。結果として、第2環境においては、通信装置151にプッシュスキャンを実行させるためのスキャンジョブにより通信装置151が実行したスキャンにより得られたスキャンデータを、通信アプリは取得できないことがあるという課題がある。
【0059】
<通信アプリによる装置の検索について>
図4に、本実施形態における通信アプリによる装置の検索のフローチャートを示す。なお、本フローチャートは、外部記憶装置106等のメモリに格納された各種プログラムを、CPU103がRAM105に読み出して実行することにより実現される。具体的には本フローチャートは、通信アプリが実行されることにより実現される。また本処理は、通信アプリが表示する画面において、装置の検索のトリガーとなる操作がユーザによって行われた場合に開始されるものとする。なおこの形態に限定されず例えば、本処理は、通信アプリが起動されたことに基づいて開始されても良い。
【0060】
S401では、CPU103は、Android OSのAPIを通信アプリから実行することにより、通信アプリが動作している環境に関する環境情報を取得する。通信アプリが動作している環境が第1環境である場合、環境情報として、第1環境に対応する情報が取得される。一方通信アプリが動作している環境が第2環境である場合、実行される上記APIは、仮想Android OSのAPIであり、且つ、環境情報として、第2環境に対応する情報が取得される。
【0061】
S402では、CPU103は、S401で取得された環境情報に基づいて、通信アプリが動作している環境が第1環境であるか否かを判定する。本判定の結果がYESである場合、CPU103は、S403に進み、本判定の結果がNOである場合、CPU103は、S411に進む。
【0062】
S403では、CPU103は、通信アプリによりブロードキャスト検索用パケットの内容を決定する。そしてCPU103は、決定した内容のパケットの送信を、ソケットAPIを通信アプリから実行することで通信アプリによりAndroid OSに指示する。すなわちCPU103は、通信アプリによりブロードキャスト検索のための処理を実行する。これによりCPU103は、Android OSによるブロードキャスト検索用パケットのアクセスポイント131への送信を実行する。また本実施形態において、ブロードキャスト検索用パケットは、通信アプリに対応した装置のみが当該パケットに対して応答可能なように構成されるものとする。また本実施形態において、複数の種類のブロードキャスト検索用パケットがブロードキャストされるものとする。複数の種類のブロードキャスト検索用パケットとは具体的には、インクジェットプリンタのみ応答可能なように構成される種類のパケットや、電子写真プリンタのみ応答可能なように構成される種類のパケットを含むものである。なおインクジェットプリンタのうち旧型のプリンタのみ応答可能なように構成される種類のパケットやインクジェットプリンタのうち新型のプリンタのみ応答可能なように構成される種類のパケットが含まれていても良い。具体的には例えば、CPU103は、ブロードキャスト検索用パケットに設定されるポート番号を異ならせることによって、検索対象の装置を異ならせるように制御する。これにより、ブロードキャスト検索で、所望の装置のみ発見することができる。そして、ブロードキャスト検索により発見された装置がいずれの装置なのか(インクジェットプリンタなのか電子写真プリンタなのか等)を判別することができる。
【0063】
S404では、CPU103は、ブロードキャスト検索用パケットに対する応答を、Android OSから通信アプリにより取得する。これにより、当該応答の送信元である装置を、ブロードキャストにより発見された装置として特定する。
図5は、当該ブロードキャストに対して、通信装置151が応答結果として返すXMLデータの例である。statusタグは、問い合わせに対する応答結果を表しており、この例では問い合わせが成功したことを表している。また、device_typeタグ、model_nameタグは、それぞれ装置の種類、機種名を表している。情報処理装置101は、device_typeタグにプリンタとしての情報を備える装置をプリンタと認識することができるため、この例では通信装置の機種はプリンタであり、機種名が“Communication apparatus 151”であることを表している。また、ip_addressタグは、通信装置のIPアドレスを表し、この例では、通信装置のIPアドレスが192.168.0.2であることを表している。さらに、mac_addressタグは、通信装置のMACアドレスを表し、MACアドレスがaa:bb:cc:dd:ee:ffであることを表している。なお、通信装置が応答結果として返すデータに記載される情報やデータの形式はこれに限定されず、通信装置に関する種々の情報が記載されていても良い。
【0064】
なお上述ではS403とS404において、ブロードキャスト検索のための処理が実行される形態を説明したが、マルチキャスト検索のための処理が実行される形態であっても良い。すなわちCPU103は、S403では、通信アプリによりマルチキャスト検索用パケットの内容を決定し、決定した内容のパケットの送信を、ソケットAPIを通信アプリから実行することで通信アプリによりAndroid OSに指示しても良い。そして、CPU103は、S404では、マルチキャスト検索用パケットに対する応答を、Android OSから通信アプリにより取得しても良い。
【0065】
S405では、CPU103は、WFDのためのAPIを実行することで、WFDによる検索の実行(すなわち、WFDによる機器探索情報の送信)を通信アプリによりAndroid OSに指示する。これによりCPU103は、Android OSによる機器探索情報の送信を実行する。そしてその後Android OSは、機器探索応答を、情報処理装置101の周囲のWFD対応装置から受信する。本処理はS201やS202の処理に対応する。
【0066】
S406では、CPU103は、機器探索応答を、Android OSから通信アプリにより取得する。これにより、機器探索応答の送信元である装置を、WFDによる検索により発見された装置として特定する。なおこのとき、機器探索応答の送信元である装置のうち、印刷サービスに対応する装置のみを、WFDによる検索により発見された装置として特定しても良い。いずれの装置がいずれのサービスに対応しているかは、機器探索応答の送信元である装置と情報処理装置101との間の通信により確認可能である。
【0067】
S407では、CPU103は、ブロードキャスト検索により発見された1又は複数の装置とWFDによる検索により発見された1又は複数の装置のリストを示す画面である検索結果画面を、S404とS406にて取得された情報に基づいて通信アプリにより表示する。なお検索結果画面において、ブロードキャスト検索により発見された1又は複数の装置とWFDによる検索により発見された1又は複数の装置とが区別可能なように、上記リストが表示されても良い。具体的には例えば、検索結果画面おいて、ブロードキャスト検索により発見された装置に対応する表示項目には、ブロードキャスト検索により発見された装置であることに対応するアイコンが付されていても良い。また同様に、検索結果画面において、WFDによる検索により発見された装置に対応する表示項目には、WFDにて発見された装置であることに対応するアイコンが付されていても良い。また検索結果画面において、インクジェットプリンタと電子写真プリンタとが区別可能なように、上記リストが表示されても良い。そしてCPU103は、検索結果画面に表示された装置のうち、いずれかの装置の選択をユーザから通信アプリにより受け付ける。
【0068】
S408では、CPU103は、選択された装置が、ブロードキャストにて発見された装置か否かを判定する。本判定の結果がYESである場合、CPU103は、S410に進み、本判定の結果がNOである場合、CPU103は、S409に進む。
【0069】
S409では、CPU103は、選択された装置と情報処理装置101との間のWFDによる接続を確立するよう、通信アプリからAndroid OSに指示する。これによりAndroid OSは、選択された装置と情報処理装置101との間のWFDによる接続を確立するための処理を実行する。本処理は、S203やS204の処理に対応する。なお本実施形態においては、情報処理装置101は、WFDによる接続と通常のWi-Fiによる接続とを並行して維持可能なものとする。そのためここではCPU103は、選択された装置と情報処理装置101との間のWFDによる接続を、アクセスポイント131と情報処理装置101との間のWi-Fi接続が維持されたまま確立するものとする。
【0070】
S410では、CPU103は、選択された装置から、ケーパビリティ情報を取得する。ケーパビリティ情報には、具体的には、プリント機能やスキャン機能に当該装置が対応しているか否かの情報や、両面印刷やカラー/モノクロ印刷に当該装置が対応しているか否かの情報、当該装置が対応している記録剤や記録媒体の種類等の情報が含まれる。なお、ケーパビリティ情報には、MACアドレスや機種名、IPアドレス等の当該装置の識別情報が含まれていても良い。通信アプリは、選択された装置とケーパビリティ情報とを対応付けて管理することで、選択された装置を通信アプリに登録する。以後通信アプリは、通信アプリに登録された装置に対して、各種ジョブを送信することができるようになる。ひいてはり通信アプリは、通信アプリに登録された装置に対して、各種ジョブに応じた処理を実行させることが可能となる。その後本フローチャートの処理を終了する。
【0071】
一方S402の判定結果がNOである場合、S411で、CPU103は、ソケットAPIとは異なるAPIを用いて、情報処理装置101が属しているネットワーク上の装置を検索するための処理を、通信アプリにより実行する。具体的にはここで用いられるAPIは、ネットワークサービスディスカバリ(NSD)APIである。通信アプリから本APIが実行されることにより、NSDと呼ばれる検索が実行される。NSDは、DNS based service discovery protocolが利用されて実行されるマルチキャスト検索である。またNSDは、第2環境においても通信アプリからの指示により実行されることが可能な検索である。本処理において具体的には、通信アプリから本APIが実行されると仮想Android OSが、Chrome OSにNSDの実行を指示する。そしてChrome OSがNSDを実行することにより、情報処理装置101が属しているネットワーク上の装置であり、NSDに対応した装置が発見される。なおNSD APIの実行において通信アプリは、NSDによっていずれのサービスに対応した装置を検索するかを指定することが可能である。なおサービスの指定は例えば、プロトコルの指定によって行われる。そのため本実施形態において通信アプリは、Internet Printing Protocol(IPP)を指定することで印刷サービスに対応した装置(すなわちプリンタ)を検索することを指定する。なお通信アプリは、ソケットAPIを用いた検索指示においては、パケットの送信先の装置の指定としてIPアドレスを指定するのに対し、NSD APIを用いた検索指示においてはIPアドレスの指定は行わない。
【0072】
次に、S412で、CPU103は、NSDによる検索の結果として、通信アプリは、発見された装置に関する情報を取得する。ここで取得される情報は具体的には例えば、発見された装置のIPアドレスやポート番号、サービス名などである。
【0073】
次に、S413で、CPU103は、NSDにより発見された1又は複数の装置をユニキャスト検索を実行するための処理を実行する。なお本実施形態では、NSDにより発見された全ての装置にユニキャスト検索を実行するための処理を実行するものとするが、この形態に限定されない。NSDにより発見された装置のうち一部の装置にユニキャスト検索を実行するための処理が実行されても良い。ユニキャスト検索とは、検索対象の装置をIPアドレスによって指定して、情報処理装置101が属するネットワーク上で検索する方法である。NSDにより発見された装置のIPアドレスは、NSDの検索結果として通信アプリにより取得されているため、NSDにより発見された装置をユニキャスト検索で再度検索することが可能である。なおブロードキャスト検索は、情報処理装置101が属するサブネットワーク内が検索対象範囲である一方、ユニキャスト検索は、情報処理装置101が属するサブネットワークだけでなく、当該サブネットワークに接続した他のサブネットワーク内も検索対象範囲となる。なおサブネットワークとは、1つのアクセスポイントによって構成される1つのネットワークの単位を指す。なおユニキャスト検索は、第2環境においても通信アプリからの指示により実行されることが可能な検索である。本処理において具体的にはCPU103は、通信アプリによりユニキャスト検索用パケットの内容を決定する。そしてCPU103は、ソケットAPIを実行することにより、決定した内容のパケットの送信を通信アプリにより仮想Android OSに指示する。なおユニキャスト検索用パケットは、IPアドレスが格納される領域に、ユニキャスト検索用の値であり、パケットの送信先(言い換えれば、検索対象装置の宛先)を指定することに対応する値が設定されているパケットである。また本実施形態において、ユニキャスト検索用パケットは、通信アプリに対応した装置のみが当該パケットに対して応答可能なように構成されるものとする。また本実施形態において、1つの装置に対して複数の種類のユニキャスト検索用パケットが送信されるものとする。複数の種類のユニキャスト検索用パケットとは具体的には、インクジェットプリンタのみ応答可能なように構成される種類のパケットや、電子写真プリンタのみ応答可能なように構成される種類のパケットを含むものである。なおインクジェットプリンタのうち旧型のプリンタのみ応答可能なように構成される種類のパケットやインクジェットプリンタのうち新型のプリンタのみ応答可能なように構成される種類のパケットが含まれていても良い。これにより、ユニキャスト検索で、所望の装置のみ発見することができる。そして、ユニキャスト検索により発見された装置がいずれの装置なのか(インクジェットプリンタなのか電子写真プリンタなのか等)を判別することができる。本実施形態においては、ユニキャスト検索用パケットの内容は、ブロードキャスト用検索パケットの内容と、パケットの送信先を示すIPアドレスのみ異なるものとする。その後仮想Android OSが、Chrome OSにユニキャスト検索の実行を指示する。そしてChrome OSが、ユニキャスト検索用パケットを送信することによりユニキャスト検索を実行する。これにより、情報処理装置101が属しているネットワーク上の装置であり、ユニキャスト検索用パケットにおいて指定されているIPアドレスに対応した装置からの応答が受信され、当該装置が発見される。
【0074】
次に、S414で、CPU103は、ユニキャスト検索の結果として、通信アプリは、発見された装置の情報を取得する。ここで取得される情報は具体的には例えば、発見された装置のIPアドレスやMACアドレス、モデル名(機種名)、シリアルナンバーなどである。NSDの後にユニキャスト検索が実行されることにより、NSDによって発見された装置のうち通信アプリに対応した装置を特定することができる。また、NSDでは取得できされなかった情報を取得することができる。
【0075】
次に、S415で、CPU103は、ユニキャスト検索にて発見された装置のリストを示す画面である検索結果画面を通信アプリにより表示する。なお検索結果画面において、インクジェットプリンタと電子写真プリンタとが区別可能なように、上記リストが表示されても良い。そしてCPU103は、検索結果画面に表示された装置のうち、いずれかの装置の選択をユーザから通信アプリにより受け付ける。その後、CPU103は、310に進んで、選択された装置の登録を行う。
【0076】
このように本実施形態では、通信アプリが動作する環境に基づいて、ブロードキャスト検索を実行するか否かを切り替える。具体的には通信アプリが動作する環境が第1環境であることに基づいて、ブロードキャスト検索を実行し、通信アプリが動作する環境が第2環境であることに基づいて、ブロードキャスト検索を実行せず、他の処理を実行する。他の処理とは具体的には例えば、NSDによる検索や、ユニキャスト検索を実行する。これにより、通信アプリは、通信アプリが動作する環境に基づいた適切な処理を実行することができる。
【0077】
なお通信アプリは、ブロードキャスト検索とマルチキャスト検索とユニキャスト検索のいずれを指示するかを、ソケットAPIの実行時に指定するIPアドレスであり、検索のために送信されるパケットに含まれるIPアドレスとしていずれの内容のアドレスを指定するかによって決定する。そのため本実施形態は言い換えれば、通信アプリが動作する環境に基づいて、検索に使用されるパケットにおいて指定されるIPアドレスの内容を切り替える形態である。
【0078】
なお通信アプリが動作する環境が第2環境であることに基づいて実行される処理は、上述した形態に限定されない。当該処理は例えば、ブロードキャスト検索を実行することができないことをユーザに通知するための通知画面を表示する処理であっても良い。そして、通知画面が表示される形態では、NSDによる検索や、ユニキャスト検索が実行されなくても良い。また当該通知画面は例えば、通信アプリが動作する環境が第2環境であることをユーザに通知するための画面や、通信装置を通信アプリに登録することができないことをユーザに通知するための画面や、通信アプリを第1環境で動作させるようユーザを促すための画面であっても良い。
【0079】
また検索の方法は上述の方法に限定されない。例えばブロードキャストによる検索のための処理(S403、S404)とWFDによる検索のための処理(S405、S406)が実行される順番が逆であっても良いし、それぞれの検索が並行して実行されても良い。また、それぞれの検索が終了した後に、検索結果画面が表示されるのではなく、それぞれの検索により装置が発見される毎に、検索結果画面に、発見された装置が追加されていく形態であっても良い。
【0080】
また、通信アプリは、ユーザから、ブロードキャストによる検索の実行を指示するための操作と、WFDによる検索の実行を指示するための操作とをそれぞれ別々に受け付け可能であっても良い。そして、ブロードキャストによる検索の実行を指示するための操作が行われた場合は、WFDによる検索のための処理を実行せずに
図4のフローチャートが実行されても良い。また同様に、WFDによる検索の実行を指示するための操作が行われた場合は、ブロードキャストによる検索のための処理を実行せずに
図4のフローチャートが実行されても良い。また通信アプリは、ブロードキャストによる検索とWFDによる検索のうち一方にしか対応しないアプリであっても良い。すなわち、ブロードキャストによる検索にしか対応しないアプリである場合は、WFDによる検索のための処理を実行せずに
図4のフローチャートが実行されても良い。同様に、WFDによる検索にしか対応しないアプリである場合は、ブロードキャストによる検索のための処理を実行せずに
図4のフローチャートが実行されても良い。
【0081】
また上述では、NSDのための処理(S411、S412)の後にユニキャストによる検索のための処理(S413、S414)が実行される形態を説明したがこの形態に限定されない。例えば、
図4のフローチャートにおいてユニキャストによる検索のための処理が実行されず、検索結果画面には、NSDにより発見された装置が表示される形態であっても良い。なおこのとき、通信アプリに対応する装置が、NSDに対する応答として、通信アプリに対応する装置であることに対応する情報を格納する形態としても良い。それによりNSDにより発見された装置のうち通信アプリに対応する装置として特定された装置のみが検索結果画面に表示される形態であっても良い。
【0082】
<通信アプリによるスキャン機能の実行について>
上述したようにして通信装置151が通信アプリに登録された場合、登録された通信装置151に対して通信アプリはスキャンジョブを送信可能である。
【0083】
図6に、本実施形態における通信アプリによる通信アプリによるスキャン機能のフローチャートを示す。なお、本フローチャートは、外部記憶装置106等のメモリに格納された各種プログラムを、CPU103がRAM105に読み出して実行することにより実現される。具体的には本フローチャートは、通信アプリが実行されることにより実現される。また本処理は、通信アプリが表示する画面において、スキャン機能の実行のトリガーとなる操作がユーザによって行われた場合に開始されるものとする。
【0084】
S601では、CPU103は、スキャンジョブの送信先となる装置を特定し、特定された装置の機種情報を取得する。具体的には例えば、CPU103は、通信アプリに登録されている通信装置151をスキャンジョブの送信先として特定する。通信アプリに登録されている装置が複数ある場合には、CPU103は、通信アプリに登録されている複数の装置からいずれかをユーザに選択させ、選択された装置をスキャンジョブの送信先となる装置として特定しても良い。ユーザの選択は、S601で受け付けても良いし、スキャン機能の実行のトリガーとなる操作がユーザによって行われる前に事前に受け付けても良い。CPU103は、通信装置151が特定された場合、通信アプリへの通信装置151の登録のために管理されている通信装置151のケーパビリティ情報を参照することで、当該ケーパビリティ情報に含まれる機種情報を取得する。
【0085】
S602では、CPU103は、スキャンジョブの送信先となる装置の機種が、プルスキャンに対応する所定の機種か否かを判定する。プルスキャンとは、情報処理装置101が確立元である情報処理装置101と通信装置151との間のセッションを介して、スキャンデータを通信装置151から受信する形態のスキャンである。本実施形態では例えば、インクジェット方式によって印刷を行うインクジェットプリンタに対応する機種や、電子写真方式によって印刷を行う電子写真プリンタに対応する機種のうち一部が、所定の機種であるものとする。そして電子写真方式によって印刷を行う電子写真プリンタに対応する機種のうち一部が、所定の機種とは異なる機種であり、プッシュスキャンに対応する機種であるものとする。本判定の結果がYESである場合、CPU103は、S603に進み、本判定の結果がNOである場合、CPU103は、S605に進む。
【0086】
S603では、CPU103は、スキャンジョブを送信するよう、通信アプリから通信アプリの下層のOSに指示する。これにより、情報処理装置101から通信装置151にスキャンジョブが送信される。通信アプリの下層のOSとは、第1環境においてはAndroid OSであり、第2環境においては仮想Android OSである。第2環境においては、さらに、スキャンジョブを送信するよう、仮想Android OSからChrome OSに指示されることになる。なおここで送信されるスキャンジョブは、通信装置151にプルスキャンを実行させるためのジョブであり、通信アプリによって作成されたジョブである。
【0087】
S604では、CPU103は、通信装置151から情報処理装置101により取得されたスキャンデータを、通信アプリの下層のOSから、WebDAVサーバを用いずに通信アプリにより取得する。その後S609に進む。
【0088】
S602の判定の結果がNOであった場合に実行されるS605では、CPU103は、環境情報を取得する。本処理はS401と同様である。
【0089】
S606では、CPU103は、S605で取得された環境情報に基づいて、通信アプリが動作している環境が第1環境であるか否かを判定する。本判定の結果がYESである場合、CPU103は、S607に進み、本判定の結果がNOである場合、CPU103は、S610に進む。なお
図4で説明したように、本実施形態においては、通信アプリが動作している環境に基づいて異なる検索処理が実行される。そのため、スキャンジョブの送信先となる装置を発見した検索処理に基づいて、通信アプリが動作している環境が特定されることとなる。そのためS606の処理は例えば、スキャンジョブの送信先となる装置を発見した検索処理がいずれの検索処理であるかを特定する処理であっても良い。そして、特定された検索処理が、通信アプリが動作している環境が第1環境である場合に実行される検索処理である場合に、S607に進んでも良い。そして、特定された検索処理が、通信アプリが動作している環境が第2環境である場合に実行される検索処理である場合に、S610に進んでも良い。
【0090】
S607では、CPU103は、スキャンジョブを送信するよう、通信アプリからAndroid OSに指示する。これにより、情報処理装置101から通信装置151にスキャンジョブが送信される。なおここで送信されるスキャンジョブは、通信装置151にプッシュスキャンを実行させるためのジョブであり、通信アプリによって作成されたジョブである。そのためCPU103は、通信アプリによりWebDAVサーバを起動する。
【0091】
S608では、CPU103は、通信装置151から情報処理装置101により取得されたスキャンデータを、Android OSから、WebDAVサーバを用いて通信アプリにより取得する。
【0092】
S609では、CPU103は、通信アプリにより取得されたスキャンデータにより表される画像を表示する。その後本フローチャートの処理を終了する。
【0093】
S602の判定の結果がNOであった場合に実行されるS610では、CPU103は、通信アプリからはスキャン機能を実行できないことを通知するための通知画面を表示する処理である通知処理を実行する。ここで表示される通知画面の一例を、
図7に示す。通知画面は例えば、ホストOSに標準搭載されている標準スキャン機能を実行するようユーザを促すための画面であっても良い。また標準スキャン機能を実行するための操作を提示するための画面であっても良い。ホストOSに標準搭載されているスキャン機能を実行するための操作を提示するwebマニュアルをwebブラウザで表示するためのボタンを有する画面であっても良い。なお標準スキャン機能は、ホストOSと共に情報処理装置101に標準搭載されているアプリであり、当該標準スキャン機能を司る標準スキャンアプリによって実行される。そのため標準スキャン機能を実行するようユーザを促すための画面とは例えば、標準スキャンアプリを使用するようユーザを促すための画面ともいえる。また標準スキャン機能を実行するための操作を提示するための画面とは例えば、標準スキャンアプリを起動するための操作を提示するための画面ともいえる。なお、通知画面は例えば、標準スキャンアプリを起動するかどうかをユーザに確認する画面であっても良い。そして、標準スキャン機能を起動することの入力が受け付けられた場合、CPU103は、通信アプリから標準スキャンアプリを起動しても良い。なお標準スキャンアプリは、ホストOS用のアプリであるため、ゲストOSを介さずに動作する。そのため、標準スキャンアプリは、標準スキャンアプリからの指示で実行された送信されたスキャンジョブに基づいて実行されたスキャンにより得られたスキャンデータを通信装置151から取得することが可能である。また、S610においてCPU103は、通信アプリから標準スキャンアプリを起動する起動処理を、通知処理を実行することなく実行する形態であっても良い。またS610においてCPU103は、ホストOSのバージョンが、起動処理に対応しているバージョンであるか否かを判定し、YESである場合に起動処理を実行し、NOである場合に通知処理を実行しても良い。なお起動された標準スキャンアプリがユーザ操作されることで、標準スキャンアプリからの指示で、通信装置151等に、情報処理装置101からスキャンジョブが送信される。そして、標準スキャンアプリからの指示で送信されるスキャンジョブは、標準スキャンアプリによって作成されるジョブである。そのためS610の処理は、通信アプリとは異なる標準スキャンアプリによって作成されるスキャンジョブを送信するための処理ともいえる。S610の後、本フローチャートの処理を終了する。
【0094】
このように本実施形態では、通信アプリが動作する環境が第2環境であり、通信アプリが通信装置151からスキャンデータを取得できない場合は、通信装置151にスキャンジョブを送信しない。そして例えば、スキャンジョブを送信する処理でない処理として、通知画面を表示したり、標準スキャンアプリを起動する処理を実行する。これにより、通信アプリが通信装置151からスキャンデータを取得できない状況において、ユーザに、スキャンデータを取得するための代替手段を提示することができる。
【0095】
なお上述した第2環境において生じる課題は、第2環境におけるホストOSがChrome OS以外の他のOSである場合や、第2環境におけるゲストOSがAndroid OS以外の他のOSである場合にも生じうる。すなわち上述では第2環境が、Chrome OS上に仮想Android OSが動作し、仮想Android OS上にAndroid OS用アプリが動作する環境である形態を説明したが、この形態に限定されない。例えば、最下層で動作するOSは、Chrome OSではなく、Microsoft社によって提供されるWindows(登録商標) OSやAPPLE社によって提供されるMac(登録商標) OS等の他のOSであっても良い。また、ゲストOSやゲストOS上で動作するアプリは、Android OSやAndroid OS用アプリではなく、iOS(登録商標)やiOS用アプリであっても良い。そのため例えば、CPU103は、S610の前に、第2環境におけるホストOSがどのOSであるかを通信アプリにより特定しても良い。そして、S610における通知処理では、特定されたOSに対応する内容の通知画面が表示されても良い。具体的には例えば、OSの種類ごとに標準スキャンアプリの名前や標準スキャンアプリを起動する方法が異なる場合は、特定されたOSに対応する標準スキャンアプリの名前や、特定されたOS上で標準スキャンアプリを起動する方法が通知画面に表示されて良い。また例えばS610では、通知処理の代わりに、特定されたOSに対応する標準スキャンアプリを起動する処理が実行されても良い。
【0096】
(第2実施形態)
上述したように、第2環境におけるホストOSは、Chrome OSである場合に限らず、Windows OS等の他のOSである場合もある。そして例えば、通信アプリとは別のアプリであり、通信アプリと同じベンダーが提供している他のOS用のアプリが存在する場合がある。本実施形態では、第2環境において、ホストOSの種類によって異なる処理を実行する形態について説明する。
【0097】
図8に、本実施形態における通信アプリによる通信アプリによるスキャン機能のフローチャートを示す。なお、本フローチャートは、外部記憶装置106等のメモリに格納された各種プログラムを、CPU103がRAM105に読み出して実行することにより実現される。具体的には本フローチャートは、通信アプリが実行されることにより実現される。また本処理は、通信アプリが表示する画面において、スキャン機能の実行のトリガーとなる操作がユーザによって行われた場合に開始されるものとする。
【0098】
S801~S810は、S601~S610と同様のため説明を省略する。
【0099】
S806の判定の結果がNOであった場合に実行されるS811では、CPU103は、第2環境におけるホストOSを通信アプリにより特定する。そしてCPU103は、特定されたホストOSが、特定のスキャンアプリに対応しないOSか否かを通信アプリにより判定する。特定のスキャンアプリとは、通信アプリとは別のアプリであり、通信アプリと同じベンダーが提供しているアプリである。本実施形態では、Chrome OSは、特定のスキャンアプリに対応しないOSであるものとする。また、Windows OSは、特定のスキャンアプリに対応するOSであるものとする。すなわち、Windows OS用のスキャンアプリが特定のスキャンアプリとして存在するものとする。Windows OS用のスキャンアプリは、第2環境においてもゲストOSを介さず動作可能であるため、通信装置151によって実行されるプッシュスキャンによって取得されるスキャンデータを取得可能である。上述のように、特定のスキャンアプリに対応したOSであるかどうかは、OSの種類によって特定されるものであるため、S811の判定処理は、ホストOSが、Chrome OSか否かを判定するものであっても良い。本判定の結果がYESである場合、CPU103は、S810に進み、S610と同様の通知処理を第1通知処理として実行する。一方本判定の結果がNOである場合、CPU103は、S812に進む。
【0100】
S812では、CPU103は、所定のアプリを使用するようユーザを促すための通知画面を表示する処理である第2通知処理を実行する。ここで表示される通知画面は例えば、所定のアプリを起動するためのボタンを表示する画面であっても良い。なおCPU103は、当該ボタンが押され、且つ所定のアプリが既に情報処理装置101にインストールされていた場合は、所定のアプリを起動する。一方、当該ボタンが押され、且つ所定のアプリがまだ情報処理装置101にインストールされていない場合は、所定のアプリをインストールするためのストアアプリを起動する。ここで表示される通知画面は例えば、所定のアプリを起動するかどうかをユーザに確認する画面であっても良い。そして、所定のアプリを起動することの入力が受け付けられた場合、CPU103は、通信アプリから所定のアプリを起動しても良い。なおS812においてCPU103は、通知処理を実行することなく、所定のアプリを起動しても良い。その後処理を終了する。
【0101】
このような形態とすることで、第2環境におけるホストOSの種類に応じた適切な処理を実行可能となる。
【0102】
(その他の実施形態)
上述では、Chrome OSが、Firewallにより、Android OS用のアプリが指示元でありソケットAPIが用いられたブロードキャスト検索やマルチキャスト検索は実行しないよう制御することあると説明した。しかし、ソケットAPIの実行時に指定されるポート番号であり、検索に用いられるパケットに設定されるポート番号の内容によっては、Firewallによりブロードキャスト検索やマルチキャスト検索がブロックされないことがある。そのため例えば通信アプリは第2環境においても、Firewallによりブロックされない一部の検索については、ソケットAPIによりブロードキャスト検索やマルチキャスト検索の実行を仮想Android OSに指示しても良い。具体的には例えば、インクジェットプリンタのうち旧型のプリンタのみ応答可能なように構成される種類のパケットには特定のポート番号が指定されており、当該パケットによるブロードキャスト検索やマルチキャスト検索はFirewallによりブロックされないとする。その場合例えば、S411においてCPU103は、NSD APIを用いた検索だけではなく、ソケットAPIを用いた検索であり、インクジェットプリンタのうち旧型のプリンタのみ応答可能なように構成される種類のパケットを送信することによるブロードキャスト検索を通信アプリから仮想Android OSに指示しても良い。そしてS415ではCPU103は、S414の検索結果だけでなく、上記指示により実行されたブロードキャスト検索の検索結果が表示されても良い。なおこのときNSD検索とブロードキャスト検索で重複して発見された装置は、重複して表示されないように制御される。これにより例えば、IPPに対応していないなどの理由でNSD検索では発見することができない機種の装置を、第2環境でも発見することが可能となる。
【0103】
また
図4のフローチャートは例えば、通信アプリが用いられて情報処理装置101から通信装置151に対してネットワーク設定が実行されたことに基づいて開始されても良い。ネットワーク設定とは具体的には例えば、情報処理装置101と通信装置151との間のWi-FiやBluetoothによる接続を介して、アクセスポイント131の情報を通信装置151に送信する処理である。これにより通信装置151が、当該情報を用いてアクセスポイント131と接続することになる。そしてその後、情報処理装置101もアクセスポイント131に接続しているのであれば、
図4のフローチャートが実行されることで、情報処理装置101が通信装置151を発見することができる。そのため情報処理装置101は、情報処理装置101と通信装置151との間のWi-Fiによる接続を介して、アクセスポイント131の情報を通信装置151に送信する場合は、当該情報を送信した後に、当該接続を切断して、情報処理装置101とアクセスポイント131との間の接続を確立してよい。またネットワーク設定が実行されたことに基づいて開始されたフローチャートは例えば、検索結果画面を表示しない形態であっても良い。具体的には例えば、検索結果画面を表示してユーザからの選択を受け付ける処理の代わりに、検索により発見された装置のうちネットワーク設定が実行された装置を特定する処理が実行されても良い。当該特定処理は具体的には、ネットワーク設定に利用される上記の接続を介して通信装置151から取得される情報であり、ネットワーク設定が実行された通信装置151の情報であるMACアドレスやシリアルナンバーを、検索により取得された情報であり、検索により発見された装置の情報であるMACアドレスやシリアルナンバーと比較することで実行される。そして、このようにして特定された装置からケーパビリティ情報が取得されても良い。またネットワーク設定が実行されたことに基づいて開始されたフローチャートは例えば、WFDによる検索に関わる処理(S405やS406、S408、S409等)を実行しない形態であっても良い。
【0104】
また上述ではS412におけるNSD検索で発見された装置のうちユニキャスト検索による検索対象となる装置をユーザによる選択無しに決定する形態を説明した。しかしこの形態に限定されず、NSD検索で発見された装置のうちユニキャスト検索による検索対象となる装置をユーザによる選択に基づいて決定し、決定された装置の検索のためのユニキャスト検索のみ実行される形態であっても良い。この形態において例えば、CPU103は、S412によるNSD検索が実行された後、ユニキャスト検索が実行される前に、NSD検索で発見された装置のリストを示す画面である検索結果画面を通信アプリにより表示する。そしてCPU103は、当該検索結果画面に表示された装置のうちユーザによって選択された装置のみをユニキャスト検索による検索対象として決定する。そしてCPU103は、決定した装置のIPアドレスが指定されたユニキャスト検索用パケットの送信を通信アプリにより仮想Android OSに指示し、その後ユニキャスト検索により発見された装置を通信アプリに登録する処理を実行する。
【0105】
また上述では、第2環境では、NSD検索が実行された後、ユニキャスト検索が実行される形態を説明した。しかしこの形態に限定されず、例えば第2環境では、NSD検索が実行されることなく、ユニキャスト検索が実行されても良い。この形態では、例えば、402の判定結果がNOである場合、CPU103は、S411とS412を実行しない。そして、CPU103は、ユーザからIPアドレスの入力を受け付けるための画面を通信アプリにより表示する。そしてCPU103は、S413で、当該画面を介してユーザから入力されたIPアドレスに対応する1又は複数の装置をユニキャスト検索するための処理を実行する。具体的にはCPU103は、ユニキャスト検索用パケットに、当該画面を介してユーザから入力されたIPアドレスを設定する。そしてCPU103は、ソケットAPIを実行することにより、当該画面を介してユーザから入力されたIPアドレスが設定されたパケットの送信を通信アプリにより仮想Android OSに指示する。
【0106】
また、第2環境では、NSD検索のための処理が通信アプリにより実行された後、NSD検索が失敗したか否かが判定されても良い。なお当該判定は、例えば、NSD検索が失敗したことが通信アプリに通知されたか否かによって行われる。そして、NSD検索が失敗したと判定された場合は、CPU103は、ユーザからIPアドレスの入力を受け付けるための画面を通信アプリにより表示しても良い。そしてCPU103は、当該画面を介してユーザから入力されたIPアドレスに対応する1又は複数の装置をユニキャスト検索するための処理を実行しても良い。これによりNSD検索が失敗して、ユニキャスト検索のために必要なIPアドレスがNSD検索では取得できなかった場合にも、ユニキャスト検索を実行することができる。
【0107】
また上述では、S402の判定結果がYESであった場合にブロードキャスト検索とWFDによる検索の両方が実行される形態を説明したが、この形態に限定されない。S402の判定結果がYESであった場合にブロードキャスト検索とWFDによる検索のうち一方のみが実行される形態であっても良い。具体的には例えば、S402の判定結果がYESであった場合にブロードキャスト検索のみが実行される形態においては、
図4のフローチャートのうち、S405、S406、S408、S409が省略される。また具体的には例えば、S402の判定結果がYESであった場合にWFDによる検索のみが実行される形態においては、
図4のフローチャートのうち、S403、S404、S408が省略され、S407の後に必ずS409が実行される。 また上述では、通信装置を検索する処理として
図4のフローチャートの処理を実行し、スキャンのための処理として
図6や
図8のフローチャートの処理を実行する形態を説明したが、この形態に限定されない。例えば、通信装置を検索する処理として
図4のフローチャートの処理を実行するが、スキャンのための処理としては
図6や
図8のフローチャートの処理でない公知の処理を実行する形態であっても良い。あるいは例えば、通信装置を検索する処理として
図4のフローチャートの処理を実行するが、通信アプリがスキャン機能を有さず、スキャンのための処理は実行しない形態であっても良い。あるいは例えば、通信装置を検索する処理として
図4のフローチャートの処理でない公知の処理を実行するが、スキャンのための処理として
図6や
図8のフローチャートの処理を実行する形態であっても良い。
【0108】
なお上述では、NSD APIの実行を
図4のフローチャートの中の処理であるS411で実行していたがこの形態に限定されない。例えば、通信アプリの起動時など、
図4のフローチャートの前のタイミングにNSD API実行を実行しても良い。この形態では例えば、
図4のフローチャートの前のタイミングにS402に相当する判定を実行する。そして、第1環境あると判定された場合には当該タイミングでは特に検索のための処理を実行せず、第1環境でないと判定された場合には、S411に相当するNSD APIを実行する。そして、
図4のフローチャートではS411を省略する。この形態では、NSDの結果を
図4のフローチャートの前に取得しても良い。なおホストOSによるNSDは継続して実行されて良く、NSDの結果が変化するごとに、NSDの結果が通信アプリにより取得されて良い。そして、S412では、新たに、NSDの結果を取得するか、既に取得されているNSDの結果を参照するのでも良い。
【0109】
本発明の目的は前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUまたはMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0110】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
【0111】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【0112】
また、本実施形態の開示は、以下の構成を含む。
(構成1)
所定のプログラムであって、
情報処理装置のコンピュータに、
前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行ステップと、
前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行ステップと、
を実行させることを特徴とするプログラム。
(構成2)
前記所定の処理は、前記Wi-Fi Directによる検索の実行を前記ホストOSに指示する処理を含むことを特徴とする構成1に記載のプログラム。
(構成3)
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記情報処理装置が属しているネットワーク上の装置を、前記Wi-Fi Directよる検索の方法と異なる第1の方法で検索するための第1の処理を前記所定のプログラムによって実行する第3実行ステップと、
前記第1の処理が実行された場合、前記第1の方法による検索の結果に基づく処理を実行する第4実行ステップと、
をさらに実行させることを特徴とする構成1又は2に記載のプログラム。
(構成4)
前記第1の処理は、ソケットAPI(Application Programming Interface)により前記ホストOSに前記第1の方法による検索の実行を指示する処理であることを特徴とする構成3に記載のプログラム。
(構成5)
前記第1の方法による検索は、ブロードキャスト検索又はマルチキャスト検索であることを特徴とする構成3又は4に記載のプログラム。
(構成6)
前記第1の方法による検索の結果に基づく処理は、前記第1の方法による検索により発見された装置を表示する処理及び、前記第1の方法による検索により発見された装置と通信する処理のうち少なくとも一方を含むことを特徴とする構成3乃至5のいずれかに記載のプログラム。
(構成7)
前記Wi-Fi Directによる検索の結果に基づく処理は、前記Wi-Fi Directによる検索により発見された装置を表示する処理を含み、
前記第1の方法による検索の結果に基づく処理は、前記第1の方法による検索により発見された装置を表示する処理を含み、
前記Wi-Fi Directによる検索により発見された装置と前記第1の方法による検索により発見された装置とが区別可能なように、前記Wi-Fi Directによる検索により発見された装置と前記第1の方法による検索により発見された装置とが表示されるように制御されることを特徴とする構成6に記載のプログラム。
(構成8)
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記情報処理装置が属しているネットワーク上の装置を、前記Wi-Fi Directよる検索の方法と異なる第2の方法で検索するための第2の処理を前記所定のプログラムによって実行する第5実行ステップと、
前記第2の処理が実行された場合、前記第2の方法による検索の結果に基づく処理を実行する第6実行ステップと、
をさらに実行させることを構成1乃至7のいずれかに記載のプログラム。
(構成9)
前記第2の処理は、ソケットAPI(Application Programming Interface)と異なるAPIにより前記ゲストOSに前記第2の方法による検索の実行を指示する処理であることを特徴とする構成8に記載のプログラム。
(構成10)
前記第2の処理は、ネットワークサービスディスカバリAPI(Application Programming Interface)により前記ゲストOSに前記第2の方法による検索の実行を指示する処理であることを特徴とする構成8又は9に記載のプログラム。
(構成11)
前記第2の方法による検索は、DNS based service discovery protocolが利用された検索であることを特徴とする構成8乃至10のいずれかに記載のプログラム。
(構成12)
前記第2の方法による検索は、ユニキャスト検索であることを特徴とする構成8に記載のプログラム。
(構成13)
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作している場合、前記第2の処理が実行された後に、前記第2の方法による検索で発見された少なくとも1つの装置を、Wi-Fi Directよる検索の方法と異なり且つ前記第2の方法と異なる第3の方法で検索するための第3の処理を前記所定のプログラムによって実行する第7実行ステップと、
前記第3の処理が実行された場合、前記第3の方法による検索の結果に基づく処理を実行する第8実行ステップと、
をさらに実行させることを特徴とする構成8乃至11のいずれかに記載のプログラム。
(構成14)
前記第3の処理は、前記第2の方法による検索で発見された装置全てに対して、前記第3の方法による検索のためのパケットを送信するための処理であることを特徴とする構成13に記載のプログラム。
(構成15)
前記第3の処理は、前記第2の方法による検索で発見された装置のうちユーザから選択された装置に対して、前記第3の方法による検索のためのパケットを送信するための処理であることを特徴とする構成13に記載のプログラム。
(構成16)
前記第3の処理は、ソケットAPI(Application Programming Interface)により前記ゲストOSに前記第3の方法による検索の実行を指示する処理であることを特徴とする構成13乃至15のいずれかに記載のプログラム。
(構成17)
前記第3の方法による検索の結果に基づく処理は、前記第3の方法による検索により発見された装置を表示する処理及び、前記第3の方法による検索により発見された装置と通信する処理のうち少なくとも一方を含むことを特徴とする構成13乃至16のいずれかに記載のプログラム。
(構成18)
前記第3の方法による検索は、ユニキャスト検索であることを特徴とする構成13乃至17のいずれかに記載のプログラム。
(構成19)
前記情報処理装置により実行された検索により発見された装置に対して、印刷を実行させるための印刷ジョブを送信するための処理を実行する送信ステップをさらに実行させることを特徴とする構成1乃至18のいずれかに記載のプログラム。
(構成20)
前記情報処理装置により実行された検索により発見された装置に対して、スキャンを実行させるためのジョブであり、前記所定のプログラムによって作成されたスキャンジョブを送信するための処理を前記所定のプログラムにより実行する送信ステップをさらに実行させることを特徴とする構成1乃至19のいずれかに記載のプログラム。
(構成21)
前記スキャンジョブを送信するための処理は、前記所定のプログラムが、前記ホストOSに前記スキャンジョブの送信を指示する処理であり、
前記ホストOS上で前記所定のプログラムが動作しており、前記ゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、前記スキャンジョブを送信するための処理が前記所定のプログラムにより実行され、
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記スキャンジョブを送信するための処理が実行されないよう前記所定のプログラムにより制御されることを特徴とする構成20に記載のプログラム。
(構成22)
前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定のプログラムとは異なるプログラムであり、前記ホストOSに標準搭載されたスキャン機能を司る他のプログラムに関する処理を前記所定のプログラムにより実行する第7実行ステップと、
をさらに実行させることを特徴とする構成21に記載のプログラム。
(構成23)
前記他のプログラムに関する処理は、前記他のプログラムを使用するようユーザを促す処理、前記他のプログラムを起動するための操作を提示する処理、前記他のプログラムを起動するか否かをユーザに確認する処理、及び前記他のプログラムを起動する処理のうち少なくとも1つであることを特徴とする構成22に記載のプログラム。
(構成24)
前記Wi-Fi Directによる検索の結果に基づく処理は、前記Wi-Fi Directによる検索により発見された装置を表示する処理、前記Wi-Fi Directによる検索により発見された装置と接続する処理及び、前記Wi-Fi Directによる検索により発見された装置と通信する処理のうち少なくとも一方を含むことを特徴とする構成1乃至23のいずれかに記載のプログラム。
(構成25)
所定のプログラムを有する情報処理装置の制御方法であって、
前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行ステップと、
前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行ステップと、
を有することを特徴とする制御方法。
(構成26)
所定のプログラムを有する情報処理装置であって、
前記情報処理装置のホストOS上で前記所定のプログラムが動作しており、前記ホストOSと異なるゲストOSを介しては前記所定のプログラムが動作していないことに基づいて、Wi-Fi Direct(登録商標)による検索を実行するための所定の処理を前記所定のプログラムによって実行し、前記ホストOS上で前記ゲストOSが動作しており、且つ前記所定のプログラムが前記ゲストOS上で動作していることに基づいて、前記所定の処理を前記所定のプログラムによって実行しないよう前記所定のプログラムによって制御する第1実行手段と、
前記所定の処理が実行された場合、前記Wi-Fi Directによる検索の結果に基づく処理を実行する第2実行手段と、
を有することを特徴とする情報処理装置。
【符号の説明】
【0113】
101 情報処理装置
151 通信装置
131 アクセスポイント