JP6075010B2 - 通信中継プログラム、及び、画像処理装置 - Google Patents

通信中継プログラム、及び、画像処理装置 Download PDF

Info

Publication number
JP6075010B2
JP6075010B2 JP2012240735A JP2012240735A JP6075010B2 JP 6075010 B2 JP6075010 B2 JP 6075010B2 JP 2012240735 A JP2012240735 A JP 2012240735A JP 2012240735 A JP2012240735 A JP 2012240735A JP 6075010 B2 JP6075010 B2 JP 6075010B2
Authority
JP
Japan
Prior art keywords
session
request
communication
processing
ipp
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
JP2012240735A
Other languages
English (en)
Other versions
JP2014089675A (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.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
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 Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2012240735A priority Critical patent/JP6075010B2/ja
Priority to US14/068,518 priority patent/US9110611B2/en
Publication of JP2014089675A publication Critical patent/JP2014089675A/ja
Application granted granted Critical
Publication of JP6075010B2 publication Critical patent/JP6075010B2/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/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/121Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted
    • 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
    • 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

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 And Data Communications (AREA)

Description

通信を中継する技術に関する。
従来、画像処理装置にWebサーバ機能を備え、端末装置で実行されるWebブラウザに画像処理装置の設定画面などを表示する技術が開示されている(例えば特許文献1参照)。
また、画像処理装置と端末装置とをインターネットで接続し、インターネットを介して画像処理装置に画像を処理させるIPP(Internet Printing Protocol)と呼ばれる規格が知られている。
そして、画像処理装置と端末装置とがUSB(Universal Serial Bus)によって接続されている環境において上述したIPPによる通信を行うためのIPP over USBという規格のドラフト(2012年10月31日時点においてVersion 1.0 Draft 20)が知られている。
特開2011−257945号公報
IPP over USBでは端末装置で通信中継プログラムが実行される。Webブラウザなどのクライアントアプリケーションは画像処理装置への処理要求を通信中継プログラムに送信し、通信中継プログラムはクライアントアプリケーションから受信した処理要求を画像処理装置に送信する。
この場合に、画像処理装置が通信中継プログラムから処理要求を受信している途中で何らかの事情によってクライアントアプリケーションと通信中継プログラムとの通信が途絶えてしまうと、クライアントアプリケーションから画像処理装置への処理要求が途中で途絶えてしまう。
しかしながら、画像処理装置はクライアントアプリケーションと通信中継プログラムとの通信が途絶えてしまっていることを認識することができない。このため、クライアントアプリケーションと通信中継プログラムとの通信が途中で途絶えてしまうと、画像処理装置において処理要求の受信待ち状態が長時間継続してしまうという問題がある。
本明細書では、画像処理装置とクライアントアプリケーションとの間で通信を中継する場合に、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことを抑制する技術を開示する。
本明細書によって開示される通信中継プログラムは、画像処理装置と通信回線で接続されている情報処理装置で実行される通信中継プログラムであって、クライアントアプリケーションから処理要求を受信する第1の要求受信処理と、前記第1の要求受信処理による前記処理要求の受信中に、前記クライアントアプリケーションから通信の中止が通知されたか否かを判断する第1の中止判断処理と、前記第1の中止判断処理によって中止が通知されたと判断されることなく前記第1の要求受信処理による前記処理要求の受信が完了した場合は前記処理要求を前記画像処理装置に送信する一方、前記第1の中止判断処理によって中止が通知されたと判断された場合は前記処理要求を前記画像処理装置に送信しない第1の要求送信処理と、を前記情報処理装置に実行させる。
上記通信中継プログラムによると、クライアントアプリケーションからの処理要求の受信が完了した後でなければ画像処理装置への処理要求の送信を開始しないので、上記通信中継プログラムがクライアントアプリケーションから処理要求を受信している途中でクライアントアプリケーションから通信の中止が通知された場合は、画像処理装置への処理要求の送信が開始されない。
よって上記通信中継プログラムによると、画像処理装置とクライアントアプリケーションとの間で通信を中継する場合に、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことを抑制することができる。
また、前記クライアントアプリケーションはマルチセッションによって通信するものであり、当該通信中継プログラムは、前記クライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する第1の確立処理と、前記第1の確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する第1の禁止判断処理と、前記第1の禁止判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する第1の待機処理と、前記第1の禁止判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する第1の排他処理と、前記新たなセッション以外のセッションによる通信を解禁する第1の解禁処理と、を前記情報処理装置に実行させ、前記第1の要求送信処理では、前記第1の排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記第1の要求受信処理により前記新たなセッションを介して受信した前記処理要求を前記画像処理装置に送信し、前記第1の解禁処理では、前記第1の中止判断処理によって中止が通知されたと判断されることなく前記第1の要求受信処理による前記処理要求の受信が完了した場合、及び、前記第1の中止判断処理によって中止が通知されたと判断された場合に、前記新たなセッション以外のセッションによる通信を解禁してもよい。
上記通信中継プログラムによると、いずれかのセッションを介して処理要求を中継している間は他のセッションによる通信を禁止するので、処理要求に対する応答が混乱してしまうことを抑制できる。また、中止が通知されたと判断された場合に、新たなセッション以外のセッションによる通信を解禁するので、通信が禁止されていたセッションを速やかに開始することができる。
本明細書によって開示される通信中継プログラムは、画像処理装置と通信回線で接続されている情報処理装置で実行される通信中継プログラムであって、クライアントアプリケーションから処理要求を受信する第2の要求受信処理と、前記第2の要求受信処理によって前記処理要求の受信が開始されると、当該処理要求の受信が完了するのを待つことなく前記画像処理装置への当該処理要求の送信を開始する第2の要求送信処理と、前記第2の要求受信処理による前記処理要求の受信中に、前記クライアントアプリケーションから通信の中止が通知されたか否かを判断する第2の中止判断処理と、前記第2の中止判断処理によって中止が通知されたと判断された場合に、前記画像処理装置に通信の中止を通知する第1の中止通知処理と、を前記情報処理装置に実行させる。
上記通信中継プログラムによると、クライアントアプリケーションから処理要求を受信している途中でクライアントアプリケーションから通信の中止が通知された場合は、画像処理装置に通信の中止を通知する。
よって上記通信中継プログラムによると、画像処理装置とクライアントアプリケーションとの間で通信を中継する場合に、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことを抑制することができる。
また、前記クライアントアプリケーションはマルチセッションによって通信するものであり、当該通信中継プログラムは、前記クライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する第2の確立処理と、前記第2の確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する第2の禁止判断処理と、前記第2の禁止判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する第2の待機処理と、前記第2の禁止判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する第2の排他処理と、前記新たなセッション以外のセッションによる通信を解禁する第2の解禁処理と、を前記情報処理装置に実行させ、前記第2の要求送信処理では、前記第2の排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記第2の要求受信処理により前記新たなセッションを介して受信した前記処理要求を前記画像処理装置に送信し、前記第2の解禁処理では、前記第2の中止判断処理によって中止が通知されたと判断されることなく前記第2の要求受信処理による前記処理要求の受信が完了した場合、及び、前記第2の中止判断処理によって中止が通知されたと判断された場合に、前記新たなセッション以外のセッションによる通信を解禁してもよい。
上記通信中継プログラムによると、いずれかのセッションを介して処理要求を中継している間は他のセッションによる通信を禁止するので、処理要求に対する応答が混乱してしまうことを抑制できる。また、中止が通知されたと判断された場合に、新たなセッション以外のセッションによる通信を解禁するので、通信が禁止されていたセッションを速やかに開始することができる。
本明細書によって開示される通信中継プログラムは、画像処理装置と通信回線を介して通信可能に接続されている情報処理装置で実行される通信中継プログラムであって、マルチセッションによって通信するクライアントアプリケーションからセッションを確立する要求を受信すると、その要求に応じて前記クライアントアプリケーションとの間にセッションを確立する第3の確立処理と、前記第3の確立処理によって確立された前記セッションを介して前記クライアントアプリケーションから処理要求を受信する第3の要求受信処理と、前記第3の要求受信処理によって前記処理要求の受信が開始されると、当該処理要求の受信が完了するのを待つことなく前記画像処理装置への当該処理要求の送信を開始する第3の要求送信処理であって、当該処理要求を受信した前記セッションを識別するためのセッション情報を付加したセッション情報付き処理要求を前記画像処理装置に送信する第3の要求送信処理と、前記第3の要求送信処理によって送信された前記処理要求に対する応答として前記画像処理装置から前記セッション情報が付加されたセッション情報付き応答を受信する第1の応答受信処理と、前記第1の応答受信処理によって受信された前記セッション情報付き応答から前記セッション情報を除去した応答を、当該セッション情報によって識別される前記セッションを介して前記クライアントアプリケーションに送信する第1の応答送信処理と、前記第3の要求受信処理による前記処理要求の受信中に、前記クライアントアプリケーションから前記セッションを介して通信の中止が通知されたか否かを判断する第3の中止判断処理と、前記第3の中止判断処理によって中止が通知されたと判断された場合に、当該中止が通知された前記セッションの前記セッション情報を付加したセッション情報付き中止通知を前記画像処理装置に送信する第2の中止通知処理と、を前記情報処理装置に実行させる。
上記通信中継プログラムによると、画像処理装置とクライアントアプリケーションとの間で通信を中継する場合に、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことをセッションの単位で抑制することができる。
また、上記通信中継プログラムは、前記第3の確立処理によって前記セッションが確立されると、確立された前記セッションのセッション識別子を生成する識別子生成処理と、前記識別子生成処理によって生成された前記セッション識別子と前記セッションを識別するための識別情報とを対応付けて記憶装置に記憶させる第1の記憶処理と、前記記憶装置に記憶されている前記セッション識別子と当該セッション識別子に対応付けられている前記識別情報とを前記記憶装置から削除する削除処理と、を前記情報処理装置に実行させ、前記第3の要求送信処理において、前記識別子生成処理によって生成された前記セッション識別子を前記セッション情報として前記処理要求に付加し、前記第1の応答送信処理において、前記セッション情報付き応答に前記セッション情報として付加されている前記セッション識別子に対応付けられている前記識別情報によって識別される前記セッションを介して前記クライアントアプリケーションに前記応答を送信し、前記削除処理において、前記第3の中止判断処理によって中止が通知されたと判断された場合に、当該中止が通知された前記セッションの前記セッション識別子と前記識別情報とを前記記憶装置から削除してもよい。
上記通信中継プログラムによると、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことをセッションの単位で抑制することができる。
また、上記通信中継プログラムは、前記第1の応答送信処理において、前記セッション情報付き応答に前記セッション情報として付加されている前記セッション識別子が前記記憶装置に記憶されていない場合は、前記クライアントアプリケーションに前記応答を送信しないようにしてもよい。
上記通信中継プログラムによると、クライアントアプリケーションへの無駄な応答の送信を抑制できる。
また、前記通信回線はユニバーサルシリアルバスであってもよい。
上記通信中継プログラムによると、画像処理装置と情報処理装置とがユニバーサルシルアルバスを介して通信可能に接続されている場合に、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことを抑制することができる。
本明細書によって開示される画像処理装置は、情報処理装置と通信回線を介して通信する第1の通信部と、第1の処理部と、前記第1の処理部から受信した処理要求に対する応答を前記第1の処理部に送信する第1の応答部と、を備え、前記第1の処理部は、前記情報処理装置から処理要求を受信する第4の要求受信処理と、前記第4の要求受信処理によって前記処理要求の受信が開始されると、前記第1の応答部との間に通信を確立する第4の確立処理と、前記第4の確立処理によって確立された前記通信を介して前記第1の応答部に前記処理要求を送信する第4の要求送信処理と、前記第4の要求送信処理によって送信された前記処理要求に対する応答を前記第1の応答部から受信する第2の応答受信処理と、前記第2の応答受信処理によって受信した前記応答を前記情報処理装置に送信する第2の応答送信処理と、前記第4の要求受信処理による前記処理要求の受信中に、前記情報処理装置から通信の中止が通知されたか否かを判断する第4の中止判断処理と、前記第4の中止判断処理によって中止が通知されたと判断された場合に、前記第4の確立処理によって確立された前記通信を終了させる第1の終了処理と、を実行する。
上記画像処理装置によると、第1の処理部と、第1の処理部から受信した処理要求に対する応答を第1の処理部に送信する第1の応答部とを備える画像処理装置において、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって第1の応答部の受信待ち状態が長時間継続してしまうことを抑制することができる。
また、前記第1の処理部は、前記情報処理装置から受信した前記処理要求を前記第1の応答部に送信した後、前記情報処理装置に前記応答を送信する前に前記情報処理装置から通信の中止が通知された場合は、前記第2の応答送信処理において、前記第1の応答部から送信された前記応答を前記情報処理装置に送信しないようにしてもよい。
上記画像処理装置によると、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまったにもかかわらず画像処理装置が情報処理装置に応答を送信しようとしてしまうことを抑制することができる。
本明細書によって開示される画像処理装置は、情報処理装置と通信回線を介して通信する第2の通信部と、第2の処理部と、前記第2の処理部から受信した処理要求に対する応答を前記第2の処理部に送信する第2の応答部と、記憶部と、を備え、前記第2の処理部は、前記情報処理装置からセッション情報付き処理要求を受信する第5の要求受信処理と、前記第5の要求受信処理によって前記セッション情報付き処理要求が受信されると、当該セッション情報付き処理要求に付加されているセッション情報が、当該第2の処理部と前記第2の応答部との間に確立されている通信を識別するための通信識別情報に対応付けられて前記記憶部に記憶されているか否かを判断する記憶判断処理と、前記記憶判断処理によって前記セッション情報が記憶されていないと判断された場合に、前記第2の応答部との間に新たな通信を確立する第5の確立処理と、前記第5の確立処理によって確立された前記通信を識別するための通信識別情報と前記セッション情報とを対応付けて前記記憶部に記憶させる第2の記憶処理と、前記記憶判断処理によって前記セッション情報が記憶されていると判断された場合は、前記セッション情報付き処理要求から前記セッション情報を除去した処理要求を、当該セッション情報に対応付けられて前記記憶部に記憶されている前記通信識別情報によって識別される前記通信を介して前記第2の応答部に送信する一方、前記記憶判断処理によって前記セッション情報が記憶されていないと判断された場合は、前記セッション情報付き処理要求から前記セッション情報を除去した処理要求を、前記第5の確立処理によって確立された前記新たな通信を介して前記第2の応答部に送信する第5の要求送信処理と、前記通信を介して前記第2の応答部に送信した前記処理要求に対する応答を、当該通信を介して前記第2の応答部から受信する第3の応答受信処理と、前記第3の応答受信処理によって受信された前記応答に当該応答を受信した前記通信の前記通信識別情報に対応付けられて前記記憶部に記憶されている前記セッション情報を付加したセッション情報付き応答を前記情報処理装置に送信する第3の応答送信処理と、前記第5の要求受信処理による前記処理要求の受信中に、前記情報処理装置からセッション情報付き中止通知を受信したか否かを判断する第5の中止判断処理と、前記第5の中止判断処理によって前記セッション情報付き中止通知を受信したと判断された場合に、当該セッション情報付き中止通知に付加されている前記セッション情報に対応付けられている前記通信識別情報によって識別される前記通信を終了させる第2の終了処理と、を実行する。
上記画像処理装置によると、第2の処理部と、第2の処理部から受信した処理要求に対する応答を第2の処理部に送信する第2の応答部とを備え、第2の処理部と第2の応答部とがマルチセッションによって通信する画像処理装置において、情報処理装置と画像処理装置との間の通信が途中で途絶えてしまうことによって第2の応答部の受信待ち状態が長時間継続してしまうことを抑制することができる。
また、前記第2の処理部は、前記第3の応答受信処理による前記応答の受信中に、前記情報処理装置からセッション情報付き中止通知を受信したか否かを判断する第6の中止判断処理と、前記第6の中止判断処理によって前記セッション情報付き中止通知を受信したと判断された場合に、当該セッション情報付き中止通知に付加されている前記セッション情報に対応付けられて前記記憶部に記憶されている前記通信識別情報によって識別される前記通信を終了させる第3の終了処理と、を実行してもよい。
上記画像処理装置によると、第2の応答部から応答を受信している途中で情報処理装置から通信の中止が通知された場合に、第2の応答部の送信待ち状態が長時間継続してしまうことを抑制することができる。
なお、本明細書によって開示される技術は、画像処理システム、通信中継装置、通信中継方法、通信中継プログラムを記録した記録媒体等の種々の態様で実現することができる。
上記通信中継プログラムによると、画像処理装置とクライアントアプリケーションとの間で通信を中継する場合に、クライアントアプリケーションと通信中継プログラムとの間の通信が途中で途絶えてしまうことによって画像処理装置の受信待ち状態が長時間継続してしまうことを抑制することができる。
実施形態1に係るPC及びプリンタの電気的構成を示すブロック図。 PCのプログラム構成、及び、プリンタの機能を示すブロック図。 プリンタの設定画面の一例を示す模式図。 通信中継処理の全体的な流れを示すシーケンスチャート。 スレッド生成処理のフローチャート。 Webブラウザから処理要求を受信する処理のフローチャート。 実施形態2に係るWebブラウザから処理要求を受信する処理のフローチャート。 IPP/USB変換プログラムから処理要求を受信する処理のフローチャート。 IPP/USB変換プログラムからキャンセル通知を受信したときの処理のフローチャート。 実施形態3に係る通信中継処理の全体的な流れを示すシーケンスチャート。 Webブラウザから処理要求を受信する処理のフローチャート。 付加データ送信処理のフローチャート(その1)。 付加データ送信処理のフローチャート(その2)。 IPP機能から応答を受信する処理のフローチャート。 IPP/USB変換プログラムから処理要求を受信する処理のフローチャート。 キャンセル処理のフローチャート。 Webサーバ機能から応答を受信する処理のフローチャート。
<実施形態1>
実施形態1を図1ないし図6によって説明する。
(1)画像処理システム
先ず、図1を参照して、実施形態1に係る画像処理システム1について説明する。画像処理システム1はパーソナルコンピュータ(PCと記す)2とプリンタ3とで構成されている。PC2とプリンタ3とはUSB(Universal Serial Bus、ユニバーサルシリアルバス)ケーブル4によって通信可能に接続されている。また、プリンタ3はUSBプリンタクラスデバイスとして構成されている。
PC2は情報処理装置及び通信中継装置の一例である。プリンタ3は画像処理装置の一例である。また、USBは通信回線の一例である。
PC2はプリンタ3との間でUSBを介して少なくとも以下の二つの通信(a)及び(b)を行うことができる。
(a)プリンタ3を設定するための通信
(b)プリンタ3に印刷データを送信するための通信
これらの通信はIPP over USB規格(2012年10月31日時点においてVersion 1.0 Draft 20)に従って行われる。IPP(Internet Printing Protocol)とは、HTTP(HyperText Transfer Protocol)をベースにした規格であって、インターネットやLAN(Local Area Network)などのTCP/IPネットワークを介してプリンタと通信するための規格である。
IPP over USBはUSBによって接続されている環境において上述したIPPによる通信を実現するための規格である。IPP over USBではIPPの通信データがUSBのパケットに格納されて送受信される。
(1−1)PCの電気的構成
図1を参照して、PC2の電気的構成について説明する。PC2は、CPU20、ROM21、RAM22、表示部23、操作部24、記憶部25、及び、USBホストインタフェース部(図1ではUSBホストIF部と記す)26を備えて構成されている。
CPU20はROM21や記憶部25に記憶されているプログラムを実行することによってPC2の各部を制御する。ROM21にはCPU20によって実行されるプログラムやデータなどが記憶されている。RAM22はCPU20が各種の処理を実行するための主記憶装置として用いられる。
表示部23は、液晶ディスプレイなどの表示装置、表示装置を駆動するディスプレイ駆動回路などを備えて構成されている。
操作部24は、キーボードやマウス、それらが接続されるインタフェースなどで構成されている。
記憶部25は、ハードディスクやフラッシュメモリなどの不揮発性のメモリを用いて各種のプログラムやデータを記憶する装置である。記憶部25には、オペレーティングシステム(OSと記す)41、Webブラウザ42、IPP/USB変換プログラム43などのプログラムが記憶されている。これらのプログラムはCPU20によって実行される。
Webブラウザ42はマルチセッションによって通信が可能なクライアントアプリケーションの一例である。また、IPP/USB変換プログラム43は通信中継プログラムの一例である。
USBホストインタフェース部26は、USBホストコントローラ、USBケーブル4が接続されるジャックなどを備えて構成されており、USBケーブル4を介してプリンタ3と通信可能に接続されている。
(1−2)プリンタ
次に、図1を参照して、プリンタ3の電気的構成について説明する。プリンタ3は、制御部31、USBクライアントインタフェース部(図1ではUSBクライアントIF部と記す)32、印刷部33、操作部34、及び、記憶部35を備えて構成されている。
制御部31は、CPU31a、ROM31b、RAM31cなどを備えて構成されている。CPU31aはROM31bや記憶部35に記憶されている制御プログラムを実行することによってプリンタ3の各部を制御する。ROM31bにはCPU31aによって実行される制御プログラムや各種のデータなどが記憶されている。RAM31cはCPU31aが各種の処理を実行するための主記憶装置として用いられる。CPUは第1の処理部、第2の処理部、第1の応答部、及び、第2の応答部の一例である。
印刷部33は、印刷用紙などのシートに電子写真方式やインクジェット方式などで画像を印刷する装置である。
操作部34は、液晶ディスプレイなどの表示装置や各種の操作ボタンなどを備えて構成されている。
記憶部35は、ハードディスクやフラッシュメモリなどの不揮発性のメモリを用いて各種のデータを記憶する装置である。
USBクライアントインタフェース部32は、USBケーブル4が接続されるジャックなどを備えて構成されており、USBケーブル4を介してPC2と通信可能に接続されている。
また、プリンタ3はこの他に印刷用紙が収容される第1のトレイ、及び、第2のトレイを備えている。
(2)PCのプログラム構成、及び、プリンタの機能
次に、図2を参照して、IPP over USBによって通信を行うためのPC2のプログラム構成、及び、プリンタ3の機能について説明する。
(2−1)PCのプログラム構成
先ず、PC2のプログラム構成について説明する。PC2は、IPP/USB変換プログラム43、Webブラウザ42、及び、スプーラ44を実行する。
IPP/USB変換プログラム43は、Webブラウザ42とプリンタ3のIPP機能51との間でプリンタ3を設定するための通信(a)を中継するとともに、スプーラ44とIPP機能51との間でプリンタ3に印刷データを送信するための通信(b)を中継するプログラムである。
IPP/USB変換プログラム43はhttp://localhost:80に対するサーバープログラムとして常駐している。localhostはPC2のIPアドレスであって、具体的には例えば127.0.0.1である。また80は使用するポート番号である。なおポート番号80は通常省略される。IPP/USB変換プログラム43はWebブラウザ42とHTTPによって通信するとともに、スプーラ44とIPPによって通信する。
また、IPP/USB変換プログラム43はIPP機能51とUSBを介して通信する。IPP/USB変換プログラム43の詳細については後述する。
Webブラウザ42はユーザがプリンタ3の設定をするためのユーザインタフェースとして用いられるものである。Webブラウザ42としては一般に利用されているものを用いることができる。
PC2とプリンタ3とがUSBによって接続されている環境では、Webブラウザ42はlocalhost(127.0.0.1)のポート80に、プリンタ3の設定画面60(図3参照)を表示するための画面データの送信を要求するHTTPリクエストや、設定画面60上に表示する画像の送信を要求するHTTPリクエストなどを送信する。これらのHTTPリクエストはそれぞれ処理要求の一例である。以降の説明ではHTTPリクエストを単に処理要求という。
なお、処理要求はこれらに限られるものではない。例えばユーザが設定画面60で設定した設定値をプリンタ3に設定するHTTPリクエスト(PUTコマンドやPOSTコマンドなど)も処理要求の一例である。
IPP/USB変換プログラム43はWebブラウザ42から処理要求を受信すると、USBを介してIPP機能51にその処理要求を送信する。
ここで、画面データはHTML(HyperText Markup Language)やXML(Extensible Markup Language)によって記述されているものとする。詳しくは後述するが、画面データはプリンタ3のWebサーバ機能52が設定画面CGI(Common Gateway Interface )を実行することによって生成される。
スプーラ44は印刷データをスプールするプログラムである。スプーラ44はOS41の一部として提供される。PC2とプリンタ3とがUSBによって接続されている環境では、スプーラ44はIPP/USB変換プログラム43とIPPによって通信することにより、IPP/USB変換プログラム43に印刷データを送信する。
IPP/USB変換プログラム43はスプーラ44から印刷データを受信すると、USBを介してプリンタ3のIPP機能51にその印刷データを送信する。
なお、Webブラウザ42及びスプーラ44はPC2で実行されてもよいし、PC2と通信可能に接続されている外部の通信端末5で実行されてもよい。
(2−2)プリンタの機能
次に、プリンタ3の機能について説明する。プリンタ3は、印刷部33、IPP機能51、及び、Webサーバ機能52を備えている。
IPP機能51はプリンタ3の制御部31が制御プログラムを実行することによって実現される機能である。IPP機能51はIPP/USB変換プログラム43とUSBを介して通信する。また、IPP機能51はWebサーバ機能52とHTTPによって通信するとともに、印刷部33と所定のプロトコルに従って通信する。
Webサーバ機能52もプリンタ3の制御部31が制御プログラムを実行することによって実現される。Webサーバ機能52は画面データの送信が要求されると設定画面CGIを実行して設定画面60を表示するための画面データを生成する処理や、設定画面60で設定された設定値を受信するとプリンタ設定CGIを実行してプリンタ3にその設定値を設定する処理などを実行する。
(3)USBにおけるインタフェース
次に、USBにおけるインタフェースについて説明する。USBでは物理的に一本のUSBケーブル4にインタフェースと呼ばれる1以上の論理的な通信回線が構成される。
USBではコントロール転送を行うためのエンドポイント0と呼ばれる特殊なエンドポイントが必ず構成される。エンドポイント0は双方向通信が可能なエンドポイントである。インタフェースはエンドポイント0を介してプリンタ3から取得されるインタフェースディスクリプタに従って構成される。各インタフェースは通常1ないし複数のエンドポイントを有する。
本実施形態のプリンタ3ではエンドポイント0を用いたインタフェース0の他に、インタフェース1及びインタフェース2が構成されるものとする。さらに、インタフェース1及びインタフェース2はそれぞれリード用エンドポイントおよびライト用エンドポイントを有し、それらを使用することにより双方向通信を実現している。
そして、前述したプリンタ3を設定するための通信(a)はインタフェース1を用いて行われ、プリンタ3に印刷データを送信するための通信(b)はインタフェース2を用いて行われるものとする。
なお、インタフェース2を構成せず、プリンタ3を設定するための通信(a)、及び、プリンタ3に印刷データを送信するための通信(b)をどちらもインタフェース1を用いて行ってもよい。
(4)セッションの排他処理
次に、Webブラウザ42とIPP/USB変換プログラム43との間に確立されるセッションの排他処理について説明する。ここではプリンタ3を設定するための通信(a)を例に説明する。
先ず、図3を参照して、プリンタ3の設定画面60について説明する。図3に示す設定画面60では、プリンタ言語61a、第1のトレイにセットされている用紙サイズ61b、及び、第2のトレイにセットされている用紙サイズ61cを設定することができる。
また、設定画面60には画像62a、画像62b、画像62cが表示される。ここでは画像62a〜画像62cをそれぞれGIF1、GIF2、GIF3というものとする。
Webブラウザ42はlocalhostのポート80にセッションの確立を要求し、確立されたセッションを介してIPP/USB変換プログラム43に設定画面60の画面データの送信を要求する。この要求はGETコマンドを送信することによって行われる。
上述したGETコマンドはIPP/USB変換プログラム43によってUSBを介してIPP機能51に送信され、IPP機能51からWebサーバ機能52に送信される。Webサーバ機能52はGETコマンドを受信すると設定画面CGIを実行して設定画面60の画面データを生成する。そして、Webサーバ機能52は上述したGETコマンドに対する応答として、設定画面CGIによって生成された画面データをIPP機能51に送信する。
IPP機能51はWebサーバ機能52から画面データを受信すると、USBを介してその画面データをIPP/USB変換プログラム43に送信する。
IPP/USB変換プログラム43はIPP機能51から画面データを受信すると、Webブラウザ42から受信したGETコマンドに対する応答としてその画面データをWebブラウザ42に送信する。
Webブラウザ42はこの画面データを解析し、ページを表示するに足りない部品(GIF1、GIF2、GIF3など)を同様に要求する。この場合に、Webブラウザ42はマルチセッションによる通信が可能であるので、足りない部品(GIF1、GIF2、GIF3)毎にセッションを確立して画像の送信を要求する。
例えば、Webブラウザ42は最初にGIF1の送信を要求するためのセッションの確立を要求し、そのセッションを介して送信した処理要求に対する応答を待たずに、GIF2の送信を要求するためのセッションの確立を要求する。同様に、Webブラウザ42はGIF2の送信を要求するためのセッションを介して送信した処理要求に対する応答を待たずに、GIF3の送信を要求するためのセッションの確立を要求する。
しかしながら、USBのインタフェースにはマルチセッションの概念がない。また、IPP機能51は必ずしもGETコマンドの順に応答を返すわけではなく、その返す順序は不定である。
このため、各セッションがインタフェース1を介して通信すると、IPP/USB変換プログラム43がIPP機能51から応答を受信したとき、IPP/USB変換プログラム43はその応答がいずれのセッションを介して受信した処理要求に対する応答であるかを判断できない。このため、あるセッションに対する応答が別のセッションに送信されてしまうなどのような混乱が起こり得る。
そこで、実施形態1に係るIPP/USB変換プログラム43は、排他処理を実行することにより、同時に一のセッションのみを介して通信を中継する。
(5)通信の全体的な流れ
図4を参照して、通信の全体的な流れについて説明する。ここではプリンタ3を設定するための通信(a)を例に説明する。前述したようにプリンタ3を設定するための通信(a)はインタフェース1を用いて行われる。
また、ここではWebブラウザ42は既にIPP/USB変換プログラム43から設定画面60の画面データを受信して解析が完了しているものとし、IPP/USB変換プログラム43にGIF1、GIF2、及び、GIF3の送信を要求するところから説明を始める。
また、ここではIPP機能51とWebサーバ機能52とをまとめてプリンタ3というものとする。
Webブラウザ42は、先ずIPP/USB変換プログラム43にセッション1の確立を要求する。IPP/USB変換プログラム43はセッション1の確立が要求されると、Webブラウザ42との間にセッション1を確立する(S101)とともに、セッション1以外のセッションによる通信を禁止する。そして、IPP/USB変換プログラム43はセッション1を介してWebブラウザ42とIPP機能51との間で通信を中継する(S102、S103、S105、S106)。ここでは、上述したWebブラウザ42がGIF1を要求してから受信するまでの通信が行われる。
Webブラウザ42は、セッション1の確立を要求した後、セッション1によってGIF1が受信されるのを待つことなくセッション2の確立を要求する。IPP/USB変換プログラム43はセッション2の確立が要求されると、Webブラウザ42との間にセッション2を確立する(S104)。しかしながら、セッション1以外の通信は禁止されているので、セッション2は待機状態となる。
IPP/USB変換プログラム43は、セッション1による通信の中継が完了すると(S106)、セッション1以外のセッションによる通信を解禁する。これによりセッション2の待機状態が解除される。IPP/USB変換プログラム43はセッション2の待機状態が解除されるとセッション2を介してWebブラウザ42とIPP機能51との間で通信を中継する(S107、S108、S110、S111)。
セッション3についても同様であり、セッション2でWebブラウザ42がGIF2を受信するまで待機し、GIF2の受信が完了すると通信を開始する。
これら一連の処理によってGIF1〜GIF3がWebブラウザ42に読み込まれ、設定画面60上にGIF1〜GIF3が表示される。
設定画面60に対する操作は、HTTPのGETコマンド、PUTコマンド、POSTコマンドなどの処理要求に変更されて同様にIPP/USB変換プログラム43を介してプリンタ3に送信される。これにより、従来のTCP/IPネットワークを介してプリンタ3の設定を行うのと同様の手順でUSBを介してプリンタ3の設定を行うことができる。
(6)処理要求のデータ構造、及び、応答のデータ構造
次に、上述した処理要求のデータ構造、及び、処理要求に対してプリンタ3から送信される応答のデータ構造について説明する。
(6−1)処理要求のデータ構造
先ず、処理要求のデータ構造について説明する。ここではPOSTコマンドを例に説明する。処理要求のデータ構造はHTTPの仕様に準拠するものであり、広く用いられているものであるのでここではその概略のみを説明する。処理要求は1以上の通信データからなる。以下に処理要求の一例を示す。ここでは各通信データの前に行番号を[]で括って示す。
[1行目]POST /ipp/[function] HTTP/1.1<CRLF>
[2行目]Host: localhost<CRLF>
[3行目]Content−Type: application/ipp<CRLF>
[4行目]Transfer−Encoding: chunked<CRLF>
[5行目]<CRLF>
上述した例において各行はそれぞれ一つの通信データを表している。また、上述した例から明らかなように各通信データは最後が<CRLF>で終わっている。<CRLF>は復帰改行コードである。
また、5行目に示すように処理要求の最後の通信データは<CRLF>のみである。従って、受信した通信データが<CRLF>のみである場合は一つの処理要求の受信が完了したと判断することができる。
なお、PUTコマンドやPOSTコマンドでは通常この一連の通信データの他にバイナリデータあるいはテキストデータなどの付加データが付加される。ここでは付加データも含んで処理要求という。
全ての付加データのバイト数が予めわからない場合はTransfer−Encoding: chunkedなどの形で細切れのデータ塊が続くことが処理要求中に示される。この場合、データ塊ごとのサイズが示される。
また、付加データが付加される場合は上述したchunkedに替えてContent-Length: 4554といった行が処理要求に挿入され、指定されたバイト数(この場合は4554)の付加データが続くことが示される場合もある。
各通信データ、付加データ、あるいは付加データを細切れにした各データ塊はそれぞれ部分処理要求データの一例である。つまり、IPP/USB変換プログラム43はWebブラウザ42から処理要求を複数の部分処理要求データに分けて受信する。
なお、部分処理要求データは、処理の仕方によりいろいろな形態が考えられる。例えば固定長、あるいは特定の条件によってきまるデータ長ごとに受信し、それぞれを部分処理要求データとすることもできる。
(6−2)応答のデータ構造
応答のデータ構造もHTTPの仕様に準拠するものであり、広く用いられているものであるのでここではその概略のみを説明する。応答も1以上の通信データからなり、最後の通信データは<CRLF>のみである。またGETコマンドに対する応答にあっては、処理要求の場合と同様にバイナリデータやテキストデータなどの付加データが付加される。例えば前述したGIF1〜GIF3はGETコマンドに対する応答に付加される付加データである。
各通信データ、付加データ、あるいは付加データを細切れにした各データ塊はそれぞれ部分応答データの一例である。つまり、IPP/USB変換プログラム43はIPP機能51から応答を複数の部分応答データに分けて受信する。なお、部分応答データは処理の仕方によりいろいろな形態が考えられる。
(7)通信中継処理の課題
上述したようにIPP/USB変換プログラム43はWebブラウザ42から処理要求を複数の部分処理要求データに分けて受信する。この場合、IPP/USB変換プログラム43は全ての部分処理要求データの受信が完了するのを待つことなく、先に受信した部分処理要求データから順にIPP機能51に送信することもできる。
しかしながら、IPP/USB変換プログラム43が全ての部分処理要求データをIPP機能51に送信する前に、何らかの理由によってWebブラウザ42とIPP/USB変換プログラム43との間の通信が途中で途絶えてしまう場合がある。例えばユーザがWebブラウザ42の中止ボタンをクリックしたり、あるいはWebブラウザ42を終了させたりすることによって通信が途絶えてしまう場合がある。この場合、従来はWebブラウザ42とIPP/USB変換プログラム43との間の通信が途中で途絶えたことをIPP機能51に通知する仕組みは考慮されていなかった。よって、IPP機能51はWebブラウザ42とIPP/USB変換プログラム43との間の通信が途絶えてしまったことを認識することができない。
このため、先に受信した部分処理要求データから順にIPP機能51に送信すると、IPP機能51が全ての部分処理要求データの受信を完了する前にWebブラウザ42とIPP/USB変換プログラム43との間の通信が途絶えたとしても、IPP機能51は次の部分処理要求データを受信しようとして受信待ち状態が長時間継続してしまう。
そこで、実施形態1に係るIPP/USB変換プログラム43は、上述した通信中継処理において、Webブラウザ42からの処理要求の受信が完了した後にIPP機能51への当該処理要求の送信を開始する。以下、通信中継処理の詳細について説明する。
(8)IPP/USB変換プログラム43による通信中継処理の詳細
通信中継処理では、IPP/USB変換プログラム43は次に説明するスレッド生成処理、及び、Webブラウザから処理要求を受信する処理を実行する。
(8−1)スレッド生成処理
先ず、図5を参照して、スレッド生成処理について説明する。前述したようにIPP/USB変換プログラム43は常駐プログラムとして実行されるものであり、本処理はPC2に電源が投入されると開始される。
ここで、本処理はWebブラウザ42とIPP機能51との間で通信を中継する処理であり、スプーラ44とIPP機能51との間で通信を中継する処理は本処理とは別の処理として実行されるものとする。当該別の処理についての説明は省略する。
S101では、IPP/USB変換プログラム43はセッションの排他処理を行うためのミューテックスを生成する。ミューテックスは排他処理を行うための仕組みであって、プログラム言語によって提供される仕組みである。ミューテックスの詳細については後述する。
なお、ここではミューテックスを用いて排他処理を行う場合を例に説明するが、排他処理を行う方法はこれに限られない。例えばセマフォを用いて行ってもよいし、ミューテックスやセマフォを用いず独自の方法で行ってもよい。
S102では、IPP/USB変換プログラム43はセッションを確立する要求(アクセプト要求という)を監視するソケットの生成及び設定を行う。ソケットとはTCP/IPによって通信を行うための抽象化されたインタフェースのことをいう。また、ソケットの設定とは、ソケットにPC2のIPアドレスや監視対象の通信ポートを示すポート番号などを設定し、そのソケットの動作モードをアクセプト要求の監視モードにすることをいう。本実施形態ではIPアドレスとして127.0.0.1が設定され、ポート番号として80が設定される。
ユーザがWebブラウザ42を立ち上げ、IPアドレスとして127.0.0.1、ポート番号として80を設定すると、Webブラウザ42は当該アドレスおよびポート番号に対して通信の確立を要求する。この要求がアクセプト要求となる。
S103では、IPP/USB変換プログラム43はWebブラウザ42からアクセプト要求を受信するまで待機し、アクセプト要求を受信するとS104に進む。
S104では、IPP/USB変換プログラム43はスレッドを生成する。
S105では、IPP/USB変換プログラム43はOS41から終了要求があったか否かを判断する。この終了要求はこの常駐プログラムであるIPP/USB変換プログラム43の終了を要求するものである。IPP/USB変換プログラム43は常駐プログラムであるので通常は「否」であるが、ユーザの操作等によりプログラムの終了が指示されると終了要求を受ける。IPP/USB変換プログラム43は、終了要求があった場合は本処理を終了し、なかった場合はS103に戻って処理を繰り返す。
(8−2)Webブラウザから処理要求を受信する処理
次に、図6を参照して、IPP/USB変換プログラム43がWebブラウザ42から処理要求を受信する処理について説明する。この処理は前述したS104で生成されたスレッドによって実行される。すなわち、アクセプト要求が複数ある場合は、それぞれ別のスレッドとしてこの処理は実行される。従って図6のフローチャートの中で扱うセッションは1つのみであり、複数のセッションがある場合は、別々のスレッドにより図6のフローチャートの処理が並行して行われることになる。
S201では、スレッドはアクセプト処理を実行する。アクセプト処理とは、アクセプト要求を送信してきた相手(すなわちWebブラウザ42)との間に新たなセッションを確立する処理である。S201は第1の確立処理の一例である。
具体的には、スレッドはWebブラウザ42と通信を行うための新たなソケットを生成し、生成したソケットを用いてWebブラウザ42との間にセッションを確立する。なお、ソケットのオープン、クローズ、アクセプトなどのタイミングで、USBのエンドポイント0を用いたコントロール転送を用いてプリンタ3に情報を送り、上記オープン、クローズ、アクセプトなどのタイミングでプリンタ3と同期をとってもよい。
S202では、スレッドはS201で確立した新たなセッション以外のセッションによる通信を禁止する排他処理を実行する。
具体的には、スレッドはS101で生成されたミューテックスの取得を試みる。ミューテックスが他のスレッドによって取得されていない場合は当該スレッドによってミューテックスが取得され、その後にミューテックスの取得を試みた他のスレッドは当該スレッドによってミューテックスが解放されるまで待機状態となる。これにより他のスレッドは通信が禁止された状態となる。
一方、ミューテックスが他のスレッドによって取得されている場合は、当該スレッドはミューテックスを取得できるまで待機状態となる。これにより当該スレッドは通信が禁止された状態となる。そして、他のスレッドがミューテックスを解放すると、当該スレッドより先に待機状態になっているスレッドがある場合は当該先に待機状態になっているスレッドによってそのミューテックスが取得され、当該スレッドは引き続き待機状態となる。当該スレッドより先に待機状態になっているスレッドがない場合は、当該スレッドによってミューテックスが取得される。
スレッドはミューテックスを取得するとS203に進む。
上述したS202は第1の禁止判断処理、第1の待機処理、及び、第1の排他処理の一例である。すなわち、IPP/USB変換プログラム43はミューテックスの仕組みを用いることによってこれらの処理を実現している。
S203では、スレッドはS201で確立したセッションを介してWebブラウザ42から部分処理要求データを受信する。S203は第1の要求受信処理の一例である。
S204では、スレッドは一つの処理要求の受信が完了したか否かを判断する。具体的には、スレッドはHTTPのプロトコルに従ってデータエンドを判断する。例えば、スレッドは<CRLF>の有無や、Content-LengthやTransfer−Encoding: chunkedで示される付加データのサイズを確認することにより、データエンドを判断する。これにより、一つの処理要求の受信が完了したか否かを判断することができる。
スレッドは、一つの処理要求の受信が完了していないと判断した場合はS205に進み、完了したと判断した場合はS206に進む。
S205では、スレッドはWebブラウザ42から通信の中止が通知されたか否かを判断する。具体的には、スレッドはS201で確立したセッションがWebブラウザ42によってクローズされたか否かを判断し、クローズされた場合は通信の中止が通知されたと判断する。スレッドは通信の中止が通知されていない場合はS203に戻って処理を繰り返し、中止が通知された場合は途中まで受信した処理要求を破棄してS211に進む。S205は第1の中止判断処理の一例である。
S206では、スレッドはWebブラウザ42から受信した処理要求をIPP機能51に送信する。S206は第1の要求送信処理の一例である。
S207では、スレッドはIPP機能51に送信した処理要求に対する応答をIPP機能51から受信する。具体的には、IPP機能51は応答を複数の部分応答データに分割してIPP/USB変換プログラム43に送信するものであり、S207では一つの部分応答データが受信される。
S208では、スレッドはIPP機能51からの応答の受信が完了したか否かを判断する。この判断はS204と同様の手順により行われる。スレッドは、応答の受信が完了していない場合はS207に戻って処理を繰り返し、完了している場合はS209に進む。
S209では、スレッドは上記S207、S208の処理の間にWebブラウザ42から通信の中止が通知されたか否かを判断する。なお、スレッドは最後にS205を実行した後、S209を実行するまでの間にWebブラウザ42から通信の中止が通知されたか否かを判断してもよい。前述したように通信の中止が通知されたか否かはWebブラウザ42によってセッションがクローズされたか否かによって判断される。スレッドは、通信の中止が通知されていない場合はS210進み、通知された場合はS211に進む。
S210では、スレッドはIPP機能51から受信した応答をWebブラウザ42に送信する。
S211では、スレッドは排他終了処理を実行する。具体的には、スレッドはミューテックスを解放する。S211は第1の解禁処理の一例である。従ってS202から本S211までの間、換言すれば、S206、S209によりそのセッションにおけるすべての部分処理要求データ及び部分応答データを送信するまでの間、排他処理が行われ、その間に他のスレッドの処理により他のセッションの部分要求データや部分応答データが割り込むことはない。
S212では、スレッドはS201で生成したセッションをクローズして処理を終了する。
なお、上述したフローチャートでは省略しているが、スレッドがIPP機能51と通信している間に何らかの理由によってUSBが切断された場合は通信を中止し、HTTPの書式に従ってWebブラウザ42にエラーを通知してもよい。
(7)実施形態の効果
以上説明したIPP/USB変換プログラム43によると、Webブラウザ42からの処理要求の受信が完了した後でなければプリンタ3への処理要求の送信を開始しない。具体的には、IPP/USB変換プログラム43は、S205で通信の中止が通知されたと判断されることなくS204で処理要求の受信が完了したと判断した場合でなければプリンタ3への処理要求の送信を開始しない。このため、IPP/USB変換プログラム43がWebブラウザ42から処理要求を受信している途中でWebブラウザ42から通信の中止が通知された場合は、プリンタ3への処理要求の送信が開始されない。
よってIPP/USB変換プログラム43によると、プリンタ3とWebブラウザ42との間で通信を中継する場合に、Webブラウザ42とIPP/USB変換プログラム43との間の通信が途中で途絶えてしまうことによってプリンタ3の受信待ち状態が長時間継続してしまうことを抑制することができる。
更に、IPP/USB変換プログラム43によると、いずれかのセッションを介して処理要求を中継している間は他のセッションによる通信を禁止するので、処理要求に対する応答が混乱してしまうことを抑制できる。また中止の処理は中止が通知されたセッションのみにかかるので、Webブラウザ42からの一部の処理要求に対してのみの中断にも対応できる。
<実施形態2>
次に、実施形態2を図7ないし図9によって説明する。
前述した実施形態1に係るIPP/USB変換プログラム43はWebブラウザ42からの処理要求の受信が完了した後にIPP機能51への当該処理要求の送信を開始する。これに対し、実施形態2に係るIPP/USB変換プログラム43はWebブラウザ42からの処理要求の受信を開始すると、当該処理要求の受信が完了するのを待たずにIPP機能51への当該処理要求の送信を開始する。
この場合、IPP/USB変換プログラム43が処理要求の受信を完了する前にWebブラウザ42から通信の中止が通知され、それによりIPP/USB変換プログラム43とWebブラウザ42との通信が途絶えてしまうことが起こり得る。その場合、IPP機能51はIPP/USB変換プログラム43とWebブラウザ42との通信が途絶えていることを知ることができないので、処理要求の受信待ち状態が長時間継続してしまう。
そこで、実施形態2に係るIPP/USB変換プログラム43は、Webブラウザ42から通信の中止が通知されると、IPP機能51に通信の中止を通知する。
(7)IPP/USB変換プログラムによる通信中継処理
(7−1)スレッド生成処理
実施形態2に係るスレッド生成処理は実施形態1と実質的に同一であるので説明は省略する。
(7−2)Webブラウザから処理要求を受信する処理
図7を参照して、実施形態2に係るIPP/USB変換プログラム43がWebブラウザ42から処理要求を受信する処理について説明する。
S301では、スレッドはアクセプト処理を実行する。S301は第2の確立処理の一例である。
S302では、スレッドはS301で確立した新たなセッション以外のセッションによる通信を禁止する排他処理を実行する。S302は、第2の禁止判断処理、第2の待機処理、及び、第2の排他処理の一例である。
S303では、スレッドはS301で確立したセッションを介してWebブラウザ42から部分処理要求データを受信する。S303は第2の要求受信処理の一例である。
S304では、スレッドはS303で受信した部分処理要求データをIPP機能51に送信する。S304は第2の要求送信処理の一例である。
S305では、スレッドは一つの処理要求の受信が完了したか否かを判断し、一つの処理要求の受信が完了していないと判断した場合はS306に進み、完了したと判断した場合はS308に進む。
S306では、スレッドはWebブラウザ42から通信の中止が通知されたか否かを判断する。具体的には、スレッドはS301で確立したセッションがWebブラウザ42によってクローズされたか否かを判断し、クローズされた場合は通信の中止が通知されたと判断する。スレッドは、通信の中止が通知されていない場合はS303に戻って処理を繰り返す。一方、中止が通知された場合は、スレッドはS307に進む。S306は第2の中止判断処理の一例である。
S307では、スレッドはIPP機能51にキャンセル通知を送信することによってIPP機能51に通信の中止を通知する。キャンセル通知はインタフェース0を介してコントロール転送によってIPP機能51に送信される。S307は第1の中止通知処理の一例である。S307を終えるとS312において排他終了処理を行い、当該セッションの終了待ちで待機状態にあるスレッドを非待機状態とし、S313にてセッションをクローズする。
S308では、スレッドはIPP機能51に送信した処理要求に対する応答をIPP機能51から受信する。具体的には、IPP機能51は応答を複数の部分応答データに分割してIPP/USB変換プログラム43に送信するものであり、S308では一つの部分応答データが受信される。
S309では、スレッドはS308乃至後述するS311のループ処理の間にWebブラウザ42から通信の中止が通知されたか否かを判断し、中止が通知されていない場合はS310に進み、中止が通知された場合はS307に進み前述のとおりIPP機能にキャンセル通知を送信する。
S310では、スレッドはIPP機能51から受信した部分応答データをWebブラウザ42に送信する。
S311では、スレッドはIPP機能51からの応答の受信が完了したか否かを判断する。この判断はS305と同様の手順により行われる。スレッドは、応答の受信が完了している場合はS312に進み、完了していない場合はS308に戻って処理を繰り返す。
S312では、スレッドは排他終了処理を実行する。S312は第2の解禁処理の一例である。
S313では、スレッドはS301で生成したセッションをクローズして処理を終了する。
なお、上述したフローチャートでは省略しているが、スレッドがIPP機能51と通信している間に何らかの理由によってUSBが切断された場合は通信を中止し、HTTPの書式に従ってWebブラウザ42にエラーを通知してもよい。
(2)IPP機能の処理
次に、実施形態2に係るIPP機能51の処理について説明する。
(2−1)IPP/USB変換プログラムから処理要求を受信する処理
先ず、図8を参照して、実施形態2に係るIPP機能51がインタフェース1又はインタフェース2を介してIPP/USB変換プログラム43から処理要求を受信する処理について説明する。本処理はプリンタ3の電源がONの状態で繰り返し実行される。
S401では、IPP機能51はIPP/USB変換プログラム43からの受信がWebブラウザ42からの処理要求の受信であるか否かを判断し、Webブラウザ42からの処理要求の受信である場合はS402に進み、それ以外である場合はS406に進む。
S402では、IPP機能51はWebサーバ機能52との間に通信を確立する。この通信はTCP/IPのセッションとして確立されてもよいし、プリンタ3の独自の通信方式(たとえば共有メモリによるデータ送信)によって確立されてもよい。S402は第4の確立処理の一例である。
S403では、IPP機能51はS402で確立した通信を介してWebサーバ機能52に処理要求を送信する。S403は第4の要求送信処理の一例である
S404では、IPP機能51はWebサーバ機能52から一定時間以内に応答を受信したか否かを判断し、応答を受信した場合はS405に進み、応答を受信しなかった場合はS401に戻る。S404は第2の応答受信処理の一例である。
S405では、IPP機能51はWebサーバ機能52から受信した応答を、インタフェース1を介してIPP/USB変換プログラム43に送信する。S405は第2の応答送信処理の一例である。
S406では、IPP機能51はIPP/USB変換プログラム43からの受信がスプーラ44からの印刷ジョブの受信であるか否かを判断し、スプーラ44からの印刷ジョブの受信である場合はS407に進み、それ以外である場合はS409に進む。
S407では、IPP機能51は受信した印刷ジョブを印刷部33に出力する。
S408では、IPP機能51は印刷ジョブを正常に受信したことを示す応答(図8ではOK応答と記す)を、インタフェース2を介してIPP/USB変換プログラム43に送信する。
S409では、IPP機能51はその他の処理要求に応じた処理を実行する。
(2−2)IPP/USB変換プログラムからキャンセル通知を受信したときの処理
次に、図9を参照して、IPP機能51がインタフェース0を介してIPP/USB変換プログラム43からキャンセル通知を受信したときの処理について説明する。IPP機能51がキャンセル通知を受信したか否かを判断する処理は第4の中止判断処理の一例である。
S501では、IPP機能51はWebサーバ機能52との通信を終了させる。S501は第1の終了処理の一例である。
S502では、IPP機能51は現在行っている通信がプリンタ3を設定するための通信(a)であるかプリンタ3に印刷データを送信するための通信(b)であるかを判断し、プリンタ3を設定するための通信(a)である場合はS503に進み、そうでない場合はS506に進む。
S503では、IPP機能51はキャンセル通知が受信されたときが処理要求の受信中であるか、又は、処理要求の受信が完了した後、IPP/USB変換プログラム43に応答を送信する前であるかを判断し、処理要求の受信中である場合はS504に進み、そうでない場合はS505に進む。
S504では、IPP機能51はIPP/USB変換プログラム43からの処理要求の受信待ち状態を解消する。
S505では、IPP機能51はIPP/USB変換プログラム43から受信した処理要求を破棄する。
S506では、IPP機能51はキャンセル通知が受信されたときが印刷ジョブの受信中であるか、又は、印刷ジョブの受信が完了した後、IPP/USB変換プログラム43に応答を送信する前であるかを判断し、印刷ジョブの受信中である場合はS507に進み、印そうでない場合はS508に進む。
S507では、IPP機能51はIPP/USB変換プログラム43からの印刷ジョブの受信待ち状態を解消する。
S508では、IPP機能51はIPP/USB変換プログラム43から受信した印刷ジョブを破棄する。
(3)実施形態の効果
以上説明した実施形態2に係るIPP/USB変換プログラム43によると、Webブラウザ42から処理要求を受信している途中でWebブラウザ42から通信の中止が通知された場合は、プリンタ3に通信の中止を通知する。
よってIPP/USB変換プログラム43によると、プリンタ3とWebブラウザ42との間で通信を中継する場合に、Webブラウザ42とIPP/USB変換プログラム43との間の通信が途中で途絶えてしまうことによってプリンタ3の受信待ち状態が長時間継続してしまうことを抑制することができる。
更に、IPP/USB変換プログラム43によると、いずれかのセッションを介して処理要求を中継している間は他のセッションによる通信を禁止するので、処理要求が混乱してしまうことを抑制できる。
また、実施形態2に係るプリンタ3によると、IPP機能51はPC2から通信の中止が通知された場合はWebサーバ機能52との間に確立されているセッションを終了させるので、Webサーバ機能52の受信待ち状態が長時間継続してしまうことを抑制することができる。
更に、実施形態2に係るプリンタ3によると、IPP機能51はPC2から受信した処理要求をWebサーバ機能52に送信した後、PC2に応答を送信する前にPC2から通信の中止が通知された場合は、Webサーバ機能52から送信された応答をPC2に送信せずに破棄するので、Webブラウザ42とIPP/USB変換プログラム43との間の通信が途中で途絶えてしまったにもかかわらずプリンタ3がPC2に応答を送信してしまうことを抑制することができる。
<実施形態3>
次に、実施形態3を図10ないし図17によって説明する。
実施形態3は実施形態2の変形例である。実施形態3に係るIPP/USB変換プログラム43は、実施形態2に係るIPP/USB変換プログラム43と同様に、Webブラウザ42からの処理要求の受信を開始するとその受信が完了するのを待たずにIPP機能51への当該処理要求の送信を開始する。
この場合に、実施形態2に係るIPP/USB変換プログラム43はセッション単位での排他処理を行っているが、実施形態3に係るIPP/USB変換プログラム43はセッション単位での排他処理を行わない。
その替わりとして、実施形態3に係るIPP/USB変換プログラム43は、Webブラウザ42から受信した処理要求にセッションを識別するためのセッション情報を付加したセッション情報付き処理要求をIPP機能51に送信する。そして、IPP/USB変換プログラム43はIPP機能51からセッション情報が付加された応答であるセッション情報付き応答を受信する。そして、IPP/USB変換プログラム43は、セッション情報付き応答からセッション情報を除去した応答を、当該セッション情報によって識別されるセッションを介してWebブラウザ42に送信する。
(1)IPP/USB変換プログラムによる通信中継処理の全体的な流れ
先ず、図10を参照して、IPP/USB変換プログラム43による通信中継処理の全体的な流れについて説明する。ここではプリンタ3を設定するための通信(a)を例に説明する。前述したようにプリンタ3を設定するための通信(a)はインタフェース1を用いて行われる。
また、ここではWebブラウザ42がIPP/USB変換プログラム43にGIF1、GIF2、及び、GIF3の送信を要求するところから説明を始める。
また、ここではIPP機能51とWebサーバ機能52とをまとめてプリンタ3というものとする。
Webブラウザ42は、先ずIPP/USB変換プログラム43にセッション1の確立を要求してセッション1を確立(S701)し、GIF1の送信を要求する処理要求を、セッション1を介してIPP/USB変換プログラム43に送信する(S702)。
IPP/USB変換プログラム43はセッション1を介して処理要求を受信すると、その処理要求にセッション1を識別するためのセッションIDを付加したセッションID付き処理要求を、USBを介してプリンタ3に送信する(S703)。
プリンタ3は、セッションID付き処理要求を受信すると、その処理要求に対する応答としてGIF1をIPP/USB変換プログラム43に送信する(S707)。このときプリンタ3はセッションID付き処理要求に付加されていたセッションIDを応答に付加して送信する。
IPP/USB変換プログラム43はセッションID付き応答を受信すると、セッションID付き応答からセッションIDを除去した応答を、そのセッションIDによって識別されるセッション、すなわちセッション1を介してWebブラウザ42に送信する(S708)。
Webブラウザ42は、セッション1の確立を要求した後、セッション1によってGIF1が受信されるのを待つことなくセッション2の確立を要求し(S704)、GIF2の送信を要求する処理要求を、セッション2を介してIPP/USB変換プログラム43に送信する(S705)。セッション2についてもセッション1と同様に、セッション2を識別するためのセッションIDを用いて通信が行われる(S706、S712、S713)。セッション3についても同様である。
これら一連の処理によってGIF1〜GIF3がWebブラウザ42に読み込まれ、設定画面60上にGIF1〜GIF3が表示される。
(2)セッションID付き処理要求、及び、セッションID付き応答
この処理における部分処理要求データは以下のように分けられる。
(a)ヘッダ
(b)Content-Lengthにより一括指定される付加データのデータ塊
(c)chunked指定により指定される複数に分割された付加データのそれぞれのデータ塊
ここでヘッダとは、処理要求のうち付加データ以外のデータのことをいう。付加データが付加されていない場合は処理要求全体がヘッダに相当する。実際の要求では、(1)のみ、あるいは(1)および(2)、あるいは(1)および単数もしくは複数の(3)により処理要求データが構成される。
付加データが付加される場合はヘッダにContent-Length、及び、chunkedのいずれか一方が指定される。
実施形態3に係るIPP/USB変換プログラム43は、例えばセッション1を介して処理要求のヘッダを受信すると、そのヘッダにセッション1のセッションIDを付加したセッションID付きヘッダをIPP機能51に送信する。
そして、IPP/USB変換プログラム43は、セッション1による処理要求の受信が完了する前にセッション2を介してヘッダを受信すると、そのヘッダにセッション2のセッションIDを付加したセッションID付きヘッダをIPP機能51に送信する。以下同様に、IPP/USB変換プログラム43はセッションを介して部分処理要求データを受信する毎にその部分処理要求データに当該部分処理要求データを受信したセッションのセッションIDを付加してIPP機能51に送信する。
IPP機能51も同様に応答をヘッダと付加データとの二つの部分応答データに分け、各部分応答データにセッションIDを付加してIPP/USB変換プログラム43に送信する。
(3)IPP/USB変換プログラムによる通信中継処理
(3−1)スレッド生成処理
実施形態3に係るスレッド生成処理は実施形態1と実質的に同一であるので説明は省略する。
(3−2)Webブラウザから処理要求を受信する処理
先ず、図11を参照して、実施形態3に係るIPP/USB変換プログラム43がWebブラウザ42から処理要求を受信する処理について説明する。この処理はS104で生成されたスレッドによって実行される。
S801では、スレッドはアクセプト処理を実行する。S801は第3の確立処理の一例である。
S802では、スレッドはS801で生成したソケットを識別すためのセッションIDを生成する。S802は識別子生成処理の一例である。
S803では、スレッドはS801で生成したソケットを識別するためのソケット情報とS802で生成したセッションIDとを対応付けて記憶部25に記憶させる。S803は第1の記憶処理の一例である。また、ソケット情報はセッションを識別すための識別情報の一例である。
S804では、スレッドはS801で確立したセッションを介してWebブラウザ42から処理要求のヘッダを受信する。S804は第3の要求受信処理の一例である。
S805では、スレッドはWebブラウザ42から通信の中止が通知されたか否かを判断する。前述したように通信の中止が通知されたか否かはWebブラウザ42によってセッションがクローズされたか否かによって判断される。スレッドは、通信の中止が通知されていない場合はS806に進み、通知された場合は本処理を終了する。S805は第3の中止判断処理の一例である。
S806では、スレッドはインタフェース1の排他処理を実行する。
S807では、スレッドはS802で生成したセッションIDを、インタフェース1を介してIPP機能51に送信する。
S808では、スレッドはS804で受信したヘッダを、インタフェース1を介してIPP機能51に送信する。ここで、処理要求のヘッダが複数の通信データからなる場合は、S808においてそれら複数の通信データがIPP機能51に送信される。
上述したS807及びS808はセッション情報付き処理要求を画像処理装置に送信する第3の要求送信処理の一例である。
S809では、スレッドはインタフェース1の排他処理を終了する。
S810では、スレッドは付加データがあるか否かを判断する。具体的には、スレッドはS804で受信したヘッダにContent-Length又はchunkedが含まれている場合は付加データがあると判断し、いずれも含まれていない場合は付加データがないと判断する。スレッドは、付加データがある場合はS811に進み、付加データがない場合は本処理を終了する。
S811では、スレッドは付加データ送信処理を実行する。付加データ送信処理はWebブラウザ42から付加データを受信してIPP機能51に送信する処理である。
(3−3)付加データ送信処理
次に、図12及び図13を参照して、S811で実行される付加データ送信処理について説明する。
S901では、スレッドは受信したヘッダにContent-Lengthが含まれているか否かを判断し、Content-Lengthが含まれている場合はS902に進み、含まれていない場合(すなわちchunkedが含まれている場合)はS909に進む。
S902では、スレッドはS804で受信したヘッダからサイズ情報データを取得する。
S903では、スレッドはWebブラウザ42からS902で取得したサイズ情報データによって示されるデータサイズの付加データを受信する。
S904では、スレッドは上記S903の実行中にWebブラウザ42から通信の中止が通知されたか否かを判断し、通信の中止が通知されていない場合はS905に進み、通知された場合はS917に進む。
S905では、スレッドはインタフェース1の排他処理を実行する。
S906では、スレッドはS802で生成されたセッションIDを、インタフェース1を介してIPP機能51に送信する。
S907では、スレッドはS903で受信した付加データを、インタフェース1を介してIPP機能51に送信する。
S908では、スレッドはインタフェース1の排他終了処理を実行する。
S909では、スレッドはデータ塊のサイズ情報データを取得する。具体的には、前記S901でChunkedにより付加データが送信されていると判断された場合にS909の処理が行われる、この場合は、付加データは通常複数のデータ塊に分割され、それぞれのデータ塊に対してそのデータ数の情報が付加されている。S909ではそのそれぞれのデータ塊のサイズ情報データを取得する。
S910では、スレッドはWebブラウザ42からS909で取得したサイズ情報データによって示されるデータサイズ分の部分付加データを受信する。
S911では、スレッドは前記S909乃至後述するS916で形成されるループ中においてWebブラウザ42から通信の中止が通知されたか否かを判断し、通信の中止が通知されていない場合はS912に進み、通知された場合はS917に進む。
S912では、スレッドはインタフェース1の排他処理を実行する。
S913では、スレッドはS802で生成されたセッションIDを、インタフェース1を介してIPP機能51に送信する。
S914では、スレッドはS910で受信した部分付加データを、インタフェース1を介してIPP機能51に送信する。
S915では、スレッドはインタフェース1の排他終了処理を実行する。
S916では、スレッドは付加データの受信が完了したか否かを判断する。具体的には、受信した付加データに続くデータ塊があるか否かをS204と同様の方法で判断する。スレッドは、付加データの受信が完了した場合は本処理を終了して図11の処理に戻り、未だ完了していない場合はS909に戻って処理を繰り返す。ただし、本処理が終了してもセッションは存続し続ける。
S917では、スレッドはS802で生成したセッションIDを付加したセッションID付きキャンセル通知を生成する。
S918では、スレッドはS917で生成したセッションIDを付加したセッションID付きキャンセル通知をコントロール転送によってIPP機能51に送信する。前述したようにコントロール転送はインタフェース0を用いて行われる。S918は第2の中止通知処理の一例である。
S919では、スレッドはS802で生成したセッションIDと当該セッションIDに対応付けられて記憶されているソケット情報とを記憶部25から削除する。
S920では、スレッドはソケットを破棄し、図12に戻った後に図11の処理に戻る。
(3−4)IPP機能から応答を受信する処理
次に、図14を参照して、IPP/USB変換プログラム43がIPP機能51から応答を受信する処理について説明する。
S1001では、IPP/USB変換プログラム43はIPP機能51からセッションID付き部分応答データを受信する。S1001は第1の応答受信処理の一例である。
S1002では、IPP/USB変換プログラム43はセッションID付き部分応答データからセッションIDを取得する。
S1003では、IPP/USB変換プログラム43はS1002で取得したセッションIDが記憶部25に記憶されているか否かを判断し、記憶されている場合はS1004に進む。一方、記憶されていない場合は、IPP/USB変換プログラム43はS1001で受信したセッションID付き部分応答データを破棄してS1001に戻る。
S1004では、IPP/USB変換プログラム43はS1002で取得したセッションIDと同じセッションIDに対応付けられて記憶されているソケット情報を記憶部25から読み出す。このソケット情報は前述したS803で記憶されたものである。
S1005では、IPP/USB変換プログラム43はS1001で受信したセッションID付き部分応答データからセッションIDを除去する。
S1006では、IPP/USB変換プログラム43はS1005でセッションIDを除去した部分応答データを、S1004で読み出したソケット情報によって識別されるセッションを介してWebブラウザ42に送信する。S1006は第1の応答送信処理の一例である。
S1007では、IPP/USB変換プログラム43はIPP機能51からの応答の受信が完了したか否かを判断する。この判断はS208と同様の手順により行われる。IPP/USB変換プログラム43は、応答の受信が完了していない場合はS1001に戻って処理を繰り返し、完了している場合はS1008に進む。
S1008では、IPP/USB変換プログラム43はS1004で読み出したソケット情報によって識別されるソケットを破棄する。
S1009では、IPP/USB変換プログラム43はS1002で取得したセッションIDと当該セッションIDに対応付けられているソケット情報とを記憶部25から削除する。S1009は削除処理の一例である。
(4)IPP機能の処理
次に、IPP機能51がIPP/USB変換プログラム43から処理要求を受信する処理、及び、IPP機能51がWebサーバ機能52から応答を受信する処理について説明する。
(4−1)IPP/USB変換プログラムから処理要求を受信する処理
先ず、図15を参照して、IPP機能51がIPP/USB変換プログラム43から処理要求を受信する処理について説明する。
S1101では、IPP機能51はIPP/USB変換プログラム43からUSBを介してセッションID付き部分処理要求データ(ヘッダ又は付加データ)を受信する。
ここで、S1101はIPP/USB変換プログラム43からセッションID付き部分処理要求データを受信するまで待機するのではなく、セッションID付き部分処理要求データを受信していない場合は受信したデータのデータサイズが0であるとしてS1102に進む。
S1102では、IPP機能51は後述するキャンセル処理からキャンセルが通知されたか否かを判断する。詳しくは後述するが、前述したS918でIPP/USB変換プログラム43から送信されたセッションID付きキャンセル通知は後述するキャンセル処理によって受信される。後述するキャンセル処理はセッションID付きキャンセル通知を受信すると、そのセッションIDをIPP機能51に通知する。IPP機能51はキャンセル処理からセッションIDが通知されたか否かによってキャンセルが通知されたか否かを判断することができる。IPP機能51はキャンセルが通知された場合はS1103に進み、通知されていない場合はS1105に進む。
S1103では、IPP機能51はS1101で受信したセッションID付き部分処理要求データに付加されているセッションIDとキャンセル処理から通知されたセッションIDとが一致するか否かを判断し、一致する場合はS1104に進み、一致しない場合はS1105に進む。
S1104では、IPP機能51はS1101で受信したセッションID付き処理要求を破棄してS1101に戻る。
S1105では、IPP機能51はS1101で受信したデータのデータサイズが0(零)であるか否かを判断し、0である場合はS1101に戻り、0でない場合はS1106に進む。
S1106では、IPP機能51はS1101で受信したセッションID付き部分処理要求データからセッションIDを取得する。
S1107では、IPP機能51はS1106で取得したセッションIDが、IPP機能51とWebサーバ機能52との間に確立されているセッションを識別するためのソケット情報に対応付けられて記憶部35に記憶されているか否かを判断する。具体的には、本処理はループ処理であり、後述するS1109が実行された後にS1107が実行される場合もある。その場合はS1106で取得したセッションIDが既に記憶部35に記憶されている場合もある。IPP機能51は、記憶されていない場合はS1108に進み、記憶されている場合はS1110に進む。S1107は記憶判断処理の一例である。また、ソケット情報は通信識別情報の一例である。
S1108では、IPP機能51はWebサーバ機能52と通信するためのソケットを生成し、生成したソケットを介してWebサーバ機能52との間に新たなセッションを確立する。IPP機能51とWebサーバ機能52との間に確立されたセッションは通信の一例である。以降の説明ではIPP機能51とWebサーバ機能52との間に確立されたセッションのことを通信という。S1108は第5の確立処理の一例である。
S1109では、IPP機能51はS1106で取得したセッションIDとS1108で生成したソケットを識別するためのソケット情報とを対応付けて記憶部35に記憶させる。S1109は第2の記憶処理の一例である。
S1110では、IPP機能51はS1106で取得したセッションIDと同じセッションIDに対応付けられているソケット情報を記憶部35から読み出す。
S1111では、IPP機能51はS1101で受信したセッションID付き部分処理要求データからセッションIDを除去する。
S1112では、IPP機能51はS1111でセッションIDを除去した部分処理要求データを、S1108で生成したソケット、あるいは、S1110で読み出したソケット情報によって識別されるソケットを介してWebサーバ機能52に送信する。S1112は第5の要求送信処理の一例である。
S1113では、IPP機能51は処理要求の受信が完了したか否かを判断する。この判断は前述したS204と同様に行うことができる。IPP機能51は、処理要求の受信が完了している場合はS1114に進み、完了していない場合はS1101に戻って処理を繰り返す。
S1114では、IPP機能51はスレッドを生成する。このスレッドはWebサーバ機能52から応答を受信してIPP/USB変換プログラム43に送信するためのものである。
(4−2)キャンセル処理
次に、図16を参照して、前述したキャンセル処理について説明する。本処理は前述したS918でIPP/USB変換プログラム43から送信されたセッションID付きキャンセル通知を、インタフェース0を介してIPP機能51が受信すると開始される。
S1201では、IPP機能51はIPP/USB変換プログラム43からコントロール転送によって送信されたセッションID付きキャンセル通知からセッションIDを取得する。S1201は第5の中止判断処理及び第6の中止判断処理の一例である。
S1202では、IPP機能51は前述した「IPP/USB変換プログラムから処理要求を受信する処理」に、キャンセル通知に付加されているセッションIDを通知する。このセッションIDが通知されると、前記S1102においてYESと判断される。また通知されたセッションIDは、前記S1103における判断に使用される。
S1203では、IPP機能51はS1201で取得したセッションIDに対応するスレッドが存在するか否かを判断し、存在する場合はS1204に進み、存在しない場合はS1205に進む。
S1204では、IPP機能51はS1114で生成されたスレッドのうち、S1201で取得したセッションIDに対応するスレッドを停止させる。
S1205では、IPP機能51はS1201で取得したセッションIDに対応するソケット情報によって識別されるソケットをクローズする。S1205は第2の終了処理及び第3の終了処理の一例である。
S1206では、IPP機能51はS1201で取得したセッションIDと当該セッションIDに対応付けられて記憶されているソケット情報とを記憶部35から削除する。
(4−3)Webサーバ機能から応答を受信する処理
次に、図17を参照して、IPP機能51がWebサーバ機能52から応答を受信する処理について説明する。この処理は前述したS1114で生成されたスレッドによって実行される。なおこのスレッドは前記S1204によって停止される場合がある。
S1301では、スレッドはS1106で取得されたセッションIDを継承するとともに、S1108で生成されたソケットのソケット情報、又は、S1110で読み出されたソケット情報を継承する。
S1302では、スレッドはWebサーバ機能52から部分応答データを受信する。S1302は第3の応答受信処理の一例である。
S1303では、スレッドはS1302で受信した部分応答データにセッションIDを付加する。
S1304では、スレッドはインタフェース1の排他処理を実行する。具体的には、スレッドはインタフェース1のミューテックスを取得する。なお、ここで取得するミューテックスはS101で生成されたものとは異なるものである。ここで取得するミューテックスは例えばプリンタ3に電源が投入されたときに実行される初期化処理によって生成されたものである。
S1305では、スレッドはS1304でセッションIDが付加されたセッションID付き部分応答データをIPP/USB変換プログラム43に送信する。S1305は第3の応答送信処理の一例である。
S1306では、スレッドはインタフェース1の排他処理を終了する。
S1307ではWebサーバ42からの当該セッションに関するすべての応答を受信したか否かを判断する。その結果YESと判断した場合にはS1308に進み、NOと判断した場合にはS1302に戻り残りのデータを受信する。この受信完了の判断は前述したS204と同様に行うことができる。
S1308では、スレッドはセッションをクローズする。
S1309では、スレッドはS1301で継承したセッションID及びソケット情報を記憶部35から削除する。
(5)実施形態の効果
以上説明した実施形態3に係るIPP/USB変換プログラム43によると、プリンタ3とWebブラウザ42との間で通信が途中で途絶えてしまった場合にキャンセルを通知する。よってプリンタ3の受信待ち状態が長時間継続してしまうことをセッションの単位で抑制することができる。
更に、IPP/USB変換プログラム43によると、不要になったセッション識別子と識別情報とが記憶部25に記憶されたままにならないようにすることができる。
更に、IPP/USB変換プログラム43によると、セッション情報付き応答にセッション情報として付加されているセッション識別子が記憶部25に記憶されていない場合はWebブラウザ42に応答を送信しないので、Webブラウザ42への無駄な応答の送信を抑制できる。
また、実施形態3に係るプリンタ3によると、IPP機能51とWebサーバ機能52とがマルチセッションによって通信中に通信が途中で途絶えてしまった場合にIPP機能51がWebサーバ機能52にキャンセルを通知する。よってWebサーバ機能52の受信待ち状態が長時間継続してしまうことを抑制することができる。
更に、プリンタ3によると、Webサーバ機能52から応答を受信している途中でPC2から通信の中止が通知された場合に、Webサーバ機能52の送信待ち状態が長時間継続してしまうことを抑制することができる。
<他の実施形態>
上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も技術的範囲に含まれる。
(1)上記実施形態1及び2ではマルチセッションによって通信を行うクライアントアプリケーションを例に説明した。これに対し、クライアントアプリケーションはシングルセッションによって通信を行うものであってもよい。
(2)上記実施形態3ではセッション情報としてセッションIDを処理要求に付加する場合を例に説明した。これに対し、セッションIDではなくソケット情報を付加してもよい。
(3)上記実施形態3では処理要求を複数の部分処理要求データに分割する例としてヘッダと付加データとに分割する場合を例に説明した。しかしながら、処理要求を複数の部分処理要求データに分割する基準はこれに限られるものではなく、適宜の基準で分けることができる。
(4)上記実施形態では通信回線としてUSBを例に説明した。しかしながら、通信回線はUSBに限られない。例えばPC2とプリンタ3とはプリンタ3の通信規格であるIEEE1284によって通信するものであってもよい。
(5)上記実施形態ではセッションの確立が要求される毎に新たなスレッドを作成する場合を例に説明した。これに対し、スレッドを作成せず、通信中継処理において各セッションに対する処理をシーケンシャルに実行してもよい。または、スレッドに替えてプロセスを作成し、スレッドによって行っていた処理をプロセスによって行ってもよい。
(6)上記実施形態ではPC2とプリンタ3とを論理的な複数の通信回線で接続する場合を例に説明した。これに対し、PC2とプリンタ3とは物理的な複数の通信回線で接続されてもよい。
(7)上記実施形態ではプリンタ3を設定するための通信をマルチセッションによって行う場合にセッションの排他制御を行う場合を例に説明した。これに加えて、プリンタ3に印刷データを送信するための通信をマルチセッションで行う場合にセッションの排他制御を行ってもよい。
(8)上記実施形態では、排他処理開始の後にWebブラウザ42からの受信を行っている。すなわち排他処理により実行が許可されるまではWebブラウザ42からの要求の受信をしない。しかし排他の開始はWebブラウザ42からのデータをプリンタ3(IPP機能51又はWebサーバ機能52)に送信する前であればよく、Webブラウザ42からの要求を受信した後であってもかまわない。
(9)上記実施形態では画像処理装置としてプリンタ3を例に説明した。これに対し、画像処理装置は、印刷機能、スキャナ機能、コピー機能、ファクシミリ機能などを備える所謂複合機であってもよい。
(10)上記実施形態では処理部としてCPU31aを例に説明した。しかしながら、処理部は2以上のCPUによって構成されてもよいし、ASICによって構成されてもよいし、CPUとASICとの組み合わせによって構成されてもよい。
(11)上記すべての実施例では、プリンタはKeepAlive仕様により単一セッションにて複数の処理要求データを要求しないものとして構成されている。しかし応答送信終了後もソケットを破棄せずに使用することによりKeepAlive仕様に対応することもできる。
1・・・画像処理システム、2・・・PC、3・・・プリンタ、4・・・USBケーブル、20・・・CPU、25・・・記憶部、26・・・USホストインタフェース部、31・・・制御部、32・・・USBクライアントインタフェース部、33・・・印刷部、35・・・記憶部、42・・・Webブラウザ、43・・・IPP/USB変換プログラム、44・・・スプーラ、51・・・IPP機能、52・・・Webサーバ機能、60・・・設定画面

Claims (6)

  1. 画像処理装置と通信回線で接続されている情報処理装置で実行される通信中継プログラムであって、
    クライアントアプリケーションはマルチセッションによって通信するものであり、
    前記クライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する第1の確立処理と、
    前記第1の確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する第1の禁止判断処理と、
    前記第1の禁止判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する第1の待機処理と、
    前記第1の禁止判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する第1の排他処理と、
    前記クライアントアプリケーションから処理要求を受信する第1の要求受信処理と、
    前記第1の要求受信処理による前記処理要求の受信中に、前記クライアントアプリケーションから通信の中止が通知されたか否かを判断する第1の中止判断処理と、
    前記第1の中止判断処理によって中止が通知されたと判断されることなく前記第1の要求受信処理による前記処理要求の受信が完了した場合は前記処理要求を前記画像処理装置に送信する一方、前記第1の中止判断処理によって中止が通知されたと判断された場合は前記処理要求を前記画像処理装置に送信しない第1の要求送信処理であって、
    前記第1の要求送信処理で、前記第1の排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記第1の要求受信処理により前記新たなセッションを介して受信した前記処理要求を前記画像処理装置に送信する前記第1の要求送信処理と、
    前記第1の中止判断処理によって中止が通知されたと判断されることなく前記第1の要求受信処理による前記処理要求の受信が完了した場合、及び、前記第1の中止判断処理によって中止が通知されたと判断された場合に、前記新たなセッション以外のセッションによる通信を解禁する第1の解禁処理と、
    を前記情報処理装置に実行させる通信中継プログラム。
  2. 画像処理装置と通信回線で接続されている情報処理装置で実行される通信中継プログラムであって、
    クライアントアプリケーションはマルチセッションによって通信するものであり、
    前記クライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する第2の確立処理と、
    前記第2の確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する第2の禁止判断処理と、
    前記第2の禁止判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する第2の待機処理と、
    前記第2の禁止判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する第2の排他処理と、
    前記クライアントアプリケーションから処理要求を受信する第2の要求受信処理と、
    前記第2の要求受信処理によって前記処理要求の受信が開始されると、当該処理要求の受信が完了するのを待つことなく前記画像処理装置への当該処理要求の送信を開始する第2の要求送信処理であって、
    前記第2の要求送信処理で、前記第2の排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記第2の要求受信処理により前記新たなセッションを介して受信した前記処理要求を前記画像処理装置に送信する前記第2の要求送信処理と、
    前記第2の要求受信処理による前記処理要求の受信中に、前記クライアントアプリケーションから通信の中止が通知されたか否かを判断する第2の中止判断処理と、
    前記第2の中止判断処理によって中止が通知されたと判断された場合に、前記画像処理装置に通信の中止を通知する第1の中止通知処理と、
    前記第2の中止判断処理によって中止が通知されたと判断されることなく前記第2の要求受信処理による前記処理要求の受信が完了した場合、及び、前記第2の中止判断処理によって中止が通知されたと判断された場合に、前記新たなセッション以外のセッションによる通信を解禁する第2の解禁処理と、
    を前記情報処理装置に実行させる通信中継プログラム。
  3. 画像処理装置と通信回線を介して通信可能に接続されている情報処理装置で実行される通信中継プログラムであって、
    マルチセッションによって通信するクライアントアプリケーションからセッションを確立する要求を受信すると、その要求に応じて前記クライアントアプリケーションとの間にセッションを確立する第3の確立処理と、
    前記第3の確立処理によって確立された前記セッションを介して前記クライアントアプリケーションから処理要求を受信する第3の要求受信処理と、
    前記第3の要求受信処理によって前記処理要求の受信が開始されると、当該処理要求の受信が完了するのを待つことなく前記画像処理装置への当該処理要求の送信を開始する第3の要求送信処理であって、当該処理要求を受信した前記セッションを識別するためのセッション情報を付加したセッション情報付き処理要求を前記画像処理装置に送信する第3の要求送信処理と、
    前記第3の要求送信処理によって送信された前記処理要求に対する応答として前記画像処理装置から前記セッション情報が付加されたセッション情報付き応答を受信する第1の応答受信処理と、
    前記第1の応答受信処理によって受信された前記セッション情報付き応答から前記セッション情報を除去した応答を、当該セッション情報によって識別される前記セッションを介して前記クライアントアプリケーションに送信する第1の応答送信処理と、
    前記第3の要求受信処理による前記処理要求の受信中に、前記クライアントアプリケーションから前記セッションを介して通信の中止が通知されたか否かを判断する第3の中止判断処理と、
    前記第3の中止判断処理によって中止が通知されたと判断された場合に、当該中止が通知された前記セッションの前記セッション情報を付加したセッション情報付き中止通知を前記画像処理装置に送信する第2の中止通知処理と、
    を前記情報処理装置に実行させる、通信中継プログラム。
  4. 請求項に記載の通信中継プログラムであって、
    前記第3の確立処理によって前記セッションが確立されると、確立された前記セッションのセッション識別子を生成する識別子生成処理と、
    前記識別子生成処理によって生成された前記セッション識別子と前記セッションを識別するための識別情報とを対応付けて記憶装置に記憶させる第1の記憶処理と、
    前記記憶装置に記憶されている前記セッション識別子と当該セッション識別子に対応付けられている前記識別情報とを前記記憶装置から削除する削除処理と、
    を前記情報処理装置に実行させ、
    前記第3の要求送信処理において、前記識別子生成処理によって生成された前記セッション識別子を前記セッション情報として前記処理要求に付加し、
    前記第1の応答送信処理において、前記セッション情報付き応答に前記セッション情報として付加されている前記セッション識別子に対応付けられている前記識別情報によって識別される前記セッションを介して前記クライアントアプリケーションに前記応答を送信し、
    前記削除処理において、前記第3の中止判断処理によって中止が通知されたと判断された場合に、当該中止が通知された前記セッションの前記セッション識別子と前記識別情報とを前記記憶装置から削除する、通信中継プログラム。
  5. 請求項に記載の通信中継プログラムであって、
    前記第1の応答送信処理において、前記セッション情報付き応答に前記セッション情報として付加されている前記セッション識別子が前記記憶装置に記憶されていない場合は、前記クライアントアプリケーションに前記応答を送信しない、通信中継プログラム。
  6. 請求項1乃至請求項のいずれか一項に記載の通信中継プログラムであって、
    前記通信回線はユニバーサルシリアルバスである、通信中継プログラム。
JP2012240735A 2012-10-31 2012-10-31 通信中継プログラム、及び、画像処理装置 Active JP6075010B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012240735A JP6075010B2 (ja) 2012-10-31 2012-10-31 通信中継プログラム、及び、画像処理装置
US14/068,518 US9110611B2 (en) 2012-10-31 2013-10-31 Non-transitory computer-readable mediums and image processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012240735A JP6075010B2 (ja) 2012-10-31 2012-10-31 通信中継プログラム、及び、画像処理装置

Publications (2)

Publication Number Publication Date
JP2014089675A JP2014089675A (ja) 2014-05-15
JP6075010B2 true JP6075010B2 (ja) 2017-02-08

Family

ID=50546869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012240735A Active JP6075010B2 (ja) 2012-10-31 2012-10-31 通信中継プログラム、及び、画像処理装置

Country Status (2)

Country Link
US (1) US9110611B2 (ja)
JP (1) JP6075010B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6011167B2 (ja) 2012-09-03 2016-10-19 ブラザー工業株式会社 通信中継プログラム、及び、通信中継装置
JP6167502B2 (ja) * 2012-10-31 2017-07-26 ブラザー工業株式会社 通信中継プログラム、通信中継装置、及び、画像処理装置
JP6064703B2 (ja) * 2013-03-15 2017-01-25 ブラザー工業株式会社 中継サーバ
JP6044597B2 (ja) * 2014-07-01 2016-12-14 コニカミノルタ株式会社 画像処理システム、中継サーバー及びプログラム
US9779004B2 (en) * 2015-03-23 2017-10-03 Netapp, Inc. Methods and systems for real-time activity tracing in a storage environment
JP6465755B2 (ja) * 2015-06-11 2019-02-06 キヤノン株式会社 制御方法、プログラム及びクライアント端末
JP6521762B2 (ja) * 2015-06-24 2019-05-29 キヤノン株式会社 Httpサーバとその制御方法、画像形成装置およびプログラム
US20170005938A1 (en) * 2015-06-30 2017-01-05 Konica Minolta Laboratory U.S.A., Inc. System and method of tcp/ip bypass over universal serial bus (usb)
JP2017034482A (ja) * 2015-07-31 2017-02-09 キヤノン株式会社 画像形成装置、その制御方法、及びプログラム
JP6768544B2 (ja) * 2017-01-31 2020-10-14 キヤノン株式会社 情報処理装置、制御方法およびプログラム
JP6960302B2 (ja) 2017-10-25 2021-11-05 キヤノン株式会社 通信装置、通信方法、及びプログラム
JP7338461B2 (ja) * 2019-12-26 2023-09-05 ブラザー工業株式会社 プログラム、プログラム群、および情報処理装置
JP6806351B1 (ja) * 2020-03-06 2021-01-06 株式会社C−Rise 情報処理方法、コンピュータプログラム及び情報処理装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220674A (en) 1987-07-17 1993-06-15 Digital Equipment Corporation Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination
US7383321B2 (en) * 2002-07-09 2008-06-03 Moyer Alan L Method and system for communicating between a remote printer and a server
US8346848B2 (en) 2001-08-16 2013-01-01 Juniper Networks, Inc. System and method for maintaining statefulness during client-server interactions
JP3888130B2 (ja) * 2001-11-01 2007-02-28 セイコーエプソン株式会社 無線ネットワークのステーション
JP2006056069A (ja) * 2004-08-18 2006-03-02 Canon Inc 印刷制御装置および印刷制御方法
US20070033646A1 (en) 2005-08-05 2007-02-08 Sierra Wireless, Inc. A Canadian Corp. Suspension and resumption of secure data connection session
US20070173077A1 (en) 2006-01-24 2007-07-26 Hwa Yao Technologies Co., Ltd. Universal serial bus (usb) network adapter connectable to external antenna
JP4530420B2 (ja) * 2006-05-15 2010-08-25 日本電信電話株式会社 ファイル転送システム、ファイル転送プログラムおよびファイル転送方法
JP5307610B2 (ja) * 2009-04-17 2013-10-02 キヤノン株式会社 無線通信システムと通信方法
KR101569037B1 (ko) * 2009-12-03 2015-11-16 삼성전자주식회사 컨트롤 포인트, 화상형성장치, 및 인쇄 제어 방법
JP5446943B2 (ja) * 2010-01-29 2014-03-19 ソニー株式会社 印刷システム及びプリンタ装置の制御方法
JP2011165009A (ja) * 2010-02-10 2011-08-25 Canon Inc 印刷ジョブ管理装置及び印刷ジョブ管理方法及び画像形成装置
JP2011180954A (ja) * 2010-03-03 2011-09-15 Seiko Epson Corp 機器制御装置、機器制御プログラムおよびサーバー
JP5539043B2 (ja) 2010-06-08 2014-07-02 キヤノン株式会社 情報送信装置、情報送信装置の制御方法及びコンピュータプログラム
BR112013000991B8 (pt) 2010-07-19 2021-05-25 Cpi Card Group Tennessee Inc método para emitir um cartão de transação financeira personalizado de uma instituição financeira para um cliente em resposta a um pedido de cliente de uma filial associada a instituição financeira, sistema para emissão instantânea de cartões de transação financeira em resposta aos pedidos de cartão feitos por clientes em uma ou mais filiais associadas a uma instituição financeira e sistema para processar um pedido de cartão feito por um cliente em uma filial associada à instituição financeira
JP5641921B2 (ja) * 2010-12-20 2014-12-17 キヤノン株式会社 画像処理装置、画像処理装置と外部装置を有するシステム、システムの制御方法、及びプログラム
US8627449B2 (en) 2011-03-03 2014-01-07 Cisco Technology, Inc. Dynamic tunneling over virtual private network connections based on network conditions
CN102970320B (zh) * 2011-08-31 2016-12-21 精工爱普生株式会社 处理装置、处理方法
JP6167502B2 (ja) * 2012-10-31 2017-07-26 ブラザー工業株式会社 通信中継プログラム、通信中継装置、及び、画像処理装置
JP6015360B2 (ja) * 2012-11-02 2016-10-26 ブラザー工業株式会社 通信装置および通信プログラム
JP6099958B2 (ja) * 2012-12-10 2017-03-22 キヤノン株式会社 画像形成装置及びその制御方法とプログラム

Also Published As

Publication number Publication date
US20140118789A1 (en) 2014-05-01
US9110611B2 (en) 2015-08-18
JP2014089675A (ja) 2014-05-15

Similar Documents

Publication Publication Date Title
JP6075010B2 (ja) 通信中継プログラム、及び、画像処理装置
JP6167502B2 (ja) 通信中継プログラム、通信中継装置、及び、画像処理装置
JP6011167B2 (ja) 通信中継プログラム、及び、通信中継装置
JP6155607B2 (ja) 通信中継プログラム、及び、通信中継装置
JP5424856B2 (ja) 画像形成装置及びその省電力制御方法とプログラム
JP6353345B2 (ja) 通信システム、通信装置及びその制御方法、情報処理装置及びその制御方法、並びにプログラム
JP5963470B2 (ja) 印刷制御装置、印刷制御装置の制御方法、及びプログラム
JP6560559B2 (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
CN107203353B (zh) 图像形成装置及其控制方法
JP2018151981A (ja) 印刷システム、サーバ、プリンタとそれらの制御方法、及びプログラム
JP2020102038A (ja) 通信方法、情報処理装置、およびプログラム
JP7240118B2 (ja) 情報処理装置、その制御方法およびプログラム
JP2016083870A (ja) 画像形成装置及びその制御方法、システム
JP5447585B2 (ja) 画像処理装置、遠隔操作システム、およびプログラム
JP6135302B2 (ja) 印刷装置
JP2006088591A (ja) 印刷装置およびその制御方法
JP5807713B1 (ja) 画像処理装置及び画像処理プログラム
JP2012080519A (ja) 画像処理装置
JP5038125B2 (ja) 通信装置及びデータ通信方法
JP7183715B2 (ja) 画像形成装置及び画像形成プログラム
JP5355288B2 (ja) データ処理装置、制御方法、及びプログラム
JP2011066808A (ja) 画像形成装置、制御方法、及びプログラム
JP6167896B2 (ja) モバイル装置,通信装置,およびプログラム
JP2017068403A (ja) 通信装置、通信システムおよびコンピュータプログラム
JP2015094990A (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20140409

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160927

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161226

R150 Certificate of patent or registration of utility model

Ref document number: 6075010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150