JP2021140609A - 電子機器及びプログラム - Google Patents

電子機器及びプログラム Download PDF

Info

Publication number
JP2021140609A
JP2021140609A JP2020039312A JP2020039312A JP2021140609A JP 2021140609 A JP2021140609 A JP 2021140609A JP 2020039312 A JP2020039312 A JP 2020039312A JP 2020039312 A JP2020039312 A JP 2020039312A JP 2021140609 A JP2021140609 A JP 2021140609A
Authority
JP
Japan
Prior art keywords
class
host device
processing
host
control unit
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
JP2020039312A
Other languages
English (en)
Inventor
光宏 片岡
Mitsuhiro Kataoka
光宏 片岡
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.)
Toshiba TEC Corp
Original Assignee
Toshiba TEC Corp
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 Toshiba TEC Corp filed Critical Toshiba TEC Corp
Priority to JP2020039312A priority Critical patent/JP2021140609A/ja
Priority to US17/083,339 priority patent/US11194590B2/en
Priority to CN202110135997.1A priority patent/CN113360434A/zh
Publication of JP2021140609A publication Critical patent/JP2021140609A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus
    • 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
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • G06F9/4415Self describing peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】本発明が解決しようとする課題は、ホスト装置の仕様にあわせてデバイスクラスを自動で切り替えることが可能な電子機器を及びプログラムを提供する。【解決手段】実施形態の電子機器は、ホスト装置と接続可能な接続部と、複数種類のデバイスクラスを記憶する記憶部と、前記記憶部に記憶されたデバイスクラスの中から一のデバイスクラスを選択的に用いて、前記接続部に接続された前記ホスト装置との間で通信を確立するための処理を実行する処理部と、選択された前記デバイスクラスに適合するメッセージが前記ホスト装置から送信されない場合、前記処理部が前記処理に使用する前記デバイスクラスを変更する処理制御部と、を備える。【選択図】図4

Description

本発明の実施形態は、電子機器及びプログラムに関する。
従来、PCやPOS端末等のホスト装置では、USB(Universal Serial Bus)コネクタを介して各種の電子機器(USBデバイス)が接続される。ホスト装置では、USBデバイスのデバイスクラスに対応したデバイスドライバを導入しておくことで、接続されたUSBデバイスを周辺機器として使用することができる。具体的には、ホスト装置とUSBデバイスとの間で、エニュメレーションと呼ばれる通信を確立するための処理を行うことで、ホスト装置でUSBデバイスを使用することが可能な状態となる。
ところで、ホスト装置では、様々な理由により導入されるデバイスドライバが制限される場合がある。ホスト装置のデバイスドライバがUSBデバイスのデバイスクラスに対応しない場合、ホスト装置はそのUSBデバイスを使用することはできない。
従来、複数のデバイスクラスの中から一のデバイスクラスを手動選択できるように構成することで、所望のデバイスクラスで動作させることが可能なUSBデバイスも存在している。
しかしながら、上述した従来の技術では、手動でデバイスクラスを選択する必要があるため、操作が煩雑であり利便性に欠けるという問題がある。
本発明が解決しようとする課題は、ホスト装置の仕様にあわせてデバイスクラスを自動で切り替えることが可能な電子機器を及びプログラムを提供することである。
実施形態の電子機器は、ホスト装置と接続可能な接続部と、複数種類のデバイスクラスを記憶する記憶部と、前記記憶部に記憶されたデバイスクラスの中から一のデバイスクラスを選択的に用いて、前記接続部に接続された前記ホスト装置との間で通信を確立するための処理を実行する処理部と、選択された前記デバイスクラスに適合するメッセージが前記ホスト装置から送信されない場合、前記処理部が前記処理に使用する前記デバイスクラスを変更する処理制御部と、を備える。
図1は、実施形態に係る情報処理システムの構成の一例を示す図である。 図2は、実施形態に係るホスト装置及び電子機器のハードウェア構成の一例を示す図である。 図3は、実施形態に係るデバイスクラス格納部のデータ構成の一例を模式的に示す図である。 図4は、実施形態に係る電子機器の機能構成の一例を示す図である。 図5は、実施形態の電子機器が行う処理の一例を示すフローチャートである。 図6は、実施形態のホスト装置と電子機器との間で行われる動作の一例を示すシーケンス図である。 図7は、実施形態のホスト装置と電子機器との間で行われる動作の一例を示すシーケンス図である。
以下、図面を参照して、実施形態に係る電子機器及びプログラムについて説明する。なお、以下に説明する実施形態により、この発明が限定されるものではない。
図1は、本実施形態に係る情報処理システムの構成の一例を示す図である。図1に示すように、情報処理システム1は、ホスト装置10と電子機器20とを備える。
ホスト装置10は、PC(Personal Computer)やPOS(Point of sale system)端末等の情報処理装置である。
一方、電子機器20は、電子機器の一例であり、USB(Universal Serial Bus)規格に準拠した各種のUSBデバイスである。例えば、電子機器20は、バーコード等のコードシンボルを読み取るためのコードスキャナ装置であってもよいし、レシート等を印字するためのプリンタ装置であってもよい。
電子機器20は、USBケーブルWによってホスト装置10に接続される。ホスト装置10では電子機器20が接続されると、電子機器20との間で、エニュメレーションと呼ばれる通信を確立するため処理を実行する。そして、エニュメレーションが正常に完了すると、ホスト装置10で電子機器20を使用することが可能な状態となる。
次に、上述したホスト装置10及び電子機器20のハードウェア構成について説明する。図2は、ホスト装置10及び電子機器20のハードウェア構成の一例を示す図である。
図2に示すように、ホスト装置10は、CPU11、ROM12及びRAM13を備えている。CPU11は、プロセッサの一例であり、ホスト装置10の動作を統括的に制御する。ROM12は、各種プログラムを記憶する。RAM13は、各種データを展開するためのワーキングメモリとして使用される。
CPU11、ROM12及びRAM13は、バス等を介して接続され、制御部100を構成する。制御部100は、CPU11がROM12や後述する記憶部14に記憶されたプログラムに従って動作することで、各種の処理を実行する。
制御部100には、バス等を介して、記憶部14が接続される。記憶部14は、電源を切っても記憶情報を保持するHDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性メモリで構成される。
記憶部14は、OS(Operating System)や各種プログラム、設定情報等を記憶する。また、記憶部14は、デバイスドライバ141を記憶する。デバイスドライバ141は、特定のデバイスクラスに対応したUSBデバイスを制御するためのソフトウェア(プログラム)である。なお、デバイスクラスのついては後述する。
デバイスドライバ141は、OSに組み込まれた状態で提供されるデバイスドライバ(以下、標準ドライバともいう)であってもよい。また、デバイスドライバ141は、USBデバイスのベンダーから提供されるベンダー固有のデバイスドライバ(以下、ベンダードライバともいう)であってもよい。
また、デバイスドライバ141が対応するデバイスクラスは、特に問わないものとする。例えば、デバイスクラスは、MSC(Mass Storage Class)や、イメージ(スキャナ)、プリンタ等の他、ベンダー独自のデバイスクラスであってもよい。また、USBデバイスが同一の装置であっても、当該装置用のデバイスドライバ141として、標準ドライバとベンダードライバとの両方を導入することもできる。この場合、標準ドライバとベンダードライバとは、異なるデバイスクラス(クラスコード)が付され、何れか一方が優先的(例えばベンダードライバ)に使用されるように制御される。
また、制御部100には、バス等を介して、USBコントローラを搭載したI/Oコントローラ15が接続される。I/Oコントローラ15には、USBコネクタ16が接続される。I/Oコントローラ15は、USBコネクタ16を通じた信号の送受信を制御する。
一方、電子機器20は、図2に示すように、CPU21、ROM22及びRAM23を備えている。CPU21は、プロセッサの一例であり、電子機器20の動作を統括的に制御する。ROM12は、各種プログラムを記憶する。RAM23は、各種データを展開するためのワーキングメモリとして使用される。
CPU21、ROM22及びRAM23は、バス等を介して接続され、制御部200を構成する。制御部200は、CPU21がROM22や後述する記憶部24に記憶されたプログラムに従って動作することで、各種の処理を実行する。
制御部200には、バス等を介して、記憶部24や機能実現部25が接続される。記憶部24は、記憶部の一例であり、電源を切っても記憶情報を保持するフラッシュメモリ等の不揮発性メモリで構成される。
記憶部24は、組み込みOSや各種プログラム、設定情報等を記憶する。また、記憶部24は、自装置で使用することが可能な複数種類のデバイスクラスを格納したデバイスクラス格納部241を有する。
図3は、デバイスクラス格納部241のデータ構成の一例を模式的に示す図である。図3に示すように、デバイスクラス格納部241は、自装置で使用することが可能な複数種類のデバイスクラスを記憶する。ここで、デバイスクラスは、USBデバイスの種別や機能を意味する。より詳細には、デバイスクラスは、同様の機能やデバイス種別のUSBデバイス毎に定められたデバイスの仕様、ホスト装置10と通信を確立する際のプロトコル等を規定したファームウェアである。
図3に示すデバイスクラス格納部241は、クラスC1とクラスC2との2種類のデバイスクラスを格納する。ここで、クラスC1は、例えば電子機器20を製造するベンダーのベンダードライバに対応したデバイスクラスであり、クラスC2は、標準ドライバに対応したデバイスクラスである。
また、図3に示すデバイスクラス格納部241の構成では、デバイスクラスの各々に対応付けて優先度を設定している。かかる優先度は、後述する処理においてデバイスクラスの選択順序を決める際の指標となる。
なお、デバイスクラス格納部241に格納するデバイスクラスの個数は、図3の例に限らず、3以上であってもよい。また、図3では、デバイスクラスの各々に優先度を設定する例を説明したが、優先度を設けない構成としてもよい。
図2に戻り、機能実現部25は、電子機器20の動作及び機能を実現するためのハードウェア構成である。例えば、電子機器20がコードスキャナ装置の場合、機能実現部25は、コードシンボルを読み取るためのレーザスキャナ装置や撮像装置等に対応する。また、例えば、電子機器20がプリンタ装置の場合、機能実現部25は、熱転写型等のプリンタエンジンや、用紙を搬送する搬送機構等に対応する。
また、制御部200には、バス等を介して、USBコントローラを搭載したI/Oコントローラ26が接続される。I/Oコントローラ26には、接続部の一例であるUSBコネクタ27が接続される。I/Oコントローラ26は、USBコネクタ27を通じた信号の送受信を制御する。
図2に示すように、ホスト装置10と電子機器20とは、USBコネクタ16と電子機器20のUSBコネクタ27とをUSBケーブルWで繋ぐことで接続される。ホスト装置10では電子機器20が接続されると、電子機器20との通信を確立するためエニュメレーションを開始する。
具体的には、ホスト装置10の制御部100は、電子機器20が接続されると、I/Oコントローラ15を介して、電子機器20からデバイスクラスを示すクラスコードを取得することで、接続された電子機器20のデバイスクラスを判別する。制御部100は、電子機器20のデバイスクラスが自装置に導入されたデバイスドライバ141のデバイスクラスに対応する場合、その電子機器20を認識できたと判断する。この場合、制御部100は、デバイスドライバ141と協働することで、電子機器20のデバイスクラスに適合したコマンド等のメッセージを電子機器20に送信することで電子機器20との通信を確立する。これにより、ホスト装置10では、USBコネクタ16に接続された電子機器20を周辺機器として使用することが可能となる。
一方、電子機器20のデバイスクラスがデバイスドライバ141のデバイスクラスに対応しない場合、制御部100は、電子機器20を認識できないと判断し、エニュメレーションを中断(終了)する。エニュメレーションが中断された場合、つまり、エニュメレーションが失敗した場合、ホスト装置10では電子機器20を制御することができないため、周辺機器としての使用は不可となる。
ところで、ホスト装置10では、様々な理由により、導入されるデバイスドライバ141が制限される場合がある。例えば、セキュリティ上の理由等によりベンダードライバを導入することができず、OSに搭載された標準ドライバのみを使用することが可能なホスト装置も存在している。ホスト装置10のデバイスドライバ141がUSBデバイスのデバイスクラスに対応しない場合、ホスト装置10はそのUSBデバイスを使用することはできない。そこで、例えば、複数のデバイスクラスの中から一のデバイスクラスを手動選択できるように構成することで、USBデバイスを所望のデバイスクラスで動作させることが考えられる。
しかしながら、上述の構成では、ホスト装置10の仕様にあわせて手動でデバイスクラスを選択する必要があるため、操作が煩雑であり利便性に欠けるという問題がある。
そこで、本実施形態の電子機器20では、上述の問題に関してホスト装置10とのエニュメレーションを効率的に行うための機能を備えている。以下、図4を参照して、電子機器20が備える機能構成について説明する。
図4は、電子機器20の機能構成の一例を示す図である。図4に示すように、電子機器20は、エニュメレーション処理部201と、処理制御部202とを機能部として備える。
電子機器20が備える機能部の一部又は全ては、電子機器20のプロセッサ(例えばCPU21)とメモリ(例えばROM22、記憶部24)に記憶されたプログラムとの協働により実現されるソフトウェア構成であってもよい。また、電子機器20が備える機能部の一部又は全ては、電子機器20に搭載された専用回路等で実現されるハードウェア構成であってもよい。
エニュメレーション処理部201は、処理部及び処理手段の一例である。エニュメレーション処理部201は、デバイスクラス格納部241に記憶された複数種類のデバイスクラスの中から一のデバイスクラスを選択的に用いて、USBコネクタ27に接続されたホスト装置10との間でエニュメレーションを行う。また、エニュメレーション処理部201は、処理制御部202の制御の下、エニュメレーションに使用するデバイスクラスを切り替えながら、ホスト装置10との間でエニュメレーションを行う。
エニュメレーションにおいて、エニュメレーション処理部201は、ホスト装置10からの要求に応じて、選択したデバイスクラスを示すクラスコードをホスト装置10に送信する。そして、エニュメレーション処理部201は、選択したデバイスクラスに適合するメッセージがホスト装置10から送信されると、デバイスクラスに規定されたプロトコルに基づきホスト装置10との間で通信を確立する。以後、電子機器20はホスト装置10の周辺機器として動作することになる。
なお、デバイスクラス格納部241からデバイスクラスを選択する順序は特に問わず、格納順に選択してもよいし、ランダムに選択してもよい。また、図3に示したように、デバイスクラスの各々に設定された優先度に基づいて選択してもよい。
処理制御部202は、処理制御部及び処理制御手段の一例である。処理制御部202は、ホスト装置10とのエニュメレーションが失敗した場合、エニュメレーション処理部201を制御することで、エニュメレーションに使用するデバイスクラスを変更させるための制御を行う。具体的には、処理制御部202は、ホスト装置10との間でエニュメレーションが開始された後、選択されたデバイスクラスに適合するメッセージがホスト装置10から送信されない場合に、デバイスクラスを変更するための制御を行う。
例えば、処理制御部202は、エニュメレーションが開始されてから、デバイスクラスに適合するメッセージが所定時間(以下、待機時間ともいう)以内に送信されない場合、エニュメレーションが失敗したと判断する。この場合、処理制御部202は、ホスト装置10との電気的な接続を切断し、エニュメレーション処理部201を制御することで、エニュメレーションに使用するデバイスクラスを他のデバイスクラスに変更させる。そして、処理制御部202は、デバイスクラスの変更後、ホスト装置10を再度接続することで、エニュメレーション処理部201に対し、変更後のデバイスクラスでエニュメレーションを再度実行させる。
ここで、ホスト装置10との切断及び再接続方法は特に問わず、種々の方法を用いることができる。例えば、処理制御部202は、USBコネクタ27に供給する電力をオフ及びオンすることで、ホスト装置10と自装置との切断及び再接続を行う形態としてもよい。また、処理制御部202は、USBコネクタ27を有するD+端子等をプルダウン及びプルアップすることで、ホスト装置10と自装置との切断及び再接続を行う形態としてもよい。また、待機時間は、例えば3秒等、任意に設定することが可能である。
以下、上述した電子機器20の動作について説明する。図5は、電子機器20が実行する処理の一例を示すフローチャートである。
USBコネクタ27にホスト装置10が接続されると(ステップS11)、エニュメレーション処理部201は、デバイスクラス格納部241に記憶された複数種類のデバイスクラスの中から、一のデバイスクラスを選択する(ステップS12)。例えば、エニュメレーション処理部201は、優先度が最も高いデバイスクラスを選択する。
続いて、エニュメレーション処理部201は、ホスト装置10との間でエニュメレーションを開始し、ホスト装置10からの要求に応じて、ステップS12で選択したデバイスクラスのクラスコードをホスト装置10に送信する(ステップS13)。次いで、処理制御部202は、クラスコードが送信されてから所定の待機時間以内に、デバイスクラスに適合するメッセージが受信されたか否かを判定する(ステップS14)。
ここで、ホスト装置10から待機時間以内にメッセージを受信できない場合(ステップS14;No)、処理制御部202は、USBコネクタ27をオフとすることで、ホスト装置10との電気的な接続を切断する(ステップS15)。次いで、処理制御部202は、エニュメレーション処理部201を制御し、他のデバイスクラスに変更させる(ステップS16)。
例えば、エニュメレーション処理部201は、処理制御部202からの指示に応じて、次の優先度のデバイスクラスを選択する。なお、優先度が最下位のデバイスクラスを選択している場合には、エニュメレーション処理部201は、処理制御部202からの指示に応じて、第上位のデバイスクラスを再度選択してもよい。
そして、処理制御部202は、デバイスクラスの変更後、USBコネクタ27をオンとすることで、ホスト装置10を接続させた後(ステップS17)、ステップS13に処理を戻す。これにより、エニュメレーション処理部201は、ステップS13において、変更後のデバイスクラスに基づき、ホスト装置10との間でエニュメレーションを開始する。
なお、処理制御部202は、ステップS16の処理回数、つまりデバイスクラスを変更した回数を計数し、当該回数が閾値(所定回数)に達した場合には、処理を強制的に終了する形態としてもよい。この場合、閾値は、デバイスクラス格納部241に格納されたデバイスクラスの個数から1減算した値とすることで、デバイスクラス格納部241に格納された全てのデバイスクラスでエニュメレーションを試行することができる。また、処理制御部202は、計数した回数が閾値に達したタイミングで、自装置のデバイスクラスがホスト装置10に適合しないことを報知してもよい。この場合、報知方法は特に問わず、電子機器20が備えるブザー等の音声出力装置や表示器等(図示せず)を用いて報知を行ってもよい。
一方、ステップS14において、待機時間以内にメッセージを受信した場合には(ステップS14;Yes)、処理制御部202は、ステップS12で選択されたデバイスクラスを確定する(ステップS18)。そして、エニュメレーション処理部201は、選択したデバイスクラスに規定されたプロトコルに基づいて、ホスト装置10との間で通信を確立するための処理を実行する(ステップS19)。
以上の処理により、電子機器20は、デバイスクラスを切り替えながら、ホスト装置10との間でエニュメレーションを行う。そして、電子機器20は、選択したデバイスクラスがホスト装置10に導入されたデバイスドライバ141に適合すると、その選択したデバイスクラスを用いてホスト装置10との間で通信を確立する。
次に、図6及び図7を参照して、ホスト装置10と電子機器20との動作例について説明する。ここで、図6及び図7は、ホスト装置10と電子機器20との間で行われる動作の一例を示すシーケンス図である。
なお、以下では、電子機器20が図3に示した「クラスC1」と「クラスC2」とのデバイスクラスに対応し、ホスト装置10に「クラスC2」に対応するデバイスドライバ141が導入されている場合の動作例について説明する。
まず、図6を参照して、電子機器20が「クラスC1」を最初に選択する場合の動作例(第1の動作例)について説明する。
ホスト装置10と電子機器20とが接続されると、電子機器20のエニュメレーション処理部201は、デバイスクラス格納部241に格納されたデバイスクラスから「クラスC1」を選択する(ステップS21)。次いで、エニュメレーション処理部201は、ホスト装置10からの要求に応じて「クラスC1」を示すクラスコードをホスト装置10に送信する処理等を行うことで、ホスト装置10との間でエニュメレーションを開始する(ステップS22)。
この場合、ホスト装置10では、電子機器20から取得したクラスコード「クラスC1」が、自装置に導入されたデバイスドライバ141に対応しないため、自装置で取り扱うことができない不明なデバイスと判断する。そのため、ホスト装置10は、「クラスC1」に適合したメッセージを電子機器20に送信することなく、エニュメレーションを終了させる。
一方、電子機器20の処理制御部202は、ステップS22でエニュメレーションが開始された後、ホスト装置10からのメッセージを待機する。ここで、待機時間以内にメッセージが送信されない場合、処理制御部202は、USBコネクタ27をオフに切り替える(ステップS23)。
続いて、処理制御部202は、エニュメレーション処理部201を制御することで、エニュメレーションに使用するデバイスクラスを「クラスC2」に変更した後(ステップS24)、USBコネクタ27をオンに切り替える(ステップS25)。これにより、ホスト装置10と電子機器20とは、再度接続された状態になる。
ホスト装置10の再接続、エニュメレーション処理部201は、ホスト装置10からの要求に応じて「クラスC2」を示すクラスコードをホスト装置10に送信し、ホスト装置10との間でエニュメレーションを開始する(ステップS26)。
この場合、ホスト装置10では、電子機器20から取得したクラスコード「クラスC2」が、自装置に導入されたデバイスドライバ141に対応すると判断するため、「クラスC2」に適合したメッセージが電子機器20に送信される(ステップS27)。
電子機器20の処理制御部202は、ステップS26でエニュメレーションが開始された後、ホスト装置10からのメッセージを待機する。そして、待機時間以内にメッセージを受信した場合、処理制御部202は、「クラスC2」を確定し(ステップS28)、「クラスC2」に基づくエニュメレーションを継続させる。
次に、図7を参照して、電子機器20が「クラスC2」を最初に選択する場合の動作例(第2の動作例)について説明する。
ホスト装置10と電子機器20とが接続されると、電子機器20のエニュメレーション処理部201は、デバイスクラス格納部241に格納されたデバイスクラスから、「クラスC2」を選択する(ステップS31)。次いで、エニュメレーション処理部201は、ホスト装置10からの要求に応じて「クラスC2」を示すクラスコードをホスト装置10に送信する処理等を行うことで、ホスト装置10との間でエニュメレーションを開始する(ステップS32)。
この場合、ホスト装置10では、電子機器20から取得したクラスコード「クラスC2」が、自装置に導入されたデバイスドライバ141に対応すると判断するため、「クラスC2」に適合したメッセージが電子機器20に送信される(ステップS33)。
電子機器20の処理制御部202は、ステップS32でエニュメレーションが開始された後、ホスト装置10からのメッセージを待機する。そして、待機時間以内にメッセージを受信した場合、処理制御部202は、「クラスC2」を確定し(ステップS34)、「クラスC2」に基づくエニュメレーションを継続させる。
以上のように、電子機器20は、デバイスクラス格納部241に格納された複数種類のデバイスクラスの中から一のデバイスクラスを選択的に用いて、ホスト装置10との間で通信を確立するためのエニュメレーションを実行する。また、電子機器20は、選択されたデバイスクラスに適合するメッセージがホスト装置10から送信されない場合、エニュメレーションに使用するデバイスクラスを変更し、変更後のデバイスクラスでエニュメレーションを再度実行する。
これにより、電子機器20では、ホスト装置10の仕様(デバイスドライバ141)に適合するまでの間、デバイスクラスを自動で切り替えながらホスト装置10との間でエニュメレーションを試行することができる。したがって、電子機器20では、ホスト装置10の仕様にあわせてデバイスクラスを自動で切り替えることができる。また、電子機器20では、デバイスクラスを手動で選択することなく、ホスト装置10の仕様に適合するデバイスクラスを自動で選択(設定)することができるため、ホスト装置10とのエニュメレーションを効率的に行うことができる。
また、電子機器20では、デバイスクラスの変更に先駆けて、ホスト装置10との接続を切断し、デバイスクラスの変更後、ホスト装置を再度接続させる。これにより、電子機器20では、USBケーブルWを抜き差しすることなく、変更後のデバイスクラスでエニュメレーションを再実行させることができるため、ホスト装置10との通信の確立を効率的に行うことができる。
以上説明した実施形態は、上述の電子機器20が有する構成又は機能の一部を変更することで、適宜に変形して実施することも可能である。そこで、以下では、上述した実施形態に係るいくつかの変形例を他の実施形態として説明する。なお、以下では、上述した実施形態と異なる点を主に説明することとし、既に説明した内容と共通する点については詳細な説明を省略する。また、以下で説明する変形例は、個別に実施されてもよいし、適宜組み合わせて実施されてもよい。
(変形例1)
本変形例では、前回のエニュメレーションでメッセージの送信が確認されたデバイスクラスを、次回以降の処理で優先的に選択させる形態について説明する。
例えば、図6で説明した第1の動作例において、処理制御部202は、ホスト装置10からのメッセージが確認されたデバイスクラス「クラスC2」を、ステップS28で確定する処理を行う。この際、処理制御部202は、デバイスクラス格納部241に格納された「クラスC2」の優先度を最上位に繰り上げることで、「クラスC2」が優先的に選択されるよう設定してもよい。これにより、エニュメレーション処理部201が、次回以降の処理で最初に選択するデバイスクラスを「クラスC2」とすることができる。
上記の制御を行うことで、電子機器20は、ホスト装置10で使用できることが確認されたデバイスクラスを優先的に選択してエニュメレーションを行うことができる。これにより、エニュメレーションが正常に完了するまでに要する時間の短縮化を図ることができるため、利便性の向上を図ることができる。
(変形例2)
上述した実施形態では、ホスト装置10からメッセージが送信されたことを条件に、エニュメレーションが正常に完了したと判断し、デバイスクラスの確定を行う形態を説明した。しかしながら、ホスト装置10に導入されたデバイスドライバ141によっては、電子機器20のデバイスクラスに対応していないにも関わらず、そのデバイスクラスに適合したメッセージを送信する場合がある。
例えば、標準ドライバの機能を一部流用するベンダードライバでは、エニュメレーションの開始時に、標準ドライバのデバイスクラスに適合したメッセージを送信する場合がある。但し、標準ドライバとベンダードライバとで仕様が異なるため、メッセージ送信後、交信が途絶えたりすることで、ホスト装置10と電子機器20との通信が確立する前に、エラーが発生することになる。
そこで、処理制御部202は、ホスト装置10からメッセージが送信された場合であっても、当該ホスト装置10との通信が確立できない場合には、デバイスクラスを変更する制御を行ってもよい。具体的には、処理制御部202は、ホスト装置10からメッセージが送信された後、ホスト装置10との通信を確立する処理が所定の待機時間以内に完了しない場合に、上述したデバイスクラスを変更するための制御を行う。
これにより、電子機器20では、ホスト装置10とのエニュメレーションが正常に完了するデバイスクラスを自動で選択(設定)することができるため、ホスト装置10との通信の確立を効率的に行うことができる。
(変形例3)
上述の実施形態では、ホスト装置10と電子機器20とをUSBケーブルWで接続する形態を説明したが、これに限らず、ホスト装置10と電子機器20とを直接接続する形態としてもよい。
例えば、USBコネクタ16がUSBのメス端子を具備し、USBコネクタ27がUSBのオス端子を具備すること、或いはその逆の端子を具備することで、ホスト装置10と電子機器20とを直接接続することが可能な構成としてもよい。
上述した実施形態の各装置で実行されるプログラムは、ROM等に予め組み込まれて提供される。上述の実施形態の各装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、上述した実施形態の各装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の実施形態の各装置で実行されるプログラムをインターネット等のネットワーク経由で提供又は配布するように構成してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 情報処理システム
10 ホスト装置
20 電子機器
201 エニュメレーション処理部
202 処理制御部
特開2006−180356号公報

Claims (6)

  1. ホスト装置と接続可能な接続部と、
    複数種類のデバイスクラスを記憶する記憶部と、
    前記記憶部に記憶されたデバイスクラスの中から一のデバイスクラスを選択的に用いて、前記接続部に接続された前記ホスト装置との間で通信を確立するための処理を実行する処理部と、
    選択された前記デバイスクラスに適合するメッセージが前記ホスト装置から送信されない場合、前記処理部が前記処理に使用する前記デバイスクラスを変更する処理制御部と、
    を備える電子機器。
  2. 前記処理制御部は、前記デバイスクラスの変更に先駆けて、前記接続部と前記ホスト装置との接続を切断し、前記デバイスクラスの変更後、前記接続部とホスト装置とを再度接続させる請求項1に記載の電子機器。
  3. 前記処理制御部は、前回の処理で前記ホスト装置から前記メッセージが送信されたデバイスクラスを、次回以降の処理で前記処理部に優先的に選択させる請求項1又は2に記載の電子機器。
  4. 前記処理制御部は、前記デバイスクラスを変更した回数が所定回数に達した場合に報知を行う請求項1〜3の何れか一項に記載の電子機器。
  5. 前記処理制御部は、前記ホスト装置から前記メッセージが送信された場合であっても、前記ホスト装置との通信を確立できない場合には、前記デバイスクラスを変更する請求項1〜4の何れか一項に記載の電子機器。
  6. ホスト装置と接続可能な接続部を備える電子機器のコンピュータを、
    複数種類のデバイスクラスの中から一のデバイスクラスを選択的に用いて、前記接続部に接続された前記ホスト装置との間で通信を確立するための処理を実行する処理手段と、
    選択された前記デバイスクラスに適合するメッセージが前記ホスト装置から送信されない場合、前記処理手段が前記処理に使用する前記デバイスクラスを変更する処理制御手段と、
    して機能させるためのプログラム。
JP2020039312A 2020-03-06 2020-03-06 電子機器及びプログラム Pending JP2021140609A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020039312A JP2021140609A (ja) 2020-03-06 2020-03-06 電子機器及びプログラム
US17/083,339 US11194590B2 (en) 2020-03-06 2020-10-29 Electronic apparatus and method
CN202110135997.1A CN113360434A (zh) 2020-03-06 2021-02-01 电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020039312A JP2021140609A (ja) 2020-03-06 2020-03-06 電子機器及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2024066349A Division JP2024086912A (ja) 2024-04-16 電子機器及びプログラム

Publications (1)

Publication Number Publication Date
JP2021140609A true JP2021140609A (ja) 2021-09-16

Family

ID=77524604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020039312A Pending JP2021140609A (ja) 2020-03-06 2020-03-06 電子機器及びプログラム

Country Status (3)

Country Link
US (1) US11194590B2 (ja)
JP (1) JP2021140609A (ja)
CN (1) CN113360434A (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4406709B2 (ja) 2004-12-24 2010-02-03 ソニー株式会社 Usb周辺装置及びそのデバイスクラスの選択方法
US20080126628A1 (en) * 2006-11-29 2008-05-29 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically providing an alternate usb configuration of a usb compliant peripheral device for exposure to a host computer
US10579566B2 (en) * 2017-04-28 2020-03-03 Square, Inc. Point of sale device with switchable internal connection roles

Also Published As

Publication number Publication date
US20210279071A1 (en) 2021-09-09
US11194590B2 (en) 2021-12-07
CN113360434A (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
US7634670B2 (en) Communication apparatus and method of controlling same
US10108383B2 (en) Communication device communicating target data with external device according to near field communication
JPWO2005001701A1 (ja) スレイブ装置、通信設定方法
JP2007109251A (ja) Usbホストの役割をする上流の周辺機器
US9924058B2 (en) Information processing apparatus that controls power supply to different destinations, method of controlling the same, and storage
JP2008165533A (ja) Usb装置、その制御方法及びそのプログラム
US20210019098A1 (en) Information processing apparatus
US20180317181A1 (en) Information processing apparatus and information processing method
JP2008293181A (ja) 情報処理装置および情報処理方法
US11825053B2 (en) Information processing apparatus, control method, and storage medium for updating a program
JP2021140609A (ja) 電子機器及びプログラム
US20150281370A1 (en) Apparatus, communication control system, and communication control method
JP2007088726A (ja) デバイス、無線lan設定システムおよび無線lan設定方法
JP6379932B2 (ja) 画像記録装置及びプログラム
JP2024086912A (ja) 電子機器及びプログラム
US9794442B2 (en) Communication apparatus, control method, and storage medium
US10638528B2 (en) Communication apparatus, method of controlling communication apparatus, and storage medium, for establishing communication link
US20120057185A1 (en) Image forming apparatus and method of forming image thereof
JP2005115427A (ja) コンピュータにローカル接続される周辺装置
JP2006244057A (ja) Usb機器及びその制御方法、並びにプログラム
US20080055631A1 (en) Wireless communication device, computer readable medium storing wireless communication program, wireless communication system, image formation device, and computer readable medium storing control program for image formation device
JP2004110145A (ja) Usbコネクタ接続装置、usbコネクタ接続方法、usbコネクタ接続プログラムおよびusb接続プログラムを記録した媒体
JP2012053648A (ja) 多機能装置および多機能装置の制御方法
KR102509982B1 (ko) Usb 인식 장치 및 방법, 그리고 이를 위한 리더의 동작 방법
US10235311B2 (en) Data acquisition system, electronic device, and data acquisition terminal

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240116