JP2020046756A - 情報処理装置、その制御方法およびプログラム - Google Patents

情報処理装置、その制御方法およびプログラム Download PDF

Info

Publication number
JP2020046756A
JP2020046756A JP2018172828A JP2018172828A JP2020046756A JP 2020046756 A JP2020046756 A JP 2020046756A JP 2018172828 A JP2018172828 A JP 2018172828A JP 2018172828 A JP2018172828 A JP 2018172828A JP 2020046756 A JP2020046756 A JP 2020046756A
Authority
JP
Japan
Prior art keywords
information
information processing
processing apparatus
address
port number
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.)
Granted
Application number
JP2018172828A
Other languages
English (en)
Other versions
JP7240118B2 (ja
Inventor
弘明 守本
Hiroaki Morimoto
弘明 守本
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 JP2018172828A priority Critical patent/JP7240118B2/ja
Priority to US16/562,695 priority patent/US11079983B2/en
Publication of JP2020046756A publication Critical patent/JP2020046756A/ja
Application granted granted Critical
Publication of JP7240118B2 publication Critical patent/JP7240118B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1236Connection management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1205Improving or facilitating administration, e.g. print management resulting in increased flexibility in print job configuration, e.g. job settings, print requirements, job tickets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/1231Device related settings, e.g. IP address, Name, Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1279Controller construction, e.g. aspects of the interface hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0853Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5076Update or notification mechanisms, e.g. DynDNS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Transfer Systems (AREA)
  • Facsimiles In General (AREA)

Abstract

【課題】通信に利用可能なポートが限定されている場合においても、USB接続された画像処理装置のWebコンテンツをアプリケーションで出力する。【解決手段】中継プログラムは他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号を含むURLを動的に生成する。そのURLを用いて、Webブラウザは中継プログラムにアクセスし、中継プログラムはHTTPリクエスト/レスポンスをUSBで印刷装置と交換する。【選択図】 図5

Description

本発明は中継プログラムを介して周辺機器との通信を行う情報処理装置、その制御方法およびプログラムに関する
従来、画像処理装置にWebサーバ機能を備え、情報処理装置上で実行されるアプリケーション(例えばWebブラウザ)により画像処理装置のWebコンテンツを表示する技術が開示されている(例えば特許文献1参照)。この場合、ユーザは、例えばWebブラウザに画像処理装置のIPアドレスを入力することで、画像処理装置のWebコンテンツが表示される。
特開2007−300480号公報
ところで情報処理装置が、IPアドレスが割り当てられていない画像処理装置と所定のインターフェースを介して通信することもある。例えば、情報処理装置と画像処理装置がUSB接続やBluetooth接続されるケースが一例としてあげられる。このようなケースにおいて、情報処理装置が画像処理装置のWebコンテンツを表示する技術がもとめられている。
そこで本発明は以下の構成を有する。すなわち、本発明の一側面によれば、IPアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置であって、
前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
前記決定手段により決定されたアドレスを、アクセス元と共有するための共有手段と、
前記固有情報と前記ポート番号を通信部に通知する通知手段を有し、
前記アクセス元が前記共有手段から取得した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とする情報処理装置が提供される。
本発明によれば、IPアドレスが割り当てられていない画像処理装置と所定のインターフェースを介して通信する場合においても、情報処理装置上で実行されるアプリケーションが画像処理装置のWebコンテンツを表示可能となる。
印刷装置と情報処理装置の電気的構成を示すブロック図 実施例1におけるシステム構成を示すブロック図 アプリケーションの備えるWebページ表示機能の画面構成を示す模式図 実施例1におけるシステム全体の通信処理を示すシーケンス図 実施例1における中継プログラムの処理を示すフローチャート 共有メモリの概念図 実施例1における通信スレッドのフローチャート 実施例2におけるシステム構成を示すブロック図 実施例2におけるシステム全体の通信処理を示すシーケンス図 実施例2における中継プログラムの処理を示すフローチャート 実施例2における通信スレッドのフローチャート 実施例3におけるシステム構成を示すブロック図 実施例3におけるシステム全体の通信処理を示すシーケンス図 実施例3における中継プログラムの処理を示すフローチャート 実施例4におけるアプリケーションの処理を示すフローチャート
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<実施形態1>
図1は情報処理装置110と情報処理装置110に接続された印刷装置120により構成されるシステムの全体構成を示すブロック図の一例である。情報処理装置110は入力I/F111、CPU112、ROM113、出力I/F114、外部記憶装置115、RAM116、入力装置117、出力装置118、入出力I/F119を有する。ROM113は初期化プログラムを保存し、外部記憶装置115はOS(オペレーティングシステム)、プリンタドライバやその他各種のデータが保存されている。RAM116は外部記憶装置115に保存される各種プログラムがワークメモリーとして使用する。入力装置117はデータ入力や動作指示に使用され入力I/F111に接続されている。出力装置118はデータ表示や状態の通知に使用され出力I/F114に接続されている。
印刷装置120はRAM121、ROM122、プリントエンジン123、CPU124、入出力I/F125から構成される。情報処理装置110と印刷装置120はUSB(ユニバーサルシリアルバス)(商標)ケーブル130により接続されている。なお、本実施形態では、情報処理装置110と印刷装置120がUSBを介して接続されるケースを記載するが他の方法で接続されている時に後述する実施形態の発明が適用されても良い。特に、印刷装置120にIPアドレスが設定されないケースにおいて利用可能である。そのため、例えば、情報処理装置110と印刷装置120がBluetoothにて接続されるケースに後述する実施形態の発明が適用されても良い。RAM121はCPU124のワークメモリーとして使用され、受信したデータの一時保存用バッファとしても利用される。ROM122は制御命令を保存している。プリントエンジン123はRAM121に保存されたデータに基づき印刷を行う。CPU124はROM122に保存されている制御命令に従い印刷装置120を制御する。なお、本実施形態においては情報処理装置110および印刷装置120の処理分担を前記のように示したが、処理の分担形態はこれに依らない。
●ソフトウェア構造
図2は本実施例の構成を概念的に示すブロック図の一例である。中継プログラム201は情報処理装置110上で稼働し、Web(ウエブ)ブラウザ202と印刷装置120との間の通信を中継する。中継プログラム201はHTTP制御部203、USB制御部204、URL決定部205、デバイス接続検知部206を備えている。HTTP制御部203は、Webブラウザ202とHTTP通信を行うと共に、Webブラウザ202から受信したHTTP(ハイパーテキストマークアップ言語)リクエストをUSB制御部204に送信する。またHTTP制御部203は、USB制御部204を経由して受信した印刷装置120からの情報を、HTTPレスポンスとしてWebブラウザ202に応答する。すなわち、HTTPリクエストについては、Webブラウザ202がアクセス元となり、指定したURLがアクセス先となる。USB制御部204は、HTTP制御部203から入力されたリクエストデータを、USBドライバ207を経由して印刷装置120に送信する。またUSB制御部204は、HTTP制御部203からの指示に応じて、USBドライバ207を経由して受信した印刷装置120からレスポンスデータを、HTTP制御部203に返信する。さらにUSBドライバ207は、USBインターフェースを介して接続されている周辺装置の情報を管理しており、要求に応じて情報処理装置110に接続されている周辺装置の情報を応答する。
デバイス接続検知部206は、USBインターフェースを介して接続されているデバイス、すなわち周辺装置の情報をUSBドライバ207から取得する。そして、デバイス接続検知部206は、取得された周辺装置の情報から、中継プログラム201と通信可能な印刷装置が接続されていることを検知する。またデバイス接続検知部206は、新しく中継プログラム201と通信可能な印刷装置が接続されたことを検知すると、URL決定部205より当該の印刷装置に対応するURLを取得する。URLはユニバーサルリソースロケータの略称であり、アクセスしようとするデータ等の所在(或いは宛先)を示す所在情報(或いは宛先情報)であり、アドレスに相当する。URL決定部205は、Webブラウザ202がHTTP制御部203とHTTP通信を行う際に利用するURLを決定する。URL決定部205により決定されるURLはhttp://localhost:<利用可能なTCPポート番号>のようにTCPポート番号を含む形式である。なお、以降においては、TCPポート番号を単にポート番号と記載することもある。デバイス接続検知部206は、印刷装置120を識別する情報(例えば後述するようにベンダーID、製品ID、シリアル番号などである)とURL決定部205から取得した当該印刷装置に対応するURLを関連付けて、共有メモリ212に保存する。共有メモリ212は中継プログラム201と情報処理装置110上で稼働する任意のアプリケーション211が参照可能な領域である。共有メモリは、アプリケーション211と中継プログラム201とが、印刷装置の固有情報や、印刷装置に固有のURLを共有するために利用される。アプリケーション211は情報処理装置110に接続されている印刷装置のWebページを表示する機能を備えている。該機能の一例は図3の<Webページ表示ボタン303>で後述する。アプリケーション211のWebページ表示機能が実行されると、アプリケーション211は共有メモリ212を参照し、指定された印刷装置に関連付けてされたURLを取得する。その後、アプリケーション211は共有メモリ212より取得したURLを指定して、Webブラウザ202を起動する。
印刷装置120は情報処理装置110に接続可能な周辺装置のひとつであり、USB制御部208、HTTP制御部209、Webコンテンツ管理部210を備えている。USB制御部208は、情報処理装置110のUSBドライバ207から受信したデータのHTTP制御部209への入力及びUSBドライバ207からの要求に応じてHTTP制御部209から取得したデータの応答を行う。HTTP制御部209は、USBドライバ207から入力されたデータをHTTPリクエストとして解釈し、リクエストで指定されたコンテンツをWebコンテンツ管理部210から取得する。またHTTP制御部209は、Webコンテンツ管理部210から取得したコンテンツをHTTPレスポンスの形式に変換し、USB制御部208に返信する。Webコンテンツ管理部210は、HTTP制御部209から指定されたWebコンテンツを生成しHTTP制御部209へ応答する。Webコンテンツ管理部210の生成するコンテンツの一例としては、HTML(Hyper Markup Language)やXML(Extensible Markup Lanuguage)、画像データなどが挙げられる。
図3は、アプリケーション211により提供される情報処理装置110に接続されている印刷装置のWebページを表示する機能の一例を示す。画面301は、ユーザが情報処理装置110に接続された印刷装置の中から任意の印刷装置を選択する印刷装置選択手段302と、印刷装置選択手段302により選択された印刷装置のWebページを開くWebページ表示ボタン303により構成される。Webページ表示ボタン303が押下されると、アプリケーション211は共有メモリ212を参照し、印刷装置選択手段302により選択された印刷装置に関連付けされたURLを取得する。その後、アプリケーション211は取得したURLを指定して、Webブラウザ202を起動する。図3は、ユーザーインターフェースの一例である。
●USBを介したコンテンツ取得手順
図4では、本実施例における通信処理の全体像を示す。印刷装置120の左側の要素は情報処理装置110のソフトウェア構成要素である。したがって印刷装置120による処理工程はCPU124により、情報処理装置110による処理工程はCPU112により実行される。印刷装置120を情報処理装置110にUSBインターフェース経由で接続すると(S401)、USBドライバ207は接続された印刷装置120のデバイス情報を生成する(S402)。S402で生成されるデバイス情報には、印刷装置120のUSBデバイスディスクリプタやストリングディスクリプタ、インターフェイスディスクリプタ等のUSB仕様で定められる各種ディスクリプタ情報が含まれる。
中継プログラム201は、初めに情報処理装置110に接続されている印刷装置120のデバイス情報をUSBドライバ207から取得する(S403)。次に中継プログラム201は、Webブラウザ202とHTTP通信を行うためのポート番号を含むURLを決定する(S404)。中継プログラム201は、他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないTCPポート番号の中から、本実施形態の処理に用いるTCPポート番号を動的に選択する。この処理を行うことにより、例えば、アプリケーションと中継プログラムとの間のTCP/IP通信に利用するTCPポート番号が固定値として設定されている場合と比較して、より利便性の高い処理をユーザに提供することが可能となる。例えば、固定値として設定されたTCPポート番号が、情報処理装置の設定やセキュリティ機能などにより利用不可とされた場合であっても、S404により使用可能なポート番号が選択される。そのため、後述する処理を継続的に実行することが可能となる。
次に中継プログラム201は、S403で取得した印刷装置120のデバイス情報と、S404で決定したURLを関連付けて共有メモリ212に記録する(S405)。次に中継プログラム201は、Webブラウザ202と実際にHTTP通信を行う通信スレッド41を起動する(S406)。なお、通信スレッド41を通信部と呼ぶこともある。このとき中継プログラム201は、S404で決定したURLと該当URLに関連付けされた印刷装置のデバイス情報を通信スレッド41に通知する。ここで通信スレッドは、印刷装置ごとに生成されて起動されてよい。例えば図4では印刷装置は1台であるので生成された通信スレッドも一つである。しかし、複数の印刷装置が接続され、それぞれのデバイス情報が取得されていれば(あるいはさらにそれぞれのURLが生成されて記録されていれば)、対応する複数の通信スレッドが生成されてよい。
一方、アプリケーション211はユーザ操作によりWebページ表示ボタン303が押下されると(S407)、共有メモリ212を参照し図3の画面において選択された印刷装置120に関連付けされたURLを取得する(S408)。図4では、S408で取得されるURLは、中継プログラム201がS405で保存した、USBデバイスである印刷装置120のUSBデバイス情報と関連付けられたURLである。その後、アプリケーション211は、S408にて取得したURLを指定してWebブラウザ202を起動する(S409)。Webブラウザ202は指定されたURLに対してWebコンテンツ取得のためのHTTPリクエスト(GETリクエスト)を送信する(S410)。本実施形態では指定されたURLに対応する通信スレッドは通信スレッド41である。そのため、S410にて送信されたHTTPリクエストは、通信スレッド41が一旦受信する。HTTPリクエストを受信した通信スレッド41は、中継プログラム201からS406において通知された印刷装置のUSBデバイス情報から通信すべき印刷装置120を特定する。そして、通信スレッド41は、USBドライバ207経由で、特定された印刷装置120へHTTPリクエストを送信する(S411〜S412)。
通信スレッド41は、たとえば以下のようにしてUSBにより印刷装置120とHTTP通信を行う。通信スレッド41は、通知されたURLに含まれたポート番号を宛先ポート番号とするHTTPリクエストを待ち受ける。通信スレッド41は、該当するHTTPリクエストを受信すると、USBのプロトコルに従ってフレーム化し、USB経由で当該HTTPリクエストを印刷装置120に転送する。また通信スレッド41は、印刷装置120からUSB経由でUSBフレームを受信すると、そのペイロードであるHTTPレスポンスをWebブラウザ202に転送する。このHTTPレスポンスは印刷装置120のHTTP制御部209により生成済みであり、通信スレッド41は、そのまま転送すればよい。印刷装置120では、例えばUSB制御部208が、情報処理装置110から受信したUSBフレームのペイロードからHTTPリクエストを取り出してHTTP制御部209に渡す。逆に、USB制御部208は、HTTP制御部209から受信したHTTPレスポンスを、USBフレームのペイロードとしてから情報処理装置110に送信する。もちろんこれは一例であって処理の分担や内容などについてはこの限りではない。
通信スレッド41はHTTPリクエストの送信が完了すると、次に送信したHTTPリクエストに対するHTTPレスポンスをUSBドライバ207経由で印刷装置120から取得する(S413〜S414)。なお印刷装置120はWebコンテンツ管理部210によりHTTPリクエストに対してHTTPレスポンスを返す。S413〜S414の処理により取得したHTTPレスポンスを取得した通信スレッド41は、Webブラウザ202に取得したHTTPレスポンスを応答する(S415)。S415でHTTPレスポンスを受信したWebブラウザ202は、受信したHTTPレスポンスに含まれるWebコンテンツの情報を表示する(S416)。このような通信処理により、Webブラウザ202はUSBインターフェースを介して接続された印刷装置120の生成するWebコンテンツを表示することが可能となる。また中継プログラム201がたとえば複数のスレッドを生成することで、複数のコネクションを実現できる。
●中継プログラム201による処理手順
図5では、図4の処理シーケンスにおける中継プログラム201の処理をより詳細に説明する。なお本実施例では、中継プログラム201は、インストーラーやユーザによる操作などにより、事前に情報処理装置110に配置(インストール)済みであることを前提とする。中継プログラム201は、情報処理装置110の起動と共に処理を開始する(S501)。つまり、中継プログラム201は、情報処理装置110の起動と共に自動的に起動される常駐プログラムである。次に中継プログラム201は、情報処理装置110にUSBインターフェース経由で接続されている周辺装置のデバイス情報を、USBドライバ207から取得する(S502)。その後中継プログラム201は、S502で取得した情報から中継プログラム201と通信可能な印刷装置120が情報処理装置110に接続されているか否かを判定する(S503)。具体的な判定方法として、接続された装置のインターフェイスディスクリプタ情報を参照し、所定のプロトコルをサポートしている装置を中継プログラム201が通信可能であると見なす方法が挙げられる。プロトコルの一例としては、USB経由でのIPP(Internet Printing Protocol)を行うIPP over USBが挙げられる。S503にてYESと判定した場合、中継プログラム201は印刷装置120及びWebブラウザ202と実際に通信を行う通信スレッドが起動済みであるか否かを判定する(S504)。本実施例では中継プログラム201が共有メモリ212を参照し、当該印刷装置に関連付けされたURLが既に記録済みかによって通信スレッドの起動有無を判定することとする。
S504にて通信スレッドが未作成であると判定した場合、中継プログラム201は通信スレッド41がWebブラウザ202との通信に利用するポート番号を含むURLを決定する(S505)。URLの一例としては以下である。
http://localhost:61234/index.html
ここでURLに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択されるものとする。なお一般的なオペレーティングシステムでは使用されているTCPやUDPのポート番号を知ることができる。そこで、例えば遮断されているポート番号は予め記憶しておけば、未使用かつ遮断されていないポート番号のうちから使用するポート番号を選択できる。これは後述する他の実施形態についても同様である。また、ホスト名はここに示したようにループバックアドレスであってよい。次に中継プログラム201は、S502で取得したUSBデバイス情報から印刷装置120を一意に特定するための固有情報を取得する(S506)。具体的な固有情報としては、印刷装置120に組み込まれているストリングディスクリプタの中のベンダーID、製品ID、シリアル番号を利用する。本実施例ではそれぞれの値は以下の値であると仮定する。
ベンダーID:VID_04A9
製品ID:PID_1234
シリアル番号:ABC1234
次に中継プログラム201は、S505で決定したポート番号を含むURLと、S506で取得した印刷装置120の固有情報を関連付けて共有メモリ212に記録する(S507)。次に中継プログラム201は、印刷装置120及びWebブラウザ202と実際に通信を行う通信スレッド41を起動する(S508)。この時、中継プログラム201は起動した通信スレッド41にS505で決定したポート番号を含むURLと、S506で取得した印刷装置120の固有情報とを通知する。その後中継プログラム201は、現在の情報処理装置110の状態情報を取得し、情報処理装置110が終了中(シャットダウン処理中)か否かを判断する(S509)。S509にて終了中であると判断した場合は、中継プログラム201は処理を終了する。
また、中継プログラム201はS503およびS504の判定処理にてNOと判定した場合も(すなわち通信可能な印刷装置が接続されていないと判定した場合、または、印刷装置と通信する通信スレッドが作成済みと判定した場合)、S509の処理に進む。なお本実施例では、S505におけるURL決定処理は通信スレッド起動前に実施しているが、起動された通信スレッド自身がS505に相当するURL決定処理を実施する構成であってもよい。また、印刷装置の固有情報としてストリングディスクリプタの中のベンダーID、製品ID、シリアル番号を利用したが、これらの情報に限定されず印刷装置を一意に特定する情報であればよい。以上の手順により、中継プログラム201は、USBデバイス情報を取得して、作成したURLと関連付けて保存し、そのURLを宛先とするHTTPリクエスト及び対応するHTTPレスポンスを中継するための通信スレッドを生成する。
図6は、共有メモリ上にポート番号を含むURLと、印刷装置120の固有情報が関連付けて記録されている様子を概念的に示す。例えば、印刷装置の固有情報である"VID_04A9&PID_1234&ABC1234"はhttp://localhost:61234/index.htmlと関連付けされて記録されていることを示す。任意のアプリケーションは本情報を参照することで、各印刷装置に対応するURLを取得することが可能である。
●通信スレッドによる処理手順
図7では、中継プログラム201により起動される通信スレッド41の処理を詳細に説明する。通信スレッド41は、中継プログラム201により起動される(S701)。次に通信スレッド41は、中継プログラム201より通知されたURLからポート番号を取得し、該ポート番号に対する通信開始処理を行う(S702)。具体的には、通信スレッド41は、取得されたポート番号に対するリクエストがないかを判定する。この処理により、以降該ポート番号を利用した通信が可能となる。なお通信スレッド41は、ステップS702の後にはHTTPリクエストの受信待ちとなっていてよい。次に通信スレッド41は、アプリケーション211により起動されたWebブラウザ202からHTTPリクエストを受信する(S703)。ここでは、以下のHTTPリクエストを受信したと仮定する。
GET /index.html HTTP/1.1
Host: localhost:61234
次に通信スレッド41は、中継プログラム201より通知された印刷装置120の固有情報と一致する印刷装置の特定を試みる(S704)。具体的には、通信スレッド41には、S508において中継プログラムより起動される際に固有情報が通知されている。そのため、通信スレッド41はOSから情報処理装置110にUSB接続されているデバイスリストを取得する。そして、通信スレッド41は、S508において通知された固有情報に対応する装置をデバイスリスト特定することでS704が実現される。なお、この際、通信スレッド41は、印刷装置120と通信するために必要な情報をOSから取得する。個の情報を後述するS706で使用することでUSB通信が実現される。次に通信スレッド41は、S704で印刷装置の特定に成功したか否かを判定する(S705)。中継プログラム201より通知された印刷装置120の固有情報と一致する印刷装置が特定できない場合、通信スレッド41はWebブラウザ202へ通信すべき印刷装置が特定できなかったことを示すHTTPレスポンスを応答する(S711)。ここでは、以下のHTTPレスポンスを送信する。
HTTP/1.1 404 Not Found
その後、通信スレッド41はS702にて通信処理を開始したポート番号に対する通信終了処理を実行する(S712)。
印刷装置120の固有情報と一致する印刷装置が特定できた場合、次に通信スレッド41は受信したHTTPリクエストをUSBドライバ207経由で印刷装置120に送信(Write)する(S706)。続いて通信スレッド41は、送信したHTTPリクエストに対するレスポンスをUSBドライバ207経由で印刷装置120から受信(Read)する(S707)。その後通信スレッド41は、受信したレスポンスをHTTPレスポンスとしてWebブラウザ202へ応答する(S708)。次に通信スレッド41は、印刷装置120の電源状態を確認し、オンライン状態か否か(つまり通信可能か否か)を判定する(S709)。印刷装置120がオンライン状態であると判定した場合、次に通信スレッド41は情報処理装置110の状態情報を取得し、情報処理装置110が終了中か否かを判断する(S710)。S710にて情報処理装置110が終了中でないと判断した場合は、通信スレッド41はS703に戻り再度Webブラウザ202からのHTTPリクエストの受信を行う。一方、S709にて印刷装置120がオフライン状態、またはS710にて情報処理装置110が終了中であると判断した場合、通信スレッド41はS702にて通信処理を開始したポート番号に対する通信終了処理を実行する(S712)。その後通信スレッド41は、共有メモリ212に記録されている印刷装置120とURLの関連付け情報を削除する(S713)。その後、通信スレッド41は処理を終了する(S714)。
以上説明したように、本実施形態によると中継プログラム201は1つの印刷装置に対しポート番号を含むURLを生成する。この際、中継プログラム201は、ポート番号として他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から、好ましくは動的に、選択する。そのため、利用可能なポートが限定されている場合においても情報処理装置110で実行されるWebブラウザ202がUSB接続された印刷装置と適切に通信することが可能となる。
また、本実施形態によると中継プログラム201は印刷装置が情報処理装置に接続される毎にポート番号を含むURLを生成し、そのポート番号を用いてWebブラウザと通信を行うスレッドを個別に生成する。そのため、複数の機種が接続されてもWebブラウザ202とそれぞれの印刷装置は適切に通信が可能となる。
さらに、本実施形態によると生成されたURLは印刷装置の固有情報と関連付けて共有メモリ212へ記録される。そのため、任意のアプリケーションが共有メモリ212に記録されているURLを取得することで、任意のアプリケーションがWebブラウザを起動し印刷装置のWebページを表示することが可能となる。すなわち、情報処理装置に複数の印刷装置がUSB接続されている場合にも、それぞれについて割り当てたポート番号を含むURLを決定し、それぞれの印刷装置の固有情報と対応づけて記憶できる。これにより、個々の印刷装置に対してそれぞれに固有のアクセス先(URL)を割り当てることができ、アプリケーションあるいはWebブラウザから、複数の印刷装置のそれぞれを対象としてアクセス可能である。
なお上記実施形態において、印刷装置が情報処理装置に接続されて通信可能状態になるかどうかを確認し、ならない場合、すなわち非接続または通信不能である場合には、通信スレッドの処理が終了されてもよい。また、通信相手となるデバイス(印刷装置)が特定できない場合は、たとえば通信スレッドは、Webブラウザに対し通信すべきデバイスが見つからない旨の情報(HTTP 404 Not found)を応答してよい。
<実施形態2>
本実施形態では、実施形態1とは異なる構成で課題を解決する例を述べる。本実施形態では、WebブラウザからのHTTPリクエストを中継プログラム自身が中継する。そして、Webブラウザから中継プログラムへ送信するHTTPリクエストパケットの中に、リクエストを送信すべき印刷装置を特定する固有情報を含める。HTTPリクエストを受信した中継プログラムは、受信した固有情報から印刷装置を一意に特定し、USBインターフェース経由でHTTPパケットの送受信を行う。なお、以後、特に言及が無い点は、実施形態1と同等の構成である。
●ソフトウェア構造
図8は本実施例の構成を概念的に示すブロック図の一例である。中継プログラム801は情報処理装置110上で稼働し、Webブラウザ202と印刷装置120との間の通信を中継する。中継プログラム801はHTTP制御部802、USB制御部803、URL決定部804、URL保存部805を備えている。HTTP制御部802は、Webブラウザ202とHTTP通信を行うと共に、Webブラウザ202から受信したHTTPリクエストをUSB制御部803に送信する。またHTTP制御部802は、USB制御部803を経由して受信した印刷装置120からの情報を、HTTPレスポンスとしてWebブラウザ202に応答する。さらにHTTP制御部802はWebブラウザ202が中継プログラム801にHTTPリクエスト送信を開始する際の初期URLを共有メモリ212に保存する。またHTTP制御部802はWebブラウザ202から受信したHTTPリクエストパケットを解析し、通信対象の印刷装置を特定すると、URL決定部804より当該の印刷装置に対応するURLを取得する。さらにHTTP制御部802は、印刷装置120を識別する情報とURL決定部804から取得した当該印刷装置に対応するURLを関連付けて、URL保存部805に記録する。一方、アプリケーション806のWebページ表示機能が実行されると、アプリケーション806は共有メモリ212を参照し、Webブラウザ202が中継プログラム201にHTTPリクエスト送信を開始する際の初期URLを取得する。その後、アプリケーション806は共有メモリ212より取得したURLを指定して、Webブラウザ202を起動する。
●USBを介したコンテンツ取得手順(第2実施形態)
図9では、本実施例における通信処理の全体像を示す。なお図9では、S904に先立って、USB接続された印刷装置のデバイス情報(固有情報を含む)を情報処理装置110が取得済みであり、所定の場所に保存されている。なお、所定の場所とはOSにより決められている保存場所である。デバイス情報は例えば、アプリケーション806がS904に先立ってUSBドライバ207から取得しておいてもよい。
中継プログラム801は、起動直後にWebブラウザ202が中継プログラム801にHTTPリクエスト送信を開始する際の初期URLを生成する(S901)。この時生成するURLはhttp://localhost:<利用可能なポート番号>のようにポート番号を含む形式である。また、ポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択される。ここでは例えばポート番号として65432が選択されたものとする。次に中継プログラム801は、生成した初期URLを共有メモリ212に保存する(S902)。この後中継プログラム801は、たとえば生成したポート番号を宛先とするHTTPリクエストを待ち、該当するHTTPリクエストが到着すればそれを受信する。
アプリケーション806はユーザ操作によりWebページ表示ボタン303が押下されると、共有メモリ212を参照しS902で保存された初期URLを取得する(S903)。次にアプリケーション806は、ユーザがアプリケーション806の画面上で選択した印刷装置の固有情報を取得する(S904)。ここでは、印刷装置120に組み込まれているデバイスディスクリプタとストリングディスクリプタの中のベンダーID、製品ID、シリアル番号を取得することとし、それぞれの値は以下の値であると仮定する。
ベンダーID:VID_04A9
製品ID:PID_4321
シリアル番号:PID_4321
次に、アプリケーション806はS903で取得したURLとS904で取得した印刷装置120の固有情報を組み合わせて、Webブラウザ202の起動時に指定するURLを生成する(S905)。ここでは、以下のURLを生成したと仮定する。
http://localhost:65432/VID_04A9&PID_4321&PID_4321
その後、アプリケーション806はS905で作成したURLを指定して、Webブラウザ202を起動する(S906)。Webブラウザ202は指定されたURLに対してWebコンテンツ取得のためのHTTPリクエスト(GETリクエスト)を送信する(S907)。
S907にて送信されたHTTPリクエストは、S901で生成したURLを宛先としており、中継プログラム801が一旦受信する。ここでは、以下のHTTPリクエストを受信したと仮定する。
GET /VID_04A9&PID_4321&PID_4321 HTTP/1.1
Host: localhost:65432
HTTPリクエストを受信した中継プログラム801は、HTTPリクエストに含まれるURL情報を解析し、URLからHTTPリクエストを送信すべき印刷装置の固有情報を取得する(S908)。次に中継プログラム801は通信スレッド91がWebブラウザ202と通信を行うためのポート番号を含むURLを決定する(S909)。ここでもURLに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択するものとする。その後、中継プログラム801は通信スレッド91を起動する(S910)。この時、中継プログラム801はS908で取得した印刷装置120の固有情報と、起動した通信スレッド91にS909で決定したポート番号を含むURLを通知する。次に中継プログラム801は、S907で受信したHTTPリクエストに対する応答として、S909で決定したURLへのリダイレクトを指示するHTTPレスポンスをWebブラウザ202へ送信する。ここでは、以下のHTTPレスポンスを送信したと仮定する。
HTTP/1.1 307 Tempolary Redirect
Location: localhost:65000/index.html
なお、リダイレクト先のアドレスとして指定したlocalhost:65000/index.htmlはS909で決定したポート番号を含むURLである。ここでリダイレクト指示は、アプリケーションとWebブラウザとが、印刷装置の固有情報や、印刷装置に固有のURLを共有するために利用される。
リダイレクト応答を受信したWebブラウザ202は、指示されたアドレス(ここでは送信スレッド用URL)に対し再度S907で送信したHTTPリクエストを送信する(S912)。S912にて送信されたHTTPリクエストは、通信スレッド91が受信する。HTTPリクエストを受信した通信スレッド91は、中継プログラム801から通知された印刷装置の固有情報から通信すべき印刷装置を特定し、USBドライバ207経由で該印刷装置へHTTPリクエストを送信する(S913〜S914)。通信スレッド91はHTTPリクエストの送信が完了すると、次に送信したHTTPリクエストに対するHTTPレスポンスをUSBドライバ207経由で印刷装置120から取得する(S915〜S916)。S915〜S916の処理により取得したHTTPレスポンスを取得した通信スレッド91は、Webブラウザ202に該HTTPレスポンスを応答する(S917)。S917でHTTPレスポンスを受信したWebブラウザ202は、該HTTPレスポンスに含まれるWebコンテンツの情報を表示する(S918)。このような通信処理により、Webブラウザ202はUSBインターフェースを介して接続された印刷装置120の生成するWebコンテンツを表示することが可能となる。
●中継プログラム801による処理手順(第2実施形態)
図10では、本実施形態における中継プログラム801の処理をより詳細に説明する。なお本実施形態では、中継プログラム801は、インストーラーやユーザによる操作などにより、事前に情報処理装置110に配置(インストール)済みであることを前提とする。中継プログラム801は、情報処理装置110の起動と共に処理を開始する(S1001)。次に中継プログラム801は、Webブラウザ202が中継プログラム801にHTTPリクエスト送信を開始する際の初期URLを生成する(S1002)。ここでURLに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択されるものとする。次に中継プログラム801は、共有メモリ212に生成した初期URLを保存する(S1003)。その後、中継プログラム801は、S1002で生成したURLに含まれるポート番号に対して通信開始処理を行う(S1004)。続いて、中継プログラム801はアプリケーション806により起動されたWebブラウザ202からHTTPリクエストを受信する(S1005)。なお中継プログラム801は、ステップS1004の後にはHTTPリクエストの受信待ちとなっていてよい。HTTPリクエストを受信した中継プログラム801は、受信したHTTPリクエストに含まれるURL情報を解析し、URLからHTTPリクエストを送信すべき印刷装置の固有情報を取得する(S1006)。次に中継プログラム801は、S1006で取得した印刷装置の固有情報がすでにURL保存部805に保存されているか否かを判定する(S1007)。
S1007にてNOと判断した場合、中継プログラム801は通信スレッドがWebブラウザ202と通信を行うためのポート番号を含むURLを決定する(S1008)。その後中継プログラム801は、S1008で決定したポート番号を含むURLと、S1006で取得した印刷装置120の固有情報を関連付けてURL保存部805に保存する(S1009)。続いて中継プログラム801は、通信スレッド91を起動し(S1010)、S1008で決定したポート番号を含むURLと、S1006で取得した印刷装置120の固有情報を通信スレッド91に通知する。その後中継プログラム801はS1005で受信したHTTPリクエストに対する応答として、S1008で決定したURLへのリダイレクトを指示するHTTPレスポンスをWebブラウザ202へ送信する(S1011)。
一方、S1007にてYESと判定した場合、中継プログラム801はS1006で取得した印刷装置の固有情報に関連付けされたURLをURL保存部805から取得する(S1012)。その後、中継プログラム801はS1005で受信したHTTPリクエストに対する応答として、S1012で取得したURLへのリダイレクトを指示するHTTPレスポンスをWebブラウザ202へ送信する(S1011)。次に中継プログラム801は情報処理装置110の状態情報を取得し、情報処理装置110が終了中か否かを判断する(S1013)。S1013にて情報処理装置110が終了中でないと判断した場合は、中継プログラム801はS1005に戻り再度Webブラウザ202からのHTTPリクエストの受信を行う。一方、S1013にて情報処理装置110が終了中であると判断した場合、中継プログラム801はS1004にて通信処理を開始したポート番号に対する通信終了処理を実行する(S1014)。その後中継プログラム801は、S1003にて保存した初期URL情報を共有メモリ212から削除する(S1015)。その後、中継プログラム801は処理を終了する(S1016)。
●通信スレッドによる処理手順(第2実施形態)
図11では、中継プログラム801により起動される通信スレッド91の処理を詳細に説明する。通信スレッド91は、中継プログラム801により起動される(S1101)。次に通信スレッド91は、中継プログラム801より通知されたURLからポート番号を取得し、該ポート番号に対する通信開始処理を行う(S1102)。次に通信スレッド91は、アプリケーション806により起動されたWebブラウザ202からHTTPリクエストを受信する(S1103)。ここでは、以下のHTTPリクエストを受信したと仮定する。
GET /index.html HTTP/1.1
Host: localhost:65000
次に通信スレッド91は、中継プログラム801より通知された印刷装置120の固有情報と一致する印刷装置を特定する(S1104)。なお、S1104で行われる処理は、S705と同じである。次に通信スレッド91は、S1104で印刷装置の特定に成功したか否かを判定する(S1105)。中継プログラム801より通知された印刷装置120の固有情報と一致する印刷装置が特定できない場合、通信スレッド91はWebブラウザ202へ通信すべき印刷装置が特定できなかったことを示すHTTPレスポンスを応答する(S1111)。その後、通信スレッド91はS1102にて通信処理を開始したポート番号に対する通信終了処理を実行する(S1112)。印刷装置120の固有情報と一致する印刷装置が特定できた場合、次に通信スレッド91は、受信したHTTPリクエストをUSBドライバ207経由で印刷装置120に送信(Write)する(S1106)。続いて通信スレッド91は、送信したHTTPリクエストに対するレスポンスをUSBドライバ207経由で印刷装置120から受信(Read)する(S1107)。その後通信スレッド91は、受信したレスポンスをHTTPレスポンスとしてWebブラウザ202へ応答する(S1108)。次に通信スレッド91は、印刷装置120の電源状態を確認し、オンライン状態か否かを判定する(S1109)。印刷装置120がオンライン状態であると判定した場合、次に通信スレッド91は情報処理装置110の状態情報を取得し、情報処理装置110が終了中か否かを判断する(S1110)。S1110にて情報処理装置110が終了中でないと判断した場合は、通信スレッド91はS1103に戻り再度Webブラウザ202からのHTTPリクエストの受信を行う。一方、S1109にて印刷装置120がオフライン状態、またはS1110にて情報処理装置110が終了中であると判断した場合、通信スレッド91はS1102にて通信処理を開始したポート番号に対する通信終了処理を実行する(S1112)。その後通信スレッド91は、URL保存部805に記録されている印刷装置120の固有情報とURLの関連付け情報を削除する(S1113)。その後、通信スレッド91は処理を終了する(S1114)。以上説明したように、本実施形態によると、Webブラウザ202と中継プログラム801との間の通信に利用するポート番号と、Webブラウザ202と通信スレッド91との間の通信に利用するポート番号は、動的に選択される。この際、選択されるポート番号は、それぞれ他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から選択される。そのため、利用可能なポートが限定されている場合においても情報処理装置110で実行されるWebブラウザ202がUSB接続された印刷装置と適切に通信することが可能となる。
また中継プログラム801はWebブラウザ202から印刷装置の固有情報を含むHTTPリクエストを受信することで、通信すべき印刷装置を特定するため、複数の機種が接続されてもWebブラウザ202とそれぞれの印刷装置は適切に通信が可能となる。
<実施形態3>
先に示した2つの実施形態では中継プログラムは、インストーラーやユーザによる操作などにより、事前に情報処理装置110に配置(インストール)済みであり、かつ、情報処理装置の起動と同時に起動されることを前提とした。本実施形態では、中継プログラムは常駐プログラムとして動作しない構成について述べる。すなわち、ユーザ操作によりアプリケーションのWebページ表示ボタンが押下されたときに、アプリケーション自身が中継プグラムを起動する。なお、以後、特に言及が無い点は、実施形態1または実施形態2と同等の構成である。
図12は本実施例の構成を概念的に示すブロック図の一例である。中継プログラム1201はアプリケーション1208によって起動され、Webブラウザ202と印刷装置120との間の通信を中継する。中継プログラム1201はHTTP制御部1202、USB制御部1203、URL決定部1204、URL保存部1205、ブラウザ起動部1206、デバイス接続検知部1207を備えている。HTTP制御部1202は、Webブラウザ202とHTTP通信を行うと共に、Webブラウザ202から受信したHTTPリクエストをUSB制御部1203に送信する。またHTTP制御部1202は、USB制御部1203を経由して受信した印刷装置120からの情報を、HTTPレスポンスとしてWebブラウザ202に応答する。デバイス接続検知部1207は、USBドライバ207から取得したUSBインターフェースを介して接続されている周辺装置の情報から、中継プログラム201と通信可能な印刷装置が接続されていることを検知する。ブラウザ起動部1206は、URL決定部1204から取得した印刷装置に対応するURLを指定してWebブラウザ202を起動する。またURL保存部1205には、印刷装置120の固有情報とURL決定部1204が生成した当該印刷装置に対応するURLを関連付けて保存されている。
●USBを介したコンテンツ取得手順(第3実施形態)
図13では、本実施形態における通信処理の全体像を示す。なお図13においては、第二実施形態と同様に、S1301に先立って、USB接続された印刷装置のデバイス情報(固有情報を含む)を情報処理装置110が取得済みであり、所定の場所に保存されている。デバイス情報は例えば、アプリケーション1208がS1301に先立ってUSBドライバ207から取得しておいてもよい。アプリケーション1208はユーザ操作によりWebページ表示ボタン303が押下されると、ユーザがアプリケーション1208の画面上で選択した印刷装置の固有情報を取得する(S1301)。次にアプリケーション1208は、S1301で取得した印刷装置の固有情報を指定して、中継プログラム1201を起動する(S1302)。起動された中継プログラム1201は、Webブラウザ202とHTTP通信を行うためのポート番号を含むURLを決定する(S1303)。ここでURLに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択するものとする。次に中継プログラム1201は、アプリケーション1208から指示された印刷装置の固有情報とS1303にて決定したURLをURL保存部805に保存する(S1304)。その後、中継プログラム1201はS1303で決定したURLを指定してWebブラウザ202を起動する(S1305)。Webブラウザ202は指定されたURLに対してWebコンテンツ取得のためのHTTPリクエスト(GETリクエスト)を送信する(S1306)。
S1306にて送信されたHTTPリクエストは、中継プログラム1201が受信する。HTTPリクエストを受信した中継プログラム1201は、アプリケーション1208から起動時に通知された印刷装置のデバイス情報から通信すべき印刷装置を特定する。そして、中継プログラム1201は、USBドライバ207経由で該印刷装置へHTTPリクエストを送信する(S1307〜S1308)。中継プログラム1201はHTTPリクエストの送信が完了すると、次に送信したHTTPリクエストに対するHTTPレスポンスをUSBドライバ207経由で印刷装置120から取得する(S1309〜S1310)。S1309〜S1310の処理により取得したHTTPレスポンスを取得した中継プログラム1201は、Webブラウザ202に該HTTPレスポンスを応答する(S1311)。S1311でHTTPレスポンスを受信したWebブラウザ202は、該HTTPレスポンスに含まれるWebコンテンツの情報を表示する(S1312)。このような通信処理により、Webブラウザ202はUSBインターフェースを介して接続された印刷装置120の生成するWebコンテンツを表示することが可能となる。
なお、図13においては、S1303において、Webブラウザ202が中継プログラム1201へとHTTPリクエストを送信するためのURLを生成している。それを、不図示の通信スレッドに対してHTTPリクエストを送信するためのURLを生成し、併せて通信スレッドを起動してもよい。なお、図13ではアプリケーション1208により中継プログラム1201が起動されるが、他のアプリケーション(つまり、任意のアプリケーション)により中継プログラム1201が起動されても良い。
●中継プログラムによる処理手順(第3実施形態)
図14では、本実施形態における中継プログラム1201の処理をより詳細に説明する。中継プログラム1201はアプリケーション1208により起動され処理を開始する(S1401)。次に中継プログラム1201は、起動時にアプリケーション1208から通知された印刷装置(プリンタ)の固有情報がURL保存部1205に保存されているか否かを判定する(S1402)。アプリケーション1208から指定された印刷装置の固有情報がURL保存部1205に保存されている場合、中継プログラム1201は該固有情報に関連付けされているURLを指定しWebブラウザを起動する(S1403)。その後、中継プログラム1201は処理を終了する(S1419)。この状況では、既にアプリケーション1208から指定された印刷装置と通信する中継プログラムが起動しているため、改めて中継プログラムを起動する必要はない。そのため、URL保存部1205に保存されているURLを指定し、Webブラウザ202を起動すれば、先に起動している中継プログラムが印刷装置との通信処理を行う。一方、S1402にて印刷装置の固有情報がURL保存部1205に保存されていない場合、中継プログラム1201は、Webブラウザ202と通信を行うためのポート番号を含むURLを決定する(S1404)。ここでURLに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択するものとする。次に中継プログラム1201は、S1404で決定したポート番号を含むURLと、アプリケーション1208から指定された印刷装置の固有情報を関連付けてURL保存部805に保存する(S1405)。続いて、中継プログラム1201はS1404で生成したURLに含まれるポート番号に対して通信開始処理を行う(S1406)。その後、中継プログラム1201はS1404にて決定したURLを指定し、Webブラウザ202を起動する(S1407)。次に中継プログラム1201は、Webブラウザ202からHTTPリクエストを受信する(S1408)。その後中継プログラム1201は、アプリケーション1208より起動時に通知された印刷装置120の固有情報と一致する印刷装置を特定する(S1409)。次に中継プログラム1201は、S1409で印刷装置の特定に成功したか否かを判定する(S1410)。アプリケーション1208より起動時に通知された印刷装置120の固有情報と一致する印刷装置が特定できない場合について説明する。中継プログラム1201はWebブラウザ202へ通信すべき印刷装置が特定できなかったことを示すHTTPレスポンスを応答する(S1418)。ここでは、以下のHTTPレスポンスを送信したと仮定する。
HTTP/1.1 404 Not Found
その後、中継プログラム1201はS1406にて通信処理を開始したポート番号に対する通信終了処理を実行する(S1416)。一方、S1409で印刷装置120の固有情報と一致する印刷装置を特定できた場合、次に中継プログラム1201は、受信したHTTPリクエストをUSBドライバ207経由で印刷装置120に送信(Write)する(S1411)。続いて中継プログラム1201は、送信したHTTPリクエストに対するレスポンスをUSBドライバ207経由で印刷装置120から受信(Read)する(S1412)。その後中継プログラム1201は、受信したレスポンスをHTTPレスポンスとしてWebブラウザ202へ応答する(S1413)。次に中継プログラム1201は、印刷装置120の電源状態を確認し、オンライン状態か否かを判定する(S1414)。印刷装置120がオンライン状態であると判定した場合、中継プログラム1201は情報処理装置110の状態情報を取得し、情報処理装置110が終了中か否かを判断する(S1415)。S1415にて情報処理装置110が終了中でないと判断した場合は、中継プログラム1201はS1408に戻り再度Webブラウザ202からのHTTPリクエストの受信を行う。一方、S1414にて印刷装置120がオフライン状態、またはS1415にて情報処理装置110が終了中であると判断した場合、中継プログラム1201はS1406にて通信処理を開始したポート番号に対する通信終了処理を実行する(S1416)。その後中継プログラム1201は、URL保存部805に保存されている印刷装置120とURLの関連付け情報を削除する(S1417)。その後、中継プログラム1201は処理を終了する(S1420)。
以上説明したように、本実施形態によると、Webブラウザ202と中継プログラム1201との間の通信に利用するポートは、動的に選択される。この際、選択されるポート番号は、他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択される。そのため、利用可能なポートが限定されている場合においても情報処理装置110で実行されるWebブラウザ202がUSB接続された印刷装置と適切に通信することが可能となる。
また本実施形態によると、ユーザ操作によりアプリケーション1208のWebページ表示ボタン303を押下したタイミングで中継プログラム1201が起動される。そのため、事前に情報処理装置110に中継プログラム1201が起動される必要がない。
なお、図14のS1404では、Webブラウザ202が中継プログラム1201へとHTTPリクエストを送信するためのURLを生成している。それに代えて、不図示の通信スレッドに対してHTTPリクエストを送信するためのURLをS1404で生成し、併せて通信スレッドを起動してもよい。これにより複数の通信スレッドを生成すれば、複数の通信を並列して処理することができる。
<実施形態4>
本実施形態では、アプリケーションが中継プログラムの稼働状況に応じてWebブラウザの起動処理を切り替える形態について説明する。なお以後、特に言及が無い点は、実施形態1、実施形態2または実施形態3と同等の構成である。また、本実施形態で説明する処理は、実施形態1で示したアプリケーション211が実行するものとして説明する。
図15は、本実施形態におけるアプリケーション211の処理について説明する。アプリケーション211はユーザ操作によりWebページ表示ボタン303が押下されるとWebブラウザ表示処理を開始する(S1501)。次にアプリケーション211は、ユーザにより指定された印刷装置と情報処理装置110との接続形態を確認する(S1502)。S1502にてユーザにより指定された印刷装置と情報処理装置110がネットワーク接続されていると判断した場合、アプリケーション211は該印刷装置に対応するIPアドレスを指定してWebブラウザ202を起動する(S1503)。一方、S1502にてユーザにより指定された印刷装置と情報処理装置110がUSB接続されていると判断した場合、アプリケーション211は、情報処理装置110上で中継プログラムが稼働中か否かを判定する(S1504)。S1504にて稼働中ではあると判定した場合、アプリケーション211は共有メモリ212からユーザが指定した印刷装置に対応するURLを取得する(S1505)。次にアプリケーション211はユーザが指定した印刷装置に対応するURLの取得に成功したか否かを判定する(S1506)。取得に成功した場合、アプリケーション211は該URLを指定してWebブラウザ202を起動する(S1507)。この状況は、実施形態1或いは実施形態2で示した構成の中継プログラムが既に稼働している状態のため、アプリケーション211は取得したURLを指定してWebブラウザ202を起動するのみでよい。一方、S1504にて中継プログラムが稼働中でないと判定した場合、またはS1506にてURL取得に失敗したと判定した場合、アプリケーション211はユーザが指定した印刷装置の固有情報を取得する(S1508)。その後、アプリケーション211は取得した固有情報を指定して、中継プログラムを起動する(S1509)。この状況では、ユーザがアプリケーション211上のWebページ表示ボタン303を押下した時点では中継プログラム201は稼働していない。そのため、アプリケーション211は印刷装置の固有情報を指定して実施形態3で示した構成の中継プログラムを起動する。
なお、S1502において中継プログラムが稼働中か否かを判定する手法としては、中継プログラムそのものの動作状況を確認する以外にも、情報処理装置上で稼働するオペレーティングシステムの種別やそのバージョン情報から判断する方法でもよい。
この手順により、アプリケーションが中継プログラムの稼働状況に応じてWebブラウザの起動処理を切り替えることができる。具体的には、起動済みの中継アプリケーションの二重起動を防止できる。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
201 中継プログラム、202 ブラウザ、203,802,1202 HTTP制御部、204,803,1203 USB制御部、205,804,1204 URL決定部、206,1207 デバイス接続検知部、207 USBドライバ、212 共有メモリ、804,1205 URL保存部

Claims (14)

  1. IPアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置であって、
    前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
    空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
    前記決定手段により決定されたアドレスを、アクセス元と共有するための共有手段と、
    前記固有情報と前記ポート番号を通信部に通知する通知手段を有し、
    前記アクセス元が前記共有手段から取得した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
    前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記通信部は、前記取得手段により前記デバイス情報が取得された前記デバイスごとに生成される
    ことを特徴とする情報処理装置。
  3. 請求項1または2に記載の情報処理装置であって、
    前記共有手段は、前記取得手段により取得した前記デバイス情報と、前記決定手段により決定されたアドレスとを関連付けて記憶することで実現され、
    前記アクセス元が、前記共有手段に記憶されたアドレスへとアクセスする
    ことを特徴とする情報処理装置。
  4. 請求項3に記載の情報処理装置であって、
    前記取得手段は、前記デバイスから前記デバイス情報を取得する
    ことを特徴とする情報処理装置。
  5. 請求項1または2に記載の情報処理装置であって、
    前記共有手段は、前記取得手段により取得した前記デバイス情報と、前記決定手段により決定されたアドレスとを関連付けて前記アクセス元へと通知することで実現され、
    前記アクセス元が、通知された前記アドレスへとアクセスする
    ことを特徴とする情報処理装置。
  6. 請求項5に記載の情報処理装置であって、
    前記取得手段は、前記アクセス元が取得した前記デバイス情報を、前記アクセス元から取得する
    ことを特徴とする情報処理装置。
  7. 請求項6に記載の情報処理装置であって、
    前記アクセス元から前記アクセス先に対する前記データの要求はHTTPリクエストであり、
    前記共有手段は、前記取得手段により取得した前記デバイス情報と、前記決定手段により決定されたアドレスとを関連付けて、前記アクセス元へとリダイレクト指示することで実現される
    ことを特徴とする情報処理装置。
  8. IPアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置であって、
    中継手段を有し、
    前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
    空きポート番号のひとつを決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
    前記決定手段により決定されたアドレスを共有するための共有手段と、
    前記決定手段により決定されたアドレスに対するアクセスがあると、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記インターフェースを介して前記デバイスに前記データを要求し、前記デバイスから前記インターフェースを介して前記データを受信すると、Webブラウザへと前記データを送信する通信手段と
    を有することを特徴とする情報処理装置。
  9. 請求項8に記載の情報処理装置であって、
    前記Webブラウザを用いてデータを取得するアプリケーションを更に有し、
    前記アプリケーションは、データを取得する指示に応じて、前記中継手段を起動する
    ことを特徴とする情報処理装置。
  10. 請求項8または9に記載の情報処理装置であって、
    前記Webブラウザを用いてデータを取得するアプリケーションを更に有し、
    前記アプリケーションは、前記デバイスが前記インターフェースで接続され、かつ、前記中継手段が起動済みであり、かつ、前記共有手段により前記アドレスを取得済みの場合に、前記Webブラウザを起動する
    ことを特徴とする情報処理装置。
  11. 請求項1乃至10のいずれか一項に記載の情報処理装置であって、
    前記インターフェースは、ユニバーサルシリアルバスである
    ことを特徴とする情報処理装置。
  12. 請求項9または10に記載の情報処理装置であって、
    ユーザーインターフェース手段を更に有し、
    前記アプリケーションは、前記ユーザーインターフェース手段により前記デバイスが選択されると、選択された前記デバイスに対応しており、前記共有手段により共有される前記アドレスにアクセスする
    ことを特徴とする情報処理装置。
  13. IPアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置の制御方法であって、
    前記デバイスの固有情報を含むデバイス情報を取得し、
    空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定し、
    前記決定されたアドレスを、アクセス元と共有し、
    前記固有情報と前記ポート番号を通信部に通知し、
    前記アクセス元が前記共有した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
    前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とする情報処理装置の制御方法。
  14. IPアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置を、
    前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
    空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
    前記決定手段により決定されたアドレスを、アクセス元と共有するための共有手段と、
    前記固有情報と前記ポート番号を通信部に通知する通知手段として機能させるためのプログラムであって、
    前記アクセス元が前記共有手段から取得した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
    前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とするプログラム。
JP2018172828A 2018-09-14 2018-09-14 情報処理装置、その制御方法およびプログラム Active JP7240118B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018172828A JP7240118B2 (ja) 2018-09-14 2018-09-14 情報処理装置、その制御方法およびプログラム
US16/562,695 US11079983B2 (en) 2018-09-14 2019-09-06 Information processing apparatus that saves, in a shared memory, information for accessing a device using a URL via a USB, and method of controlling same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018172828A JP7240118B2 (ja) 2018-09-14 2018-09-14 情報処理装置、その制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2020046756A true JP2020046756A (ja) 2020-03-26
JP7240118B2 JP7240118B2 (ja) 2023-03-15

Family

ID=69774003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018172828A Active JP7240118B2 (ja) 2018-09-14 2018-09-14 情報処理装置、その制御方法およびプログラム

Country Status (2)

Country Link
US (1) US11079983B2 (ja)
JP (1) JP7240118B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021160098A (ja) * 2020-03-30 2021-10-11 ブラザー工業株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
JP2022073079A (ja) * 2020-10-30 2022-05-17 ブラザー工業株式会社 表示制御プログラム、管理装置、中継装置および表示制御方法
JP7346524B2 (ja) * 2021-11-22 2023-09-19 キヤノン株式会社 画像形成装置、画像形成装置の制御方法並びにプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014102620A (ja) * 2012-11-19 2014-06-05 Brother Ind Ltd 通信中継プログラム、及び、通信中継装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3525070B2 (ja) * 1999-01-27 2004-05-10 松下電器産業株式会社 アクセス制御装置及びアクセス方法
JP4144632B2 (ja) 2006-05-01 2008-09-03 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置、画像処理システム、画像処理装置のパラメータ設定方法
JP6074165B2 (ja) * 2012-06-01 2017-02-01 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP6011266B2 (ja) * 2012-11-19 2016-10-19 ブラザー工業株式会社 通信中継プログラム、通信中継方法、情報処理装置及び画像処理装置
JP6869097B2 (ja) 2017-05-10 2021-05-12 キヤノン株式会社 通信装置、制御方法、及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014102620A (ja) * 2012-11-19 2014-06-05 Brother Ind Ltd 通信中継プログラム、及び、通信中継装置

Also Published As

Publication number Publication date
US11079983B2 (en) 2021-08-03
JP7240118B2 (ja) 2023-03-15
US20200089445A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
JP6075010B2 (ja) 通信中継プログラム、及び、画像処理装置
EP2453349B1 (en) Print relay system, print relay system control method, and program
RU2543951C2 (ru) Устройство обработки информации, способ управления устройством обработки информации, программа и носитель данных
JP5654806B2 (ja) サーバシステムとプリント装置及びそれらを有するネットワーク印刷システムとそれらにおける方法
EP2728459B1 (en) Image Processing System
JP5943571B2 (ja) 印刷システム、プリンター、プリントサーバー、及びその方法
JP6155607B2 (ja) 通信中継プログラム、及び、通信中継装置
US8947720B2 (en) Communication terminal device, communication control method, and non-transitory computer-readable medium storing communication control program
JP6202902B2 (ja) システム、情報処理装置とその制御方法及びプログラム
JP7240118B2 (ja) 情報処理装置、その制御方法およびプログラム
JP2012216166A (ja) 情報処理装置、その方法、及びプログラム
US8982388B2 (en) Information processing apparatus that displays operation screen and control method therefor
WO2015151526A1 (en) Printer registration apparatus, display apparatus, and method for printer registration
JP2019181866A (ja) 印刷制御装置、制御方法及びプログラム
JP2018112895A (ja) 情報処理装置、その制御方法、プログラム、及び情報処理システム
JP2017168028A (ja) 情報処理装置、印刷プラグイン、印刷システム及び制御方法
JP7360245B2 (ja) 画像形成システム及び出力方法
JP2010201862A (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP2017204139A (ja) 更新アプリケーション及び更新方法
JP2016172370A (ja) 画像形成装置、画像形成方法、及び画像形成プログラム
JP4649584B2 (ja) 周辺機器ドライバインストールシステム
JP6271944B2 (ja) 画像処理装置、情報処理装置、画像処理装置のデータ処理方法、情報処理装置のデータ処理方法、及びプログラム
JP6157144B2 (ja) 印刷装置、印刷装置の制御方法、及びプログラム
JP6397168B2 (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP2017136780A (ja) 画像形成装置及びその制御方法、画像形成装置のサポートシステム及びその制御方法、並びにプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230111

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: 20230203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230303

R151 Written notification of patent or utility model registration

Ref document number: 7240118

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151