JP2022112881A - Image processing apparatus, image processing method, and program - Google Patents
Image processing apparatus, image processing method, and program Download PDFInfo
- Publication number
- JP2022112881A JP2022112881A JP2021008887A JP2021008887A JP2022112881A JP 2022112881 A JP2022112881 A JP 2022112881A JP 2021008887 A JP2021008887 A JP 2021008887A JP 2021008887 A JP2021008887 A JP 2021008887A JP 2022112881 A JP2022112881 A JP 2022112881A
- Authority
- JP
- Japan
- Prior art keywords
- information
- crg
- driver layer
- image processing
- thread
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
Description
本発明は、画像処理装置、画像処理方法およびプログラムに関する。 The present invention relates to an image processing device, an image processing method, and a program.
例えば、複合機等の画像処理装置は、USB(Universal Serial Bus)を介してHostPCと接続され、USBの仕様に準拠した通信が、HostPCと画像処理装置との間で行われる。USBの仕様としては、近年、USB(Universal Serial Bus Specification)2.0の仕様に準拠したプロトコルが用いられるようになっている。USBでの論理的な通信では、Endpointと称されるPortごとの通信チャンネルが用いられる。Endpoint0は、基本通信Portであり、コントロール転送のプロトコルに基づく通信が行われる。一方、Endpoint1~nのデータ通信Portでは、バルク転送やインタラプト転送、アイソクロナス転送等のプロトコルに基づく通信が行われる。
For example, an image processing apparatus such as a multifunction peripheral is connected to a HostPC via a USB (Universal Serial Bus), and communication conforming to USB specifications is performed between the HostPC and the image processing apparatus. As the USB specification, in recent years, a protocol conforming to the USB (Universal Serial Bus Specification) 2.0 specification has been used. Logical communication by USB uses a communication channel for each port called an endpoint. Endpoint0 is a basic communication port, and communication based on a control transfer protocol is performed. On the other hand, in data communication ports of
USB2.0の仕様におけるコントロール転送では、HostPCからのデータ要求(IN要求)に対して、500ms以内に返答がない場合、HostPCはタイムアウトと認識し、In要求を停止してしまうおそれがある。このため、USB通信では、IN要求を受信してから500ms以内に返答することが好ましい。関連する技術として、特許文献1の技術が提案されている。特許文献1の技術では、バルクアウト転送を行う経路およびインタラプトアウト転送を行う経路を設けて、バルクアウト転送モードとインタラプトアウト転送とを切り替えている。
In control transfer according to the USB 2.0 specification, if there is no response to a data request (IN request) from the HostPC within 500 ms, the HostPC may recognize a timeout and stop the In request. Therefore, in USB communication, it is preferable to reply within 500 ms after receiving an IN request. As a related technique, the technique of
特許文献1の技術は、バルクアウト転送モードとインタラプトアウト転送とを切り替えることで、タイムアウトエラーの回避を図っている。ただし、特許文献1の技術は、Endpoint0を使用するコントロール転送におけるHostPCのIN要求の停止といった問題を解決するものではない。
The technology of
上述したように、USB通信では、IN要求を受信してから500ms以内に返答することが好ましいが、画像処理装置のCPUの負荷状況によっては、500ms以内に返答することが難しい場合がある。例えば、画像処理装置のCPUがアプリケーションのデータを返答データとして取得するときに、CPUの使用率が高いと、返答データを取得するための時間が長くなる。これにより、画像処理装置がIN要求を受信してから500ms以内に返答データを送信することができないことに起因したタイムアウトが発生し、HostPCがIN要求を停止してしまうおそれがある。特に、汎用OSを採用する画像処理装置では、各タスクのCPU占有時間が均等に割り当てられているため、CPUの使用率が高い状況下では、500ms以内にアプリケーションのデータを取得できない可能性が高くなる。かかる問題は、汎用OSを使用しない画像処理装置にも生じ得るものである。 As described above, in USB communication, it is preferable to reply within 500 ms after receiving an IN request, but it may be difficult to reply within 500 ms depending on the CPU load of the image processing apparatus. For example, when the CPU of the image processing apparatus acquires application data as response data, if the usage rate of the CPU is high, it takes a long time to acquire the response data. As a result, there is a risk that a timeout will occur due to the inability of the image processing apparatus to transmit the response data within 500 ms after receiving the IN request, and the HostPC will stop the IN request. In particular, in an image processing apparatus that employs a general-purpose OS, the CPU occupancy time for each task is evenly allocated, so there is a high possibility that the application data cannot be acquired within 500 ms under conditions where the CPU usage rate is high. Become. Such a problem can occur even in an image processing apparatus that does not use a general-purpose OS.
そこで、本発明は、CPUの負荷状況によらずUSB通信でタイムアウトが生じることを抑制することを目的とする。 SUMMARY OF THE INVENTION Accordingly, it is an object of the present invention to prevent a time-out from occurring in USB communication regardless of the load status of the CPU.
上記目的を達成するために、本発明の画像処理装置は情報処理装置とUSB通信を行うUSBインタフェースと、前記情報処理装置に対応する所定のアプリケーションから予め取得した所定の情報を保持する保持手段と、前記USBインタフェースを介して、前記情報処理装置からGetコマンドを受信したことに従い、保持している前記所定の情報を前記情報処理装置に返答する制御を行う制御手段と、を備えることを特徴とする。 To achieve the above object, an image processing apparatus of the present invention includes a USB interface for performing USB communication with an information processing apparatus, and holding means for holding predetermined information obtained in advance from a predetermined application corresponding to the information processing apparatus. and a control means for controlling to return the held predetermined information to the information processing device in response to receiving a Get command from the information processing device via the USB interface. do.
本発明によれば、CPUの負荷状況によらずUSB通信でタイムアウトが生じることを抑制することを抑制することができる。 According to the present invention, it is possible to suppress the occurrence of time-out in USB communication regardless of the CPU load status.
以下、本発明の各実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施形態に記載されている構成によって限定されることはない。 Hereinafter, each embodiment of the present invention will be described in detail with reference to the drawings. However, the configurations described in each embodiment below are merely examples, and the scope of the present invention is not limited by the configurations described in each embodiment.
<第1実施形態>
図1は、システムの構成の一例を示す図である。図1のシステムにおいて、画像処理装置1とHostPC2とは、USBケーブル3を介して接続される。画像処理装置1は、複合機やプリンタ等の画像形成装置である。画像処理装置1は、例えば、タブレット端末やノートパソコン、デジタルカメラ等の装置であってもよい。HostPC2は、パーソナルコンピュータ等の情報処理装置である。USBケーブル3は、USBの仕様に準拠したプロトコルで通信を行うケーブルである。
<First embodiment>
FIG. 1 is a diagram showing an example of a system configuration. In the system of FIG. 1, the
画像処理装置1のCPU101は、プログラムを実行することにより、画像処理装置1の各部を制御する制御手段である。システムバス102は、画像処理装置1の各部を接続するバスである。HDD103は、画像処理装置1が動作するために用いられるデータベースや、一次保存ファイルが格納されるハードディスクドライブである。HDD103の代わりに、またはHDD103とともにSolid State Drive(SSD)や、embedded Multi Media Card(eMMC)等の不揮発性メモリが用いられてもよい。RAM104は、CPU101が実行するプログラムの動作時の変数や各部からDynamic Memory Access(DMA)で転送されるデータを一時的に格納する。RAM104には、CPU101が実行するプログラムが展開される。RAM104は、所定の情報を保持する保持手段に対応する。保持手段は、RAM104には限定されず、任意の記憶デバイスであってもよい。
The
ネットワークコントローラ105は、ネットワークコントローラインタフェース106を制御する。画像処理装置1は、ネットワークコントローラインタフェース106を介して、外部装置と通信を行う。USBデバイスコントローラ107は、USBデバイスI/F108(USBインタフェース)を制御する。USBデバイスI/F108にはUSBケーブル3が接続される。USBデバイスI/F108は、USBケーブル3を介したHostPC2との通信を制御する。各実施形態におけるUSBの通信は、USB2.0の仕様に準拠しているものとする。
ディスプレイコントローラ110は、ディスプレイ111の表示制御を行う。ディスプレイ111には、画像処理装置1の動作状況等の各種情報が表示される。これにより、ユーザがディスプレイ111に表示される情報を確認できる。入力部コントローラ112は、入力部113を制御する。入力部113は、ユーザから画像処理装置1に対する指示を受け付ける。入力部113としては、キーボードやマウス、テンキー、カーソルキー、タッチパネル、操作部キーボード等が適用され得る。入力部113はディスプレイ111と一体的に構成されるタッチパネルディスプレイであってもよい。
The
RTC114は、画像処理装置1の時計機能やアラーム機能、タイマー機能等を有するリアルタイムクロックである。不揮発性メモリ115は、HDD103よりも記憶容量が少ない書き換え可能な不揮発性な記録メディアである。不揮発性メモリ115には、Static Random Access Memory(SRAM)が適用され得る。また、不揮発性メモリ115には、Electrically Erasable Programmable Read Only Memory(EEPROM)等も適用され得る。
The
CPLD109は、CPU101を介して、基板回路上の信号線のLow/Highの状況の読み取りや、Low/Highの状況の設定を変更可能にするユニットである。CPLDは、Complex Programmable Logic Deviceの略称である。画像処理装置1は、スキャナ117を有する。スキャナ117は、スキャナI/F116により制御される。画像処理装置1は、プリンタ119を有する。プリンタ119は、プリンタI/F118により制御される。また、プリンタ119の内部には、CRG124が含まれる。CRG124は、カートリッジである。画像処理装置1は、図1の全ての構成を有するものでなくてもよい。
The
図2は、HostPC2と画像処理装置1との間の基本的な通信の流れの一例を示すシーケンス図である。上述したように、HostPC2と画像処理装置1とはUSBケーブル3を介して通信を行う。図2は、HostPC2が、画像処理装置1のプリンタ119に内蔵されているCRG124のトナー残量を問い合わせる際の通信の一例を示す。HostPC2と画像処理装置1との通信は、トナー残量の問い合わせには限定されない。HostPC2は、画像処理装置1の任意のアプリケーションから情報を取得できる。例えば、HostPC2は、画像処理装置1のアプリケーションから、画像処理装置1の状態を示す情報を取得することができる。
FIG. 2 is a sequence diagram showing an example of basic communication flow between the
画像処理装置1のCPU101がプログラムを実行することにより実現されるソフトウェアは階層構造に分かれているものとする。ドライバ層201は、USBに関するパケットを処理するソフトウェア的なモジュールである。情報処理層202は、ドライバ層201よりも上位の層であり、ここではCRG情報を管理するソフトウェア的なモジュール(所定のアプリケーション)である。CRG情報は、カートリッジ内のトナー残量を示す情報である。所定のアプリケーションは、CRG情報を管理するアプリケーションには限定されない。
It is assumed that the software realized by executing the program by the
S201で、HostPC2は、USBケーブル3を介して、画像処理装置1に対して、CRG情報を取得するためのCRG Get Commandを送信する。CRG Get Commandは、コントロール転送のVendor classコマンドである。コントロール転送は、基本通信PortであるEndpoint0を用いた通信である。また、CRG Get Commandは、HostPC2に対応する所定のアプリケーションから所定の情報を取得するためのコマンドである。CRG Get Commandは、Getコマンドの一例である。取得する情報がCRG情報でない場合、対応する情報を取得するためのGetコマンドが、HostPC2から画像処理装置1に送信される。
In S<b>201 , the
S202で、ドライバ層201は、CRG Get Commandを受信すると、受信したCRG Get CommandをCRG情報取得コマンドとして情報処理層202に転送する。情報処理層202は、CRG情報取得コマンドを解釈し、コマンドに対応するデータ(CRG情報データ)を取得する。S203で、情報処理層202は、取得したCRG情報データを、ドライバ層201に返答する。S204で、CRG情報データを受けたドライバ層201は、CRG Get DataをHostPC2に返答する。S205で、HostPC2は、CRG Get Dataを受信すると、受領を示すACKを画像処理装置1に送信する。
In S202, upon receiving the CRG Get Command, the
ここで、HostPC2は、CRG Get Commandを送信してから、CRG Get Dataを受信するまでに経過した時間が500msを超過すると、タイムアウトとしてIN要求を停止する。例えば、CPU101の使用率が高くなり、CPU資源の割り当てに余裕がなくなった場合に、500msを超過することがある。CPU101の使用率が高くなる要因は、例えば、画像処理装置1に対して別のジョブ(ネットワークからのPDL印刷データ処理のジョブ)が投入されて、投入されたジョブを実行するケース等がある。このような場合、画像処理装置1は、HostPC2に対して、CRG Get Dataを返答できなくなる。本実施形態では、タイムアウトとなる基準の時間は、USB2.0の仕様に準拠した500msである。本実施形態は、USB2.0ではない仕様に準拠したUSB通信にも適用できる。この場合、上記の500ms(USBの仕様に準拠した規定時間)は、任意の時間に設定される。
Here, if the time elapsed from sending the CRG Get Command to receiving the CRG Get Data exceeds 500 ms, the HostPC2 will time out and stop the IN request. For example, when the usage rate of the
図15は、ユーザ操作に基づくCRG124のトナー残量の情報を取得する際の通信の一例を示す図である。ユーザは、HostPC2の表示部を操作して、画像処理装置1のCRG124のトナー残量を取得する操作を行う。このとき、HostPC2の表示部には、例えば、トナー残量を表示するアプリケーションにより表示される画面が表示される。当該アプリケーションは、画像処理装置1の情報処理層202における所定のアプリケーションに対応したアプリケーションである。
FIG. 15 is a diagram showing an example of communication when obtaining information on the remaining amount of toner in the
図16は、トナー残量を表示するアプリケーションにより表示される画面の一例を示す図である。S1501で、ユーザが、画面1600の更新ボタン1601を押下すると、HostPC2は、当該操作を残量確認指示として受け付ける。S1502で、HostPC2は、残量確認指示に基づき、USBケーブル3を介して、トナー残量情報を取得するためCRG Get Commandを画像処理装置1に送信する。CRG Get Commandは、USBのVendor Class Commandである。
FIG. 16 is a diagram showing an example of a screen displayed by an application that displays the remaining amount of toner. In S1501, when the user presses the
S1503で、画像処理装置1のドライバ層201は、CRG Get Commandの受信に従い、CRG情報取得コマンドを情報処理層202に送信する。S1504で、情報処理層202は、CRG124の内部に存在するトナー残量を示す情報(残量情報)を取得する。画像処理装置1が、カラープリンタである場合、情報処理層202は、ブラック、シアン、マゼンタおよびイエローの4色のそれぞれのトナー残量を示す残量情報を取得する。また、画像処理装置1がモノクロプリンタである場合、情報処理層202は、ブラックのトナー残量を示す残量情報を取得する。
In step S1503, the
S1505で、情報処理層202は、取得した残量情報をCRG情報データとして、ドライバ層201に送信する。S1506で、ドライバ層201は、CRG情報データを受信したことに基づき、CRG情報データをCRG Get DataとしてHostPC2に送信する。S1507で、HostPC2は、CRG Get Dataを受領したことを示すACKを画像処理装置1のドライバ層201に送信する。
In S1505, the
S1508で、HostPC2は、受信したCRG Get Dataに基づき、残量表示画面を生成する。残量表示画面は、CRG Get Dataが示す各色のトナー残量を視覚的に提示する画面である。残量表示画面は、例えば、図16の画面1600である。画面1600は、ブラック1602、シアン1603、マゼンタ1604およびイエロー1605の4色のトナー残量の状況を示す。画面1600は、残量表示の画面を生成するHostPC2のアプリケーションが、CRG Get Dataを変換することで生成されてもよい。S1509で、HostPC2が、残量表示画面を表示部に表示することで、画像処理装置1に内蔵されるCRG124の各色のトナー残量を提示する。これにより、HostPC2を操作するユーザは、CRG124の各色のトナー残量を認識できる。
In S1508, the HostPC2 generates a remaining capacity display screen based on the received CRG Get Data. The remaining amount display screen is a screen that visually presents the remaining amount of toner of each color indicated by CRG Get Data. The remaining amount display screen is the
次に、USBデバイスの状態遷移について説明する。図3は、USBデバイスの状態遷移図である。図3のUSBデバイスの状態遷移図は、「usb.org」が発行している規格書「Universal Serial Bus Specification Revision 2.0」の240ページに記載されている。 Next, state transitions of the USB device will be described. FIG. 3 is a state transition diagram of the USB device. The state transition diagram of the USB device in FIG. 3 is described on page 240 of the standard "Universal Serial Bus Specification Revision 2.0" published by "usb.org".
HostPC2と画像処理装置1のUSBデバイスI/F108とが、USBケーブル3で接続されると、USBデバイスの状態ステートは、Attached301という状態に遷移する。その後、HostPC2と画像処理装置1との間でエニュメレーション処理が開始される。エニュメレーション処理は、初期ネゴシエーションの処理である。HostPC2が、画像処理装置1のUSBBus上のアドレスを付与すると、Address302という状態に遷移する。その後、HostPC2が画像処理装置1にSet Configuration Commandを送信すると、Configured303の状態に遷移する。Configured303という状態に遷移した後にエニュメレーション処理が終了すると、HostPC2と画像処理装置1との間で、USBケーブル3を介したデータ通信を開始できる。当該データ通信は、バルク転送やインタラプト転送、アイソクロナス転送等である。各実施形態では、上記のSet Configuration Command 402に着目して、画像処理装置1がHostPC2に対して、CRG Get Dataを返答できなくなる、という問題に対応する。
When the
図4は、第1実施形態におけるHostPC2と画像処理装置1との間の通信の流れの一例を示すシーケンス図である。S401で、HostPC2は、USBケーブル3を介して、上述したSet Configuration Commandを画像処理装置1のドライバ層201に送信する。Set Configuration Command(SetConfigurationコマンド)は、USBコントロール転送のStandard Classコマンドである。S402で、ドライバ層201は、Set Configuration Commandを受信すると、CRG情報の取得コマンドを発行するためのドライバ層別スレッド401を生成する。ドライバ層201は、ドライバ層で動作し、USB通信を行うスレッドである。一方、ドライバ層別スレッド401も、ドライバ層で動作するスレッドであるが、ドライバ層201のスレッドとは異なるスレッドであり、独立して動作する。ドライバ層別スレッド401は、第1のスレッドに対応する。S403で、ドライバ層201は、ドライバ層別スレッド401を生成した後、USBケーブル3を介して、HostPC2にACKを返答する。
FIG. 4 is a sequence diagram showing an example of the communication flow between the
S404で、ドライバ層別スレッド401は、CRG情報取得コマンドを情報処理層202に送信する。情報処理層202は、CRG情報取得コマンドを受けたことに従い、CRG情報データを取得する。S405で、情報処理層202は、取得したCRG情報データをドライバ層別スレッド401に返答する。S405の後、ドライバ層別スレッド401は、ドライバ層201からCRG情報取得コマンドを受信するまで待機する。
In S<b>404 , the
ここで、ドライバ層201のスレッドおよびドライバ層別スレッド401の動作は、制御手段としてのCPU101により実現される。例えば、CPU101が、CRG情報データをRAM104等に記憶することで、ドライバ層別スレッド401はCRG情報データを保持する。
Here, the operations of the thread of the
S201で、ドライバ層201は、HostPC2からCRG Get Commandを受信する。S406で、ドライバ層201は、CRG Get Commandの受信に従い、CRG情報取得コマンドをドライバ層別スレッド401に送信する。上述したように、ドライバ層別スレッド401は、CRG情報データを事前に取得し、保持している。S407で、ドライバ層別スレッド401は、ドライバ層201からのCRG情報取得コマンドの受信に従い、保持しているCRG情報データを、速やかにドライバ層201に返答する。S204で、ドライバ層201は、受信したCRG情報データをCRG Get DataとしてHostPC2に送信する。S205で、HostPC2は、ドライバ層201にACKを送信する。
At S201, the
図5は、第1実施形態におけるドライバ層201の処理の流れの一例を示すフローチャートである。上述したようにドライバ層201の動作は、CPU101により実現される。図5の処理は、CPU101が実行するドライバ層201の処理である。S501で、ドライバ層201は、USBデバイスI/F108を介して、Set Configuration Commandを受信したかを判定する。
FIG. 5 is a flowchart showing an example of the processing flow of the
ドライバ層201は、S501でNoと判定すると、フローをS501に戻し、Set Configuration Commandを受信するまで待機する。Set Configuration Commandは、HostPC2と画像処理装置1とが、USBケーブル3を介して接続されると、HostPC2から画像処理装置1に必ず送信されるコントロール転送のコマンドである。ドライバ層201は、S501でYesと判定した場合(Set Configuration Commandを受信した場合)、フローをS502に進める。
If the
S502で、ドライバ層201は、Set Configuration Commandの受信に基づき、USBデバイスコントローラ107に対して、状態をConfigured303に遷移させる処理を行う。当該処理は、Set Configuration処理である。S503で、S502の処理を実行した後、ドライバ層201は、ドライバ層別スレッド401を生成する。
In step S<b>502 , the
S504で、ドライバ層201は、ドライバ層別スレッド401を生成した後に、Set Configuration Commandを受信したことを示すACKを、HostPC2に返答する。
In S504, the
S505で、ドライバ層201は、USBコントロール転送のVendor ClassコマンドであるCRG Get CommandをHostPC2から受信したかを判定する。ドライバ層201は、S505でNoと判定した場合、フローをS505に戻し、CRG Get Commandを受信するまで待機する。一方、ドライバ層201は、S505でYesと判定した場合(CRG Get Commandを受信した場合)、フローをS506に進める。S506で、ドライバ層201は、ドライバ層別スレッド401にCRG情報取得コマンドを送信する。上述したように、ドライバ層別スレッド401は、CRG情報取得コマンドの受信に従い、ドライバ層201にCRG情報データを送信する。
In S505, the
S507で、ドライバ層201は、ドライバ層別スレッド401からCRG情報データを受信したかを判定する。ドライバ層201は、S507でNoと判定した場合、フローをS507に戻し、CRG情報データを受信するまで待機する。一方、ドライバ層201は、S507でYesと判定した場合(CRG情報データを受信した場合)、フローをS508に進める。S508で、ドライバ層201は、受信したCRG情報データを、USBデバイスI/F108を介して、HostPC2に送信する。その後、ドライバ層201は、フローをS505に戻し、S505以降の処理を実行する。なお、ドライバ層201は、所定の終了条件を満たした場合、図5のフローチャートを終了させてもよい。例えば、画像処理装置1の電源が遮断された場合等に、ドライバ層201は、図5のフローチャートを終了させる。
In S<b>507 , the
図6は、第1実施形態におけるドライバ層別スレッド401の処理の流れの一例を示すフローチャートである。図6の処理は、CPU101が実行するドライバ層別スレッド401の処理である。S601で、ドライバ層別スレッド401は、ドライバ層201により自身のスレッドが生成されると、直ちに、情報処理層202に対して、CRG情報取得コマンドを送信する。S602で、ドライバ層別スレッド401は、情報処理層202からCRG情報データを受信したかを判定する。ドライバ層別スレッド401は、S602でNoと判定した場合、フローをS602に戻し、CRG情報データを受信するまで待機する。一方、ドライバ層別スレッド401は、S602でYesと判定した場合(CRG情報データを受信した場合)、フローをS603に進める。
FIG. 6 is a flow chart showing an example of the processing flow of the
S603で、ドライバ層別スレッド401は、受信したCRG情報データをRAM104等に記憶する。これにより、ドライバ層別スレッド401は、CRG情報データを保持する。S604で、ドライバ層別スレッド401は、ドライバ層201からCRG情報取得コマンドを受信したかを判定する。ドライバ層別スレッド401は、S604でNoと判定した場合、CRG情報取得コマンドを受信するまで待機する。一方、ドライバ層別スレッド401は、S604でYesと判定した場合(CRG情報取得コマンドを受信した場合)、フローをS605に進める。S605で、ドライバ層別スレッド401は、保持しているCRG情報データをドライバ層201に送信する。そして、ドライバ層別スレッド401は、図6のフローチャートを終了させる。
In S603, the
図7は、第1実施形態における情報処理層202の処理の流れの一例を示すフローチャートである。図7の処理は、CPU101が実行する情報処理層202の処理である。S701で、情報処理層202は、ドライバ層別スレッド401からCRG情報取得コマンドを受信したかを判定する。情報処理層202は、S701でNoと判定した場合、フローをS701に戻し、CRG情報取得コマンドを受信するまで待機する。一方、情報処理層202は、S701でYesと判定した場合(CRG情報取得コマンドを受信した場合)、フローをS702に進める。S702で、情報処理層202は、CRG124と通信を行い、カートリッジ内のトナー残量を示す情報であるCRG情報を取得する。S703で、情報処理層202は、取得したCRG情報をCRG情報データとして、ドライバ層別スレッド401に送信する。その後、情報処理層202は、フローをS701に戻す。
FIG. 7 is a flow chart showing an example of the processing flow of the
上述したように、第1実施形態では、ドライバ層201が、Set Configuration Commandを受信すると、ドライバ層別スレッド401を生成する。そして、ドライバ層別スレッド401は、HostPC2とUSB通信を行うドライバ層201のスレッド動作とは独立して、情報処理層202からCRG情報データを予め取得して、保持する。これにより、同じ層に属するドライバ層201にCRG情報データが保持される。ドライバ層201は、HostPC2からCRG Get Commandを受信したときに、情報処理層202からCRG情報データを取得するのではなく、予め保持しているCRG情報データをCRG Get DataとしてHostPC2に返答する。これにより、情報処理層202で実行されているアプリケーションに起因してCPU101の負荷が高くなったとしても、コントロール転送の制約である500ms以内にGetDataを返答できる。その結果、アプリケーション層の状況(CPU101の負荷状況)によらずUSB通信でタイムアウトが生じることを抑制することができる。
As described above, in the first embodiment, the
<第2実施形態>
次に、第2実施形態について説明する。上述したように、コントロール転送におけるSet Configuration Commandが発行された後、Get Commandが発行される。ここで、Set Configuration Commandが発行されてから、Get Commandが発行されるまでの間の時間が長くなることがある。この場合、CRG Get Dataがトナー残量の最新のデータを反映していない可能性がある。例えば、HostPC2が、Set Configuration Commandを発行した後、画像処理装置1に対して、ネットワークコントローラI/F106を介して、外部装置からPDL印刷ジョブが大量に投入されたとする。この場合、CRG124のトナー残量の情報は変動する。
<Second embodiment>
Next, a second embodiment will be described. As described above, the Get Command is issued after the Set Configuration Command is issued in the control transfer. Here, it may take a long time from when the Set Configuration Command is issued until when the Get Command is issued. In this case, CRG Get Data may not reflect the latest remaining toner data. For example, assume that a large number of PDL print jobs are input from an external device to the
この状況下で、Set Configuration Commandが発行されてから、10分後にPLD印刷ジョブが大量に投入され、その後にCRG Get Commandが発行されたとする。この場合、CRG Get Commandの情報は、PDL印刷ジョブが大量に投入される前(10分前)の情報であり、トナー残量の情報は、最新の情報でない可能性がある。第2実施形態は、この課題の解決を図る。なお、かかる問題は、Getデータが、CRG Get Data以外のデータである場合にも生じ得るものである。 Under this circumstance, assume that a large number of PLD print jobs are submitted 10 minutes after the Set Configuration Command is issued, and then the CRG Get Command is issued. In this case, the information of the CRG Get Command is information before a large number of PDL print jobs were input (10 minutes ago), and the information of the remaining amount of toner may not be the latest information. The second embodiment attempts to solve this problem. This problem can also occur when the Get data is data other than CRG Get Data.
図8は、第2実施形態におけるHostPC2と画像処理装置1との間の通信の流れの一例を示すシーケンス図である。以下、図4を用いて説明した箇所と重複する箇所の説明は省略する。ドライバ層201は、S402で、Set Configuration Commandを受信すると、ドライバ層別スレッド401を生成する。第2実施形態では、ドライバ層別スレッド401をドライバ層第1別スレッド801とする。
FIG. 8 is a sequence diagram showing an example of the communication flow between the
S801で、ドライバ層201は、HostPC2から、CRG Get Commandを受信すると、ドライバ層第2別スレッド802を生成する。ドライバ層第2別スレッド802は、ドライバ層第1別スレッド801が生成された後に、新たに生成されるドライバ層のスレッドである。ドライバ層第2別スレッド802は、CRG情報取得コマンドを生成するためのスレッドであり、ドライバ層第1別スレッド801およびドライバ層201のスレッドとは独立して動作する。ドライバ層第2別スレッド802は、第2のスレッドに対応する。
In S801, when the
S802で、ドライバ層201は、生成したドライバ層第2別スレッド802に、CRG情報コマンドを送信する。S803で、ドライバ層第2別スレッド802は、CRG情報コマンドを受信すると、CRG情報取得コマンドを情報処理層202に送信する。情報処理層202は、CRG情報取得コマンドを受信したことに従い、CRG情報を取得する。S804で、情報処理層202は、取得したCRG情報をCRG情報データとして、ドライバ層第2別スレッド802に返答する。S805で、ドライバ層第2別スレッド802は、情報処理層202から受けたCRG情報データを、ドライバ層201に送信する。
In S<b>802 , the
第2実施形態では、ドライバ層201は、HostPC2からCRG Get Commandを受信してから、500msよりも短い所定時間(500-α)msまでは、ドライバ層第2別スレッド802からのCRG情報データを待つ。αは正の値であり、例えば、10ms~50ms程度である。この場合、ドライバ層201は、例えば、HostPC2からCRG Get Commandを受信してから、470msを経過するまでは、ドライバ層第2別スレッド802からのCRG情報データを待つ。ドライバ層201は、470msを経過するまでにドライバ層第2別スレッド802からCRG情報データを受信した場合、ドライバ層第2別スレッド802から受信したCRG情報データをHostPC2に返答する。一方、ドライバ層201は、470msを経過してもドライバ層第2別スレッド802からCRG情報データを受信しない場合、ドライバ層第1別スレッド801から取得し、保持しているCRG情報データをHostPC2に返答する。
In the second embodiment, the
以下、ドライバ層201、情報処理層202およびドライバ層第2別スレッド802のそれぞれのソフトウェアモジュールの動作について説明する。ドライバ層第1別スレッド801の動作は、第1実施形態で説明したドライバ層別スレッド401と同様であるため、説明を省略する。
The operation of each software module of the
図9は、第2実施形態におけるドライバ層201の処理の流れの一例を示すフローチャートである。図9の処理は、CPU101が実行するドライバ層201の処理である。図9のフローチャートのうちS501~S505は、図5と同様であるため、説明を省略する。ただし、第2実施形態では、S503は、「ドライバ層別スレッドを生成」ではなく、「ドライバ層第1別スレッドを生成」である。
FIG. 9 is a flowchart showing an example of the processing flow of the
ドライバ層201は、S505でYesと判定した場合(CRG Get Commandを受信した場合)、フローをS901に進める。S901で、ドライバ層201は、CRG Get Commandを受信したことに従い、ドライバ層第2別スレッド802を生成する。S902で、ドライバ層201は、ドライバ層第2別スレッド802にCRG情報取得コマンドを送信する。
When the
S506で、ドライバ層201は、ドライバ層第1別スレッド801にCRG情報取得コマンドを送信する。S507で、ドライバ層201は、ドライバ層別スレッド401からCRG情報データを受信したかを判定する。ドライバ層201は、S507でNoと判定した場合、フローをS507に戻し、CRG情報データを受信するまで待機する。一方、ドライバ層201は、S507でYesと判定した場合(CRG情報データを受信した場合)、フローをS903に進める。
In S<b>506 , the
S903で、ドライバ層201は、ドライバ層第2別スレッド802からCRG情報データを受信したかを判定する。ドライバ層201は、S903でYesと判定した場合(ドライバ層第2別スレッド802からCRG情報データを受信した場合)、フローをS904に進める。S904で、ドライバ層201は、ドライバ層第2別スレッド802から受信したCRG情報データを、USBデバイスI/F108を介して、HostPC2に送信する。そして、ドライバ層201は、フローをS505に戻す。
In S<b>903 , the
ドライバ層201は、S903でNoと判定した場合(ドライバ層第2別スレッド802からCRG情報データを受信していない場合)、フローをS905に進める。S905で、ドライバ層201は、経過時間が所定時間(500-α)msを経過したかを判定する。ドライバ層201は、S905でNoと判定した場合(所定時間を経過していないと判定した場合)、フローをS903に戻す。つまり、ドライバ層201は、所定時間が経過するまでは、ドライバ層第2別スレッド802からCRG情報データを受信するまで待ち続ける。
If the
ドライバ層201は、S905でYesと判定した場合(所定時間を経過したと判定した場合)、フローをS906に進める。ドライバ層201は、ドライバ層第1別スレッド801から受信したCRG情報データを保持している。S906で、ドライバ層201は、保持しているCRG情報データ(ドライバ層第1別スレッド801から受信したCRG情報データ)をHostPC2に送信する。つまり、ドライバ層201は、所定時間が経過するまでにドライバ層第2別スレッド802からCRG情報データを受信した場合、受信したCRG情報データをHostPC2に送信する。一方、ドライバ層201は、所定時間が経過するまでにドライバ層第2別スレッド802からCRG情報データを受信しなかった場合、ドライバ層第1別スレッド801から受信したCRG情報データをHostPC2に送信する。ドライバ層201は、第1実施形態で述べた所定の終了条件を満たした場合等に、図9のフローチャートを終了させてもよい。
If the
図10は、第2実施形態におけるドライバ層第2別スレッド802の処理の流れの一例を示すフローチャートである。図10の処理は、CPU101が実行するドライバ層第2別スレッド802の処理である。上述したように、図9のS901で、ドライバ層第2別スレッド802が生成される。S1001で、生成されたドライバ層第2別スレッド802は、ドライバ層201からCRG情報取得コマンドを受信したかを判定する。ドライバ層第2別スレッド802は、S1001でNoと判定した場合、フローをS1001に戻し、CRG情報取得コマンドを受信するまで待機する。一方、ドライバ層第2別スレッド802は、S1001でYesと判定した場合(CRG情報取得コマンドを受信した場合)、フローをS1002に進める。
FIG. 10 is a flowchart showing an example of the processing flow of the driver layer second separate thread 802 in the second embodiment. The process of FIG. 10 is the process of the driver layer second separate thread 802 executed by the
S1002で、ドライバ層第2別スレッド802は、CRG情報取得コマンドを情報処理層202に送信する。上述したように、情報処理層202は、CRG情報取得コマンドを受信したことに従い、CRG情報データをドライバ層第2別スレッド802に送信する。S1003で、ドライバ層第2別スレッド802は、情報処理層202からCRG情報データを受信したかを判定する。ドライバ層第2別スレッド802は、S1003でNoと判定した場合、フローをS1003に戻し、CRG情報データを受信するまで待機する。一方、ドライバ層第2別スレッド802は、S1003でYesと判定した場合(CRG情報データを受信した場合)、フローをS1004に進める。S1004で、ドライバ層第2別スレッド802は、情報処理層202から受信したCRG情報データを、ドライバ層201に送信する。このとき、ドライバ層第2別スレッド802は、情報処理層202から受信したCRG情報データを保持してからドライバ層201に送信してもよいし、受信したCRG情報データを保持することなくドライバ層201に送信してもよい。そして、ドライバ層第2別スレッド802は、処理を終了させる。
In S<b>1002 , the driver layer second separate thread 802 transmits a CRG information acquisition command to the
図11は、第2実施形態における情報処理層202の処理の流れの一例を示すフローチャートである。図11の処理は、CPU101が実行する情報処理層202の処理である。S1101で、情報処理層202は、ドライバ層第1別スレッド801またはドライバ層第2別スレッド802からCRG情報取得コマンドを受信したかを判定する。情報処理層202は、S1101でNoと判定した場合(CRG情報取得コマンドを受信していない場合)、フローをS1101に戻し、CRG情報取得コマンドを受信するまで待機する。一方、情報処理層202は、S1101でYesと判定した場合、フローをS1102に進める。このとき、情報処理層202は、ドライバ層第1別スレッド801とドライバ層第2別スレッド802とのうち何れからCRG情報取得コマンドを受信したかを示す情報を記憶する。
FIG. 11 is a flow chart showing an example of the processing flow of the
S1102で、情報処理層202は、CRG124と通信を行い、カートリッジ内のトナー残量を示す情報であるCRG情報を取得する。S1103で、情報処理層202は、上記の情報に基づき、ドライバ層第1別スレッド801またはドライバ層第2別スレッド802に、取得したCRG情報をCRG情報データとして送信する。その後、情報処理層202は、フローをS1101に戻す。情報処理層202は、第1実施形態で説明したような所定の終了条件を満たした場合に、図11のフローチャートを終了させてもよい。
In S1102, the
以上のように、第2実施形態では、ドライバ層201は、CRG Get Commandを受信したことに従い、ドライバ層第2別スレッド802を生成する。生成されたドライバ層第2別スレッド802は、情報処理層202からCRG情報データを取得し、ドライバ層201に取得したCRG情報データを送信する。ドライバ層201は、所定時間が経過していなければ、ドライバ層第2別スレッド802から受信したCRG情報データをHostPC2に送信する。これにより、最新のCRG情報データを、HostPC2に送信することができる。一方、所定時間が経過した場合でも、ドライバ層201は、ドライバ層第1別スレッド801から取得したCRG情報データをHostPC2に送信することができる。これにより、第1実施形態の効果を得るとともに、最新のCRG情報データをHostPC2に送信することができる。
As described above, in the second embodiment, the
<第3実施形態>
次に、第3実施形態について説明する。第3実施形態では、ドライバ層201は、HostPC2からCRG Get Commandを受信する前に、情報処理層202からCR情報データを取得する。例えば、CPU101がドライバ層201のプログラムを実行し、ドライバ層201が起動した時点で、起動したドライバ層201が情報処理層202からCRG情報データを取得する。
<Third Embodiment>
Next, a third embodiment will be described. In the third embodiment, the
図12は、第3実施形態におけるHostPC2と画像処理装置1との間の通信の流れの一例を示すシーケンス図である。以下、図2を用いて説明した箇所と重複する箇所の説明は省略する。S1201で、ドライバ層201は、自身が起動した直後に、CRG情報取得コマンドを情報処理層202に送信する。S1202で、情報処理層202は、CRG情報取得コマンドを取得したことに従い、CRG情報データを送信する。その後の、S201、S204およびS205は、第1実施形態で説明した処理と同じである。
FIG. 12 is a sequence diagram showing an example of the communication flow between the
図13は、第3実施形態におけるドライバ層201の処理の流れの一例を示すフローチャートである。図13の処理は、CPU101が実行するドライバ層201の処理である。S1301で、ドライバ層201は、自身が起動した直後にCRG情報取得コマンドを情報処理層202に送信する。S1302で、ドライバ層201は、CRG情報データを情報処理層202から受信したかを判定する。ドライバ層201は、S1302でNoと判定した場合、フローをS1302に戻し、CRG情報データを受信するまで待機する。一方、ドライバ層201は、S1302でYesと判定した場合と判定した場合(CRG情報データを受信した場合)、フローをS1303に進める。
FIG. 13 is a flow chart showing an example of the processing flow of the
S1303で、ドライバ層201は、情報処理層202から受信したCRG情報データを、RAM104等に記憶する。これにより、ドライバ層201は、CRG情報データを保持する。S1304で、ドライバ層201は、HostPC2からCRG Get Commandを受信したかを判定する。ドライバ層201は、S1304でNoと判定した場合、フローをS1304に戻し、CRG Get Commandを受信するまで待機する。一方、ドライバ層201は、S1304でYesと判定した場合(CRG Get Commandを受信した場合)、フローをS1305に進める。
In S1303, the
S1305で、ドライバ層201は、RAM104等に記憶されたCRG情報データを読み出す。S1306で、ドライバ層201は、読み出したCRG情報データをHostPC2に送信する。そして、ドライバ層201は、フローをS1304に戻す。ドライバ層201は、第1実施形態で説明したような所定の終了条件を満たした場合に、図13のフローチャートを終了させてもよい。
In S1305, the
図14は、第3実施形態における情報処理層202の処理の流れの一例を示すフローチャートである。図14の処理は、CPU101が実行する情報処理層202の処理である。S1401で、情報処理層202は、ドライバ層201からCRG情報取得コマンドを受信したかを判定する。情報処理層202は、S1401でNoと判定した場合、フローをS1401に戻し、CRG情報取得コマンドを受信するまで待機する。一方、情報処理層202は、S1401でYesと判定した場合(CRG情報取得コマンドを受信した場合)、フローをS1402に進める。
FIG. 14 is a flowchart showing an example of the processing flow of the
S1402で、情報処理層202は、CRG124と通信を行い、カートリッジ内のトナー残量を示す情報であるCRG情報を取得する。S1403で、情報処理層202は、取得したCRG情報をCRG情報データとしてドライバ層201に送信する。その後、情報処理層202は、フローをS1401に戻す。情報処理層202は、第1実施形態で説明したような所定の終了条件を満たした場合に、図14のフローチャートを終了させてもよい。
In S1402, the
以上のように、第3実施形態では、ドライバ層201は、CRG Get CommandをHostPC2から受信する前に、情報処理層202からCRG情報データを取得し、取得したCRG情報データを保持する。これにより、第1実施形態と同様、CPU101の負荷状況にかかわらず、CRG Get Commandを受信してから500ms以内にCRG Get DataをHostPC2に返答できる。つまり、第1実施形態と同様の効果を得ることができる。また、CPU101は、ドライバ層に別のスレッドを生成しなくてもよいため、CPU101の負荷を低減させることができる。
As described above, in the third embodiment, the
以上、本発明の好ましい実施の形態について説明したが、本発明は上述した各実施の形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。 Although preferred embodiments of the present invention have been described above, the present invention is not limited to the above-described embodiments, and various modifications and changes are possible within the scope of the gist of the present invention. The present invention supplies a program that implements one or more functions of each of the above-described embodiments to a system or device via a network or a storage medium, and one or more processors of the computer of the system or device executes the program. It can also be realized by reading and executing processing. The invention can also be implemented by a circuit (eg, an ASIC) that implements one or more functions.
1 画像処理装置
2 HostPC
3 USBケーブル
101 CPU
108 USBデバイスI/F
201 ドライバ層
202 情報処理層
401 ドライバ層別スレッド
802 ドライバ層第2別スレッド
1
3
108 USB device I/F
201
Claims (13)
前記情報処理装置に対応する所定のアプリケーションから予め取得した所定の情報を保持する保持手段と、
前記USBインタフェースを介して、前記情報処理装置からGetコマンドを受信したことに従い、保持している前記所定の情報を前記情報処理装置に返答する制御を行う制御手段と、
を備えることを特徴とする画像処理装置。 a USB interface for performing USB communication with an information processing device;
holding means for holding predetermined information obtained in advance from a predetermined application corresponding to the information processing apparatus;
a control means for performing control to return the held predetermined information to the information processing device in response to receiving a Get command from the information processing device via the USB interface;
An image processing device comprising:
前記情報処理装置とUSB通信を行うスレッドが、前記Getコマンドを受信したことに従い、前記第1のスレッドが保持する前記所定の情報を前記情報処理装置に返答することを特徴とする請求項3に記載の画像処理装置。 the first thread acquires the predetermined information from the application and holds the acquired predetermined information;
4. The method according to claim 3, wherein a thread that performs USB communication with the information processing device returns the predetermined information held by the first thread to the information processing device in response to receiving the Get command. The described image processing device.
前記情報処理装置に対応する所定のアプリケーションから予め取得した所定の情報を保持する工程と、
前記USBインタフェースを介して、前記情報処理装置からGetコマンドを受信したことに従い、保持している前記所定の情報を前記情報処理装置に返答する制御を行う工程と、
を備えることを特徴とする画像処理装置の制御方法。 A control method for an image processing device having a USB interface that performs USB communication with an information processing device, comprising:
a step of holding predetermined information obtained in advance from a predetermined application corresponding to the information processing device;
a step of controlling to return the held predetermined information to the information processing device in response to receiving a Get command from the information processing device via the USB interface;
A control method for an image processing device, comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021008887A JP2022112881A (en) | 2021-01-22 | 2021-01-22 | Image processing apparatus, image processing method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021008887A JP2022112881A (en) | 2021-01-22 | 2021-01-22 | Image processing apparatus, image processing method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022112881A true JP2022112881A (en) | 2022-08-03 |
Family
ID=82657191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021008887A Pending JP2022112881A (en) | 2021-01-22 | 2021-01-22 | Image processing apparatus, image processing method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022112881A (en) |
-
2021
- 2021-01-22 JP JP2021008887A patent/JP2022112881A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2615814A2 (en) | Image forming apparatus, host apparatus, image forming system having the same, and method of controlling power thereof | |
US20060139686A1 (en) | Information processing apparatus, image forming apparatus, recording medium having recorded operation control program, and image forming system | |
JP2015174375A (en) | Image forming device and control method for the same, and program | |
JP6171422B2 (en) | Image processing system, control method, and control program | |
US8917413B2 (en) | Image forming system capable of switching among a plurality of power states | |
JP2013190950A (en) | Control device and start-up method | |
JP4639917B2 (en) | Image forming apparatus and image forming system | |
JP2012015812A (en) | Image formation device | |
JP2022112881A (en) | Image processing apparatus, image processing method, and program | |
JP2014085955A (en) | Image forming apparatus, and information processing method and program | |
JP2017061079A (en) | Image forming apparatus, and control method therefor | |
JP7508345B2 (en) | COMMUNICATION DEVICE, CONTROL METHOD, AND PROGRAM | |
JP7336281B2 (en) | IMAGE FORMING APPARATUS, CONTROL METHOD THEREOF, AND PROGRAM | |
JP6100062B2 (en) | Printing apparatus, control method, program | |
JP2012038076A (en) | Information processing device, job processing system, job transmission path control method and program, and recording medium | |
US11709644B2 (en) | Image processing apparatus connected to another apparatus by a USB cable and communicating with the another apparatus via a USB communication, method for controlling the image processing apparatus, and storage medium thereof | |
JP5986132B2 (en) | Electronic device and memory management method | |
JP2020107258A (en) | Information processor, program, image forming apparatus, image forming system, and image forming method | |
JP6204305B2 (en) | Layout setting program and image forming apparatus | |
JP5045966B2 (en) | Image forming system | |
US11409479B2 (en) | Image forming apparatus | |
JP7173725B2 (en) | Image forming apparatus management device, image forming apparatus management method, image forming apparatus management program, image forming system | |
US20140139875A1 (en) | Image forming apparatus that uses appropriate print control device to complete printing at high speed | |
JP2024101709A (en) | Communication device, control method for communication device, information processing device, control method for information processing device, information processing system, and program | |
US20140063538A1 (en) | Print control apparatus, image forming apparatus, image forming system, and method of controlling the same |