JP7433874B2 - 情報処理装置、方法、及びプログラム - Google Patents

情報処理装置、方法、及びプログラム Download PDF

Info

Publication number
JP7433874B2
JP7433874B2 JP2019223754A JP2019223754A JP7433874B2 JP 7433874 B2 JP7433874 B2 JP 7433874B2 JP 2019223754 A JP2019223754 A JP 2019223754A JP 2019223754 A JP2019223754 A JP 2019223754A JP 7433874 B2 JP7433874 B2 JP 7433874B2
Authority
JP
Japan
Prior art keywords
port
communicable
communication
determination
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019223754A
Other languages
English (en)
Other versions
JP2021093011A (ja
Inventor
裕佑 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2019223754A priority Critical patent/JP7433874B2/ja
Priority to US17/114,883 priority patent/US11526364B2/en
Publication of JP2021093011A publication Critical patent/JP2021093011A/ja
Application granted granted Critical
Publication of JP7433874B2 publication Critical patent/JP7433874B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、方法、及びプログラムに関し、特に、ネットワークデバイスドライバのインストール処理の技術に関する。
近年、情報処理装置(以下PC)の周辺機器(以下デバイス)の分野では、単機能でなく複数機能が1つのデバイスに搭載されている。このようなデバイスとして、例えば、プリント機能だけでなく、スキャン機能およびファックス機能を搭載するMFP(Multi-Function Peripheral)等が挙げられる。このようなデバイスはUSB(Universal Serial Bus)やネットワークなど様々なインターフェースを介してPCと接続することが可能である。特にネットワークにおいては、同一ネットワーク上にある複数のPCやスマートデバイスで共有してデバイスを利用することが可能になった。
デバイスの様々なインターフェースへの対応に伴い、特定のデバイスに対応するデバイスドライバをPCにインストールし、様々なインターフェース上で該特定のデバイスを検索する方法として、図13に示す方法が知られている。図13(a)は、ネットワークとUSBとの各インターフェースを考慮したドライバインストーラのUI画面フローを示し、図13(b)は、該ドライバインストーラに従ってPCが実行する処理のフローを示す。
従来、デバイス検索プロトコルを、デバイスを開発するメーカが独自に開発してきた。しかし近年、OSの標準機能として、UPnP(Universal Plug and Play)プロトコルに対応したデバイスを検索し、そのプロトコルに対応した通信ポートに関連付けてデバイスドライバをインストールすることが可能となっている。そして、メーカ独自のデバイス検索プロトコルと、OS標準のデバイス検索プロトコルとの両方に対応したデバイスが普及している。
これらのデバイス検索プロトコルを用いる場合に、ネットワークの状態やデバイスの状態によっては、デバイスを検出できない可能性がある。特許文献1には、図13(b)に示すネットワークポート生成処理において、デバイス探索プロトコルを用いてデバイスと通信し、複数の通信ポートのうち通信可能な通信ポートを特定する方法が開示されている。
特開2016-224731号公報
特許文献1では、ドライバインストール処理と、周辺機器の検索処理と、ネットワークポート生成処理内で実行する通信可能な通信ポートを決定するための通信処理とを、シーケンシャルで実行している。このため、情報処理装置と周辺機器との通信時に周辺機器からの応答に時間がかかると、各工程での処理に時間がかかり、ドライバインストールを含む周辺機器の設定処理全体に影響を及ぼしてしまう。
そこで本発明は、上記の課題に鑑み、周辺機器の設定にかかる時間の増加を抑えることを目的とする。
本発明の一実施形態は、ネットワーク経由で通信可能な周辺機器を検索する検索手段と、前記検索手段による検索結果として、検出した周辺機器それぞれの情報を、表示手段に表示させる表示制御手段と、前記検出した周辺機器のなかからユーザーにより選択された周辺機器の情報を記憶手段に記憶させる記憶制御手段と、前記選択された周辺機器に対応するドライバをインストールするインストール手段と、前記記憶手段に記憶された前記情報に基づき、前記選択された周辺機器と通信可能なポートを決定する通信可能ポート決定手段と、を有する情報処理装置であって、前記通信可能ポート決定手段による通信可能ポート決定処理が開始された後の且つ前記通信可能ポート決定処理が完了される前のタイミングに前記インストール手段によるインストール処理が開始されること、又は、前記インストール処理が開始された後の且つ前記インストール処理が完了される前のタイミングに前記通信可能ポート決定処理が開始されることにより、前記インストール処理と、前記通信可能ポート決定処理とは、並列して実行されることを特徴とする情報処理装置である。
本発明によれば、周辺機器の設定にかかる時間の増加を抑えることが可能になる。
第1の実施形態におけるシステムの構成を示すブロック図 第1の実施形態におけるPC101のハードウェア構成を示すブロック図 第1の実施形態におけるデバイス102のハードウェア構成を示すブロック図 第1の実施形態におけるPC101のソフトウェア構成を示すブロック図 第1の実施形態におけるアプリケーション401によって表示される、デバイス検索結果を示す画面 (a)第1の実施形態におけるアプリケーション401によって表示される、インストール処理中の画面(b)第1の実施形態におけるアプリケーション401によって表示される、インストール完了の旨を通知する画面 (a)第1の実施形態におけるアプリケーション401の全体のUI画面フロー(b)第1の実施形態におけるアプリケーション401の全体の処理の流れを示すフローチャート 第1の実施形態における通信可能ポート決定処理のフローチャート 第1の実施形態におけるWSDポート生成可否の判定処理のフローチャート 第1の実施形態におけるLLMNRポート生成可否の判定処理のフローチャート 第2の実施形態における通信可能ポート決定処理のフローチャート 第3の実施形態におけるアプリケーション401の全体の処理の流れを示すフローチャート (a)従来のアプリケーション401の全体のUI画面フロー(b)従来のアプリケーション401の全体の処理の流れを示すフローチャート
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものではない。また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
なお、以降の記載において、複数の処理を並列(もしくは並行)して実行することについて記載されている。ここでの「並列」(もしくは「並行」)は、複数の処理が同時に実行される場合と、複数の処理の一部が交互に実行される場合を含むものとする。後者の場合、例えば処理Aが開始され、処理Bが完了する前に処理Bが開始されるとする。そして、例えば処理A、処理Bのそれぞれ一部が微小な時間で交互に実行される場合も「並列」に含まれる。この場合、処理A、処理Bは厳密には同時に実行されていないが、処理Aの完了前に処理Bが実行されているため、例えばユーザーにとっては両者が同時に実行されることになる。
[第1の実施形態]
<システムの構成>
図1は、本実施形態における情報処理装置(以下PC)101を含むネットワークシステムの構成の一例を示すブロック図である。図1に示すシステムでは、PC101と、周辺機器(以下デバイス)102と、ルーター103とが、ネットワーク104を介して接続されている。各装置は、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルとUDP(User Datagram Protocol)とに従って、通信を行う。ネットワーク104は、ルーター103を介して外部ネットワーク105と接続されている。
デバイス102は具体的には、プリンタ、複写機、ファクシミリ、スキャナ等の周辺機器、または、それらの複合機能を有する装置である。また、デバイス102は、TCP/IPプロトコルに対応すると共に、UPnPに対応したWindows OS標準のネットワークプロトコルであるWSD(WebService on Devices)プロトコルに対応する。さらに、デバイス102は、近隣のネットワークデバイスの名前解決ができるLLMNR(Link-Local Multicast Name Resolution)プロトコルにも対応する。尚、デバイス102のWSD機能、LLMNR機能については、ユーザーがデバイス102を直接操作することで、機能の有効と無効との切り替えを行うことができる。ルーター103は、DHCP(Dynamic Host Configuration Protocol)サーバ機能を有し、PC101、デバイス102にIPアドレスを割り当てる。
<PC101のハードウェア構成>
図2は、PC101のハードウェア構成を示すブロック図である。PC101は、モニタ201と、CPU202と、ROM203と、RAM204と、補助記憶装置205と、キーボード206と、ポインティングデバイス207と、ネットワークボード208とを有する。各構成要素は、バス209を介して相互に接続され、構成要素間でデータを送信または受信することが可能である。
モニタ201には、アプリケーション401(図4参照)等のアプリケーションやドライバのUser Interface(以下、UI)が表示される。UIには、GUI(Graphical User Interface)が含まれる。CPU202は、ROM203や補助記憶装置205に記憶されている、アプリケーションやドライバ等のプログラムをRAM204にロードして、該ロードしたプログラムを実行する。これにより、以下で説明する本実施形態における処理が実行される。
ROM203には、BIOS等の基本ソフトウェアや、PC101で実行する処理を実現するための各種プログラムが記憶される。RAM204には、アプリケーションやドライバなどのソフトウェアや、それらが利用するデータが一時的に記憶される。補助記憶装置205は、例えば、ハードディスクである。補助記憶装置205は、OS、アプリケーション、ドライバ、種々のモジュールなどのソフトウェア(プログラム)が記憶される。
補助記憶装置205によって記憶されるドライバには、デバイス102を制御するデバイスドライバ(スキャナドライバ、プリンタドライバ、ファクシミリドライバ等)が含まれる。また、補助記憶装置205によって記憶されるドライバには、モニタ201における表示を制御する表示制御ドライバ、キーボード206を制御するキーボードドライバ、ポインティングデバイス207を制御するポインティングデバイスドライバが含まれる。さらに、補助記憶装置205によって記憶されるドライバには、ネットワークボード208の通信を制御するネットワークドライバが含まれる。
補助記憶装置205によって記憶されるアプリケーションには、本実施形態におけるアプリケーション401が含まれる。アプリケーション401は、TCP/IPによるデバイスの検索機能および情報設定機能を有する。尚、アプリケーション401が、これらの機能を有するモジュールを呼び出して、これらの機能を実行させるようにしてもよい。尚、これら検索機能と情報設定機能とが、それぞれ別のモジュールに設けられていてもよい。キーボード206およびポインティングデバイス207は、ユーザーからの指示を入力する入力装置である。ネットワークボード208は、ネットワーク経由で、PC101外のデバイス102との通信を行う。
<デバイス102のハードウェア構成>
図3は、デバイス102のハードウェア構成を示すブロック図である。尚、図3は、デバイス102がプリンタのケースを示しているが、前述した通り、デバイス102としてプリンタ以外の装置を採用してよい。
デバイス102は、CPU301と、ROM302と、RAM303と、通信部304と、記録部305と、操作部306と、表示部307とを有する。デバイス102を構成するこれらの構成要素は、バス308を介して相互に接続され、構成要素間でデータを送信または受信することが可能である。CPU301は、デバイス102の中央処理装置として機能し、例えば、マイクロプロセッサである。CPU301は、ROM302に記憶されているプログラムをRAM303にロードし、該ロードしたプログラムを実行することによって、通信部304、記録部305、操作部306、及び表示部307を制御する。
ROM302には、デバイス102で実行する処理を実現するための各種プログラムが記憶される。RAM303は、CPU301のワークエリアとして用いられる。RAM303には、各種データが一時的に記憶される。通信部304は、ネットワークを介して、デバイス102外のPC101等の他デバイスとの通信を行う。
記録部305は、例えば、印刷ジョブに含まれる画像データに基づき作成される記録データに応じて、紙などの記録媒体に画像を記録(印刷)する。操作部306は、ボタンやタッチパネル等の入力装置で構成され、ユーザーは、操作部306を介してデバイス102への入力を行う。表示部307には、デバイス102を操作するための画面等のGUIや、デバイス102の各種情報が表示され、ユーザーは、表示部307に表示された内容を視認する。
尚、デバイス102がプリンタ以外のデバイスである場合、デバイス102は、記録部305に代えて、または記録部305に加えて、他の構成要素を有することになる。例えば、デバイス102がスキャナであれば、デバイス102は、他の構成要素として、原稿上の画像を読み取る読取部を有する。
<アプリケーション401のソフトウェア構成>
図4は、PC101が有するアプリケーションであって、PC101がデバイス102と通信するためのアプリケーションの構成を示すブロック図である。図4に示すように、PC101は、アプリケーション401と、ドライバINFファイル402と、プリンタドライバ403と、スキャナドライバ404と、ファックスドライバ405とを有する。
アプリケーション401は、デバイス102のドライバをPC101にインストールするドライバインストーラである。具体的には、アプリケーション401は、PC101と接続しているデバイス(デバイス102が含まれる)を検索し、該検出したデバイスに関する情報をモニタ201に表示させる。その後、表示された情報のうちユーザーにより選択された情報に対応するデバイスのドライバがPC101にインストールされる。
ドライバINFファイル402には、アプリケーション401によってインストールされるドライバ(本例ではドライバ403~405の何れか1つ以上)に対応するデバイスの機種情報などのデバイス固有の情報が含まれる。
アプリケーション401は、デバイス検索部406と、検出デバイス出力部407と、ドライバインストール部408と、通信可能ポート決定部409と、通信ポート生成部410と、キュー生成部411とを有する。図4に示す各部は、PC101のCPU202が、ROM203または補助記憶装置205に記憶されているアプリケーション401のプログラムを読み出して実行することで実現される。本実施形態では、アプリケーション401は、同一ネットワーク内にあるデバイスを検索し、検出したデバイスの情報をモニタ201に表示する。一方、同一ネットワーク内にあるデバイスを検索できなかった場合、アプリケーション401は、デバイスを1台も検出できなかった旨をモニタ201に表示する。
デバイス検索部406は、ドライバ情報を含むドライバINFファイル402から得たターゲットデバイス(アプリケーション401が対応するデバイスの機種)のデバイス名情報と、デバイス検索部406が検索したデバイスのデバイス名情報とを比較する。
検出デバイス出力部407は、デバイス検索部406により検索されたデバイスのデバイス名情報と、ドライバINFファイル402から得たターゲットデバイスのデバイス名情報とが一致した場合、この一致したデバイスの情報をモニタ201に表示する。ユーザーは、モニタ201に表示されたデバイスの一覧から、所望のデバイス(所望デバイスとする)を選択する。
ドライバインストール部408は、検出デバイス出力部407により表示された一覧からユーザーが選択したデバイスに対応するドライバをインストールする。尚、検出デバイス出力部407により表示された一覧からユーザーが選択したデバイスの種類によって、ドライバインストール部408がインストールするドライバは異なる。例えば、ユーザーが選択したデバイスがプリンタの場合、アプリケーション401は、プリンタドライバ403をPC101にインストールする。また、ユーザーが選択したデバイスがスキャナの場合、アプリケーション401は、スキャナドライバ403をPC101にインストールする。さらに、ユーザーが選択したデバイスがMFPの場合、アプリケーション401はプリンタドライバ403に加えて、スキャナドライバ404とファックスドライバ405との少なくとも1つをPC101にインストールする。
通信可能ポート決定部409は、ユーザーが選択したデバイスと複数のデバイス探索用プロトコルを用いて通信し、何れの通信可能ポートが該デバイスにとって最適な通信可能ポートか判定し、決定する。
通信ポート生成部410は、通信可能ポート決定部409により決定された通信可能ポートを生成する。
キュー生成部411は、ドライバインストール部408によりインストールされた各種ドライバと、通信ポート生成部410により生成された通信ポートとを紐付けたキューを、PC101に生成する。
<アプリケーション401のGUI>
図5は、モニタ201に表示されるアプリケーション401のGUIの一例として、検出デバイス出力部407によるデバイス検索結果を示す画面(デバイス検索結果画面とする)501を示す図である。
図6(a)は、アプリケーション401のGUIの一例を示す。具体的には図6(a)は、ドライバインストール部408と、通信可能ポート決定部409と、通信ポート生成部410と、キュー生成部411との処理を実行しているときに表示される画面(インストール中画面とする)601を示している。インストール中画面601では、内部処理のステータスがメッセージ602を用いて示されている。例えば、ドライバインストール部408がドライバインストール処理を実行している場合、図6(a)に示すように、メッセージ602として「ドライバインストール中・・・」等と表示される。
図6(b)は、図6(a)に示す内部処理(具体的にはドライバインストール処理)の完了後に表示される、アプリケーション401のGUIの一例を示す図である。
<アプリケーション401の処理>
以下、本実施形態におけるアプリケーション401に従い実行される処理について、図7を用いて説明する。図7(a)は、PC101のCPU202がアプリケーション401を実行することでモニタ201に表示されるGUIの遷移を示す。図7(b)は、PC101のCPU202がアプリケーション401を実行したときの全体の処理の流れを示すフローチャートである。
まず、ユーザーがアプリケーション401を起動すると、CPU202は、図5に示すデバイス検索結果画面501を表示する。CPU202がデバイス検索結果画面501を表示した後、ステップS701において、デバイス検索部406は、PC101と接続しているデバイスの検索を自動で開始する。このとき、ネットワークだけでなく、異なるインターフェースで接続(例えば、USBケーブルなど)されるデバイスも同時に検索しても良い。デバイス検索部406によるデバイスの検索が終了すると、検出されたデバイス等の検索結果が、デバイス一覧502に表示される。尚、以下では「ステップS~」を「S~」と略記する。
S702において、ユーザーは、デバイス一覧502を確認し、デバイス一覧502に所望デバイスが含まれているか否かを判断する。デバイス一覧502に所望デバイスが含まれている場合、S703に進む。一方、デバイスが1台も表示されない等、デバイス一覧502に所望デバイスが含まれていない場合に、ユーザーが再検索ボタン503(図5参照)を押下すると、S701に戻り、デバイス検索部406がデバイス検索処理を再び実行する。尚、ユーザーが再検索ボタン503を押下すると、デバイス一覧502の表示内容はクリアされる。
S702の後、ユーザーは、デバイス一覧502に表示されているデバイスの中から、所望デバイスを選択的に決定、具体的には、デバイス一覧502に表示されているデバイスの中から所望デバイスを選択し、インストール開始504ボタンを押下する。そして、S703において、CPU202は、このユーザー入力を受け付ける。
S703の後、モニタ201に表示される画面がデバイス検索結果画面501からドライバインストール中画面601に切り替わる。このとき、S704において、CPU202は記憶制御手段として機能し、ユーザーが選択したデバイスのネットワーク情報(IPアドレスなど)をRAM204に記憶する。
S704の後、CPU202は、S705のドライバインストール処理と、S706の通信可能ポート決定処理とを並列で(並行して)実行する。このとき、ドライバインストール処理はドライバインストール部408によって実行され、通信可能ポート決定処理は通信可能ポート決定部409によって実行される。ドライバインストール処理(S705)と、通信可能ポート決定処理(S706)との両方が終了すると、S707に進む。
S707において、通信ポート生成部410は、S706における通信可能ポート決定処理の結果に応じた通信ポートを生成する。S707の通信ポート生成処理が終了すると、S708に進む。
S708において、キュー生成部411は、S705でドライバインストール部408がインストールした各種ドライバと、S707で通信ポート生成部410が生成した通信ポートとに紐付くキューを生成する。S708におけるキュー生成処理が終了すると、CPU202は、インストール処理が完了した旨を示す画面(図6(b)参照)をモニタ201に表示する。その後、ユーザーが終了ボタン604を押下すると、図7(b)に示す一連の処理が終了し、アプリケーション401が終了する。
<通信可能ポート決定処理>
図8は、通信可能ポート決定処理(図7(b)のS706)の流れを示すフローチャートである。通信可能ポート決定処理では、通信ポートに優先順位を設けており、具体的には、優先順位が高いプロトコルの順に、通信ポートの生成が可能か否かの判定処理を実行する。尚、本実施形態における通信ポートの優先順位は、WSDプロトコル、LLMNRプロトコル、固定IPアドレスの順としている。
まず、S801において、通信可能ポート決定部409は、WSDプロトコルによる通信ポート(WSD通信ポート、WSDポート等と呼ぶ)の生成が可能か否か判定する処理(WSDポート生成可否の判定処理とする)を実行し、その結果を受け取る。尚、WSDポート生成可否の判定処理の詳細については、図9を用いて後述する。
S802において、通信可能ポート決定部409は、S801におけるWSDポート生成可否の判定処理の実行結果に基づき、WSDの通信ポートを生成可能か判定する。本ステップの判定結果が真の場合、S803に進む。一方、本ステップの判定結果が偽の場合、S804に進む。
S803において、通信可能ポート決定部409は、通信可能ポートがWSDポートと決定し、通信可能ポート決定処理は終了する。
S804において、通信可能ポート決定部409は、LLMNRプロトコルによる通信ポート(LLMNRポートとする)の生成が可能か否か判定する処理(LLMNRポート生成可否の判定処理とする)を実行し、その結果を受け取る。尚、LLMNRポート生成可否の判定処理の詳細については、図10を用いて後述する。
S805において、通信可能ポート決定部409は、S804におけるLLMNRポート生成可否の判定処理の実行結果に基づき、LLMNRポートを生成可能か判定する。本ステップの判定結果が真の場合、S806に進む。一方、本ステップの判定結果が偽の場合、S807に進む。
S806において、通信可能ポート決定部409は、通信可能ポートがLLMNRポートと決定し、通信可能ポート決定処理は終了する。
S807において、通信可能ポート決定部409は、通信可能ポートが固定IPアドレスのポートと決定し、通信可能ポート決定処理は終了する。
<WSDポート生成可否の判定処理>
図9は、WSDポート生成可否の判定処理(図8のS801)の流れを示すフローチャートである。
まず、S901において、通信可能ポート決定部409は、WSDプロトコルによるネットワーク探索を開始し、ネットワーク上に存在するデバイスの検出を試みる。
S902において、通信可能ポート決定部409は、S901のデバイス探索の結果、デバイスの検出に成功したか判定する。本実施形態では具体的には、S704で記憶しておいた所望デバイスのネットワーク情報で特定されるデバイスを検出した場合、デバイスの検出に成功したとみなす。本ステップの判定結果が真の場合、S903に進む。一方、本ステップの判定結果が偽の場合、S904に進む。
S903において、通信可能ポート決定部409は、WSD通信ポートを生成可能と判定し、WSDポート生成可否の判定処理(S801)は終了する。
S904において、通信可能ポート決定部409は、WSD通信ポートを生成不可と判定し、WSDポート生成可否の判定処理(S801)は終了する。
<LLMNRポート生成可否の判定処理>
図10は、LLMNRポート生成可否の判定処理(図8のS804)の流れを示すフローチャートである。
まず、S1001において、通信可能ポート決定部409は、S704で記憶しておいた所望デバイスのネットワーク情報に基づき所望デバイスとユニキャスト通信を行う。本ステップでユニキャスト通信を行う理由は、所望デバイスに設定されているLLMNRホスト名を取得するためである。
S1002において、通信可能ポート決定部409は、LLMNRホスト名の取得に成功したか判定する。本ステップの判定結果が真の場合、S1003に進む。一方、本ステップの判定結果が偽の場合、S1006に進む。
S1003において、通信可能ポート決定部409は、S1001で取得したLLMNRホスト名を用いて名前解決を実行する。
S1004において、通信可能ポート決定部409は、S1003における名前解決に成功したか判定する。本ステップの判定結果が真の場合、S1005に進む。一方、本ステップの判定結果が偽の場合、S1006に進む。
S1005において、通信可能ポート決定部409は、LLMNRの通信ポートを生成可能と判定し、LLMNRポート生成可否の判定処理(S804)は終了する。
S1006において、通信可能ポート決定部409は、LLMNRの通信ポートを生成不可と判定し、LLMNRポート生成可否の判定処理(S804)は終了する。
<本実施形態の効果等>
本実施形態によれば、PC101に接続されているネットワークデバイス102を先に検出することで、アプリケーション401は、ドライバインストール処理(S705)と通信可能ポート決定処理(S706)とを並列で(並行して)実行することが可能になる。従って、各処理をシーケンシャルで実行するよりも、ドライバのインストール処理を早く完了することができる。
尚、前述のケースでは、通信可能ポート決定処理(図7のS706)において、WSDプロトコルとLLMNRプロトコルとを用いたが、本実施形態はこれに限定されない。例えば、IPP(InternetPrintingProtocol)やDNS(DomainNameSystem)等、他のプロトコルを追加的に用いてよいし、WSDプロトコルとLLMNRプロトコルとに代えて、これら他のプロトコルを用いても良い。
また、前述のケースでは、生成する通信ポートの優先順位をWSD、LLMNR、固定IPアドレスの順としたが、本実施形態はこれに限定されず、任意の優先順位を採用してよい。例えば、DNS、WSD、LLMNR、固定IPアドレスのように他のプロトコルを加えても良いし、アプリケーション401やデバイス102の都合に合わせて優先順位を変えても良い。
また、前述のケースでは、通信可能ポートをアプリケーション401が自動で決定する仕様としているが(S706)、例えば、アプリケーションのGUIとして、生成ポートを指定する画面を新たに設け、ユーザーが生成したい通信ポートを指定してもよい。このとき、決定された通信可能ポートの生成に失敗した場合、その旨を伝える画面を表示しても良いし、アプリケーション401が代替の通信可能ポートを自動的に決定し生成しても良い。
また、前述のケースでは、ユーザーがデバイス検索結果画面501で所望デバイスを選択(S703)した後、通信可能ポート決定処理(S706)を実行している。しかし、デバイス検索処理(S701)においてデバイスを検出した直後に通信可能ポート決定処理(S706)を実行しても良い。但し、本実施形態のように、接続しているデバイスを複数インターフェース(ネットワークとUSB、など)で検索する場合に、ユーザーがUSBデバイスを選択する可能性があるため、通信可能ポート決定処理(S706)が無駄になる可能性がある。このように、複数インターフェースにわたってデバイス検索を行う場合、ユーザーに所望デバイスと所望インターフェースとを指定させてから通信可能ポート決定処理(S706)を行う方が、不要なパケットを送信しなくて済むメリットがある。
また、従来のドライバインストーラは図13のように、始めにデバイスドライバをインストールしてから、デバイスとの接続方法を選択し、ネットワーク検索を開始して、所望デバイスのユーザー選択に応じて、ポート生成処理を実行するのが一般的である。しかし本実施形態のように、複数インターフェースの同時検索の結果、又はドライバインストール処理及びポート生成処理を1つの画面に集約することで、図7(a)のように図13(a)よりUI画面数やユーザー操作のステップ数を抑えられるメリットがある。
[第2の実施形態]
本実施形態では、通信可能ポート数が増えた場合に、好適に通信可能ポートを決定する手法について、図11を用いて説明する。尚、実施形態1と重複する構成については説明を省略する。
<通信可能ポート決定処理>
図11は、本実施形態における通信可能ポート決定処理(S706)の流れを示すフローチャートである。
まず、通信可能ポート決定部409は、S1101におけるWSDポート生成可否の判定処理と、S1102におけるLLMNRポート生成可否の判定処理とを並列で(並行して)実行する。
S1103において、通信可能ポート決定部409は、S1101におけるWSDポート生成可否の判定処理の実行結果に基づき、WSDの通信ポートを生成可能か判定する。本ステップの判定結果が真の場合、S1104に進む。一方、本ステップの判定結果が偽の場合、S1105に進む。
S1104において、通信可能ポート決定部409は、通信可能ポートがWSPポートと決定し、通信可能ポート決定処理は終了する。
S1105において、通信可能ポート決定部409は、S1102におけるLLMNRポート生成可否の判定処理の実行結果に基づき、LLMNRの通信ポートを生成可能か判定する。本ステップの判定結果が真の場合、S1106に進む。一方、本ステップの判定結果が偽の場合、S1107に進む。
S1106において、通信可能ポート決定部409は、通信可能ポートがLLMNRポートと決定し、通信可能ポート決定処理は終了する。
S1107において、通信可能ポート決定部409は、通信可能ポートが固定IPアドレスのポートと決定し、通信可能ポート決定処理は終了する。
<本実施形態の効果等>
本実施形態によれば、アプリケーション401で生成可能な通信ポート数が増加しても、通信可能ポート決定処理(S706)において、各通信ポートの生成可否の判定処理をシーケンシャルで実行するよりも処理時間を低減できる。
また、前述のケースでは、各ポートの生成可否の判定処理(S1101とS1102)が終了した後に、優先順位の高い順に各ポートの生成可否の判定結果を確認した(S1103でNO→S1105)。しかし、本実施形態はこれに限定されない。例えば、S1101とS1102との並列処理中に、WSDポート生成可否の判定処理(S1101)が先に終了し、かつ、生成する通信ポートの優先順位について、LLMNRポートよりWSDポートが高い場合を考える。このような場合に、LLMNRポートの生成可否の判定処理の終了を待たずに、通信可能ポート決定処理(S706)を終了しても良い。つまり、通信ポートを生成する優先順位が高い方の判定処理結果に基づいて、当該高い方の通信ポートの生成が可能と判定された時点で、通信可能ポート決定処理(S706)を終了しても良い。
[第3の実施形態]
前述の実施形態では、アプリケーション401により、ドライバインストール処理(S705)と通信可能ポート決定処理(S706)とを並列して(並行して)実行することで、アプリケーション401の処理時間が長くなってしまう課題を解消する技術を説明した。本実施形態では、ドライバインストール処理と通信可能ポート決定との並列処理に加えて、キュー生成時間も短縮することで、アプリケーション401の処理時間を更に短縮する技術を、図12を用いて説明する。尚、前述の実施形態と重複する構成については説明を省略する。
<アプリケーション401の処理>
以下、本実施形態におけるアプリケーション401に従い実行される処理について、図12を用いて説明する。図12は、CPU202が本実施形態におけるアプリケーション401のプログラムを実行したときの全体の処理の流れを示すフローチャートである。尚、S1201からS1204までの処理は、図7(b)のS701からS704の処理と同等のため、説明は省略する。
モニタ201に表示されるアプリケーション401のGUIがデバイス検索結果画面からドライバインストール画面601に切り替わると、CPU202は、S1205のドライバインストール処理と、S1206の通信可能ポート決定処理とを並列で(並行して)実行する。このとき、ドライバインストール処理はドライバインストール部408によって実行され、通信可能ポート決定処理は通信可能ポート決定部409によって実行される。
ドライバインストール部408がドライバインストール処理(S1205)を終了すると、S1207において、通信ポート生成部410は、S1204で事前に記憶した所望デバイスのIPアドレス情報を用いて、固定IPアドレスの通信ポートを生成する。
S1208において、キュー生成部411は、S1205でドライバインストール部408がインストールした各種ドライバと、S1207で通信ポート生成部410が生成した固定IPアドレスの通信ポートとに紐付くキューを生成する。
キュー生成部411による固定IPアドレスの通信ポートに紐付くキュー生成(S1208)が終了し、かつ、通信可能ポート決定部409による通信可能ポート決定処理(S1206)が終了すると、CPU202は、並列処理を終了する。
並列処理の終了後、S1209において、通信ポート生成部410は、S1206における通信可能ポート決定処理の結果を確認し、通信可能ポートが固定IPアドレスのポートか判定する。本ステップの判定結果が真の場合、CPU202は、ドライバインストール処理が完了した旨を示す画面(図6(b)参照)を表示し、一連の処理は終了する。一方、本ステップの判定結果が偽の場合、S1210に進む。
S1210において、通信ポート生成部410は、S1206における通信可能ポート決定処理の結果に応じた通信ポートを生成する。
S1211において、CPU202は、S1208でキュー生成部411が生成したキューに紐付けする通信ポートに関して、S1207で生成された固定IPアドレスの通信ポートから、S1210で生成された通信ポートに置換する。
S1212において、CPU202は、S1207で生成した固定IPアドレスの通信ポートを削除する。S1212の固定IP通信ポート削除処理が終了すると、CPU202は、ドライバインストール処理が完了した旨を示す画面(図6(b))を表示し、一連の処理は終了する。
<本実施形態の効果>
以上説明した通り、本実施形態によれば、印刷キューの生成時間の短縮も期待できる。よって、前述の実施形態と比較して、アプリケーション401の処理時間の更なる短縮を期待できる。
[その他の実施形態]
本発明は、前述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101・・・PC
104・・・ネットワーク
201・・・モニタ
202・・・CPU
204・・・RAM
406・・・デバイス検索部
407・・・検出デバイス出力部
408・・・ドライバインストール部
409・・・通信可能ポート決定部

Claims (15)

  1. ネットワーク経由で通信可能な周辺機器を検索する検索手段と、
    前記検索手段による検索結果として、検出した周辺機器それぞれの情報を、表示手段に表示させる表示制御手段と、
    前記検出した周辺機器のなかからユーザーにより選択された周辺機器の情報を記憶手段に記憶させる記憶制御手段と、
    前記選択された周辺機器に対応するドライバをインストールするインストール手段と、
    前記記憶手段に記憶された前記情報に基づき、前記選択された周辺機器と通信可能なポートを決定する通信可能ポート決定手段と、
    を有する情報処理装置であって、
    前記通信可能ポート決定手段による通信可能ポート決定処理が開始された後の且つ前記通信可能ポート決定処理が完了される前のタイミングに前記インストール手段によるインストール処理が開始されること、又は、前記インストール処理が開始された後の且つ前記インストール処理が完了される前のタイミングに前記通信可能ポート決定処理が開始されることにより、記インストール処理と、前記通信可能ポート決定処理とは、並列して実行される
    ことを特徴とする情報処理装置。
  2. 前記インストール処理と、前記通信可能ポート決定処理との並列処理の完了後、前記通信可能ポート決定処理の結果に応じて、前記選択された周辺機器と通信可能なポートを生成するポート生成手段と、
    前記インストール手段によりインストールされたドライバと、前記ポート生成手段により生成されたポートとに紐付けされたキューを生成するキュー生成手段と、
    を更に有することを特徴とする請求項1に記載の情報処理装置。
  3. 前記通信可能ポート決定手段は、第1ネットワークプロトコルによる通信ポートの生成が可能か不可かを判定する第1判定手段を有し、
    前記第1判定手段が可能と判定した場合、前記通信可能ポート決定手段は、通信可能ポートが前記第1ネットワークプロトコルによる通信ポートと決定する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記第1判定手段は、
    前記第1ネットワークプロトコルを用いて前記ネットワーク上を探索し、
    前記ネットワーク上で、前記記憶手段に記憶された前記情報で特定される周辺機器が検出された場合、前記第1ネットワークプロトコルによる通信ポートの生成が可能と判定する一方で、検出されなかった場合、該第1ネットワークプロトコルによる通信ポートの生成が不可と判定する
    ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記通信可能ポート決定手段は、前記第1判定手段が不可と判定した場合、第2ネットワークプロトコルによる通信ポートの生成が可能か不可かを判定する第2判定手段を有し、
    前記第2判定手段が可能と判定した場合、前記通信可能ポート決定手段は、通信可能ポートが前記第2ネットワークプロトコルによる通信ポートと決定する
    ことを特徴とする請求項3または4に記載の情報処理装置。
  6. 前記第2判定手段は、
    前記選択された周辺機器とユニキャスト通信を行うことで、該選択された周辺機器に設定されているホスト名を取得する取得手段と、
    前記取得手段により取得されたホスト名を用いて名前解決を実行する名前解決手段と、
    を有することを特徴とする請求項5に記載の情報処理装置。
  7. 前記第2判定手段は、
    前記名前解決手段による名前解決に成功した場合、前記第2ネットワークプロトコルによる通信ポートの生成が可能と判定する一方で、
    前記取得手段によるホスト名の取得に失敗した場合、または、前記名前解決手段による名前解決に失敗した場合、前記第2ネットワークプロトコルによる通信ポートの生成が不可と判定する
    ことを特徴とする請求項6に記載の情報処理装置。
  8. 前記第2判定手段が不可と判定した場合、前記通信可能ポート決定手段は、通信可能ポートが、前記記憶手段に記憶された前記情報である固定IPアドレスを用いた通信ポートと決定する
    ことを特徴とする請求項5乃至7の何れか1項に記載の情報処理装置。
  9. 前記通信可能ポート決定手段は、
    第1ネットワークプロトコルによる通信ポートの生成が可能か不可かを判定する第1判定手段と、
    第2ネットワークプロトコルによる通信ポートの生成が可能か不可かを判定する第2判定手段と
    を有し、
    前記第1判定手段による判定処理と、前記第2判定手段による判定処理とは、並列して実行される
    ことを特徴とする請求項1または2に記載の情報処理装置。
  10. 前記第1判定手段による判定処理と、前記第2判定手段による判定処理との並列処理の完了後、第1判定手段が可能と判定した場合、前記通信可能ポート決定手段は、通信可能ポートが前記第1ネットワークプロトコルによる通信ポートと決定する
    ことを特徴とする請求項9に記載の情報処理装置。
  11. 第1判定手段が不可と判定した場合、かつ、第2判定手段が可能と判定した場合、前記通信可能ポート決定手段は、通信可能ポートが前記第2ネットワークプロトコルによる通信ポートと決定し、
    第1判定手段が不可と判定した場合、かつ、第2判定手段が不可と判定した場合、前記通信可能ポート決定手段は、通信可能ポートが、前記記憶手段に記憶された前記情報である固定IPアドレスを用いた通信ポートと決定する
    ことを特徴とする請求項10に記載の情報処理装置。
  12. 前記インストール処理の完了後、前記記憶手段に記憶された前記情報である固定IPアドレスを用いた第1通信ポートを生成する第1通信ポート生成処理を実行するポート生成手段と、
    前記インストール手段によりインストールされたドライバと、前記第1通信ポートとに紐付けされたキューを生成する生成手段と、
    を更に有し、
    前記インストール手段による前記インストール処理、前記ポート生成手段による前記第1通信ポート生成処理、及び前記生成手段によるキュー生成処理と、前記通信可能ポート決定手段による前記通信可能ポート決定処理とは、並列して実行される
    ことを特徴とする請求項1に記載の情報処理装置。
  13. 通信可能ポートが前記第1通信ポートではない場合、前記ポート生成手段は、前記通信可能ポート決定処理の結果に応じて、前記選択された周辺機器と通信可能な第2通信ポートを生成し、
    前記キューに紐づく通信ポートに関して、前記第1通信ポートから前記第2通信ポートに置換される
    ことを特徴とする請求項12に記載の情報処理装置。
  14. ネットワーク経由で通信可能な周辺機器を検索する検索ステップと、
    前記検索ステップの検索結果として、検出した周辺機器それぞれの情報を、表示手段に表示させるステップと、
    前記検出した周辺機器のなかからユーザーにより選択された周辺機器の情報を記憶手段に記憶させるステップと、
    前記選択された周辺機器に対応するドライバをインストールするインストールステップと、
    前記記憶手段に記憶された前記情報に基づき、前記選択された周辺機器と通信可能なポートを決定する決定ステップと、
    を有し、
    前記決定ステップが開始された後の且つ前記決定ステップが完了される前のタイミングに前記インストールステップが開始されること、又は、前記インストールステップが開始された後の且つ前記インストールステップが完了される前のタイミングに前記決定ステップが開始されることにより、前記インストールステップと、前記決定ステップとは、並列して実行される
    ことを特徴とする方法。
  15. コンピュータに請求項14に記載の方法を実行させるためのプログラム。
JP2019223754A 2019-12-11 2019-12-11 情報処理装置、方法、及びプログラム Active JP7433874B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019223754A JP7433874B2 (ja) 2019-12-11 2019-12-11 情報処理装置、方法、及びプログラム
US17/114,883 US11526364B2 (en) 2019-12-11 2020-12-08 Method, information processing apparatus, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019223754A JP7433874B2 (ja) 2019-12-11 2019-12-11 情報処理装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2021093011A JP2021093011A (ja) 2021-06-17
JP7433874B2 true JP7433874B2 (ja) 2024-02-20

Family

ID=76312589

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019223754A Active JP7433874B2 (ja) 2019-12-11 2019-12-11 情報処理装置、方法、及びプログラム

Country Status (2)

Country Link
US (1) US11526364B2 (ja)
JP (1) JP7433874B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187447A (ja) 2008-02-08 2009-08-20 Sharp Corp プリンタドライバインストール方法
JP2016224731A (ja) 2015-05-29 2016-12-28 キヤノン株式会社 情報処理装置、情報処理方法、及びコンピュータプログラム
JP2018194910A (ja) 2017-05-12 2018-12-06 キヤノン株式会社 情報処理装置、ドライバのインストール方法およびプログラム
JP2018194906A (ja) 2017-05-12 2018-12-06 キヤノン株式会社 プログラム、方法、及び装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4464029B2 (ja) * 2001-04-19 2010-05-19 キヤノン株式会社 情報処理方法および制御プログラムおよび情報処理装置および周辺装置および応答方法および代理応答装置およびネットワークシステム
JP2006285750A (ja) * 2005-04-01 2006-10-19 Matsushita Electric Ind Co Ltd 印刷処理装置、印刷処理システム及び印刷処理方法
JP4870621B2 (ja) * 2006-09-15 2012-02-08 株式会社リコー 情報処理装置、方法、システム、プログラム及びその記録媒体
JP5284023B2 (ja) * 2007-10-05 2013-09-11 キヤノン株式会社 情報処理装置および制御方法および制御プログラム
JP5649079B2 (ja) * 2012-07-20 2015-01-07 京セラドキュメントソリューションズ株式会社 通信確立支援システムおよび電子機器
JP6624987B2 (ja) * 2016-03-23 2019-12-25 キヤノン株式会社 情報処理装置及びプログラム、制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187447A (ja) 2008-02-08 2009-08-20 Sharp Corp プリンタドライバインストール方法
JP2016224731A (ja) 2015-05-29 2016-12-28 キヤノン株式会社 情報処理装置、情報処理方法、及びコンピュータプログラム
JP2018194910A (ja) 2017-05-12 2018-12-06 キヤノン株式会社 情報処理装置、ドライバのインストール方法およびプログラム
JP2018194906A (ja) 2017-05-12 2018-12-06 キヤノン株式会社 プログラム、方法、及び装置

Also Published As

Publication number Publication date
JP2021093011A (ja) 2021-06-17
US20210182079A1 (en) 2021-06-17
US11526364B2 (en) 2022-12-13

Similar Documents

Publication Publication Date Title
JP7480375B2 (ja) 情報処理装置、制御方法及びプログラム
JP4240690B2 (ja) 情報処理装置と情報処理方法、及び情報処理システム、並びに記録媒体
JP4424711B2 (ja) ネットワークデバイス、ディレクトリサーバおよびネットワークシステム
JP6387918B2 (ja) 画像形成装置、端末装置、画像形成システム及びプログラム
KR101337160B1 (ko) 정보 처리 장치, 정보 처리 방법 및 기억 매체
JP5698557B2 (ja) 印刷システムおよび印刷システムにおける制御方法
CN110321086B (zh) 非暂时性计算机可读记录介质以及控制信息处理装置的方法
JP5264433B2 (ja) 画像形成装置及びデータ処理方法
US11494146B2 (en) Information processing apparatus creates virtual printer to transmit print job to associated image forming apparatus which supports predetermined print format
JP6857040B2 (ja) 情報処理装置及びプログラム
JP2018084893A (ja) 情報処理装置、制御方法およびプログラム
JP4770949B2 (ja) 画像形成システム、情報処理装置、プリントサーバ、画像形成装置、画像形成補助プログラム、および印字制御方法
JP7433874B2 (ja) 情報処理装置、方法、及びプログラム
JP6267503B2 (ja) 情報処理装置及びその制御方法、プログラム
JP2006262207A (ja) 画像処理方法、画像処理プログラム、画像処理システム及び情報記憶媒体
JP7534882B2 (ja) 情報処理装置、制御方法、プログラムおよび記憶媒体
JP6548460B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP2002007133A (ja) デバイスドライバーのインストール方法
JP7400495B2 (ja) 情報処理装置、情報処理システム、情報処理方法、及びプログラム
JP2009272826A (ja) 通信方法及び情報通信処理装置
JP2018081448A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP4996494B2 (ja) ファクシミリデータ送信プログラムおよびファクシミリデータ送信方法
JP2011170871A (ja) 画像形成システム、情報処理装置、画像形成補助プログラム、および印字制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240207

R151 Written notification of patent or utility model registration

Ref document number: 7433874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151