JP4066383B2 - 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ - Google Patents

通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ Download PDF

Info

Publication number
JP4066383B2
JP4066383B2 JP2006186910A JP2006186910A JP4066383B2 JP 4066383 B2 JP4066383 B2 JP 4066383B2 JP 2006186910 A JP2006186910 A JP 2006186910A JP 2006186910 A JP2006186910 A JP 2006186910A JP 4066383 B2 JP4066383 B2 JP 4066383B2
Authority
JP
Japan
Prior art keywords
reception buffer
buffer
communication
data
flow control
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.)
Expired - Fee Related
Application number
JP2006186910A
Other languages
English (en)
Other versions
JP2008015823A (ja
Inventor
正治 岩田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citizen Holdings Co Ltd
Citizen Watch Co Ltd
Original Assignee
Citizen Holdings Co Ltd
Citizen Watch Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citizen Holdings Co Ltd, Citizen Watch Co Ltd filed Critical Citizen Holdings Co Ltd
Priority to JP2006186910A priority Critical patent/JP4066383B2/ja
Priority to US11/822,193 priority patent/US7761620B2/en
Publication of JP2008015823A publication Critical patent/JP2008015823A/ja
Application granted granted Critical
Publication of JP4066383B2 publication Critical patent/JP4066383B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Record Information Processing For Printing (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、ホスト装置との間をUSB接続する通信装置および通信制御方法に関し、特にUSBインターフェースで仮想シリアルを実現する際におけるバッファフル状態の制御に関し、例えば、ホスト装置とプリンタとの間をUSB接続するPOSシステムに適用することができる。
図10は、従来のホスト装置とプリンタとの間の関係を説明するための図である。例えば、従来のPOSシステムにおいて、ホスト装置が備えるコンピュータは、POSやキャッシュレジスタのソフトなどのアプリケーション・プログラム202と、オペレーティングシステムの部分から構成されている。オペレーティングシステムはアプリケーションプログラムインターフェース203(API)を通じて、パラレルI/Fドライバ207やシリアルI/Fドライバ205などのデバイスドライバを経由してIEEE1284などのパラレルポート209やRS232等のシリアルポート208と入出力を行い、プリンタ201との間の通信を行っている。また、USBプリンタクラスのドライバ204とUSBバスドライバ206を介して接続する場合もある。
近年、IEEE1284パラレルポートやRS232シリアルI/F 等のLegacyポートと呼ばれるポートを搭載せず、コストパフォーマンスに優れたUSBインターフェースのみを搭載したコンピュータや周辺機器(プリンタ)が広く普及している。
一方、従来のアプリケーションはLegacyポート用としてソフトウェア資産が多く残っているが、USB機器用にはそのままでは使用できないので、それらをUSBインターフェース用のアプリケーションに変更する必要があり、それには多大な労力を必要とする。
一般に、シリアルI/Fではデータのフロー制御としてXon/Xoffプロトコル、RTS/CTSプロトコルなどが一般的に使われている。図11はシリアルI/Fによるデータのフロー制御を説明するためのプリンタ側のフローチャートである。
例えば、プリンタ側において、データの受信時において(S101)、バッファフルなどの受信不可能状態にあるときは(S102)、Xoffコードを送信したり、CTS信号をオフとしたりすることによって、ホストコンピュータに送信停止を要求する(S103)。これに対してバッファが空くと(S104)、XonコードやCTS信号をオンとして送信再開を要求する(S105)。ホストコンピュータはCTS信号やXoffコードを常時監視し、要求に従って送信停止や再開を行う。
しかし、バッファフル状態では何もデータを受け付けないのでそのときにキャッシュドロワコマンドを送信できず、ドロワをオープンすることができない。そこでアプリケーションはドロワをオープンするときは、シリアルI/Fドライバに一時的にフロー制御なしを指定し、XoffコードやCTSオフ通知を監視しない状態にして強制的にドロワコマンドを送信する。
USBインターフェースにおいても、受信バッファが満杯状態の場合には、受信データを受け付けることができないという課題がある。
USBインターフェースではデータはパケットによって送信され、パケットごとにACK/NAK応答で通信している。LegacyシリアルI/Fインターフェースと同様に、バッファがフル状態になるとデータは受信できなくなり、NAK応答する。ホストコンピュータはプリンタからのNAK応答を受け取るとデータパケットを再送する。この操作はタイムアウトするかACK応答を受け取るまで繰り返される。
この状態でドロワコマンドを送信したい場合、データパケット、NAK応答の繰り返しが行われているため、ドロワコマンドは送信できない。このようにUSBインターフェースはACK,NAK応答によるフロー制御を行う規定になっており、Xon/XoffプロトコルやRTS/CTSフロー制御が行われない。フロー制御なしというプロトコルもないため、シリアルI/Fのようにプリンタが受信不可状態でも強制的にデータを送信する手段がないため、バッファフル状態ではドロワコマンド等の重要性の高いコマンドを送信することができない。
図12は、USBインターフェースによるホストと周辺機器との間の通信状態を説明するための図である。なお、図は周辺機器側のCPUが行う処理内容と、受信バッファのデータの格納状態について示している。
図12(a)は、周辺機器の受信バッファに十分な空きがある場合を示している。この受信バッファの状態において、ホスト側から送信データが送信された場合には、周辺機器側は送信データを受信バッファ内に格納し、ACK応答をホスト側に送って正常に受信が行われたことを通知する。ホスト側は、ACK応答を受信して、正常受信であることを確認する。
一方、図12(b)は、周辺機器の受信バッファに十分な空きがない場合を示している。受信バッファに十分な空きがない場合において、ホスト側から送信データが送信された場合には、周辺機器側は送信データの受信バッファ内への格納を拒否し、NAK応答をホスト側に送って送信データを受け取れないことを通知する。ホスト側は、NAK応答を受信して、送信データを受け取れないことを確認した後、送信データを再送する。ホストは、ACK応答を受信するまで、送信データの再送を繰り返す。
このように、USBインターフェースにおいても、周辺機器の受信バッファがバッファフル状態となった場合には、受信データを受け付けることができず、例えば、周辺機器がプリンタの場合において、紙無しなどのエラーが発生したときドロワコマンドやステータス取得のコマンドを取得することができないという課題がある。
そこで、特許文献1では、通信端末において、ビジィー信号を出力してホスト側にデータ処理が不可能であることを指示するモード1と、ビジィー信号を出力せずに対処コマンドをホスト側から受信するモード2とを備え、リアルタイムコマンドに対応したアプリケーションソフトに対してモード2を設定することによって、ホスト側のアプリケーションソフトによるホールド状態やエラー状態の対処を可能とする構成が提案されている。
また、特許文献2には、上記装置とプリンタとの間のインターフェースをIEEE1284規定のECPモードを使用してデータ転送を行う場合、受信バッファフルが発生すると、プリンタ装置からの送信データを上位装置がその受信データを受け取ることができないという問題があることが指摘され、この問題を解決するものとして、上記上位装置は、プリンタ装置から受信可能サイズが通知されるまで次の印刷データの転送を行わないようにすることによって、プリンタ装置の受信バッファフルを防止することが記載されている。また、受信可能サイズを、プリンタ装置側の指定によって変更することで、上位装置の転送性能に合わせた最適な受信可能サイズに変更することが記載されている。
近年、POSシステム等においては、上記したRS−232CやIEEE1284等の通信の他に、ホスト装置とプリンタとの間をUSBで通信することが行われている。このUSBを用いた通信において、OUTパケットの受信時に、メモリ残量と閾値との多少を判別し、メモリ残量が閾値よりも少ない場合にはNAKハンドシェイクを応答してデータ受信を拒否することによって、画像メモリのメモリ残量が少なくなったときのメモリオーバーを防止することが、例えば特許文献3に提案されている。
また、パラレル通信制御におけるバッファフルを防止するものとして、予め定められた所定エラー状態の発生時に、所定の特殊命令をプリンタに特殊命令処理手段をホスト側に設ける構成が、例えば、特許文献4に提案されている。
また、特許文献5には、ホスト装置と印刷装置との間に接続するインターフェース装置において、印刷装置がデータを受信できない場合であっても、受信データリアルタイムコマンドであれば、ホスト装置にデータを送信させて記憶手段に記憶し印刷装置に送信することによって、印刷装置の受信バッファフルに対処することが提案されている。
特開平10−333856号公報 特開2000−207142号公報 特開2005−117422号公報 特開2005−18638号公報 特開2001−202322号公報
ホスト装置による管理を行うPOSシステムでは、ホスト装置をプリンタに接続し、プリンタを介して表示装置、ドロワ、モデム、バーコードリーダーなど種々のデータ端末に接続する構成が一般的であり、種々のデータ端末に送信するデータは、ホスト装置からはじめにプリンタに送信した後に、プリンタから各データ端末に送信される。
また、シリアル通信を用いたPOSシステムにおいて、従来のシリアル通信ポートをUSBによる通信に切り替える際には、ホスト装置側のPCや端末装置側のプリンタの装置構成において、従来のシリアル通信で使われていた既存の装置構成からの変更をなるべく小さくして、切り替えに要するコストを少なくしたいという要望がある。
このような要望がある中で、上述したように、ホスト装置と通信装置との間で行うデータ送信において、通信装置側の受信バッファがバッファフルの場合に、即時実行コマンドを受けることができないという課題に対して、上記したように各種の対処が提案されている。しかしながら、いずれの対処も、通信装置側に特殊な機能を持たせることで対応するものであってソフトウェアの切り換えの多大の労力を要するものであり、特殊な機能を備えたインターフェース装置を用意するなど汎用性が低くいという問題があり、既存の通信装置を用い、通常の通信装置が通常に備える機能を利用することで解決することができないという問題がある。
例えば、特許文献1の構成では、通信端末側にモード選択機能を持たせる必要がある他、リアルタイムコマンドに対応したアプリケーションソフトに対しては適用することができるものの、リアルタイムコマンドに対応しないアプリケーションソフトについては適用できないという問題がある。
また、特許文献2の構成では、プリンタ装置は受信可能サイズを検出し、検出した受信可能サイズを上位装置に転送する機能が必要であるため、この機能を有していない既存の通信装置では新たにこの機能を組み込む必要がある。また、受信可能サイズを変更可能であるが、この変更はプリンタ装置側で行う必要があるため、プリンタ装置側に受信可能サイズの変更機能を組み込む必要がある。また、この受信可能サイズの変更は、上位装置側から行うことができないという問題もある。
また、特許文献3の構成では、メモリ残量が閾値よりも少ない場合には、画像データの受信が拒否されるため、即時実行が求められるコマンドについても受信が拒否され、通信装置において即時実行コマンドを実行することができないという問題がある。
また、特許文献4の構成では、ホスト側は特殊命令処理手段を用意し、また、プリンタ側においても特殊命令を実行する機能を持たせる必要があるという問題がある。
また、特許文献5の構成では、インターフェース装置に、受信データが受信データリアルタイムコマンドであるかを判定する機能や、受信データリアルタイムコマンドを記憶する記憶手段を設ける必要があるという問題がある。
上記したように、特許文献1〜5のいずれにおいても、ホスト側や通信装置側において新たな装置や機能を付加するなど大きな変更を必要とするため、既存のホスト装置や通信装置に大きな変更を要することなく、受信バッファがバッファフルの場合に即時実行コマンドの受信を可能とすることは困難である。
そのため、受信バッファフルに対して提案される従来技術を適用した場合には、ホスト側のPCや端末装置側のプリンタに新たな構成や機能が必要となるという問題がある。
したがって、ホスト側のPCや端末装置側のプリンタに新たな構成や機能を付加することなく、既存の装置構成を利用した構成のままで、受信バッファフルの場合であっても、即時実行コマンドの受信を可能とすることが求められている。
そこで、本発明は上記の課題を解決して、ホスト装置と通信装置との間で行うデータ送信において、通信装置側の受信バッファがバッファフルの場合に、即時実行コマンドを受けることができないという課題を解決することを目的とし、特に、ホスト側のPCや端末装置側のプリンタに新たな構成や機能を付加することなく、既存の装置構成を利用した構成のままで、受信バッファフルの際に、即時実行コマンドを受信可能とすることを目的とする。
本発明は、受信バッファフルの場合に、ホスト装置側からのUSB仮想シリアルによって送られた指示に基づいて、通信装置が備える受信バッファのバッファサイズを拡大することによって、通信装置による即時実行コマンドの受信を可能とする。
また、受信バッファは、通信装置が通常に備える構成であり、また、この受信バッファのバッファサイズを拡大するために用いる制御信号も、シリアル通信で利用されるフロー制御の指示信号を用いることができるため、ホスト装置側のPCや端末装置側のプリンタに新たな構成や機能を付加することなく、既存の装置構成を利用した構成で実現することができる。
本発明において、アプリケーションからはUSB仮想シリアルドライバによって物理的にはUSBインターフェースであるが、動作上ではシリアルI/Fとして扱われるのでXon/Xoff、RTS/CTS等のフロー制御の指定も行うことができる。ドロワコマンド等の重要性の高いコマンドの送信時には、フロー制御なしの指定をアプリケーションから指示することができる。実際には、USB通信によってACK/NAKフロー制御が行われているため、通信装置側では、フロー制御なしの指定はフロー制御には使用しないが、このフロー制御なしの指定を受けることによって、ドロワコマンドのようにバッファフルの状態であっても送信を要する内容と判断することができ、これに基づいてバッファ状態を変更する。
したがって、本発明において、フロー制御なしの指定は、本来のシリアルによるフロー制御の指定としてではなく、データを受信すべきデータかそうでないデータかを判定するために使用する。より具体的には、Xon/XoffまたはRTS/CTSフロー制御を行うように指定された状態において、ある閾値でバッファ状態を判定し、バッファがその閾値を超える状態(ニアフル状態)と判定された場合には、NAK応答する。その状態において、プロトコルなしが指定された場合には、この閾値を大きくし、受信可能サイズを広げ、その後のパケットデータの受信を可能とする。
このようにすることで、一旦バッファがフルと判定される状態(ニアフル状態)となった場合でも、USBインターフェースのACK/NAKフロー制御規定を守りつつ、ドロワコマンドなどの重要性や緊急性が高いコマンドの受信が可能となる。
本発明は、通信装置、通信制御方法、通信装置を備えたプリンタの各態様を備える。
本発明の通信装置の態様は、ホスト装置との間をUSBバスで接続し、USB接続のエンドポイントを構成する通信用バッファと、制御部とを備える。
制御部は、シリアルI/Fプロトコルによるフロー制御において、ホスト装置側からUSB仮想シリアルによって、そのフロー制御を無しの指定の指示に基づいて通信用バッファが受信データを格納する受信バッファの受信バッファサイズを変更することを特徴とする。
通信用バッファは、通信データを格納するために通信装置が予め用意するデータ記憶領域であり、このデータ記憶領域は、受信データを格納する領域を受信バッファとして備える。
ここで、通信データは、例えば、プリンタに印字するための印字データや、プリンタや各種データ端末を制御するコマンドや、ステータスを含む。コマンドとしては、例えば、ドロワを開くドロワオープンなどのドロワコマンドの他、プリンタ、表示装置、モデム、バーコードリーダーなど種々のデータ端末の各動作を制御するコマンドがある。このコマンドには、通常動作の制御に用いるコマンドの他に、ドロワオープンやエラー解除コマンドなどの即時実行が求められる即時実行コマンドがある。
制御部は、ホスト装置側からUSB仮想シリアルによって送られた指示に基づいて通信用バッファが受信データを格納する受信バッファの受信バッファサイズを変更する。
この指示は、ホスト装置と通信装置との間をシリアルI/Fプロトコルに従ってフロー制御する際に、そのフロー制御の有効無効を指定する。制御部は、この指示において、フロー制御の有効又は無効の指定に基づいて、受信バッファの受信バッファサイズを変更する。
指示がフロー制御を無効とする指定である場合には、この指定に基づいて通信用バッファが備える受信バッファの受信バッファサイズを拡大し、また、フロー制御を有効とする指定である場合には、この指定に基づいて通信用バッファが備える受信バッファの受信バッファサイズを縮小する制御を行う。
また、通信用バッファは、ソフト上で分離および結合を自在とする複数の領域を含む記憶領域を備え、その領域の一つの領域を受信データを格納する受信バッファとし、残りの領域を空き領域とする。
制御部は、複数の領域の一部を受信バッファ、残余の領域を空き領域として領域を管理する。この領域管理において、フロー制御を無効とする指定を受けた場合には、受信バッファと空き領域をソフト上で結合して空き領域を受信バッファに組み込むことにより受信バッファサイズを拡大する。また、フロー制御を有効とする指定を受けた場合には、受信バッファと空き領域とをソフト上で分離することにより受信バッファサイズを縮小する。
ここで、制御部は、通信用バッファ内で空き領域として定められた領域については、受信データの書き込み、および格納されたデータの読み出しを行わない。本発明では、この空き領域は、受信バッファがバッファフルの状態であっても、即時実行が求められる緊急性を要する即時実行コマンドを格納するために用意するバッファ領域であり、即時実行が求められていないデータやコマンド(以下では、コマンドを含めてデータと言う)が格納されるために即時実行コマンドの受信が不可となる状況を回避する。
したがって、空き領域は、即時実行コマンド以外のデータの格納が行われないように通常は格納不可の状態とする。この空き領域は、即時実行コマンドを受信する場合に受信バッファとすることによって受信バッファのバッファサイズを拡大して、即時実行コマンドの受信を可能とする。本発明では、この空き領域を受信バッファに結合する切り替えのトリガとして、フロー制御を無効とする指定を用いる。
制御部は、このフロー制御を無効とする指定を受けることで、USB制御で行うフロー制御を解消すると共に、空き領域を受信バッファにソフト的に結合して受信バッファのバッファサイズを拡大する。
また、即時実行コマンドの受信が完了するなど、拡大した受信バッファによる受信が不要となった場合には、受信バッファの一部をソフト上で分離して空き領域とすることによって受信バッファのバッファサイズを縮小し、次の即時実行コマンドの受信に備える。本発明では、この空き領域を受信バッファから分離する切り替えのトリガとして、フロー制御を有効とする指定を用いる。
制御部は、このフロー制御を有効とする指定を受けることで、USB制御で行うフロー制御を再開すると共に、空き領域を受信バッファからソフト上で分離して受信バッファのバッファサイズを縮小する。
また、通信装置は、受信バッファに格納される格納データを解析する解析部と、この解析部で解析したコマンドを転送する転送部とを備える。転送部は、解析部の解析で得られたコマンドをUSBインターフェースを通して接続される外部装置に転送する。外部装置としては、例えば、表示装置やドロワやモデム、バーコードリーダーなど種々のデータ端末とすることができ、拡大した受信バッファに格納した即時実行コマンドのデータを解析し、転送部からUSBインターフェースを通して種々のデータ端末に転送され、即時実行コマンドが実行される。
また、通信装置は、受信バッファに格納される格納データを解析する解析部と、プリンタバッファを備える。プリンタバッファは、解析部で解析して得られた印字データを格納する。
また、本発明の通信制御方法の態様は、USB接続されるホスト装置とターゲットである通信装置との間の通信を制御する方法である。通信装置はUSB接続のエンドポイントを構成する通信用バッファを備え、通信用バッファが備える受信データを格納する受信バッファの受信バッファサイズを、ホスト装置から通信装置に送信される指示に基づいて変更する。
指示はホスト装置と通信装置との間のフロー制御の有効無効を定める指定であり、通信装置は、ホスト装置からフロー制御を無効とする指定を受けて受信バッファサイズを拡大し、ホスト装置からフロー制御を有効とする指定により受信バッファサイズを縮小する。
また、通信用バッファは、ソフト的な分離および結合を自在とする複数の領域を含む記憶領域を備える。複数の領域の一部を受信バッファ、残余の領域を空き領域とし、受信バッファと空き領域をソフト上で結合して空き領域を受信バッファに組み込むことにより受信バッファサイズを拡大し、受信バッファと空き領域とをソフト上で分離することにより受信バッファサイズを縮小する。
通信用バッファが備える複数の領域の割合は、通信装置側からの指定に従って設定することができる。また、空き領域は複数の領域を含む構成とし、この複数の領域から選択した任意の個数の領域を受信バッファと結合し、受信バッファのサイズを選択的に拡大することができる。
また、本発明は、本発明の通信装置を備えたプリンタの態様とすることができる。このプリンタは、受信バッファに格納される格納データを解析する解析部と、印字を行うプリンタ機構と、前記プリンタ機構の印字に用いる印字データを格納するプリンタバッファとを備える。制御部は、解析部により得られた印字データをプリンタバッファに格納し、解析部により得られたコマンドによりプリンタ機構を駆動制御する。
本発明は、USB仮想シリアルを用いることによって、シリアルインターフェースを持たず、USBインターフェースのみを備える場合であっても、シリアルI/Fプロトコルによるフロー制御の有無を指定する指示を送ることができ、このフロー制御の有無の指定によって受信バッファのサイズを変更することができる。
本発明の通信装置、通信制御方法、および通信装置を備えるプリンタは、ホスト装置と通信装置との間で行うデータ送信において、通信装置側の受信バッファがバッファフルの場合であっても、即時実行コマンドを受けることができる。
特に、ホスト装置側のPCや端末装置側のプリンタに新たな構成や機能を付加することなく、既存の装置構成を利用した構成のままで、受信バッファフルの際に即時実行コマンドを受信可能とすることができる。
はじめに、本発明の通信装置の態様について説明する。
図1は本発明によるUSB接続によるホスト装置と通信装置との関係を説明するための図である。
図1において、ホスト装置は、アプリケーション・プログラム2と、アプリケーション・プログラム・インターフェース3と、ドライバ4〜7とを備え、通信装置としてプリンタの例を示し、ホスト装置とプリンタとの間はUSBインターフェースによって接続される。
アプリケーション・プログラム2は、例えば、POSシステムやキャッシュレジスタ等に係わるプログラムである。このプログラムは、USBによる送受信を行うためにUSBプロトコルによるフロー制御を行うプログラムを有する他、従来のプログラム資産であるシリアルプロトコルによるフロー制御を行うプログラムも備える。
アプリケーション・プログラム2は、USBプロトコルによるフロー制御によって、USBプリンタクラスドライバ4を介してUSBバスドライバ6と接続し、プリンタ1との間をUSBインターフェースによって通信する。このUSBインターフェースによる通信では、ACK信号、NAK信号を送るほか、送信データをパケットの形態で送る。
また、アプリケーション・プログラム2は、シリアルプロトコルによるフロー制御によって、USB仮想シリアルドライバを構成するシリアルI/Fドライバ5を介してUSBバスドライバ6と接続し、プリンタ1との間をUSBインターフェースによって通信する。このUSBインターフェースによる通信では、シリアルI/Fドライバ5をUSB仮想シリアルドライバとすることによって、アプリケーション・プログラム2側はRTS信号やCTS信号、あるいはXoff信号やXon信号を用いたシリアルプロトコルによるフロー制御を行うことができる。
仮想シリアルドライバはアプリケーションからシリアルポートへ送信するデータを受け取ると、RS232などの物理シリアルポートへ送信せずに、USBインターフェースへ送信する。また、仮想シリアルドライバは、USBインターフェースから受信したデータを通してあたかもシリアルI/Fから受信されたかのようにアプリケーションへデータを渡す。こうすることで、シリアルI/F用のアプリケーションはUSBを意識することなくUSBプリンタ等と通信可能となる。
このとき、USBインターフェースを仮想的にシリアルI/Fとして動作させるために、シリアルI/Fドライバを変更してUSB仮想シリアルとする。これによって、アプリケーションを変更することなく、デバイスドライバのみの変更で過去の多数のLegacyインターフェース用アプリケーションを新しいコンピュータ上でも動作可能とすることができる。
本発明は、上述した構成において、受信バッファの容量がフル状態となってUSBプロトコルによるフロー制御では信号を受け付けない場合であっても、キャッシュレジスタのドロワオープンコマンドのように重要性の高いコマンドについては、シリアルI/Fプロトコルによるフロー制御の指定をUSB仮想シリアルドライバを介して送り、この指定に基づいて受信バッファの容量を変更することによって、コマンドの受信を可能とする。
図2は本発明によるUSB接続によるホスト装置と通信装置との関係、および通信装置の概略構成を説明するための図である。
図2において、ホスト装置100と通信装置10とはUSB(Universal Serial Bus)によって接続しPOSシステムを構成する例を示している。USBは、1対の信号線を使用してデータを1ビットずつ順次転送するシリアルインターフェースであり、ホスト装置に接続される周辺機器(デバイス)に対して、指名(ポーリング)によって通信を許可し、パケットを単位としてホストのバッファと、デバイスに設けたエンドポイントのバッファとの間で通信を行う。
図2では、ホスト装置100に対して通信装置10がUSBインターフェースによって接続され、さらに、この通信装置10の下流側に周辺機器(20〜40)が接続される例を示している。なお、USBインターフェースでは、ターゲットである周辺機器間の接続は行われず、周辺機器間はハブを介して行うため、通信装置10はハブとして周辺機器20〜40と接続されることになる。
図2では、プリンタ20、表示装置30、およびキャッシュドロワ40を周辺機器として通信装置10に接続する例を示している。なお、ここでは、プリンタ20内に通信装置10を組み込んだ構成とし、既存のプリンタ20に通信装置10の機能を組み込むことでPOSシステムを構成する例を示している。
この構成では、ホスト装置100のUSBバスドライバ106はUSBインターフェースを介して通信装置10の通信インターフェースポート11に接続され、さらに、この通信インターフェースポート11はUSBインターフェースを介して、プリンタ20、表示装置30、およびキャッシュドロワ40と物理的に接続される。
また、プリンタ20内には、通信装置10と、印字を行うためのプリンタインターフェース21,プリンタバッファ22およびプリンタ部23を含むプリンタ機構24がUSBインターフェースを介して物理的に接続される。
印字を行う場合には、ホスト装置100は通信装置10に印字データを送信し、通信装置10は受信した印字データをプリンタバッファ22に転送する。プリンタ部23は、プリンタバッファ22に書き込まれた印字データを処理して印字を行う。
表示装置30に表示を行う場合には、ホスト装置100は通信装置10に表示データを送信し、通信装置10は受信した表示データを表示部32に転送する。表示部32は、転送された表示データを用いて表示を行う。
また、キャッシュドロワ40において、例えばドロワをオープンする場合には、ホスト装置100は通信装置10にドロワオープンコマンドを送信し、通信装置10は受信したドロワオープンコマンドをキャッシュドロワ部42に転送する。キャッシュドロワ部42は、転送されたドロワオープンコマンドを用いてドロワをオープンする。
ホスト装置100は、USBの信号線に接続するUSBバスドライバ106の他に、POS用のオペレーティングシステム(OS)103、キーボードやディスプレイ等のホスト装置100が一般的に備える機器や、これらの機器を制御するためのアプリケーションソフトウエア102や基本オペレーティングシステム(OS)101等を備える。アプリケーションソフトウエア102は、POS用のアプリケーションソフトウエアの他、各種アプリケーションソフトウエアとすることができ、基本オペレーティングシステム101やPOS用のオペレーティングシステム103の制御下で動作する。
また、POS用のオペレーティングシステム103は、印刷用ドライバ103a、表示用ドライバ103b,ドロワ用ドライバ103c、およびこれらのドライバを制御する制御用オペレーティングシステム103dを備える。
ホスト装置100においてUSBプロトコルによるフロー制御に係わる信号(ACK信号やNAK信号)や送信データは、USBプリンタ用ドライバ104からUSBバスドライバ106を介してUSBインターフェースによって通信装置10に送られる。
また、ホスト装置100のアプリケーション・プログラムによってシリアルI/Fプロトコルによるフロー制御に係わる信号(RTS信号やCTS信号、あるいはXoff信号やXon信号)やフロー制御の有無の指定については、USB仮想シリアルドライバを構成するシリアルI/Fドライバ105からUSBバスドライバ106を介してUSBインターフェースによって通信装置10に送られる。このとき、USBバスドライバ106以下ではUSBプロトコルによるフロー制御を行うが、アプリケーション・プログラムは、シリアルI/Fプロトコルによるフロー制御を行うと同等に扱うことができる。
通信装置10は、通信インターフェースポート11を介してホスト装置100とUSBインターフェースによって接続する。通信インターフェースポート11には、受信用の通信用バッファ12および送信用の送信バッファ13を備える。受信用の通信用バッファ12は、ホスト装置100から送信されたデータや、プリンタ機構24、表示装置30、キャッシュドロワ40等の周辺機器から送信されたデータを受信して格納する。
一方、送信用の送信バッファ13は、ホスト装置100から送信されたデータを各周辺機器に送信したり、あるいは各周辺機器から送信されたデータをホスト装置100に送信するために格納する。ここでは、通信用バッファ12や送信バッファ13に格納するデータは、印字データに限らずコマンドも含み、また、コマンド以外のデータについても印字データに限らず画像データ等の種々の内容のデータとすることができる。
通信装置10は、上記した通信用バッファ12や送信バッファ13の他に、通信用バッファ12の受信バッファで受信した受信データを解析し、受信データ内に含まれる印字データ等の各種内容のデータや各種コマンドを抽出する解析部14を備える。
また、本発明の通信装置10が備える通信用バッファ12は、結合あるいは分離を自在とする複数の領域を備え、この複数の領域中の一領域を受信バッファとして受信した受信データを格納し、残りの領域は空き領域として受信データは格納しない領域とする。この空き領域は、ホスト装置100からのフロー制御を指定する指示に従って受信バッファに切り替えることによって、受信データを格納する。この空き領域の受信バッファへの切り替えにより、受信バッファのバッファサイズは拡大することになり、受信バッファがバッファフルの状態においても即時実行コマンド等の必要性が高いデータに受信を可能とする。
なお、受信バッファのバッファサイズの変更は、上記したように空き領域を受信バッファに切り替えることで拡大する他に、切り替えた受信バッファを空き領域に戻すことで縮小することも含んでいる。
通信装置10は、この通信用バッファ12中の空き領域を受信バッファに切り替えることで行うバッファサイズの拡大、および受信バッファを空き領域に戻すことで行うバッファサイズの縮小のバッファサイズの変更は、上記したように、ホスト装置100からの指示に基づいて行うことができる。通信装置10は、このホスト装置100からのフロー制御を指定する指示を受けて解析する指示解析部15を備える。
ここでは、通信用バッファ中の受信バッファのバッファサイズの変更を、ホスト装置100からの通信装置10に送られるフロー制御を指定する指示に基づいて行う。
本発明では、このフロー制御は、USBインターフェースによるフロー制御と、シリアルインターフェースによるフロー制御の2つのフロー制御を含む。これらフロー制御は、ホストと周辺機器(デバイス)との間の通信を所定のプロトコルに従った手順で行うものであるが、シリアルインターフェースによるフロー制御は、本来のフロー制御の他に、受信バッファの容量の切り換え制御に用いる。
本発明のホスト装置100と通信装置10との間では、フロー制御を行うことによってホストとで周辺機器(デバイス)との間の通信を行う。このとき、重要度や緊急度が高いコマンドを送る場合には、ホスト装置100は通信装置10にシリアルインターフェースにおいてフロー制御を無効とする指定を指示する。このフロー制御を無効とする指定は、USB仮想シリアルドライバを介してUSBバスドライバから指示される。通信装置10はこのフロー制御を無効とする指示を受けると、重要度や緊急度が高いコマンドの送信があるとして、閾値を切り換える等によってバッファの容量を切り換える。
なお、このフロー制御を無効とする指示はシリアルインターフェースにおけるフロー制御であって、USBインターフェースによるフロー制御ではないので、USBインターフェースによるACK,NAK応答は続けられる。
また、切り換えたバッファの容量を元に戻す場合には、例えば、ホスト装置100から通信装置10にフロー制御を有効とすると指定を指示する。通信装置10はこのフロー制御を有効とする指令を受けると、閾値を切り換える等によってバッファの容量を元に戻す。
本発明の通信装置10は、このシリアルインターフェースのフロー制御を無効あるいは有効とする指定の指示に基づいて、通信用バッファ中の受信バッファのバッファサイズを変更する。例えば、フロー制御を無効とする指定により、空き領域を受信バッファに切り替えて受信バッファのバッファサイズを拡大し、フロー制御を有効とする指定により、切り替えた受信バッファを空き領域に戻して受信バッファのバッファサイズを縮小する。なお、フロー制御の指定状態はフロー制御カウンタ17に記憶させておくことができる。
通信装置10は制御部16を備える。制御部16は、フロー制御を行う他、受信バッファがバッファフルの場合に受信バッファのバッファサイズを拡大するバッファ制御や、受信バッファのバッファサイズを縮小するバッファ制御を行う。このとき、制御部16は通信用バッファ12から受信バッファに格納されるデータの容量あるいは、受信バッファに格納することができるデータ容量の残量の情報を受け取り、ACK,NAK応答を行う。
制御部16は、例えば、解析部14の解析結果に基づいて通信用バッファ12中の受信バッファに格納されるデータを送信バッファ13に転送し、さらに、送信バッファ13から通信インターフェースポート11を介して周辺機器やホスト装置に送信する制御を行う。また、受信バッファの受信状態に基づいてACK応答やNAK応答を送信バッファ13に転送し、送信バッファ13から通信インターフェースポート11を介してホスト装置に送信する制御を行う。
次に、図3を用いて受信バッファのバッファサイズの変更について説明する。
図3(a)は、通信用バッファにおいて、受信バッファと空き領域との関係を示している。通信用バッファは、通信装置が備える記憶手段において、受信データを格納するために用意した記憶領域であり、この記憶領域に記憶するデータの容量は、データの格納を行うか否かを判定する閾値により定める他、記憶領域中のアドレスを設定することによって設定することができる。受信バッファのバッファサイズの最大値は、この閾値やアドレス設定で定めることができる。
この閾値は受信バッファのバッファサイズの最大値を定め、格納されるデータの容量とこの閾値とを比較し、既に格納されているデータの容量が閾値であるとき、既に格納されているデータ容量に新たに格納するデータ容量を加えたときのデータ容量が閾値を超えるような場合には、バッファはフル状態にある、あるいは、フル状態に陥ると判定する。また、この閾値をアドレスによって表すこともできる。
この通信用バッファは、受信データを格納する受信バッファと、受信データの格納を行わない空き領域の複数の領域に仮想的に分けて捉えることができる。受信バッファは、ホスト装置から送信された送信データを格納してはじめてデータの受信が行われる。フロー制御において、ACK応答の場合には、この受信バッファ内に送信データを受信する。空き領域は、フロー制御においてデータを格納しない領域であり、受信バッファがバッファフルと判定される状態において、即時実行コマンド等の必要度が高いデータやコマンドを受信するために用意しておく領域である。この受信バッファと空き領域との容量の割合は、予め閾値やアドレス設定で定めることができる。
図3(b),(c)は、受信バッファのバッファサイズを拡大する場合を示している。図3(b)において、受信バッファは、受信した送信データを格納データとして格納し、送信データが格納されずに残った部分は空きバッファとなる。受信バッファ内に格納されるデータの容量、あるいは空きバッファの容量は、例えば、格納されたデータと閾値との比較や、格納されたデータのアドレスを参照することで算出することができる。この格納データのデータ容量算出は、受信バッファ内に格納データが連続して格納されていない場合であっても、各格納データのデータ容量を加算することで求めることができる。
空き領域として設定されている記憶領域にはデータの格納は行われない。なお、この空き領域内のデータ状態は、必ずしもデータが格納されていないわけではなく、受信バッファの変更履歴において、以前に格納したデータが残っている場合もある。このような場合には、格納されたデータの内で、消去してもよいデータについては無視する。
この図3(b)の状態において、通信装置は制御フロー無効の指定の指示を受けると、この指令を契機として、空き領域の設定を無効とし、この空き領域を受信バッファに切り替える。図3(c)はこの状態を示しており、空き領域が受信バッファに切り替わったことにより、空きバッファの部分が広がり、図3(b)の状態よりも大きなサイズの受信データを空きバッファに格納することができる。なお、空き領域から受信バッファへの切り替えは、記憶領域のアドレスを設定変更することで行うことができる。
一方、図3(d),(e)は、受信バッファのバッファサイズを縮小する場合を示している。図3(d)において、通信用バッファは全てを受信バッファとし、空き領域は設定されていない。ここでは、受信バッファ内にはデータは格納されておらず、空きバッファの状態を示している。
この図3(d)の状態において、通信装置は制御フロー有効の指示を受けると、この指示を契機として、空き領域の設定を有効とし、受信バッファの一部を空き領域に切り替える。図3(e)はこの状態を示しており、受信バッファの一部が空き領域に切り替わったことにより、空きバッファの部分が狭まる。なお、受信バッファの一部を空き領域に切り替える処理は、閾値を変更したり、記憶領域のアドレスを設定変更することで行うことができる。図3(e)に示すように、通信用バッファが受信バッファと空き領域を備える構成に変更された後は、制御フローに従って受信バッファにのみ送信データを格納し、空き領域へのデータの格納は行わない。
次に、ホスト装置と通信装置へ間の通信動作について、図4の動作図、図5,6のフローチャート、および図7,図8の状態図を用いて説明する。なお、図5と図6のフローチャートは、受信バッファに新たにデータを格納できるか否かを確認する手順で相違するが、その後の受信バッファのバッファサイズの変更を含む動作は共通するため、主に図5を用いて説明する。また、図7の状態図は制御フローが有効な状態であり、受信バッファのバッファサイズの変更を行わない動作を示し、図8は受信バッファのバッファサイズの変更する動作を示している。
図4において、ホスト装置と通信装置との間は、USBインターフェースによるフロー制御と、仮想シリアルを用いたシリアルインターフェースによるフロー制御とを行い、さらに、仮想シリアルを用いたフロー制御の有無の指定を指示することによるバッファ制御を行う。
図4(a)はUSBインターフェースによるフロー制御の概略を示している。ここでは、送信データをUSBバスドライバを介してパケットで送信し、受けて側の通信装置において、受信可能である場合には送信データをバッファ内の格納し、ACK信号をホスト装置に送信する。また、受けて側の通信装置において、バッファがフルの状態等によって受信が不可である場合には送信データをバッファ内の格納することなく、NAK信号をホスト装置に送信する。
また、図4(b)は仮想シリアルを用いたシリアルインターフェースによるフロー制御の概略を示している。ここでは、フロー制御有りの指定がされているものとする。アプリケーションにおいてCTS状態の問い合わせが生じた場合いは、ホスト装置は、RTS信号をシリアルI/FドライバをUSB仮想シリアルドライバとして、USB用バスドライバを通して通信装置に送る。通信装置は、このRTS信号を受けて、READY状態あるいはBUSY状態を表すCTS信号を送信する。
また、アプリケーションからキャッシュドロワコマンド等の必要度の高いコマンドが発生した場合には、ホスト装置はシリアルインターフェースにおけるフロー制御についてフロー制御無しの指定を行い、この指定をシリアルI/FドライバのUSB仮想シリアルドライバからUSB用バスドライバを通して通信装置に送る。通信装置は、このフロー制御無しの指定を受けて、バッファの容量変更を行う。
したがって、ホスト装置と通信装置との間は、USBインターフェースによるUSBフロー制御、USB仮想シリアルドライバを介することによる仮想的なシリアルフロー制御、および、シリアルフロー制御の指定によるバッファ制御の3つの態様の制御を行っている。
図5のフローチャートにおいて、はじめに、受信バッファに新たにデータを格納することができるか否かを確認する。この確認は、受信バッファのメモリ残量が予め設定しておいた閾値(設定値)と比較することで行う。メモリ残量が閾値(設定値)よりも大きい場合には、受信バッファ内へのデータの格納が可能であると判定し、メモリ残量が閾値(設定値)よりも小さい場合には、受信バッファ内へのデータの格納が不可能であると判定する。
受信バッファのメモリ残量は、記憶装置の記憶領域において、受信バッファを構成するアドレスと受信バッファ内に格納されるデータのアドレスから算出することもできる。また、閾値(設定値)は、例えば、通常状態において送信される送信データが格納できるデータ量に所定のマージンを加えて設定したり、あるいは、受信バッファのバッファサイズに対する%比率で設定するなど、任意に定めることができる(S1)。
S1の工程において、メモリ残量が閾値(設定値)よりも大きい場合には、受信バッファ内へのデータの格納が可能であるため、制御フローによって送信データを受信する。
図7は、メモリ残量が閾値(設定値)よりも大きい場合のデータ送信状態を示している。図7の状態図において、通信装置は、ホスト装置から送信された送信データを空きバッファ内に格納し(a)、ACK応答を行う(b)。この送信データの受信バッファ内への格納によって空きバッファは減少し、受信バッファはバッファフル状態に近づいた状態となる。この状態において、更にホスト装置から送信データが送信されると(c)、通信装置は空きバッファ内に送信データを格納することができないため、ホスト装置に対してNAK応答を行う(d)。この状態は、受信バッファにバッファフル状態が解消して空きバッファが増えるまで繰り返される(e、f)。
一方、メモリ残量が閾値(設定値)よりも小さい場合には、受信バッファ内へのデータの格納が不可能であるため、ホスト装置からデータが送信された場合には(S2)、以下のS3〜S13の工程により、受信バッファのバッファサイズを拡大して送信データを受信する。
また、図6のフローチャートでは、受信バッファに新たにデータを格納することができるか否かの確認は、ホスト装置からデータの送信があった場合に(S1A)、受信バッファでのデータ格納が成功したか否かによって行う(S2A)。
S1,S2あるいはS1A,S2Aの工程によって、受信バッファのメモリ残量が少なく新たなデータの格納が困難であると判定した場合には、S3〜S13の工程により、受信バッファのバッファサイズを拡大して送信データを受信する。
受信バッファのメモリ残量が少なく新たなデータの格納が困難であるため、通信装置はフロー制御によりNAK応答をホスト装置に送信する(S3)。ホスト装置は、このNAK応答を受けて、フロー制御を無効とする指示を通信装置に送る。通信装置は、ホスト装置からフロー制御を無効とする指示を受けると(S4)、受信バッファのバッファサイズを拡大する(S5)。
受信バッファのバッファサイズが拡大した後、ホスト装置から送信データが送信されると(S6)、通信装置は、拡大した受信バッファ内に送信データを格納する(S7)。通信装置はACK応答を行う。なお、ここでは、フロー制御を無効としているため、ACK応答を必ずしも送信する必要はない(S8)。
さらに、ホスト装置からコマンドが送信されると(S9)、通信装置は、拡大した受信バッファ内に送信されたコマンドを格納し(S10)、通信装置はACK応答を行う(S11)。
ホスト装置は、送信データおよびコマンドとして即時実行を要するデータあるいはコマンドを送ることで、受信バッファがバッファフル状態であっても即時に実行することができる。なお、通信装置は、送信されたデータやコマンドが即時実行を要するか否かを判定することはできず、ホスト装置側において即時実行の要否の判定を行う。したがって、ホスト装置は、例えば、予め即時実行を要するデータやコマンドの種類を定めておき、アプリケーションからこの即時実行を要するデータやコマンドが要求されたときには、制御フロー無効の指定を指示することで受信バッファのバッファサイズを拡大して、即時実行データや即時実行コマンドの受信を可能とする。
その後、通信装置は、ホスト装置から制御フロー有効の指定の指示を受けると(S12)、この指示に基づいて、通信用バッファ内に空き領域を形成して受信バッファのバッファサイズを元のサイズに戻す(S13)。
図8は受信バッファのバッファサイズを変更する動作状態を示している。図8において、通信用バッファには受信バッファと空き領域が設定され、受信バッファは空きバッファを残して一部の領域にデータが格納されているものとする。
通信装置は、ホスト装置からフロー制御無しの指示を受ける(a)と、空き領域を受信バッファとして受信バッファのバッファサイズを拡大する(b)。その後、ホスト装置から送信データが送られると、通信装置は送信データを拡大された受信バッファの空きバッファ内に格納し(c)、ACK応答を行う(d)。
さらに、ホスト装置から、例えばドロワオープンコマンド等のコマンドが送られると、通信装置はコマンドを受信バッファの空きバッファ内に格納し(e)、ACK応答を行う(f)。
受信バッファ内に格納されたデータが処理されると、処理が済んだデータの領域は空きバッファとなり、受信バッファ内の空きバッファの領域が増える。なお、このとき、受信バッファ内において、処理済みデータは必ずしも消去される必要はなく、単に空きバッファを表すアドレスの変更のみの処理で対応してもよい。この場合には、この空きバッファにデータを格納する場合には、上書き処理を行うことによって旧データをクリアする(g)。
その後、通信装置は、ホスト装置からフロー制御有りの指示を受けると、通信用バッファ内に再び空き領域を設定し、受信バッファのバッファサイズを縮小する。この空き領域の設定は、必ずしもはじめに設定した空き領域と同じアドレス領域である必要はなく、予め設定した空き領域と同じバッファサイズが得られる任意のアドレス領域に設定してもよい。
また、空き領域を設定する領域は、通信用バッファの空きバッファ内の領域を優先的に設定する。このとき、空きバッファ内にデータが残っている場合には必ずしも消去する必要はなく、再度受信バッファに変更されたときに、データ消去あるいは上書き処理を行うことによって旧データをクリアしてもよい。
また、空き領域を設定する領域の容量が、通信用バッファの空きバッファの領域の容量のみでは足りない場合には、空きバッファのみの領域を空き領域として設定する。なお、空きバッファのみの領域によって空き領域を設定する場合には、設定した空き領域の容量は予め設定した空き領域の容量よりも少ないため、その後のデータ処理によって空きバッファが生じたときに、この空きバッファを空き領域とすることで、当初に設定した空き領域の容量を確保することができる。
また、不足する空き領域の容量分を確保する領域として、受信バッファ内のデータが格納される領域の一部の領域を用いて設定してもよいが、このときには、格納されたデータの一部が使用不能となるおそれがある。
フロー制御有りの指示によって空き領域が設定された後、受信バッファがバッファフル状態の状態であるとき、ホスト装置から送信データが送られると(i)、通信装置はNAK応答を行う(j)。
この状態において、ホスト装置は即時実行コマンド等の即時性を要する送信データを送信する場合には、即時実行コマンドを送信する前に、前記(a)で示したようにフロー制御無しの指示を送って、通信装置側の通信用バッファの受信バッファのバッファサイズを拡大して、即時実行コマンドを受信する容量を確保する。
本発明では、上記した空き領域として複数の領域を設定し、受信バッファへの切り替えを段階的に行う構成とする態様とすることもできる。図9は、複数の領域を有する空き領域を説明するための図である。
図9において、通信用バッファは、図3で示したと同様に、送信データを格納する受信バッファと、送信データの格納を行わない空き領域とを備え、空き領域は複数の領域を含む構成とする。図9では、空き領域として、第1の空き領域と第2の空き領域を備える構成を示している(図9(a))。
この構成では、空き領域から受信バッファへの切り替えを段階的に行う。例えば、第1段階において第1の空き領域を受信バッファに切り替え、次の第2段階において第2の空き領域を受信バッファに切り替えることで段階的に受信バッファのバッファサイズを拡大する。また、受信バッファのバッファサイズを縮小する場合には、第1段階において受信バッファに第2の空き領域(あるいは第1の空き領域)を設定し、次の第2段階において第1の空き領域(あるいは第2の空き領域)を設定することで段階的に受信バッファのバッファサイズを変更する。
図9(b)〜図9(d)は、受信バッファを段階的に拡大する例を示している。ここでは、はじめに通信用バッファは受信バッファと、第1の空き領域と第2の空き領域を含む空き領域とを備えるものとする(b)。この状態において、通信装置は、制御フロー無しの指示を受けると、第1の空き領域を受信バッファに切り替えて受信バッファのバッファサイズを拡大する。この第1回目のバッファサイズの拡大によって、通信バッファは、拡大された受信バッファと第2の空き領域とを備えることになる(c)。
さらに、通信装置は、2回目の制御フロー無しの指示を受けると、第2の空き領域を受信バッファに切り替えて受信バッファのバッファサイズをさらに拡大する。この第2回目のバッファサイズの拡大によって、通信バッファは、さらに拡大された受信バッファを備えることになる。(d)。
受信バッファのバッファサイズを縮小する場合には、制御フロー有りの指示を複数回用いて段階的に空き領域を設定することによって行うことができる。なお、この制御フロー無しの指示および制御フロー有りの指示を受けた回数は、図2中のフロー制御カウンタ17に計数することができる。制御部16は、このフロー制御カウンタ17に計数される数値を参照することで、受信バッファの変更状態を確認することができる。また、フロー制御カウンタ17の計数値と、受信した制御フローの指示が制御フロー無しあるいは制御フロー有りの何れであるかによって、受信バッファのバッファサイズを必要に応じて変更自在とすることができる。
このように、空き領域を複数の領域を含む構成とし、この複数の領域を用いて段階的に空き領域と受信バッファとの間で切り替えを行うことによって、受信バッファのバッファサイズの段階的な変更を可能とすることができ、これによって、空き領域を、即時実行を要するデータやコマンドについて即時性や重要性に応じて段階的に使用することができる。
本発明の態様によれば、受信バッファのサイズをホスト装置からの制御フローの有無を定める指示などのプロトコル指定によって変更し、受信バッファのバッファフル状態であっても、例えば、POSシステムにおいてドロワコマンドやエラー解除コマンドを受け付けることができる。
本発明によるUSB接続によるホスト装置と通信装置との関係を説明するための図である。 本発明によるUSB接続によるホスト装置と通信装置との関係、および通信装置の概略構成を説明するための図である。 本発明の受信バッファのバッファサイズの変更を説明するための図である。 本発明のホスト装置と通信装置へ間の通信動作を説明するための動作図である。 本発明のホスト装置と通信装置へ間の通信動作を説明するためのフローチャートである。 本発明のホスト装置と通信装置へ間の通信動作を説明するためのフローチャートである。 本発明のホスト装置と通信装置へ間の通信動作を説明するための動作状態図である。 本発明のホスト装置と通信装置へ間の通信動作を説明するための動作状態図である。 本発明の複数の領域を有する空き領域を説明するための図である。 従来のホスト装置とプリンタとの間の関係を説明するための図である。 シリアルI/Fによるデータのフロー制御を説明するためのプリンタ側のフローチャートである。 USBインターフェースによるホストと周辺機器との間の通信状態を説明するための図である。
符号の説明
10 通信装置
11 通信インターフェースポート
12 通信バッファ
13 送信バッファ
14 解析部
15 指示解析部
16 制御部
17 フロー制御カウンタ
20 プリンタ
21 インターフェース
22 プリンタバッファ
23 プリンタ部
24 プリンタ機構
30 表示装置
31 インターフェース
32 表示部
40 キャッシュドロワ
41 インターフェース
42 キャッシュドロワ部
100 ホスト装置
101 基本オペレーティングシステム
102 アプリケーションソフトウエア
103 POS用オペレーティングシステム
103a 印刷用ドライバ
103b 表示用ドライバ
103c ドロワ用ドライバ
103d 制御用オペレーティングシステム
104 USBプリンタ用ドライバ
105 シリアルI/Fドライバ
106 USBバスドライバ
201 プリンタ
202 アプリケーション・プログラム
203 アプリケーション・プログラム・インターフェース
204 USBプリンタクラスドライバ
205 シリアルI/Fドライバ
206 USBバスドライバ
207 パラレルI/Fドライバ
208 RS232
209 IEEE1284

Claims (9)

  1. ホスト装置との間をUSBバスで接続し、USB接続のエンドポイントを構成する通信用バッファと、
    USB仮想シリアルによってホスト装置の指示を入力する制御部とを備え、
    前記通信用バッファは、受信データを格納する受信バッファを備え、
    前記指示はホスト装置と通信装置との間のシリアルインターフェースプロトコルによるフロー制御の有効無効を定める指定を指示するものであり、
    前記制御部は、
    ホスト装置側からUSB仮想シリアルによって送られるフロー制御の有効又は無効の指定に基づいて、
    前記指定が前記フロー制御を無効とする指定である場合には、前記受信バッファの受信バッファサイズを拡大し、
    前記指定が前記フロー制御を有効とする指定である場合には、前記受信バッファの受信バッファサイズを縮小して、受信バッファの受信バッファサイズを変更することを特徴とする、通信装置。
  2. 前記通信用バッファは、ソフト上で分離および結合を自在とする複数の領域を含む記憶領域を備え、
    前記制御部は、前記複数の領域の一部を受信バッファ、残余の領域を空き領域として領域を管理し、
    前記フロー制御を無効とする指定に基づいて、受信バッファと空き領域をソフト的に結合して空き領域を受信バッファに組み込むことにより受信バッファサイズを拡大し、
    前記フロー制御を有効とする指定に基づいて、受信バッファと空き領域とをソフト的に分離することにより受信バッファサイズを縮小することを特徴とする、請求項1に記載の通信装置。
  3. 前記受信バッファに格納される格納データを解析する解析部と、
    当該解析部で解析したコマンドを転送する転送部とを備え、
    当該転送部は、前記解析部の解析で得られたコマンドをUSBインターフェースを通して接続される外部装置に転送することを特徴とする、請求項1又は2に記載の通信装置。
  4. 前記受信バッファに格納される格納データを解析する解析部と、プリンタバッファを備え、
    前記プリンタバッファは、前記解析部で解析して得られた印字データを格納することを特徴とする、請求項1又は2に記載の通信装置。
  5. USB接続されるホスト装置と通信装置との間のUSB仮想シリアルによる通信において、
    前記通信装置において、
    ホスト装置と通信装置との間のシリアルインターフェースプロトコルによるフロー制御の有効無効を定める指示をホスト装置から入力し、
    前記指示がフロー制御を無効とする指示である場合には受信バッファサイズを拡大し、
    前記指示がフロー制御を有効とする指示である場合には受信バッファサイズを縮小することによって、
    通信装置が備える通信用バッファの受信データを格納する受信バッファの受信バッファサイズを変更することを特徴とする、通信制御方法。
  6. 前記通信用バッファは、ソフト上で分離および結合を自在とする複数の領域を含む記憶領域を備え、
    前記複数の領域の一部を受信バッファ、残余の領域を空き領域とし、
    前記受信バッファと前記空き領域をソフト上で結合して当該空き領域を受信バッファに組み込むことにより受信バッファサイズを拡大し、
    受信バッファと前記空き領域とをソフト上で分離することにより受信バッファサイズを縮小することを特徴とする、請求項5に記載の通信制御方法。
  7. 前記複数の領域の割合は、ホスト装置側からの指示により設定自在であることを特徴とする、請求項6に記載の通信制御方法。
  8. 前記空き領域は複数の領域を含み、当該複数の領域から選択した任意の個数の領域を受信バッファと結合し、受信バッファのサイズを選択的に拡大することを特徴とする、請求項6又は7に記載の通信制御方法。
  9. 請求項1から4の何れか一つに記載のプリンタ通信装置を備えるプリンタであって、
    受信バッファに格納される格納データを解析する解析部と、
    印字を行うプリンタ機構と、
    前記プリンタ機構の印字に用いる印字データを格納するプリンタバッファとを備え、
    前記制御部は、
    前記解析部により得られた印字データをプリンタバッファに格納し、
    解析部により得られたコマンドによりプリンタ機構を駆動制御することを特徴とする、通信装置を備えるプリンタ。
JP2006186910A 2006-07-06 2006-07-06 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ Expired - Fee Related JP4066383B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006186910A JP4066383B2 (ja) 2006-07-06 2006-07-06 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ
US11/822,193 US7761620B2 (en) 2006-07-06 2007-07-03 Communications device, and communications method for enabling reception of real-time execution commands when a receive buffer is full

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006186910A JP4066383B2 (ja) 2006-07-06 2006-07-06 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ

Publications (2)

Publication Number Publication Date
JP2008015823A JP2008015823A (ja) 2008-01-24
JP4066383B2 true JP4066383B2 (ja) 2008-03-26

Family

ID=38920305

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006186910A Expired - Fee Related JP4066383B2 (ja) 2006-07-06 2006-07-06 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ

Country Status (2)

Country Link
US (1) US7761620B2 (ja)
JP (1) JP4066383B2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4941399B2 (ja) * 2008-04-25 2012-05-30 ブラザー工業株式会社 印刷装置
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) * 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US20110022769A1 (en) * 2009-07-26 2011-01-27 Cpo Technologies Corporation Translation USB Intermediate Device and Data Rate Apportionment USB Intermediate Device
JP5593682B2 (ja) * 2009-11-17 2014-09-24 セイコーエプソン株式会社 プリンター、プリンターの制御方法、及び、プログラム
US8954958B2 (en) * 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
JP5655453B2 (ja) * 2010-09-16 2015-01-21 セイコーエプソン株式会社 電子機器、電子機器の制御方法、及び、プログラム
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US9680773B1 (en) * 2011-09-26 2017-06-13 Altera Corporation Integrated circuit with dynamically-adjustable buffer space for serial interface
US9052863B2 (en) 2012-08-14 2015-06-09 Seiko Epson Corporation ePOS printing
US9280305B2 (en) * 2013-01-02 2016-03-08 Seiko Epson Corporation Client device using a markup language to control a periphery device via a printer
US9323502B2 (en) * 2013-03-15 2016-04-26 Nvidia Corporation System, method, and computer program product for altering a line of code
US9294584B2 (en) * 2013-06-19 2016-03-22 Cisco Technology, Inc. Transporting serially over TCP/IP using raw TCP encapsulation
JP6497883B2 (ja) * 2014-09-26 2019-04-10 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
WO2016132428A1 (ja) * 2015-02-16 2016-08-25 株式会社日立製作所 ストレージ装置
US10140243B2 (en) 2015-12-10 2018-11-27 Qualcomm Incorporated Enhanced serial peripheral interface with hardware flow-control
JP7006106B2 (ja) * 2017-10-04 2022-01-24 セイコーエプソン株式会社 電子機器、及び、制御方法
US20200153593A1 (en) * 2018-11-12 2020-05-14 Qualcomm Incorporated Reducing latency on long distance point-to-point links
JP2022041216A (ja) * 2020-08-31 2022-03-11 ブラザー工業株式会社 画像形成装置及び画像形成システム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179661A (en) * 1989-10-30 1993-01-12 Hayes Microcomputer Products, Inc. Method and apparatus for serial data flow control
IL100127A0 (en) * 1991-03-11 1992-08-18 Future Domain Corp Scsi controller
JPH04336357A (ja) 1991-05-14 1992-11-24 Fujitsu Ltd 非同期転送用バッファのアロケーション方式
JPH10333856A (ja) 1997-06-04 1998-12-18 Seiko Epson Corp 通信端末およびその制御方法、並びに当該制御プログラムが記録されたコンピュータ読み取り可能な記録媒体
US6031821A (en) * 1997-08-19 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for generating a pause frame in a buffered distributor based on lengths of data packets distributed according to a round robin repeater arbitration
US6081854A (en) * 1998-03-26 2000-06-27 Nvidia Corporation System for providing fast transfers to input/output device by assuring commands from only one application program reside in FIFO
US6065071A (en) * 1998-03-26 2000-05-16 Nvidia Corporation Method and apparatus for trapping unimplemented operations in input/output devices
JP2000207142A (ja) 1999-01-14 2000-07-28 Nec Corp 印刷デ―タ転送システム及びその転送方法
JP4441967B2 (ja) 2000-01-18 2010-03-31 セイコーエプソン株式会社 インターフェース装置およびその制御方法
US6389489B1 (en) * 1999-03-17 2002-05-14 Motorola, Inc. Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
CA2394923A1 (en) * 1999-12-14 2001-06-21 General Instrument Corporation Hardware filtering of input packet identifiers for an mpeg re-multiplexer
JP2001217981A (ja) 2000-02-01 2001-08-10 Murata Mach Ltd 通信端末装置
JP4553279B2 (ja) 2000-03-09 2010-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送システム、データ転送端末、コントローラ、およびインターフェイス方法
JP2001265543A (ja) 2000-03-17 2001-09-28 Seiko Epson Corp 印刷装置、インターフェース装置、これらの制御方法
US6987775B1 (en) * 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
CN1204722C (zh) * 2002-01-26 2005-06-01 深圳市朗科科技有限公司 一种用于数据处理系统的无线数据通信方法及装置
JP2003316712A (ja) 2002-04-22 2003-11-07 Canon Inc 画像処理装置及び通信制御方法
JP2004078823A (ja) * 2002-08-22 2004-03-11 Oki Data Corp 画像形成システム及び画像形成装置
US7272675B1 (en) * 2003-05-08 2007-09-18 Cypress Semiconductor Corporation First-in-first-out (FIFO) memory for buffering packet fragments through use of read and write pointers incremented by a unit access and a fraction of the unit access
JP2004334798A (ja) 2003-05-12 2004-11-25 Canon Inc 通信制御システム、通信制御方法、通信制御用プログラム及び記憶媒体
JP2005018638A (ja) 2003-06-27 2005-01-20 Seiko Epson Corp パラレル通信制御装置及びパラレル通信制御方法
JP2005117422A (ja) 2003-10-08 2005-04-28 Murata Mach Ltd 通信装置
JP4291664B2 (ja) * 2003-10-14 2009-07-08 株式会社日立製作所 通信バッファ予約機能を備えるストレージ装置およびシステム
JP2005202794A (ja) 2004-01-16 2005-07-28 Ricoh Co Ltd データ通信システム
CN1981510B (zh) * 2004-07-08 2011-04-13 佳能株式会社 图像处理装置及其控制方法
EP1888341A1 (en) * 2005-05-25 2008-02-20 Agfa Graphics Nv Image printing method and system for improving image quality in dot matrix printer

Also Published As

Publication number Publication date
US7761620B2 (en) 2010-07-20
JP2008015823A (ja) 2008-01-24
US20080010389A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
JP4066383B2 (ja) 通信装置および通信制御方法、並びに当該通信装置を備えたプリンタ
KR100456180B1 (ko) 주변 기기 및 그 제어 방법
US7633856B2 (en) Multi-node system, internodal crossbar switch, node and medium embodying program
JP4560917B2 (ja) プリンタ及びその制御方法
JP4408590B2 (ja) 印刷システム及び印刷制御装置及び方法
JP2011016376A (ja) 通信端末装置、及び受信データの処理方法
JP3789062B2 (ja) 情報処理装置およびデータ処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体
JP2003288317A (ja) 端数ブロックデータ転送を検出し補償するシステムおよび方法
JP2008176574A (ja) 画像処理システム、画像処理システムの制御方法、命令データ供給装置、命令データ供給装置の制御方法及びプログラム
JP5106058B2 (ja) 印刷制御装置の異常を判断して印刷装置を復旧する印刷システム
JP5775367B2 (ja) 情報処理装置及びその制御方法と、ミラーリングシステム及びraid制御装置
US20050141032A1 (en) Image forming apparatus and print system
JP3856341B2 (ja) インタフェース制御方式
JPH09179809A (ja) 論理チャネル利用制御方法
US20180039454A1 (en) Information processing apparatus and method of controlling information processing apparatus
JP3846089B2 (ja) インターフェース装置、その制御方法および情報記録媒体
JP4320816B2 (ja) プリンタ
JP5792962B2 (ja) 情報処理装置、その制御方法及びプログラム
JPH1091567A (ja) 入出力インタフェース延長装置
KR100594734B1 (ko) 네트워크 프린팅 시스템 및 그 프린팅 제어방법
JPH11296317A (ja) データ処理装置、データ処理装置の制御方法
JP2024051441A (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
JP2000099451A (ja) インターフェース制御装置
JP2679661B2 (ja) Scsiシステム
JP6064305B2 (ja) 印刷制御装置よびプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071227

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130118

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150118

Year of fee payment: 7

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees