JP2022080404A - Usbデバイス、usbデバイスの制御方法、及びプログラム - Google Patents

Usbデバイス、usbデバイスの制御方法、及びプログラム Download PDF

Info

Publication number
JP2022080404A
JP2022080404A JP2020191448A JP2020191448A JP2022080404A JP 2022080404 A JP2022080404 A JP 2022080404A JP 2020191448 A JP2020191448 A JP 2020191448A JP 2020191448 A JP2020191448 A JP 2020191448A JP 2022080404 A JP2022080404 A JP 2022080404A
Authority
JP
Japan
Prior art keywords
command
usb
crg
data
host
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
JP2020191448A
Other languages
English (en)
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 JP2020191448A priority Critical patent/JP2022080404A/ja
Priority to US17/525,736 priority patent/US11709644B2/en
Publication of JP2022080404A publication Critical patent/JP2022080404A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1293Printer information exchange with computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1236Connection management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/40Details not directly involved in printing, e.g. machine management, management of the arrangement as a whole or of its constitutive parts
    • G06K15/407Managing marking material, e.g. checking available colours
    • G06K15/4075Determining remaining quantities of ink or toner

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Facsimiles In General (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】Endpoint0で通信が行われるUSBのコントロール転送において、500ms以内に応答が要求されるコマンドをタイムアウトさせることなくホストPCの要求データを返答できるようにすること。【解決手段】画像処理装置1は、USB処理を司るドライバ層201を複数スレッド化し、SETコマンド受信時にドライバ層201の別スレッド(ドライバ層別スレッド301)により予め先行してGETコマンドで応答するデータを取得しておき(S302~S304)、GETコマンド受信時に先行して取得しておいたデータをホストPCに応答する(S305、S306、S210)。【選択図】図3

Description

本発明は、画像処理装置等のUSBデバイスとUSBケーブルで接続されたホストPCとのUSB通信に関する技術である。
画像処理装置には、ホストPC(HOST PC)とUniversal Serial Bus(以下「USB」)のケーブルで接続可能なUSBデバイスI/Fを装備するものがある。ホストPCと画像処理装置間では、例えばUSB2.0の仕様(Universal Serial Bus Specification)に準拠したプロトコルのもとに通信を行っている。
USB通信は、EndPointと言われるPortごとに通信チャンネルを持っている。EndPoint0という基本通信Portでは、コントロール転送のプロトコルを使った通信が行われる。また、EndPoint1~nのデータ通信Portでは、コントロール転送以外のバルク転送、インタラプト転送、アイソクロナス転送などプロトコルで通信が行われる。
コントロール転送の場合、USB2.0の仕様では、ホストPCからのデータ要求(以下「IN要求」)に対して500ms以内にデバイス側から返答がない場合、ホストPCはIN要求を停止することが可能となる。このため、デバイス側である画像処理装置は、500ms以内にコントロール転送のIN要求に対して返答データを用意する必要がある。
特許文献1では、ホストPCと画像処理装置の通信において、画像処理装置側がデータ受信するバルク転送用のバッファーの状態を、バルク転送と並行してインタラプト転送を行ってホストPCに通知する技術が提案されている。インタラプト転送は定期的にホストPCとデバイス間で通信する規定の通信のため、定期的に画像処理装置のバルク転送用のバッファーの状態をホストPCに通知することができる。これにより、バルク転送の転送間隔を調整してタイムアウトを抑えることが可能となる。
特開2002-318778号公報
特許文献1の技術では、EndPoint1~nを使ったPortの通信の場合、バルク転送とインタラプト転送を併用することで、画像処理装置側の状況をホストPCに伝え、バルク転送の転送間隔を調整する制御が可能である。
しかし、EndPoint0のコントロール転送のみ使用するプロトコルの場合、前述のインタラプト転送と併用して画像処理装置の状況をホストPCに伝えることができない。
上述したように、コントロール転送の返答は500ms以内に応答する必要があるという制約がある。リアルタイムオペレーティングシステム(以下「RTOS」)を採用する画像処理装置の場合は、データを生成するタスクの処理優先度を上げることにより、500ms以内の応答データ生成するできない事象を軽減することは可能となる。しかし、汎用OS(例えばLinux(登録商標))を採用する画像処理装置の場合は、各タスクのCPU専有時間が均等割りされているため、CPU処理が忙しい場合には、500ms以内での応答データ生成が保証されないという課題があった。なお、これは画像処理装置以外のUSBデバイスでも共通する課題である。
本発明は、上記の課題を解決するためになされたものである。本発明は、Endpoint0で通信が行われるUSBのコントロール転送において、500ms以内に応答が要求されるコマンドをタイムアウトさせることなくホストPCの要求データを返答可能にする仕組みを提供することを目的とするものである。
本発明は、USBホストとUSBケーブルを介して通信可能なUSBデバイスであって、前記USBホストから送信されるコマンドを解釈して応答を行う手段であり、USBのコントロール転送の第1コマンドが前記USBホストから前記USBデバイスに送信されることで開始される第1シーケンスの後に、前記コントロール転送の第2コマンドが前記USBホストから前記USBデバイスに送信されることで開始される第2シーケンスにおいて前記USBホストにデータを応答する制御手段と、前記制御手段が前記第1コマンドを受信したことに応じて、前記第2シーケンスにて前記USBホストに応答するデータを先行して取得する第1取得手段と、を有し、前記制御手段は、前記第2コマンドを受信した場合に、前記第1取得手段が先行して取得したデータを前記USBホストに応答することを特徴とする。
本発明によれば、Endpoint0で通信が行われるUSBのコントロール転送において、500ms以内に応答が要求されるコマンドをタイムアウトさせることなくホストPCの要求データを返答できるようになる。
本実施形態のUSBデバイスとしての画像処理装置のハードウェア構成図。 コントロール転送を用いた通信例の概略を説明するシーケンス図。 第1実施形態においてコントロール転送を用いた通信処理のシーケンス図。 第1実施形態におけるドライバ層の動作を示すフローチャート。 第1実施形態におけるドライバ層別スレッドの動作を示すフローチャート。 第1実施形態におけるCRG情報処理層の動作を示すフローチャート。 第2実施形態においてコントロール転送を用いた通信処理のシーケンス図。 第2実施形態におけるドライバ層の動作を示すフローチャート。 第2実施形態におけるドライバ層別スレッドの動作を示すフローチャート。 第2実施形態におけるCRG情報処理層の動作を示すフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
〔第1実施形態〕
図1は、本発明の一実施形態を示すUSBデバイスとしての画像処理装置のハードウェア構成の一例を示す図である。
画像処理装置1は本実施形態のUSBデバイスであり、HOST PC(以下「ホストPC」)2とUSBケーブル3を介して通信可能である。
画像処理装置1において、CPU101は、画像処理装置1を稼働させるためのソフトウェアを動作させる中央処理演算装置である。
システムバス102は、CPU101が他のユニットにアクセスする、及び、他のユニット同士をアクセスする通路となる。
HDD103は、画像処理装置1のソフトウェア及び、画像処理装置1が動作するために必要なデータ、また一次保存ファイルが格納されるハードディスクユニットである。なお、HDDの代わりに又は併用してSSD(Solid State Drive)等の他の記憶装置(大容量不揮発メモリ)を備えていてもよい。
RAM104は、画像処理装置1のプログラムが展開されたり、プログラム動作時の変数や各ユニットからDynamic Memory Access(DMA)で転送されるデータの格納領域となるRandom Access Memoryである。
ネットワーク・コントローラ105とネットワーク・コントローラ・インターフェース(I/F)106は、画像処理装置1と図示しないネットワーク上の他の機器とが通信を行うためのものである。
USBデバイスコントローラ107とUSBデバイスI/F108は、画像処理装置1とホストPC2とがUSBケーブル3を経由しての通信を行うためのものである。
CPLD109は、CPU101を介して、基盤回路上の信号線のLow/High状況を読み取る、又は、CPU101がLow/High状況の設定を変更可能にするユニットである。CPLD109はプログラマブルなロジックデバイスであり、画像処理装置1上で電力関係のOFF/ONを制御可能にしているユニットである。なお、CPLDは「Complex Programmable Logic Device」の略である。CPLD109の内部には、General Purpose Input Output(以下「GPIO」)が存在する。CPU101は、そのGPIOレジスタの設定値を変更することで、電力関係のOFF/ONを可能としている。
ディスプレイ111は、画像処理装置1の動作状況をユーザ等が確認できるように表示する。ディスプレイコントローラ110は、ディスプレイ111への表示制御を行う。
入力部113は、画像処理装置1へのユーザからの指示を受け付ける。入力部コントローラ112は、入力部113を制御する。入力部113は、具体的にはキーボードやマウスや、テンキー、カーソルキー、タッチパネルや、操作部キーボードといった入力システムである。入力部113がタッチパネルである場合は、物理的にはディスプレイ111の表面に装着された形態になる。
RTC114は、画像処理装置1の時計機能、アラーム機能、タイマー機能等を持つリアルタイムクロックである。
不揮発メモリ115は、HDD103以外に大容量ではないが書き換え可能な不揮発な記録メディアである。不揮発メモリは、Static Random Access Memory(以下「SRAM」)や、Electrically Erasable Programmable Read Only Memory(以下「EEPROM」)等であってもよい。
画像処理装置1は、スキャナI/F116を介してスキャナ117に接続する。
また、画像処理装置1は、プリンタI/F118を介してプリンタ119に接続する。なお、プリンタ119は、記録剤を用いてシート等に画像形成を行う。プリンタ119内部には、記録剤を収容するカートリッジ(以後「CRG」)124がセットされている。記録剤としては、例えばトナーやインク等がある。本実施形態では、記録剤をトナーとして説明するがインク等でもよい。
図2は、ホストPC2と画像処理装置1を使ったコントロール転送を用いた通信例の概略を説明するシーケンス図である。
ホストPC2は、USBホストとして動作可能な機器(情報処理装置)であり、例えばパーソナルコンピュータである。なお、ホストPCは、パーソナルコンピュータに限定されるものではなく、タブレット型コンピュータやスマートフォン等であってもよく、USBホストとして動作可能な機器であればよい。ホストPC2は、画像処理装置1とUSBケーブル3で接続され、通信を行う。図2に示す通信例は、ホストPC2が、画像処理装置1内部存在するプリンタ119内に格納されているCRG124のトナー残量等を問い合わせるものである。
画像処理装置1の内部には、USBのパケットを処理するソフトウェア的なモジュール(以下「ソフトウェアモジュール」)であるドライバ層201と、CRG情報を管理するソフトウェアモジュールであるCRG情報処理層202が存在する。すなわち、ドライバ層201とCRG情報処理層202は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現され機能する。
以下、USBホストとして動作するホストPC2が画像処理装置1にCRG124に収容されているトナーに関する情報(トナー残量)等を問い合わせる通信について詳細に説明する。
まず、ホストPC2は、画像処理装置1に対して、コントロール転送のベンダークラス(Vendor class)コマンドであるCRG Set Commandを送信する(S203)。
続いて、ホストPC2は、CRG124にセットするデータを、画像処理装置1に送信する(S204)。
画像処理装置1では、上記ホストPC2から送信されたコマンドデータを、ドライバ層201で受け取る。ドライバ層201は、該受け取ったデータをCRG情報処理層202に転送する(S205)。CRG情報処理層202は、コマンドデータの内容を解釈して処理を実施する。
上記S205の処理が完了すると、ドライバ層201は、受信した主旨であるACK応答をホストPC2に対して実施する(S206)。
次に、ホストPC2は、画像処理装置1のCRG情報(例えば、CRG124内のトナー残量)を取得するために、コントロール転送のVendor classコマンドであるCRG Get Commandをドライバ層201に送信する(S207)。
上記S207でCRG Get Commandを受信したドライバ層201は、該受信したコマンドをCRG情報処理層202に転送する(S208)。
CRG情報処理層202は、上記S208で受け取ったコマンドの情報を解釈し、該コマンドに対応するデータを収拾し、CRG情報Dataとしてドライバ層201に返答する(S209)。上記S209でCRG情報Dataを受け取ったドライバ層201は、CRG Get dataをホストPC2に返送する(S210)。
ホストPC2は、CRG Get dataをドライバ層201から受信すると、受領を意味するACKを画像処理装置1へ送信する(S211)。
上記S203、S204及びS206のシーケンスに対応するトランザクション(以下「セットアップトランザクション」)は、CRG Set Commandの送信(S203)により開始する。また、上記S207、S210及びS211のシーケンスに対応するトランザクション(以下「データトランザクション」)は、CRG Get Commandの送信(S207)により開始する。本実施形態のシステムでは、データトランザクションの前に、セットアップトランザクションが行われる。なお、1回のデータトランザクションで転送可能なでデータサイズよりも、転送すべきデータのサイズが大きい場合、データトランザクションを複数回繰り返して、全データを転送するようにしてもよい。
ホストPC2は、USB2.0仕様通りに動作する。ホストPC2は、上記S207でCRG Get Commandを発行した後、上記S210でCRG Get dataの受領までの間が500ms以上経過すると、CRG Get Commandのデータ取得をタイムアウトとして諦める。例えばCRG情報処理層202がCRG情報を取得中に、別ジョブ起因で(例えばネットワークからのPDL印刷データ処理が発生し)、CPU資源が十分に回らなくなった場合、CRG情報Dataの取得(S209)が遅くなる場合がある。この場合、上記S207から500ms以上経過してしまい、ドライバ層201からホストPC2へのCRG Get dataの返答(S210)ができなくなってしまう可能性がある。
この課題を解決する処理を図3のシーケンス図に示す。以下、図2のシーケンス図との差分を説明する。
図3は、第1実施形態におけるホストPC2と画像処理装置1を使ったコントロール転送を用いた通信処理の一例を説明するシーケンス図であり、図2と同一のものには同一の符号を付してある。
図2と同様に、S204の処理でホストPC2からCRG Set dataを取得したドライバ層201は、CRG情報処理層202にCRG情報Dataを送信する(S205)。S205の処理が終わると同時にドライバ層201は、CRG情報取得コマンド生成用の別スレッドであるドライバ層別スレッド301を生成する(S302)。ドライバ層別スレッド301は、文字通りドライバ層201とは、別スレッドで動作を行う。上記S302の処理の後、ドライバ層201は、ホストPC2へのACK応答を返答し(S206)、CRG Get Commandの受信を待つ。
ドライバ層別スレッド301は、CRG情報処理層202にCRG情報取得コマンドを送信する(S303)。CRG情報処理層202は、上記S303でコマンド受信を受けると、CRG情報Dataを生成して、ドライバ層別スレッド301にデータを返答する(S304)。ドライバ層別スレッド301は、この後、後述するCRG情報取得の処理(S305)を待つことになる。
ドライバ層201は、S207でホストPC2からのCRG Get Commandを受けると、ドライバ層別スレッド301に対して、CRG情報取得コマンドを送る(S305)。ドライバ層別スレッド301は、上記S305の処理を受け、上記S304の処理で事前に取得しておいたCRG情報をドライバ層201に速やかに返答する(S306)。
ドライバ層201は、上記S306で受信したデータをホストPC2に対してCRG Get dataとして送信する(S210)。上記S210の処理でCRG Get dataを受信したホストPC2は、受領した主旨を意味するACKコマンドをドライバ層201に送る(S211)。
すなわち、USB処理を司るドライバ層201を複数スレッド化し、SETコマンド受信時にドライバ層201の別スレッド(ドライバ層別スレッド301)により予め先行してGETコマンドで応答するデータを取得しておく。そして、GETコマンド受信時に上記先行して取得しておいたデータをホストPCに応答する。
上述した図3では本実施形態のシーケンスを示した。次に、画像処理装置1のそれぞれのソフトウェアモジュール(ドライバ層201、ドライバ層別スレッド301、CRG情報処理層202)の動作について、図4、図5及び図6のフローチャートを用いて説明する。
図4は、第1実施形態におけるドライバ層201の動作の一例を示すフローチャートである。このフローチャートの処理は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現される。
CPU101(ドライバ層201)は、USBデバイスI/F108を介して、ホストPC2から送信されてくるUSBコントロール転送のVendor ClassコマンドのCRG Set Commandの受信を待つ(S401)。このCRG Set Commandは、ホストPC2から、CRG Get Commandの送信より前に必ず送信される。
CPU101(ドライバ層201)は、CRG Set Commandを受信すると(S401でYesの場合)、プリンタ119内部に存在するCRG124情報を管理するCRG情報処理層202に、受信したコマンドを送信する(S402)。
また、CPU101(ドライバ層201)は、ドライバ層別スレッド301を生成する(S403)。ドライバ層別スレッド301の処理については後述する図5に示す。
上記S403の処理を終えると、CPU101(ドライバ層201)は、ホストPC2に対してCRG Set dataを受信したことを示すACK応答を返答する(S404)。
次にCPU101(ドライバ層201)は、ホストPC2から送信されてくるUSBコントロール転送のVendor ClassコマンドのCRG Get Commandの受信を待つ(S405)。
CPU101(ドライバ層201)は、CRG Get Commandを受信すると(S405でYesの場合)、ドライバ層別スレッド301にCRG情報取得を要求する(S406)。
次にCPU101(ドライバ層201)は、ドライバ層別スレッド301からのCRG情報Dataの応答を待つ(S407)。CRG情報Dataを取得できたら(S407でYesの場合)、CPU101(ドライバ層201)は、該取得したCRG情報DataをホストPC2に対して、USBデバイスI/F108を介して送信する(S408)。S408の処理の後、CPU101(ドライバ層201)は、S401に処理を戻し、次のCRG Set Commandの受信を待機する。
図5は、第1実施形態におけるドライバ層別スレッド301の動作の一例を示すフローチャートである。このフローチャートの処理は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現される。
CPU101(ドライバ層別スレッド301)は、生成されると直ちに、CRG情報処理層202に対して、CRG情報取得コマンドを送信する(S501)。
上記S501の処理後、CPU101(ドライバ層別スレッド301)は、CRG情報処理層からCRG情報Dataを取得できるまで待つ(S502)。
上記S502の処理でDataを取得出来たら(S502でYesの場合)、CPU101(ドライバ層別スレッド301)は、該取得したデータをRAM104上に保持しておく(S503)。すなわち、ドライバ層別スレッド301は、先行してCRG情報Dataを取得しておく。
次にCPU101(ドライバ層別スレッド301)は、ドライバ層201からのCRG情報取得依頼を待つ(S504)。
上記504の処理で依頼を受けたら(S504でYesの場合)、CPU101(ドライバ層別スレッド301)は、RAM104上に保持していたCRG情報Dataをドライバ層201に対して送信し(S505)、処理を終了する。
図6は、第1実施形態におけるCRG情報処理層202の動作の一例を示すフローチャートである。このフローチャートの処理は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現される。
CPU101(CRG情報処理層202)は、ドライバ層201からのCRG情報Dataの受信を待つ(S601)。
CRG情報Dataを受信すると(S601でYesの場合)、CPU101(CRG情報処理層202)は、該受信した情報を基にCRG124と通信を行い、指定されたコマンドを処理する(S602)。
次にCPU101(CRG情報処理層202)は、CRG情報取得コマンドの受信を待つ(S603)。ここではCRG情報取得コマンドはドライバ層別スレッド301から送信される。CRG情報取得コマンドを受信すると(S603でYesの場合)、CPU101(CRG情報処理層202)は、CRG124と通信を行い、CRG情報取得を行い、返答データを作成する(S604)。
CPU101(CRG情報処理層202)は、上記S604で作成したデータをCRG情報取得コマンドの送信元(上述の例ではドライバ層別スレッド301)に返送する(S605)。S605の処理の後、CPU101(CRG情報処理層202)は、S601に処理を戻し、次のCRG情報Dataの受信を待機する。
以上、図3に示したシーケンス、及び図4、図5,図6に示した各ソフトウェアモジュールの処理により、画像処理装置1のCPU101の負荷状況に関わらず、コントロール転送の500ms以内の返答をホストPCに行うことが可能になる。
〔第2実施形態〕
ホストPC2が発行するCRG Set CommandとCRG Get Commandのコマンドの時間間隔(S203の処理とS207の処理の間隔)が大きくなってしまう場合がある。この場合、第1実施形態の構成では、CRG Get Commandの結果取得されるCRG Gat dataの情報が最新のデータになっていない(又は最新のデータとの相違が大きくなっている)可能性がある。
例えば、極端な例で説明すると、ホストPC2がS203でCRG Set Commandを発行後、画像処理装置1にネットワーク・コントローラI/F106経由で別PDL印刷ジョブが大量処理された場合、CRGのトナー情報に変動が発生する。S203の処理から10分経過した後に、S207でCRG Get Commandが発行された場合、その結果取得されるCRG Get dataの情報は、10分前の情報となる。この場合、取得されるCRG Get dataの情報が、最新の情報になっていない(又は最新の情報との差が大きくなっている)ケースも想定される。以下、この課題を解決する第2実施形態について説明する。
この課題を解決する処理を図7のシーケンス図に示す。以下、図3のシーケンス図との差分を説明する。
図7は、第2実施形態におけるホストPC2と画像処理装置1を使ったコントロール転送を用いた通信処理の一例を説明するシーケンス図であり、図3と同一のものには同一の符号を付してある。
図3と同様に、S207の処理でホストPC2からCRG Get Commandを取得したドライバ層201は、新しくCRG情報取得コマンド生成用の第2の別スレッドであるドライバ層第2別スレッド701を生成する(S702)。ドライバ層第2別スレッド701は、文字通りドライバ層201とは、別スレッドで動作を行う。
さらにドライバ層201は、ドライバ層第2別スレッド701に対して、CRG情報取得コマンドを送る(S703)。
ドライバ層第2別スレッド701は、上記S703のコマンド受信を受け、CRG情報処理層202にCRG情報取得コマンドを送信する(S704)。
CRG情報処理層202は、上記S704のコマンド受信を受け、CRG情報Dataを生成して、ドライバ層第2別スレッド701にデータを返答する(S705)。
ドライバ層第2別スレッド701は、上記S705で取得したデータをドライバ層201に対して返答する(S706)。
ドライバ層201は、上記S207でホストPC2からのCRG Get Commandを受けてから500ms-α時間(αは正の値で10ms~50ms程度の小さい値)ドライバ層第2別スレッド701からの返答(S706)を待ち続ける。しかし、500ms-α時間待っても上記S706の返答がされない場合は、ドライバ層201は、予めS306で取得しているデータをもって、ホストPC2に対してCRG Get dataを返答する(S210)。
一方、ドライバ層201は、500ms-α時間以内に上記S706でCRG情報Dataを取得出来た場合、該S706で取得したデータをGET Get dataとしてホストPC2へ送信する(S210)。この場合、ホストPC2がCRG Get Commandの結果取得するCRG Gat dataの情報を最新のデータにすることができる。
上述した図7では本実施形態のシーケンスを示した。次に、画像処理装置1のそれぞれのソフトウェアモジュール(ドライバ層201、ドライバ層第2別スレッド701、CRG情報処理層202)の動作について、図8、図9及び図10のフローチャートを用いて説明する。なお、ドライバ層別スレッド301のフローチャートに関しては、第1実施形態と変更ないため、説明を省略する。
図8は、第2実施形態におけるドライバ層201の動作の一例を示すフローチャートであり、図4と同一のステップには同一のステップ番号を付してある。このフローチャートの処理は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現される。
第2実施形態のCPU101(ドライバ層201)は、CRG Get Commandを受信すると(S405でYesの場合)、ドライバ層第2別スレッド701を生成する(S801)。ドライバ層第2別スレッド701の処理については後述する図9に示す。
上記S801の処理を終えると、CPU101(ドライバ層201)は、ドライバ層第2別スレッド701にCRG情報取得を要求する(S802)。
その後CPU101(ドライバ層201)は、ドライバ層別スレッド301にCRG情報取得を要求する(S406)。
次にCPU101(ドライバ層201)は、ドライバ層別スレッド301からのCRG情報Dataを取得できたら(S407でYesの場合)、S803に処理を進める。
S803では、CPU101(ドライバ層201)は、ドライバ層第2別スレッド701からのCRG情報Dataの応答を待つ。そしてCPU101(ドライバ層201)は、応答待ち時間がCRG Get Command取得時間から500ms-α時間経過したか判定する
(S804)。500ms-α時間経過していなければ(S804のNoの場合)、CPU101(ドライバ層201)は、ひきつづき上記S803でCRG情報Dataの応答を待つ。
500ms-α時間経過していなければ(S804のNoの場合)、CPU101(ドライバ層201)は、ひきつづき上記S803でCRG情報Dataの応答を待つ。
500ms-α時間経過する前に、ドライバ層第2別スレッド701からのCRG情報Dataを取得できた場合(S803でYesの場合)、CPU101(ドライバ層201)は、S805に処理を進める。
S805では、CPU101(ドライバ層201)は、上記S803で取得したデータをホストPC2に対して、USBデバイスI/F108を介して送信する。
一方、ドライバ層第2別スレッド701からのCRG情報Dataを取得する前に、500ms-α時間をオーバーした場合(S804でYesの場合)、CPU101(ドライバ層201)は、S806に処理を進める。
S806では、CPU101(ドライバ層201)は、上記S407で取得したデータをホストPC2に対して、USBデバイスI/F108を介して送信する。
すなわち、所定の時間(上述の例では500ms-α時間)以内にドライバ層第2別スレッド701を介してCRG情報Dataを取得できた場合には、そのCRG情報DataをホストPCに送信する(S805)。一方、所定の時間以内にドライバ層第2別スレッド701を介してCRG情報Dataを取得できなかった場合には、ドライバ層別スレッド301が先行して取得したCRG情報DataをホストPCに送信する(S806)。
上記S805又はS806の処理の後、CPU101(ドライバ層201)は、S401に処理を戻し、次のCRG Set Commandの受信を待機する。
図9は、第2実施形態におけるドライバ層第2スレッド701の動作の一例を示すフローチャートである。このフローチャートの処理は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現される。
CPU101(ドライバ層第2スレッド701)は、生成されると直ちに、ドライバ層201からくるCRG情報取得依頼を待ち続ける(S901)。上記901の処理で依頼を受けると(S901でYesの場合)、CPU101(ドライバ層第2スレッド701)は、CRG情報処理層202に対して、CRG情報取得コマンドを送信する(S902)。
上記S902の処理後、CPU101(ドライバ層第2スレッド701)は、CRG情報処理層からCRG情報Dataを取得できるまで待つ(S903)。
上記S903の処理でDataを取得出来たら(S903でYesの場合)、CPU101(ドライバ層第2スレッド701)は、S904に処理を進める。S904では、CPU101(ドライバ層第2スレッド701)は、上記S903で取得したデータをRAM104上に保持して、そのデータをCRG情報Dataとしてドライバ層201に対して送信し、処理を終了する。
図10は、第2実施形態におけるCRG情報処理層202の動作の一例を示すフローチャートである。このフローチャートの処理は、画像処理装置1のCPU101がHDD103等に格納されたプログラムをRAM104にロードして実行することにより実現される。
CPU101(CRG情報処理層202)は、ドライバ層201からのCRG情報Dataの受信を待つ(S1001)。
CRG情報Dataを受信すると(S1001でYesの場合)、CPU101(CRG情報処理層202)は、該受信した情報を基にCRG124と通信を行い、指定されたコマンドを処理する(S1002)。
次にCPU101(CRG情報処理層202)は、CRG情報取得コマンドの受信を待つ(S1003)。ここではCRG情報取得コマンドはドライバ層別スレッド301から送信される。CRG情報取得コマンドを受信すると(S1003でYesの場合)、CPU101(CRG情報処理層202)は、CRG124と通信を行い、CRG情報取得を行い、返答データを作成する(S1005)。
CPU101(CRG情報処理層202)は、上記S1004で作成したデータをCRG情報取得コマンドの送信元(上述の例ではドライバ層別スレッド301)に返送する(S1005)。
次にCPU101(CRG情報処理層202)は、CRG情報取得コマンドの受信を待つ(S1006)。ここではCRG情報取得コマンドはドライバ層第2別スレッド701から送信される。CRG情報取得コマンドを受信すると(S1006でYesの場合)、CPU101(CRG情報処理層202)は、CRG124と通信を行い、CRG情報取得を行い、返答データを作成する(S1007)。
CPU101(CRG情報処理層202)は、上記S1007で作成したデータをCRG情報取得コマンドの送信元(上述の例ではドライバ層第2別スレッド701)に返送する(S1008)。S1008の処理の後、CPU101(CRG情報処理層202)は、S1001に処理を戻し、次のCRG情報Dataの受信を待機する。
以上、図7に示したシーケンス、及び図8、図9,図10に示した各ソフトウェアモジュールの処理により、画像処理装置1のCPU101の負荷状況に関わらず、コントロール転送の500ms以内の返答をホストPCに行うことが可能になる。さらに、最新のCRG情報を返答することが可能となる。
以上、各実施形態によれば、Endpoint0で通信が行われるUSBのコントロール通信において、500ms以内に応答が要求されるGETコマンドをタイムアウトさせることなくホストPCの要求データを返答できるようになる。
なお、上述の例では、ホストPC2が画像処理装置1とのコントロール転送を、ホストPC2が画像処理装置1内部存在するプリンタ119内に格納されているCRG124のトナー残量等を問い合わせる処理を例に説明した。しかし、本実施形態のコントロール転送は、ホストPCが画像処理装置等のUSBデバイスから要求データを取得するものであればよい。さらに、ホストPCがコントロール転送によりUSBデバイスから取得するデータもどのようなデータであってもよい。
以上によれば、Endpoint0で通信が行われるUSBのコントロール通信において、500ms以内に応答が要求されるGETコマンドをタイムアウトさせることなくホストPCの要求データを返答できるようになる。すなわち、USBホストとUSBデバイスにおけるUSBコントロール転送におけるタイムアウトを回避することができる。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施形態を組み合わせた構成も全て本発明に含まれるものである。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施形態の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
1 画像処理装置
2 ホストPC
3 USBケーブル
101 CPU
107 USBデバイスコントローラ
108 USBデバイスインターフェース
118 プリンタI/F
119 プリンタ
124 CRG

Claims (9)

  1. USBホストとUSBケーブルを介して通信可能なUSBデバイスであって、
    前記USBホストから送信されるコマンドを解釈して応答を行う手段であり、USBのコントロール転送の第1コマンドが前記USBホストから前記USBデバイスに送信されることで開始される第1シーケンスの後に、前記コントロール転送の第2コマンドが前記USBホストから前記USBデバイスに送信されることで開始される第2シーケンスにおいて前記USBホストにデータを応答する制御手段と、
    前記制御手段が前記第1コマンドを受信したことに応じて、前記第2シーケンスにて前記USBホストに応答するデータを先行して取得する第1取得手段と、を有し、
    前記制御手段は、前記第2コマンドを受信した場合に、前記第1取得手段が先行して取得したデータを前記USBホストに応答することを特徴とするUSBデバイス。
  2. 前記制御手段はソフトウェアモジュールであり、
    前記制御手段は、前記第1コマンドを受信したことに応じて、前記第1取得手段を前記制御手段とは別のスレッドとして生成することを特徴とする請求項1に記載のUSBデバイス。
  3. 前記制御手段が前記第2コマンドを受信した場合に、前記第2シーケンスにて前記USBホストに応答するデータを取得するための第2取得手段を有し、
    前記制御手段は、前記第2コマンドを受信した場合、前記第2コマンドを受信してから所定の時間以内に前記第2取得手段を介して前記データを取得できた場合には、前記第1取得手段が先行して取得したデータの代わりに、前記第2取得手段が取得したデータを前記USBホストに応答することを特徴とする請求項1に記載のUSBデバイス。
  4. 前記制御手段はソフトウェアモジュールであり、
    前記制御手段は、前記第1コマンドを受信したことに応じて前記第1取得手段を前記制御手段とは別のスレッドとして生成し、前記第2コマンドを受信したことに応じて前記第2取得手段を前記制御手段とは別のスレッドとして生成することを特徴とする請求項3に記載のUSBデバイス。
  5. 前記第1コマンド及び前記第2コマンドは、前記コントロール転送のベンダークラスのコマンドであることを特徴とする請求項1~4のいずれか1項に記載のUSBデバイス。
  6. 前記USBデバイスは、記録剤を用いて画像形成を行う画像処理装置であり、
    前記第2シーケンスにて前記USBホストに応答するデータは、前記記録剤の残量に関するデータであることを特徴とする請求項1~5のいずれか1項に記載のUSBデバイス。
  7. 前記記録剤は、前記画像処理装置に装着されるカートリッジに収容されることを特徴とする請求項6に記載のUSBデバイス。
  8. USBケーブルを介して通信可能なUSBホストから送信されるコマンドを解釈して応答を行うUSBデバイスであり、USBのコントロール転送の第1コマンドが前記USBホストから前記USBデバイスに送信されることで開始される第1シーケンスの後に、前記コントロール転送の第2コマンドが前記USBホストから前記USBデバイスに送信されることで開始される第2シーケンスにおいて前記USBホストにデータを応答するUSBデバイスの制御方法であって、
    前記第1コマンドを受信したことに応じて、前記第2シーケンスにて前記USBホストに応答するデータを先行して取得する取得工程と、
    前記第2コマンドを受信した場合に、前記取得工程で先行して取得したデータを前記USBホストに応答する応答工程と、
    を有することを特徴とするUSBデバイスの制御方法。
  9. コンピュータを、請求項1~7のいずれか1項に記載の手段として機能させるためのプログラム。
JP2020191448A 2020-11-18 2020-11-18 Usbデバイス、usbデバイスの制御方法、及びプログラム Pending JP2022080404A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020191448A JP2022080404A (ja) 2020-11-18 2020-11-18 Usbデバイス、usbデバイスの制御方法、及びプログラム
US17/525,736 US11709644B2 (en) 2020-11-18 2021-11-12 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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020191448A JP2022080404A (ja) 2020-11-18 2020-11-18 Usbデバイス、usbデバイスの制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2022080404A true JP2022080404A (ja) 2022-05-30

Family

ID=81586662

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020191448A Pending JP2022080404A (ja) 2020-11-18 2020-11-18 Usbデバイス、usbデバイスの制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US11709644B2 (ja)
JP (1) JP2022080404A (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002318778A (ja) 2001-04-20 2002-10-31 Ricoh Co Ltd データ通信システムとその通信方法
US8988706B2 (en) * 2010-04-22 2015-03-24 Ricoh Company, Ltd. Printer data collection cable
JP6336328B2 (ja) * 2014-05-02 2018-06-06 キヤノン株式会社 通信装置とその制御方法、及びプログラム
JP6693417B2 (ja) * 2014-08-28 2020-05-13 ソニー株式会社 リーダライタ装置、情報処理装置、およびデータ転送制御方法、並びにプログラム
JP6691675B2 (ja) * 2015-08-31 2020-05-13 ブラザー工業株式会社 制御プログラム、および制御装置

Also Published As

Publication number Publication date
US11709644B2 (en) 2023-07-25
US20220156023A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
EP1909474A1 (en) Image processor and its control method
US20200334145A1 (en) Storage device, computer system, and operation method of storage device configured to arbitrarily stop garbage collection
JP4939175B2 (ja) 画像形成装置
JP5078671B2 (ja) 情報処理装置、情報処理システム及び情報処理方法
JP6336328B2 (ja) 通信装置とその制御方法、及びプログラム
US8643854B2 (en) Image forming apparatus and print control method used therein
JP2011046034A (ja) 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体
JP2022080404A (ja) Usbデバイス、usbデバイスの制御方法、及びプログラム
JP2018078485A (ja) 情報処理装置および情報処理装置の起動方法
US20110149347A1 (en) Print data processing apparatus, print data processing method, and storage medium
JP2015215684A (ja) 情報処理装置及び情報処理プログラム
JP5652242B2 (ja) データ転送制御装置及びプログラム
JP2011015093A (ja) 画像形成装置、その制御方法及びプログラム
CN111541825B (zh) 电子装置及其控制方法
JP2816184B2 (ja) 印刷制御装置
JP7374622B2 (ja) 情報処理装置
JP2021192491A (ja) 情報処理システム、画像形成装置、情報処理システムの制御方法、画像形成装置の制御方法、及びプログラム
JP2017059051A (ja) 情報処理装置及びその制御方法、並びにプログラム
US9753728B2 (en) Apparatus and medium for converting a persistent wait instruction to an instruction for periodically waiting for a control target
JP5062750B2 (ja) 画像形成装置
JP2022112881A (ja) 画像処理装置、画像処理方法およびプログラム
JP2007328737A (ja) ホスト装置、データ処理装置及びデータ処理システム
JP2017019150A (ja) 画像形成装置、画像形成システム
JP2023021707A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP2001345971A (ja) 画像処理装置および画像処理方法および記憶媒体