JP2022112881A - Image processing apparatus, image processing method, and program - Google Patents

Image processing apparatus, image processing method, and program Download PDF

Info

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
Application number
JP2021008887A
Other languages
Japanese (ja)
Inventor
康夫 廣内
Yasuo Hirouchi
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 JP2021008887A priority Critical patent/JP2022112881A/en
Publication of JP2022112881A publication Critical patent/JP2022112881A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Abstract

To prevent the occurrence of time-out in USB communication regardless of the state of load on a CPU.SOLUTION: An image processing apparatus includes: a USB interface that performs USB communication with an information processing apparatus; holding means that holds predetermined information acquired in advance from a predetermined application corresponding to the information processing apparatus; and control means that, according to reception of a Get command from the information processing apparatus through the USB interface, performs control of responding to the information processing apparatus with the predetermined information held in the holding means.SELECTED DRAWING: Figure 4

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 endpoints 1 to n, communications based on protocols such as bulk transfer, interrupt transfer, and isochronous transfer are performed.

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 Patent Document 1 has been proposed. In the technique of Patent Document 1, a path for bulk-out transfer and a path for interrupt-out transfer are provided to switch between bulk-out transfer mode and interrupt-out transfer mode.

特開2002-318778号公報JP-A-2002-318778

特許文献1の技術は、バルクアウト転送モードとインタラプトアウト転送とを切り替えることで、タイムアウトエラーの回避を図っている。ただし、特許文献1の技術は、Endpoint0を使用するコントロール転送におけるHostPCのIN要求の停止といった問題を解決するものではない。 The technology of Patent Document 1 attempts to avoid timeout errors by switching between bulk-out transfer mode and interrupt-out transfer. However, the technique of Patent Document 1 does not solve the problem of stopping the IN request of the HostPC in the control transfer using Endpoint0.

上述したように、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.

システムの構成の一例を示す図である。It is a figure which shows an example of a structure of a system. HostPCと画像処理装置との間の基本的な通信の流れの一例を示すシーケンス図である。4 is a sequence diagram showing an example of basic communication flow between a HostPC and an image processing apparatus; FIG. USBデバイスの状態遷移図である。4 is a state transition diagram of a USB device; FIG. 第1実施形態におけるHostPCと画像処理装置との間の通信の流れの一例を示すシーケンス図である。4 is a sequence diagram showing an example of the flow of communication between the HostPC and the image processing apparatus according to the first embodiment; FIG. 第1実施形態におけるドライバ層の処理の流れの一例を示すフローチャートである。4 is a flow chart showing an example of the flow of processing in a driver layer in the first embodiment; 第1実施形態におけるドライバ層別スレッドの処理の流れの一例を示すフローチャートである。7 is a flow chart showing an example of the flow of processing of a driver layer-specific thread in the first embodiment; 第1実施形態における情報処理層の処理の流れの一例を示すフローチャートである。4 is a flow chart showing an example of the flow of processing in the information processing layer in the first embodiment; 第2実施形態におけるHostPCと画像処理装置との間の通信の流れの一例を示すシーケンス図である。FIG. 11 is a sequence diagram showing an example of the flow of communication between a HostPC and an image processing apparatus according to the second embodiment; 第2実施形態におけるドライバ層の処理の流れの一例を示すフローチャートである。9 is a flow chart showing an example of the flow of processing in a driver layer in the second embodiment; 第2実施形態におけるドライバ層第2別スレッドの処理の流れの一例を示すフローチャートである。FIG. 11 is a flow chart showing an example of a process flow of a second separate thread in the driver layer in the second embodiment; FIG. 第2実施形態における情報処理層の処理の流れの一例を示すフローチャートである。9 is a flow chart showing an example of the flow of processing in the information processing layer in the second embodiment; 第3実施形態におけるHostPCと画像処理装置との間の通信の流れの一例を示すシーケンス図である。FIG. 11 is a sequence diagram showing an example of the flow of communication between a HostPC and an image processing apparatus according to the third embodiment; 第3実施形態におけるドライバ層の処理の流れの一例を示すフローチャートである。FIG. 11 is a flow chart showing an example of the flow of processing in a driver layer in the third embodiment; FIG. 第3実施形態における情報処理層の処理の流れの一例を示すフローチャートである。FIG. 11 is a flow chart showing an example of the flow of processing in an information processing layer in the third embodiment; FIG. ユーザ操作に基づくトナー残量の情報を取得する際の通信の一例を示す図である。FIG. 10 is a diagram showing an example of communication when obtaining information on the remaining amount of toner based on a user's operation; トナー残量を表示するアプリケーションにより表示される画面の一例を示す図である。FIG. 10 is a diagram showing an example of a screen displayed by an application that displays remaining amount of toner;

以下、本発明の各実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施形態に記載されている構成によって限定されることはない。 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 image processing apparatus 1 and HostPC 2 are connected via a USB cable 3 . The image processing apparatus 1 is an image forming apparatus such as a multifunction machine or a printer. The image processing device 1 may be, for example, a device such as a tablet terminal, a notebook computer, or a digital camera. The HostPC 2 is an information processing device such as a personal computer. The USB cable 3 is a cable that performs communication using a protocol conforming to USB specifications.

画像処理装置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 CPU 101 of the image processing apparatus 1 is control means for controlling each section of the image processing apparatus 1 by executing programs. A system bus 102 is a bus that connects each unit of the image processing apparatus 1 . The HDD 103 is a hard disk drive that stores a database used to operate the image processing apparatus 1 and temporary storage files. A nonvolatile memory such as a Solid State Drive (SSD) or an embedded Multi Media Card (eMMC) may be used instead of or together with the HDD 103 . The RAM 104 temporarily stores variables during operation of the program executed by the CPU 101 and data transferred from each unit by dynamic memory access (DMA). A program executed by the CPU 101 is developed in the RAM 104 . The RAM 104 corresponds to holding means for holding predetermined information. The holding means is not limited to the RAM 104 and may be any storage device.

ネットワークコントローラ105は、ネットワークコントローラインタフェース106を制御する。画像処理装置1は、ネットワークコントローラインタフェース106を介して、外部装置と通信を行う。USBデバイスコントローラ107は、USBデバイスI/F108(USBインタフェース)を制御する。USBデバイスI/F108にはUSBケーブル3が接続される。USBデバイスI/F108は、USBケーブル3を介したHostPC2との通信を制御する。各実施形態におけるUSBの通信は、USB2.0の仕様に準拠しているものとする。 Network controller 105 controls network controller interface 106 . The image processing apparatus 1 communicates with external devices via the network controller interface 106 . A USB device controller 107 controls a USB device I/F 108 (USB interface). A USB cable 3 is connected to the USB device I/F 108 . A USB device I/F 108 controls communication with the HostPC 2 via the USB cable 3 . It is assumed that USB communication in each embodiment conforms to the USB 2.0 specification.

ディスプレイコントローラ110は、ディスプレイ111の表示制御を行う。ディスプレイ111には、画像処理装置1の動作状況等の各種情報が表示される。これにより、ユーザがディスプレイ111に表示される情報を確認できる。入力部コントローラ112は、入力部113を制御する。入力部113は、ユーザから画像処理装置1に対する指示を受け付ける。入力部113としては、キーボードやマウス、テンキー、カーソルキー、タッチパネル、操作部キーボード等が適用され得る。入力部113はディスプレイ111と一体的に構成されるタッチパネルディスプレイであってもよい。 The display controller 110 performs display control of the display 111 . The display 111 displays various information such as the operation status of the image processing apparatus 1 . Thereby, the user can confirm the information displayed on the display 111 . The input unit controller 112 controls the input unit 113 . The input unit 113 receives instructions from the user to the image processing apparatus 1 . As the input unit 113, a keyboard, mouse, numeric keypad, cursor keys, touch panel, operation unit keyboard, or the like can be applied. The input unit 113 may be a touch panel display integrated with the display 111 .

RTC114は、画像処理装置1の時計機能やアラーム機能、タイマー機能等を有するリアルタイムクロックである。不揮発性メモリ115は、HDD103よりも記憶容量が少ない書き換え可能な不揮発性な記録メディアである。不揮発性メモリ115には、Static Random Access Memory(SRAM)が適用され得る。また、不揮発性メモリ115には、Electrically Erasable Programmable Read Only Memory(EEPROM)等も適用され得る。 The RTC 114 is a real-time clock having clock functions, alarm functions, timer functions, etc. of the image processing apparatus 1 . The nonvolatile memory 115 is a rewritable nonvolatile recording medium with a smaller storage capacity than the HDD 103 . A Static Random Access Memory (SRAM) may be applied to the non-volatile memory 115 . An electrically erasable programmable read only memory (EEPROM) or the like may also be applied to the nonvolatile memory 115 .

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 CPLD 109 is a unit that enables the CPU 101 to read the Low/High status of signal lines on the substrate circuit and change the Low/High status settings. CPLD is an abbreviation for Complex Programmable Logic Device. The image processing apparatus 1 has a scanner 117 . Scanner 117 is controlled by scanner I/F 116 . The image processing apparatus 1 has a printer 119 . A printer 119 is controlled by a printer I/F 118 . Also included within the printer 119 is a CRG 124 . CRG 124 is a cartridge. The image processing apparatus 1 does not have to have all the configurations shown in FIG.

図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 HostPC 2 and the image processing apparatus 1. As shown in FIG. As described above, the HostPC 2 and the image processing apparatus 1 communicate with each other via the USB cable 3 . FIG. 2 shows an example of communication when the HostPC 2 inquires about the remaining amount of toner in the CRG 124 built in the printer 119 of the image processing apparatus 1. FIG. Communication between the HostPC 2 and the image processing apparatus 1 is not limited to inquiries about the remaining amount of toner. The HostPC 2 can acquire information from any application of the image processing apparatus 1 . For example, the HostPC 2 can acquire information indicating the state of the image processing device 1 from the application of the image processing device 1 .

画像処理装置1のCPU101がプログラムを実行することにより実現されるソフトウェアは階層構造に分かれているものとする。ドライバ層201は、USBに関するパケットを処理するソフトウェア的なモジュールである。情報処理層202は、ドライバ層201よりも上位の層であり、ここではCRG情報を管理するソフトウェア的なモジュール(所定のアプリケーション)である。CRG情報は、カートリッジ内のトナー残量を示す情報である。所定のアプリケーションは、CRG情報を管理するアプリケーションには限定されない。 It is assumed that the software realized by executing the program by the CPU 101 of the image processing apparatus 1 is divided into a hierarchical structure. The driver layer 201 is a software module that processes USB-related packets. The information processing layer 202 is a layer higher than the driver layer 201, and is a software module (predetermined application) that manages CRG information. The CRG information is information indicating the remaining amount of toner in the cartridge. A given application is not limited to an application that manages CRG information.

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 HostPC 2 transmits a CRG Get Command for acquiring CRG information to the image processing apparatus 1 via the USB cable 3 . CRG Get Command is a Vendor class command for control transfer. Control transfer is communication using Endpoint0, which is a basic communication port. CRG Get Command is a command for obtaining predetermined information from a predetermined application corresponding to HostPC2. CRG Get Command is an example of a Get command. If the information to be acquired is not the CRG information, a Get command for acquiring the corresponding information is transmitted from the HostPC 2 to the image processing apparatus 1 .

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 driver layer 201 transfers the received CRG Get Command to the information processing layer 202 as a CRG information acquisition command. The information processing layer 202 interprets the CRG information acquisition command and acquires data (CRG information data) corresponding to the command. In S<b>203 , the information processing layer 202 returns the acquired CRG information data to the driver layer 201 . In S204, the driver layer 201 that has received the CRG information data returns CRG Get Data to the HostPC2. In S<b>205 , when the HostPC 2 receives the CRG Get Data, it transmits an ACK indicating receipt to the image processing apparatus 1 .

ここで、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 CPU 101 increases and there is no room left for allocating CPU resources, 500 ms may be exceeded. A cause of the high usage rate of the CPU 101 is, for example, a case where another job (a job of PDL print data processing from the network) is input to the image processing apparatus 1 and the input job is executed. In such a case, the image processing apparatus 1 cannot reply CRG Get Data to the HostPC2. In this embodiment, the reference time for timeout is 500 ms conforming to the USB 2.0 specification. This embodiment can also be applied to USB communication conforming to specifications other than USB 2.0. In this case, the above 500 ms (specified time conforming to USB specifications) is set to an arbitrary time.

図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 CRG 124 based on user's operation. The user operates the display section of the HostPC 2 to perform an operation of acquiring the remaining amount of toner in the CRG 124 of the image processing apparatus 1 . At this time, a screen displayed by an application that displays the remaining amount of toner, for example, is displayed on the display section of the HostPC 2 . The application is an application corresponding to a predetermined application in the information processing layer 202 of the image processing apparatus 1 .

図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 update button 1601 on the screen 1600, the HostPC 2 accepts this operation as a remaining amount confirmation instruction. In S1502, the HostPC 2 transmits a CRG Get Command to the image processing apparatus 1 via the USB cable 3 in order to obtain the toner remaining amount information based on the remaining amount confirmation instruction. The CRG Get Command is a USB Vendor Class Command.

S1503で、画像処理装置1のドライバ層201は、CRG Get Commandの受信に従い、CRG情報取得コマンドを情報処理層202に送信する。S1504で、情報処理層202は、CRG124の内部に存在するトナー残量を示す情報(残量情報)を取得する。画像処理装置1が、カラープリンタである場合、情報処理層202は、ブラック、シアン、マゼンタおよびイエローの4色のそれぞれのトナー残量を示す残量情報を取得する。また、画像処理装置1がモノクロプリンタである場合、情報処理層202は、ブラックのトナー残量を示す残量情報を取得する。 In step S1503, the driver layer 201 of the image processing apparatus 1 transmits a CRG information acquisition command to the information processing layer 202 in response to receiving the CRG Get Command. In S<b>1504 , the information processing layer 202 acquires information (remaining amount information) indicating the amount of toner remaining inside the CRG 124 . If the image processing apparatus 1 is a color printer, the information processing layer 202 acquires remaining amount information indicating the amount of remaining toner for each of the four colors of black, cyan, magenta, and yellow. Also, if the image processing apparatus 1 is a monochrome printer, the information processing layer 202 acquires remaining amount information indicating the remaining amount of black toner.

S1505で、情報処理層202は、取得した残量情報をCRG情報データとして、ドライバ層201に送信する。S1506で、ドライバ層201は、CRG情報データを受信したことに基づき、CRG情報データをCRG Get DataとしてHostPC2に送信する。S1507で、HostPC2は、CRG Get Dataを受領したことを示すACKを画像処理装置1のドライバ層201に送信する。 In S1505, the information processing layer 202 transmits the acquired remaining amount information to the driver layer 201 as CRG information data. In S1506, the driver layer 201 transmits the CRG information data as CRG Get Data to the HostPC2 based on the reception of the CRG information data. In S<b>1507 , the HostPC 2 transmits an ACK indicating reception of the CRG Get Data to the driver layer 201 of the image processing apparatus 1 .

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 screen 1600 in FIG. 16, for example. A screen 1600 shows the status of the toner remaining amounts of four colors of black 1602, cyan 1603, magenta 1604 and yellow 1605. FIG. The screen 1600 may be generated by converting the CRG Get Data by the application of the HostPC2 that generates the remaining amount display screen. In S1509, the HostPC 2 presents the toner remaining amount of each color in the CRG 124 built in the image processing apparatus 1 by displaying the remaining amount display screen on the display unit. Thereby, the user who operates the HostPC 2 can recognize the amount of remaining toner of each color in the CRG 124 .

次に、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 HostPC 2 and the USB device I/F 108 of the image processing apparatus 1 are connected by the USB cable 3, the state of the USB device transitions to Attached301. After that, enumeration processing is started between the HostPC 2 and the image processing apparatus 1 . Enumeration processing is initial negotiation processing. When the HostPC 2 assigns an address on the USB Bus of the image processing apparatus 1 , the state transitions to Address 302 . After that, when the HostPC 2 transmits a Set Configuration Command to the image processing apparatus 1 , the state transitions to the Configured 303 state. When the enumeration process ends after transitioning to the Configured 303 state, data communication via the USB cable 3 can be started between the HostPC 2 and the image processing apparatus 1 . The data communication is bulk transfer, interrupt transfer, isochronous transfer, or the like. In each embodiment, attention is focused on the Set Configuration Command 402 described above to deal with the problem that the image processing apparatus 1 cannot return CRG Get Data to the HostPC 2 .

図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 HostPC 2 and the image processing apparatus 1 in the first embodiment. In S<b>401 , the HostPC 2 transmits the above-described Set Configuration Command to the driver layer 201 of the image processing apparatus 1 via the USB cable 3 . A Set Configuration Command is a Standard Class command for USB control transfer. In S402, upon receiving the Set Configuration Command, the driver layer 201 generates a driver layer thread 401 for issuing a CRG information acquisition command. A driver layer 201 is a thread that operates in the driver layer and performs USB communication. On the other hand, the driver layer-specific thread 401 is also a thread that operates in the driver layer, but is a different thread from the thread in the driver layer 201 and operates independently. Driver layered thread 401 corresponds to the first thread. In S<b>403 , the driver layer 201 returns ACK to the HostPC 2 via the USB cable 3 after generating the driver layer thread 401 .

S404で、ドライバ層別スレッド401は、CRG情報取得コマンドを情報処理層202に送信する。情報処理層202は、CRG情報取得コマンドを受けたことに従い、CRG情報データを取得する。S405で、情報処理層202は、取得したCRG情報データをドライバ層別スレッド401に返答する。S405の後、ドライバ層別スレッド401は、ドライバ層201からCRG情報取得コマンドを受信するまで待機する。 In S<b>404 , the driver layer thread 401 transmits a CRG information acquisition command to the information processing layer 202 . The information processing layer 202 acquires CRG information data in response to receiving the CRG information acquisition command. In S<b>405 , the information processing layer 202 returns the acquired CRG information data to the driver layer-specific thread 401 . After S<b>405 , the driver layer thread 401 waits until it receives a CRG information acquisition command from the driver layer 201 .

ここで、ドライバ層201のスレッドおよびドライバ層別スレッド401の動作は、制御手段としてのCPU101により実現される。例えば、CPU101が、CRG情報データをRAM104等に記憶することで、ドライバ層別スレッド401はCRG情報データを保持する。 Here, the operations of the thread of the driver layer 201 and the driver layer-specific thread 401 are realized by the CPU 101 as control means. For example, the CPU 101 stores the CRG information data in the RAM 104 or the like, so that the driver layer-specific thread 401 holds the CRG information data.

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 driver layer 201 receives a CRG Get Command from HostPC2. In S<b>406 , the driver layer 201 transmits a CRG information acquisition command to the driver layer thread 401 in accordance with the reception of the CRG Get Command. As described above, the driver layer-specific thread 401 acquires and holds CRG information data in advance. In S<b>407 , the driver layer thread 401 promptly replies to the driver layer 201 with the retained CRG information data in accordance with the CRG information acquisition command received from the driver layer 201 . In S204, the driver layer 201 transmits the received CRG information data to the HostPC2 as CRG Get Data. At S205, HostPC2 sends an ACK to the driver layer 201. FIG.

図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 driver layer 201 in the first embodiment. The operation of the driver layer 201 is realized by the CPU 101 as described above. The processing in FIG. 5 is processing of the driver layer 201 executed by the CPU 101 . In S<b>501 , the driver layer 201 determines whether it has received a Set Configuration Command via the USB device I/F 108 .

ドライバ層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 driver layer 201 determines No in S501, it returns the flow to S501 and waits until it receives a Set Configuration Command. The Set Configuration Command is a control transfer command that is always transmitted from the HostPC 2 to the image processing apparatus 1 when the HostPC 2 and the image processing apparatus 1 are connected via the USB cable 3 . When the driver layer 201 determines Yes in S501 (when the Set Configuration Command is received), the flow advances to S502.

S502で、ドライバ層201は、Set Configuration Commandの受信に基づき、USBデバイスコントローラ107に対して、状態をConfigured303に遷移させる処理を行う。当該処理は、Set Configuration処理である。S503で、S502の処理を実行した後、ドライバ層201は、ドライバ層別スレッド401を生成する。 In step S<b>502 , the driver layer 201 performs processing for causing the USB device controller 107 to transition the state to Configured 303 based on the reception of the Set Configuration Command. The processing is Set Configuration processing. In S503, after executing the processing of S502, the driver layer 201 generates the thread 401 for each driver layer.

S504で、ドライバ層201は、ドライバ層別スレッド401を生成した後に、Set Configuration Commandを受信したことを示すACKを、HostPC2に返答する。 In S504, the driver layer 201, after generating the driver layer thread 401, returns an ACK indicating that it has received the Set Configuration Command to the HostPC2.

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 driver layer 201 determines whether a CRG Get Command, which is a USB control transfer Vendor Class command, has been received from the HostPC2. If the driver layer 201 determines No in S505, it returns the flow to S505 and waits until it receives a CRG Get Command. On the other hand, when the driver layer 201 determines Yes in S505 (when CRG Get Command is received), the flow advances to S506. In S<b>506 , the driver layer 201 transmits a CRG information acquisition command to the driver layer thread 401 . As described above, the driver layer thread 401 transmits CRG information data to the driver layer 201 upon receipt of the CRG information acquisition command.

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 driver layer 201 determines whether CRG information data has been received from the driver layer thread 401 . When the driver layer 201 determines No in S507, the flow returns to S507 and waits until the CRG information data is received. On the other hand, when the driver layer 201 determines Yes in S507 (when CRG information data is received), the flow advances to S508. In S508, the driver layer 201 transmits the received CRG information data to the HostPC2 via the USB device I/F108. After that, the driver layer 201 returns the flow to S505 and executes the processing after S505. Note that the driver layer 201 may terminate the flowchart of FIG. 5 when a predetermined termination condition is satisfied. For example, when the image processing apparatus 1 is powered off, the driver layer 201 terminates the flowchart of FIG.

図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 driver layer thread 401 in the first embodiment. The process of FIG. 6 is the process of the driver layer thread 401 executed by the CPU 101 . In S<b>601 , when the driver layer 201 generates its own thread, the driver layer-specific thread 401 immediately transmits a CRG information acquisition command to the information processing layer 202 . In S<b>602 , the driver layer thread 401 determines whether CRG information data has been received from the information processing layer 202 . If the driver layer-specific thread 401 determines No in S602, the flow returns to S602 and waits until the CRG information data is received. On the other hand, if the driver layer thread 401 determines Yes in S602 (if CRG information data has been received), the flow advances to S603.

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 driver layer thread 401 stores the received CRG information data in the RAM 104 or the like. As a result, the driver layer thread 401 holds the CRG information data. In S<b>604 , the driver layer thread 401 determines whether a CRG information acquisition command has been received from the driver layer 201 . If the driver layer-specific thread 401 determines No in S604, it waits until it receives a CRG information acquisition command. On the other hand, if the driver layer thread 401 determines Yes in S604 (if the CRG information acquisition command is received), the flow advances to S605. In S<b>605 , the driver layer thread 401 transmits the held CRG information data to the driver layer 201 . Then, the driver layer-specific thread 401 terminates the flowchart of FIG.

図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 information processing layer 202 in the first embodiment. The processing in FIG. 7 is processing of the information processing layer 202 executed by the CPU 101 . In S<b>701 , the information processing layer 202 determines whether a CRG information acquisition command has been received from the driver layer thread 401 . If the information processing layer 202 determines No in S701, the flow returns to S701 and waits until a CRG information acquisition command is received. On the other hand, when the information processing layer 202 determines Yes in S701 (when the CRG information acquisition command is received), the flow advances to S702. In S702, the information processing layer 202 communicates with the CRG 124 and acquires CRG information indicating the remaining amount of toner in the cartridge. In S703, the information processing layer 202 transmits the acquired CRG information to the driver layer thread 401 as CRG information data. After that, the information processing layer 202 returns the flow to S701.

上述したように、第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 driver layer 201 generates the driver layer thread 401 upon receiving the Set Configuration Command. The driver layer thread 401 acquires and holds CRG information data in advance from the information processing layer 202 independently of the thread operation of the driver layer 201 that performs USB communication with the HostPC 2 . As a result, the CRG information data is held in the driver layer 201 belonging to the same layer. When the driver layer 201 receives the CRG Get Command from the HostPC2, the driver layer 201 does not acquire the CRG information data from the information processing layer 202, but responds to the HostPC2 with CRG information data held in advance as CRG Get Data. As a result, even if the load on the CPU 101 increases due to the application being executed in the information processing layer 202, GetData can be returned within 500 ms, which is the limitation of control transfer. As a result, it is possible to suppress the occurrence of time-out in USB communication regardless of the state of the application layer (the load state of the CPU 101).

<第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 image processing apparatus 1 via the network controller I/F 106 after the HostPC 2 issues a Set Configuration Command. In this case, the remaining amount of toner information in the CRG 124 fluctuates.

この状況下で、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 HostPC 2 and the image processing apparatus 1 in the second embodiment. In the following, descriptions of portions overlapping with those described using FIG. 4 will be omitted. The driver layer 201 generates the driver layer thread 401 upon receiving the Set Configuration Command in S402. In the second embodiment, the driver layer separate thread 401 is the driver layer separate first thread 801 .

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 driver layer 201 receives a CRG Get Command from HostPC2, it generates a driver layer second separate thread 802. FIG. The driver layer second separate thread 802 is a driver layer thread that is newly generated after the driver layer first separate thread 801 is generated. The driver layer second separate thread 802 is a thread for generating a CRG information acquisition command, and operates independently of the driver layer first separate thread 801 and the driver layer 201 thread. Driver layer second separate thread 802 corresponds to the second thread.

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 driver layer 201 transmits a CRG information command to the generated driver layer second separate thread 802 . In S<b>803 , upon receiving the CRG information command, the driver layer second separate thread 802 transmits a CRG information acquisition command to the information processing layer 202 . The information processing layer 202 acquires CRG information in response to receiving the CRG information acquisition command. In S804, the information processing layer 202 returns the acquired CRG information to the driver layer second separate thread 802 as CRG information data. In S<b>805 , the driver layer second separate thread 802 transmits the CRG information data received from the information processing layer 202 to the driver layer 201 .

第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 driver layer 201 receives the CRG Get Command from the HostPC2 and receives the CRG information data from the driver layer second separate thread 802 for a predetermined time (500-α) ms shorter than 500 ms. wait. α is a positive value, for example, about 10 ms to 50 ms. In this case, the driver layer 201 waits for CRG information data from the driver layer 2 separate thread 802 until, for example, 470 ms has elapsed after receiving the CRG Get Command from HostPC2. When the driver layer 201 receives the CRG information data from the driver layer 2 separate thread 802 before 470 ms elapses, the driver layer 201 returns the CRG information data received from the driver layer 2 separate thread 802 to the HostPC2. On the other hand, if the driver layer 201 does not receive the CRG information data from the driver layer 2 separate thread 802 even after 470 ms has passed, the driver layer 201 acquires from the driver layer 1 separate thread 801 and sends the retained CRG information data to the HostPC 2. reply.

以下、ドライバ層201、情報処理層202およびドライバ層第2別スレッド802のそれぞれのソフトウェアモジュールの動作について説明する。ドライバ層第1別スレッド801の動作は、第1実施形態で説明したドライバ層別スレッド401と同様であるため、説明を省略する。 The operation of each software module of the driver layer 201, the information processing layer 202, and the driver layer second separate thread 802 will be described below. Since the operation of the driver layer first separate thread 801 is the same as that of the driver layer separate thread 401 described in the first embodiment, description thereof will be omitted.

図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 driver layer 201 in the second embodiment. The processing in FIG. 9 is processing of the driver layer 201 executed by the CPU 101 . S501 to S505 in the flow chart of FIG. 9 are the same as those of FIG. 5, so description thereof will be omitted. However, in the second embodiment, S503 is not "generate driver layer-specific thread" but "generate driver layer first separate thread".

ドライバ層201は、S505でYesと判定した場合(CRG Get Commandを受信した場合)、フローをS901に進める。S901で、ドライバ層201は、CRG Get Commandを受信したことに従い、ドライバ層第2別スレッド802を生成する。S902で、ドライバ層201は、ドライバ層第2別スレッド802にCRG情報取得コマンドを送信する。 When the driver layer 201 determines Yes in S505 (when CRG Get Command is received), the flow advances to S901. In S901, the driver layer 201 generates another driver layer second thread 802 in response to receiving the CRG Get Command. In S<b>902 , the driver layer 201 transmits a CRG information acquisition command to the driver layer second separate thread 802 .

S506で、ドライバ層201は、ドライバ層第1別スレッド801にCRG情報取得コマンドを送信する。S507で、ドライバ層201は、ドライバ層別スレッド401からCRG情報データを受信したかを判定する。ドライバ層201は、S507でNoと判定した場合、フローをS507に戻し、CRG情報データを受信するまで待機する。一方、ドライバ層201は、S507でYesと判定した場合(CRG情報データを受信した場合)、フローをS903に進める。 In S<b>506 , the driver layer 201 transmits a CRG information acquisition command to the driver layer first separate thread 801 . In S<b>507 , the driver layer 201 determines whether CRG information data has been received from the driver layer thread 401 . When the driver layer 201 determines No in S507, the flow returns to S507 and waits until the CRG information data is received. On the other hand, when the driver layer 201 determines Yes in S507 (when CRG information data is received), the flow advances to S903.

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 driver layer 201 determines whether CRG information data has been received from the driver layer second separate thread 802 . If the driver layer 201 determines Yes in S903 (if the CRG information data is received from the driver layer second separate thread 802), the flow advances to S904. In S<b>904 , the driver layer 201 transmits the CRG information data received from the driver layer second separate thread 802 to the HostPC 2 via the USB device I/F 108 . The driver layer 201 then returns the flow to S505.

ドライバ層201は、S903でNoと判定した場合(ドライバ層第2別スレッド802からCRG情報データを受信していない場合)、フローをS905に進める。S905で、ドライバ層201は、経過時間が所定時間(500-α)msを経過したかを判定する。ドライバ層201は、S905でNoと判定した場合(所定時間を経過していないと判定した場合)、フローをS903に戻す。つまり、ドライバ層201は、所定時間が経過するまでは、ドライバ層第2別スレッド802からCRG情報データを受信するまで待ち続ける。 If the driver layer 201 determines No in S903 (if CRG information data has not been received from the driver layer second separate thread 802), the flow advances to S905. In S905, the driver layer 201 determines whether the elapsed time has passed a predetermined time (500-α) ms. If the driver layer 201 determines No in S905 (if it determines that the predetermined time has not elapsed), the flow returns to S903. In other words, the driver layer 201 continues to wait until the CRG information data is received from the driver layer second separate thread 802 until the predetermined time elapses.

ドライバ層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 driver layer 201 determines Yes in S905 (if it determines that the predetermined time has passed), the flow advances to S906. The driver layer 201 holds the CRG information data received from the driver layer first separate thread 801 . In S906, the driver layer 201 transmits the retained CRG information data (the CRG information data received from the separate driver layer first thread 801) to the HostPC2. That is, when the driver layer 201 receives the CRG information data from the driver layer second separate thread 802 before the predetermined time elapses, it transmits the received CRG information data to the HostPC2. On the other hand, if the driver layer 201 does not receive the CRG information data from the driver layer second separate thread 802 before the predetermined time elapses, the driver layer 201 transmits the CRG information data received from the driver layer first separate thread 801 to the HostPC2. . The driver layer 201 may terminate the flowchart of FIG. 9 when the predetermined termination condition described in the first embodiment is satisfied.

図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 CPU 101 . As described above, in S901 of FIG. 9, another driver layer second thread 802 is generated. In S<b>1001 , the generated driver layer second separate thread 802 determines whether a CRG information acquisition command has been received from the driver layer 201 . If the driver layer second separate thread 802 determines No in S1001, it returns the flow to S1001 and waits until a CRG information acquisition command is received. On the other hand, when the driver layer second separate thread 802 determines Yes in S1001 (when the CRG information acquisition command is received), the flow advances to S1002.

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 information processing layer 202 . As described above, the information processing layer 202 transmits CRG information data to the driver layer second separate thread 802 in response to receiving the CRG information acquisition command. In S<b>1003 , the driver layer second separate thread 802 determines whether CRG information data has been received from the information processing layer 202 . If the driver layer second separate thread 802 determines No in S1003, it returns the flow to S1003 and waits until the CRG information data is received. On the other hand, when the driver layer second separate thread 802 determines Yes in S1003 (when CRG information data is received), the flow advances to S1004. In S<b>1004 , the driver layer second separate thread 802 transmits the CRG information data received from the information processing layer 202 to the driver layer 201 . At this time, the driver layer second separate thread 802 may retain the CRG information data received from the information processing layer 202 before transmitting it to the driver layer 201, or may transmit the received CRG information data to the driver layer 201 without retaining the received CRG information data. 201. Then, the driver layer second separate thread 802 terminates the processing.

図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 information processing layer 202 in the second embodiment. The processing in FIG. 11 is processing of the information processing layer 202 executed by the CPU 101 . In S<b>1101 , the information processing layer 202 determines whether a CRG information acquisition command has been received from the driver layer first separate thread 801 or the driver layer second separate thread 802 . If the information processing layer 202 determines No in S1101 (if the CRG information acquisition command has not been received), the flow returns to S1101 and waits until the CRG information acquisition command is received. On the other hand, if the information processing layer 202 determines Yes in S1101, the flow advances to S1102. At this time, the information processing layer 202 stores information indicating from which of the driver layer first separate thread 801 and the driver layer second separate thread 802 the CRG information acquisition command was received.

S1102で、情報処理層202は、CRG124と通信を行い、カートリッジ内のトナー残量を示す情報であるCRG情報を取得する。S1103で、情報処理層202は、上記の情報に基づき、ドライバ層第1別スレッド801またはドライバ層第2別スレッド802に、取得したCRG情報をCRG情報データとして送信する。その後、情報処理層202は、フローをS1101に戻す。情報処理層202は、第1実施形態で説明したような所定の終了条件を満たした場合に、図11のフローチャートを終了させてもよい。 In S1102, the information processing layer 202 communicates with the CRG 124 and acquires CRG information indicating the remaining amount of toner in the cartridge. In S1103, the information processing layer 202 transmits the acquired CRG information as CRG information data to the driver layer first separate thread 801 or the driver layer second separate thread 802 based on the above information. After that, the information processing layer 202 returns the flow to S1101. The information processing layer 202 may terminate the flowchart of FIG. 11 when a predetermined termination condition as described in the first embodiment is satisfied.

以上のように、第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 driver layer 201 generates the driver layer second separate thread 802 in response to receiving the CRG Get Command. The generated driver layer second separate thread 802 acquires CRG information data from the information processing layer 202 and transmits the acquired CRG information data to the driver layer 201 . If the predetermined time has not elapsed, the driver layer 201 transmits the CRG information data received from the driver layer second separate thread 802 to the HostPC2. Thereby, the latest CRG information data can be transmitted to the HostPC2. On the other hand, the driver layer 201 can transmit the CRG information data acquired from the driver layer first separate thread 801 to the HostPC 2 even after the predetermined time has passed. As a result, the effects of the first embodiment can be obtained, and the latest CRG information data can be transmitted to the HostPC2.

<第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 driver layer 201 acquires CR information data from the information processing layer 202 before receiving the CRG Get Command from HostPC2. For example, when the CPU 101 executes the program of the driver layer 201 and the driver layer 201 is activated, the activated driver layer 201 acquires CRG information data from the information processing layer 202 .

図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 HostPC 2 and the image processing apparatus 1 in the third embodiment. In the following, descriptions of portions that overlap with those described with reference to FIG. 2 will be omitted. In S1201, the driver layer 201 transmits a CRG information acquisition command to the information processing layer 202 immediately after being activated. In S1202, the information processing layer 202 transmits CRG information data in accordance with the acquisition of the CRG information acquisition command. Subsequent S201, S204 and S205 are the same as the processing described in the first embodiment.

図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 driver layer 201 in the third embodiment. The processing in FIG. 13 is processing of the driver layer 201 executed by the CPU 101 . In S1301, the driver layer 201 transmits a CRG information acquisition command to the information processing layer 202 immediately after starting itself. In S<b>1302 , the driver layer 201 determines whether CRG information data has been received from the information processing layer 202 . If the driver layer 201 determines No in S1302, it returns the flow to S1302 and waits until the CRG information data is received. On the other hand, when the driver layer 201 determines Yes in S1302 (when CRG information data is received), the flow advances to S1303.

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 driver layer 201 stores the CRG information data received from the information processing layer 202 in the RAM 104 or the like. Thereby, the driver layer 201 holds the CRG information data. In S1304, the driver layer 201 determines whether it has received a CRG Get Command from HostPC2. If the driver layer 201 determines No in S1304, it returns the flow to S1304 and waits until it receives the CRG Get Command. On the other hand, if the driver layer 201 determines Yes in S1304 (if CRG Get Command is received), the flow advances to S1305.

S1305で、ドライバ層201は、RAM104等に記憶されたCRG情報データを読み出す。S1306で、ドライバ層201は、読み出したCRG情報データをHostPC2に送信する。そして、ドライバ層201は、フローをS1304に戻す。ドライバ層201は、第1実施形態で説明したような所定の終了条件を満たした場合に、図13のフローチャートを終了させてもよい。 In S1305, the driver layer 201 reads the CRG information data stored in the RAM 104 or the like. In S1306, the driver layer 201 transmits the read CRG information data to HostPC2. The driver layer 201 then returns the flow to S1304. The driver layer 201 may terminate the flowchart of FIG. 13 when a predetermined termination condition as described in the first embodiment is satisfied.

図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 information processing layer 202 in the third embodiment. The processing in FIG. 14 is processing of the information processing layer 202 executed by the CPU 101 . In S<b>1401 , the information processing layer 202 determines whether it has received a CRG information acquisition command from the driver layer 201 . If the information processing layer 202 determines No in S1401, the flow returns to S1401 and waits until a CRG information acquisition command is received. On the other hand, when the information processing layer 202 determines Yes in S1401 (when the CRG information acquisition command is received), the flow advances to S1402.

S1402で、情報処理層202は、CRG124と通信を行い、カートリッジ内のトナー残量を示す情報であるCRG情報を取得する。S1403で、情報処理層202は、取得したCRG情報をCRG情報データとしてドライバ層201に送信する。その後、情報処理層202は、フローをS1401に戻す。情報処理層202は、第1実施形態で説明したような所定の終了条件を満たした場合に、図14のフローチャートを終了させてもよい。 In S1402, the information processing layer 202 communicates with the CRG 124 and acquires CRG information indicating the remaining amount of toner in the cartridge. In S1403, the information processing layer 202 transmits the acquired CRG information to the driver layer 201 as CRG information data. After that, the information processing layer 202 returns the flow to S1401. The information processing layer 202 may terminate the flowchart of FIG. 14 when a predetermined termination condition as described in the first embodiment is satisfied.

以上のように、第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 driver layer 201 acquires CRG information data from the information processing layer 202 before receiving the CRG Get Command from the HostPC 2 and holds the acquired CRG information data. As a result, CRG Get Data can be returned to the HostPC 2 within 500 ms after receiving the CRG Get Command, regardless of the load status of the CPU 101, as in the first embodiment. That is, the same effects as those of the first embodiment can be obtained. Moreover, since the CPU 101 does not need to generate another thread in the driver layer, the load on the CPU 101 can be reduced.

以上、本発明の好ましい実施の形態について説明したが、本発明は上述した各実施の形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施の形態の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 Image processing device 2 Host PC
3 USB cable 101 CPU
108 USB device I/F
201 driver layer 202 information processing layer 401 driver layer-specific thread 802 driver layer second separate thread

Claims (13)

情報処理装置とUSB通信を行うUSBインタフェースと、
前記情報処理装置に対応する所定のアプリケーションから予め取得した所定の情報を保持する保持手段と、
前記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:
前記制御手段は、SetConfigurationコマンドを受信したことに従い、前記所定のアプリケーションから前記所定の情報を取得する、ことを特徴とする請求項1に記載の画像処理装置。 2. The image processing apparatus according to claim 1, wherein said control means acquires said predetermined information from said predetermined application in response to receiving a SetConfiguration command. 前記制御手段は、前記SetConfigurationコマンドを受信したことに従い、前記所定のアプリケーションから前記所定の情報を取得して、取得した前記所定の情報を保持する第1のスレッドを生成することを特徴とする請求項2に記載の画像処理装置。 The control means obtains the predetermined information from the predetermined application in response to receiving the SetConfiguration command, and generates a first thread holding the obtained predetermined information. Item 3. The image processing apparatus according to item 2. 前記第1のスレッドが、前記所定の情報を前記アプリケーションから取得して、取得した前記所定の情報を保持し、
前記情報処理装置と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.
前記制御手段は、前記Getコマンドを受信したことに従い、前記所定のアプリケーションから前記所定の情報を取得して、取得した前記所定の情報を保持する第2のスレッドを生成することを特徴とする請求項3または4に記載の画像処理装置。 The control means acquires the predetermined information from the predetermined application in response to receiving the Get command, and generates a second thread holding the acquired predetermined information. 5. The image processing device according to Item 3 or 4. 前記制御手段は、前記Getコマンドを受信してからの経過時間が、USBの仕様の規定に準拠した規定時間よりも短い所定時間を経過するまでは前記第2のスレッドが取得した前記所定の情報を返答する制御を行い、前記経過時間が前記所定時間を経過した後は前記第1のスレッドが保持する前記所定の情報を返答する制御を行うことを特徴とする請求項5に記載の画像処理装置。 The control means controls the predetermined information acquired by the second thread until the elapsed time from the reception of the Get command passes a predetermined time shorter than the specified time conforming to the provisions of the USB specification. 6. The image processing according to claim 5, characterized in that control is performed to return the predetermined information held by the first thread after the elapsed time has passed the predetermined time. Device. 前記規定時間は、500msであることを特徴とする請求項6に記載の画像処理装置。 7. The image processing apparatus according to claim 6, wherein said specified time is 500 ms. 前記USB通信を行うスレッド、前記第1のスレッドおよび前記第2のスレッドは、ドライバ層で動作することを特徴とする請求項5乃至7のうち何れか1項に記載の画像処理装置。 8. The image processing apparatus according to claim 5, wherein the thread that performs the USB communication, the first thread, and the second thread operate in a driver layer. 前記Getコマンドは、USB通信におけるコントロール転送に用いられるコマンドであることを特徴とする請求項1乃至8のうち何れか1項に記載の画像処理装置。 9. The image processing apparatus according to claim 1, wherein the Get command is a command used for control transfer in USB communication. 前記所定の情報は、トナー残量を示す情報であることを特徴とする請求項1乃至9のうち何れか1項に記載の画像処理装置。 10. The image processing apparatus according to any one of claims 1 to 9, wherein the predetermined information is information indicating the remaining amount of toner. 前記情報処理装置とUSB通信を行うスレッドが起動した後、SetConfigurationコマンドを受信する前に、前記USB通信を行うスレッドが、前記アプリケーションから前記所定の情報を取得することを特徴とする請求項1に記載の画像処理装置。 2. The thread for performing USB communication acquires the predetermined information from the application after the thread for performing USB communication with the information processing apparatus is started and before receiving a SetConfiguration command. The described image processing device. 情報処理装置とUSB通信を行うUSBインタフェースを有する画像処理装置の制御方法であって、
前記情報処理装置に対応する所定のアプリケーションから予め取得した所定の情報を保持する工程と、
前記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:
請求項1乃至11のうち何れか1項に記載の画像処理装置の各手段をコンピュータに実行させるためのプログラム。 A program for causing a computer to execute each means of the image processing apparatus according to any one of claims 1 to 11.
JP2021008887A 2021-01-22 2021-01-22 Image processing apparatus, image processing method, and program Pending JP2022112881A (en)

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)

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