特許第6556646号(P6556646)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ セイコーインスツル株式会社の特許一覧

<>
  • 特許6556646-出力制御装置、及び制御方法 図000002
  • 特許6556646-出力制御装置、及び制御方法 図000003
  • 特許6556646-出力制御装置、及び制御方法 図000004
  • 特許6556646-出力制御装置、及び制御方法 図000005
  • 特許6556646-出力制御装置、及び制御方法 図000006
  • 特許6556646-出力制御装置、及び制御方法 図000007
  • 特許6556646-出力制御装置、及び制御方法 図000008
  • 特許6556646-出力制御装置、及び制御方法 図000009
  • 特許6556646-出力制御装置、及び制御方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6556646
(24)【登録日】2019年7月19日
(45)【発行日】2019年8月7日
(54)【発明の名称】出力制御装置、及び制御方法
(51)【国際特許分類】
   G06F 3/12 20060101AFI20190729BHJP
   B41J 29/38 20060101ALI20190729BHJP
【FI】
   G06F3/12 303
   G06F3/12 329
   G06F3/12 331
   G06F3/12 336
   G06F3/12 359
   B41J29/38 Z
【請求項の数】9
【全頁数】16
(21)【出願番号】特願2016-39183(P2016-39183)
(22)【出願日】2016年3月1日
(65)【公開番号】特開2017-156962(P2017-156962A)
(43)【公開日】2017年9月7日
【審査請求日】2019年1月8日
(73)【特許権者】
【識別番号】000002325
【氏名又は名称】セイコーインスツル株式会社
(74)【代理人】
【識別番号】100142837
【弁理士】
【氏名又は名称】内野 則彰
(74)【代理人】
【識別番号】100166305
【弁理士】
【氏名又は名称】谷川 徹
(72)【発明者】
【氏名】新 純治
【審査官】 白石 圭吾
(56)【参考文献】
【文献】 特開平11−298505(JP,A)
【文献】 特開平09−162907(JP,A)
【文献】 特開2005−173846(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/09−3/12
H04N 1/00
B41J 5/00−5/52;21/00−21/18
B41J 29/00−29/70
G03G 13/34;15/00;15/36;21/00;21/02;21/14;21/20
G06F 13/00
H04L 13/00−13/18
(57)【特許請求の範囲】
【請求項1】
一本の通信経路を用いて出力装置と通信する通信部と、
前記通信部を介して前記出力装置から受信した第1データが逐次に格納される第1バッファ部を定期的に確認し、前記第1バッファ部に前記第1データが格納されている場合、格納されている前記第1データを第2バッファ部に蓄積するとともに、前記第1データに第2データが含まれている場合、前記第2データをデータ格納部に格納するデータ格納制御部と、
第1機能が実行された場合、前記第2バッファ部に蓄積されている前記第1データを第3バッファ部に格納し、格納した前記第1データを前記第1機能のデータとして取得する第1機能制御部と、
第2機能が実行された場合、当該実行された時点以降に前記第2バッファ部に蓄積された前記第1データを前記第3バッファ部に格納し、格納した前記第1データを前記第2機能のデータとして取得する第2機能制御部と、
を備える出力制御装置。
【請求項2】
前記データ格納制御部は、
前記第1バッファ部から前記第2バッファ部に蓄積する前記第1データに前記第2データが含まれているか否かを解析するデータ解析部、を備え、
前記データ解析部の解析結果に基づいて、前記第1データに前記第2データが含まれている場合、前記第2データを前記データ格納部に格納する、
請求項1に記載の出力制御装置。
【請求項3】
前記第2機能制御部は、
前記第2機能が実行された時点以降に前記第2バッファ部に蓄積された前記第1データを、指定された最大データ数まで前記第3バッファ部に格納し、格納した前記第1データを前記第2機能のデータとして取得する
請求項1または請求項2に記載の出力制御装置。
【請求項4】
前記第2データは、前記出力装置のステータス情報を含む、
請求項1から請求項3のいずれか一項に記載の出力制御装置。
【請求項5】
前記第1機能は、前記出力装置との通信開始または前回の前記第1データの取得から前記第1機能が実行されるまでの前記第1データの取得する機能である、
請求項1から請求項4のいずれか一項に記載の出力制御装置。
【請求項6】
前記第2機能は、前記出力装置において設定されている情報取得する機能である、
請求項1から請求項5のいずれか一項に記載の出力制御装置。
【請求項7】
前記出力装置は、前記通信部を介して送信した印刷データを受信し、受信した印刷データに基づいて印刷するプリンタ装置である、
請求項1から請求項6のいずれか一項に記載の出力制御装置。
【請求項8】
前記第2バッファ部は、リングバッファである、
請求項1から請求項7のいずれか一項に記載の出力制御装置。
【請求項9】
一本の通信経路を用いて出力装置と通信する通信部を備えた出力制御装置における制御方法であって、
前記通信部を介して前記出力装置から受信した第1データが逐次に格納される第1バッファ部を定期的に確認し、前記第1バッファ部に前記第1データが格納されている場合、格納されている前記第1データを第2バッファ部に蓄積するステップと、
前記第1データに第2データが含まれている場合、前記第2データをデータ格納部に格納するステップと、
第1機能が実行された場合、前記第2バッファ部に蓄積されている前記第1データを第3バッファ部に格納し、格納した前記第1データを前記第1機能のデータとして取得するステップと、
第2機能が実行された場合、当該実行された時点以降に前記第2バッファ部に蓄積された前記第1データを前記第3バッファ部に格納し、格納した前記第1データを前記第2機能のデータとして取得するステップと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、出力制御装置、及び制御方法に関する。
【背景技術】
【0002】
一般的にプリンタは、ホスト装置との双方向通信が可能に構成され、ホスト装置からのコマンドや印刷データをインタフェース(I/F)を介して受け取り印刷を行う。例えばプリンタは、これらのデータを受信するためのバッファを備えており、ある程度の量の情報をそのバッファにプールしながら印刷処理を実行する(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−127508号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、上述したようなプリンタとホスト装置との通信においては、ホスト装置がプリンタからの受信データを取得する受信データ取得機能、ホスト装置がプリンタへ取得要求(コマンド送信)をすることによりプリンタから特定の情報を取得する情報取得機能、プリンタのステータスの監視機能等の機能、などが必要となる。例えば、これらの3つの機能を実現するために、TCP(Transmission Control Protocol)などを用いた通信であれば複数本の通信経路(ポート)を設けて各機能でそれぞれの通信経路を使用する方法が考えられる。しかしながら、例えば携帯端末等で用いられるBluetooth(登録商標)通信機能などのように、携帯端末向けOS(Operating System)で提供されるSDK(Software Development Kit)の通信用API(Application Programming Interface)では、一本の通信経路しか提供されないケースがある。そのため、プリンタ(印刷装置)のような出力装置と一本の通信経路(ポート)で複数の機能を実現可能とすることが求められていた。
【0005】
そこで、本発明は上述の事情を鑑みてなされたものであり、出力装置との通信において一本の通信経路(ポート)で複数の機能を実現可能な出力制御装置、及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様は、一本の通信経路を用いて出力装置と通信する通信部と、前記通信部を介して前記出力装置から受信した第1データが逐次に格納される第1バッファ部を定期的に確認し、前記第1バッファ部に前記第1データが格納されている場合、格納されている前記第1データを第2バッファ部に蓄積するとともに、前記第1データに第2データが含まれている場合、前記第2データをデータ格納部に格納するデータ格納制御部と、第1機能が実行された場合、前記第2バッファ部に蓄積されている前記第1データを第3バッファ部に格納し、格納した前記第1データを前記第1機能に対する取得値として返す第1機能制御部と、第2機能が実行された場合、当該実行された時点以降に前記第2バッファ部に蓄積された前記第1データを前記第3バッファ部に格納し、格納した前記第1データを前記第2機能に対する取得値として返す第2機能制御部と、を備える出力制御装置である。
【0007】
また、本発明の他の態様は、上記出力制御装置において、前記データ格納制御部は、前記第1バッファ部から前記第2バッファ部に蓄積する前記第1データに前記第2データが含まれているか否かを解析するデータ解析部、を備え、前記データ解析部の解析結果に基づいて、前記第1データに前記第2データが含まれている場合、前記第2データを前記データ格納部に格納する。
【0008】
また、本発明の他の態様は、上記出力制御装置において、前記第2機能制御部は、前記第2機能が実行された時点以降に前記第2バッファ部に蓄積された前記第1データを、指定された最大データ数まで前記第3バッファ部に格納し、格納した前記第1データを前記第2機能に対する取得値として返す。
【0009】
また、本発明の他の態様は、上記出力制御装置において、前記第2データは、前記出力装置のステータス情報を含む。
【0010】
また、本発明の他の態様は、上記出力制御装置において、前記第1機能は、前記出力装置との通信開始または前回の前記第1データの取得から前記第1機能が実行されるまでの前記第1データの取得する機能である。
【0011】
また、本発明の他の態様は、上記出力制御装置において、前記第2機能は、前記出力装置において設定されている情報の取得する機能である。
【0012】
また、本発明の他の態様は、上記出力制御装置において、前記出力装置は、前記通信部を介して送信した印刷データを受信し、受信した印刷データに基づいて印刷するプリンタ装置である。
【0013】
また、本発明の他の態様は、上記出力制御装置において、前記第2バッファ部は、リングバッファである。
【0014】
また、本発明の他の態様は、一本の通信経路を用いて出力装置と通信する通信部を備えた出力制御装置における制御方法であって、前記通信部を介して前記出力装置から受信した第1データが逐次に格納される第1バッファ部を定期的に確認し、前記第1バッファ部に前記第1データが格納されている場合、格納されている前記第1データを第2バッファ部に蓄積するステップと、前記第1データに第2データが含まれている場合、前記第2データをデータ格納部に格納するステップと、第1機能が実行された場合、前記第2バッファ部に蓄積されている前記第1データを第3バッファ部に格納し、格納した前記第1データを前記第1機能に対する取得値として返すステップと、第2機能が実行された場合、当該実行された時点以降に前記第2バッファ部に蓄積された前記第1データを前記第3バッファ部に格納し、格納した前記第1データを前記第2機能に対する取得値として返すステップと、を含む制御方法である。
【発明の効果】
【0015】
本発明によれば、出力装置との通信において一本の通信経路(ポート)で複数の機能を実現できる。
【図面の簡単な説明】
【0016】
図1】実施形態による印刷システムの構成例を示す図。
図2】実施形態によるホスト装置のハードウェア構成の一例を示す図。
図3】実施形態による出力制御装置及び印刷装置の構成の一例を示す構成図。
図4】実施形態によるデータ格納処理の概要を模式的に表した説明図。
図5】実施形態によるデータ格納処理の一例を示すフローチャート。
図6】実施形態による受信データ取得処理の概要を模式的に表した説明図。
図7】実施形態による受信データ取得処理の一例を示すフローチャート。
図8】実施形態による情報取得処理の概要を模式的に表した説明図。
図9】実施形態による情報取得処理の一例を示すフローチャート。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態について、図面を参照しながら説明する。
(印刷システム1の構成)
図1は、本実施形態による印刷システム1の構成例を示す図である。印刷システム1は、ホスト装置10と、印刷装置20とを備えている。ホスト装置10は、PC(Personal Computer)、タブレットPC、スマートフォンやフィーチャーフォン等の携帯電話機、携帯情報端末(PDA:Personal Digital Assistant)等である。ホスト装置10は、出力制御装置100を備え、印刷装置20と通信接続することにより、印刷装置20における印刷処理を制御する。例えば、出力制御装置100は、Bluetooth(登録商標)による1本の通信経路(ポート)を用いて印刷装置20と通信接続し、印刷装置20との間の通信を制御する。印刷装置20は、ホスト装置10の制御に基づいて印刷処理を行うプリンタである。
【0018】
図2は、ホスト装置10のハードウェア構成の一例を示す概略構成図である。この図に示すように、ホスト装置10は、入力部11と、表示部12と、通信部13と、記憶部14と、CPU15とを備え、バス16を介して接続されている。
【0019】
入力部11は、ユーザの操作に応じてユーザの操作入力を受付ける入力デバイスである。入力部11には、例えば、キーボードやボタン、タッチパネル、マウス、マイクロホン等を適用できる。
【0020】
表示部12は、例えば、LCD(Liquid Crystal Display)、有機EL(Electro Luminescence)ディスプレイ等を含んで構成され、画像、映像、文字等を表示する。
【0021】
通信部13は、外部の装置と有線または無線で通信する通信インターフェースを備えている。例えば、通信部13は、通信インターフェースとしてBluetooth(登録商標)を備え、印刷装置20と通信する。なお、通信部13は、通信インターフェースとしてUSB(Universal Serial Bus)、RS−232C(Recommended Standard 232 version C)、等を備え、印刷装置20と通信してもよい。
【0022】
記憶部14は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュROM、HDD(Hard Disk Drive)等の記録媒体またはこれらの組合せを用いて構成され、ホスト装置10が備える各部を制御するためのプログラム(例えば、CPU15に基本動作を行わせるためのOS(Operating System))、インストールされたアプリケーションプログラム、各種情報等を記憶する。また、記憶部14は、印刷装置20との通信処理を制御するためのプログラム(以下「SDK」(Software Development Kit)ともいう)を記憶している。
【0023】
CPU15は、ホスト装置10の制御中枢として機能する中央情報処理装置を備えており、ホスト装置10が備える各部を制御する。例えば、CPU15は、記憶部14に記憶されているOSに基づく基本動作の処理を実行するとともに、インストールされているアプリケーションプログラムに基づく処理を実行する。また、CPU15は、OS上で動作可能な各種のアプリケーションの機能をOSを介して実行する処理を行う。また、CPU15は、印刷装置20との通信処理を制御するSDKに基づいて、出力制御装置100の機能を実行する。
【0024】
図3は、出力制御装置100及び印刷装置20の構成の一例を示す構成図である。
まず、印刷装置20の概略構成について説明する。印刷装置20は、受信バッファ201と、プリンタコマンド解析部202と、印刷部203と、印刷設定等情報保持部204と、ステータス生成部205と、送信バッファ206とを備えている。
【0025】
受信バッファ201は、出力制御装置100から受信したデータやコマンドを格納するバッファである。プリンタコマンド解析部202は、受信バッファ201に格納されたコマンドを解析する。例えば、プリンタコマンド解析部202は、受信バッファ201に格納されたコマンドが印刷開始コマンドであった場合には、印刷開始コマンドを印刷部に出力する。また、プリンタコマンド解析部202は、受信バッファ201に格納されたコマンドが印刷装置20の特定の情報の取得を要求する情報取得要求コマンドであった場合には、情報取得要求コマンドを印刷設定等情報保持部204に出力する。
【0026】
印刷部203は、印刷開始コマンドを取得すると、印刷開始コマンドに続けて出力制御装置100から送信される印刷データに基づいて印刷媒体へ印刷する。また、印刷部203は、印刷処理の実行状態を逐次ステータス生成部205に出力する。なお、印刷部203が印刷する印刷媒体は、一般的には紙であるが、印刷できるものであればいずれの材質であってもよい。
【0027】
印刷設定等情報保持部204は、印刷設定等の情報を保持する。そして、印刷設定等情報保持部204は、情報取得要求コマンドを取得すると、保持している印刷設定等の情報のうち、当該コマンドにより要求された情報を送信バッファ206へ格納する。ステータス生成部205は、印刷部203から出力される印刷処理の実行状態に基づいて、印刷装置20の状態を示すステータス情報を生成し、予め設定されたタイミングで、定期的に送信バッファ206へ格納する。ステータス情報とは、例えば、印刷待ち、印刷中、印刷終了、エラーなどの各状態を示す情報である。なお、送信バッファ206に格納された情報等を含むデータは、逐次に出力制御装置100へ送信される。
【0028】
次に、出力制御装置100の構成について説明する。出力制御装置100は、送信データ生成部101と、送信バッファ102と、受信バッファ103と、受信データ格納バッファ104と、取得用バッファ105と、ステータス情報格納部106と、制御部110とを備えている。
【0029】
送信データ生成部101は、印刷装置20へ送信する送信データを生成する。例えば、送信データ生成部101は、印刷開始コマンド、情報取得要求コマンド等の送信データを生成して、送信バッファ102に格納する。送信バッファ102に格納された送信データは、逐次に印刷装置20へ送信される。
【0030】
受信バッファ103は、印刷装置20から受信した受信データを逐次に格納するバッファである。受信データ格納バッファ104は、受信バッファ103に格納された受信データの蓄積用バッファである、この受信データ格納バッファ104は、リングバッファ(環状バッファ)である。取得用バッファ105は、受信データ格納バッファ104に蓄積された受信データをホスト装置10で利用可能なように受け渡すための取得用バッファである。ステータス情報格納部106は、印刷装置20から受信したステータス情報を格納する。
【0031】
制御部110は、印刷装置20から受信する受信データを取得する受信データ取得機能(第1機能)、印刷装置20から特定の情報を取得する情報取得機能(第2機能)、及び印刷装置20のステータス情報監視機能(第3機能)を実行する。
【0032】
受信データ取得機能(第1機能)は、印刷装置20との通信開始または前回の受信データ取得から、現在までの受信データを取得する機能である。なお、取得するデータサイズはホスト装置10側で任意に定めることができる。受信データには、印刷装置20の各種処理の実行を示す応答や印刷装置20のステータス情報が含まれており、障害発生時の原因解析にも用いられる。そのため、この受信データ取得機能(第1機能)の目的は、印刷装置20から受信データを抜けが無いように取得することである。
【0033】
情報取得機能(第2機能)は、ホスト装置10から印刷装置20へ情報取得要求コマンドを送信することをトリガとして、印刷装置20において設定されている特定の情報を取得する機能である。なお、送信する情報取得要求コマンド、取得するデータサイズ、及び取得の際の最大待ち時間は、ホスト装置10側で任意に定めることができる。この情報取得機能(第2機能)の目的は、印刷装置20から特定の情報(印刷装置20の設定情報、保持データ情報など)を、印刷装置20からホスト装置10へ定常的に送信しているデータ(処理実行を示す応答、ステータスを示す応答情報等)とは分けて取得することである。分けて取得しなかった場合、ホスト装置10から印刷装置20への送信要求後、受信データ取得機能(第1の機能)にて取得した受信データから所望のデータを抽出しなければならないため、ホスト装置10での工数が増加してしまうことになる。
【0034】
ステータス情報監視機能(第3機能)は、印刷装置20のステータスを常時監視する機能である。このステータス情報監視機能(第3機能)の目的は、ホスト装置10からの送信要求なしに印刷装置20がホスト装置10へ送信するステータス情報をリアルタイムに取得して、ホスト装置10へ通知することである。
【0035】
図示する制御部110は、データ格納制御部111と、データ解析部112と、第1機能制御部113と、第2機能制御部114とを備えている。
データ格納制御部111は、受信データを受信データ格納バッファ104に格納して蓄積するとともに、ステータス情報をステータス情報格納部106に格納する処理を実行する。具体的には、データ格納制御部111は、受信バッファ103を一定周期でポーリングして定期的に確認することで、受信バッファ103に受信データが格納されているか否かを判定する。そして、データ格納制御部111は、受信バッファ103に受信データが格納されていると判定した場合、格納されている受信データを受信データ格納バッファ104に格納し蓄積する。
【0036】
また、データ格納制御部111は、受信バッファ103から受信データ格納バッファ104に蓄積する受信データにステータス情報が含まれている場合、そのステータス情報をステータス情報格納部106に格納する。例えば、データ格納制御部111は、受信バッファ103から受信データ格納バッファ104に蓄積する受信データにステータス情報が含まれているか否かを解析するデータ解析部112を備えている。そして、データ格納制御部111は、データ解析部112の解析結果に基づいて、受信データにステータス情報が含まれていると判定した場合、そのステータス情報をステータス情報格納部106に格納する。このステータス情報格納部106に格納されたステータス情報を利用することで、ホスト装置10は、印刷装置20の状態を常時監視することができる(ステータス情報監視機能(第3機能))。なお、データ解析部112は、各受信データに付加されている識別子に基づいて、各受信データの情報の種類を解析することができる。例えば、各受信データには、情報の種類を示す識別子が含まれるヘッダ情報とフッタ情報とが付加されている。
【0037】
第1機能制御部113は、受信データ取得機能(第1機能)に関する処理を実行する。具体的には、第1機能制御部113は、受信データ取得機能(第1機能)が実行された場合、受信データ格納バッファ104に蓄積されている受信データを取得用バッファ105に格納し、格納した受信データを受信データ取得機能(第1機能)に対する取得値として返す。
【0038】
第2機能制御部114は、情報取得機能(第2機能)に関する処理を実行する。具体的には、第2機能制御部114は、情報取得機能(第2機能)が実行された場合、情報取得機能(第2機能)が実行された時点以降に受信データ格納バッファ104に蓄積された受信データを取得用バッファ105に格納し、格納した受信データを情報取得機能(第2機能)に対する取得値として返す。例えば、第2機能制御部114は、情報取得機能(第2機能)が実行された時点以降に受信データ格納バッファ104に蓄積された受信データを、指定された最大データ数まで取得用バッファ105に格納し、格納した受信データを情報取得機能(第2機能)に対する取得値として返す。
【0039】
(制御部110が実行する通信制御処理の動作)
次に、制御部110が実行する通信制御処理の動作について説明する。
まず、図4及び図5を参照して、受信データ及びステータス情報を格納するデータ格納処理について説明する。図4は、本実施形態によるデータ格納処理の概要を模式的に表した説明図である。また、図5は、本実施形態によるデータ格納処理の一例を示すフローチャートである。
【0040】
(ステップS11)出力制御装置100が通信開始から終了まで印刷装置20から受信した受信データは、逐次に受信バッファ103に格納される(図4の(1))。制御部110は、通信開始から終了まで受信バッファ103を一定周期でポーリングし、受信バッファ103に受信データが格納されているか否かを判定する。制御部110は、受信バッファ103に受信データが格納されていないと判定された場合(NO)、このステップS11を繰り返す。一方、制御部110は、受信バッファ103に受信データが格納されていないと判定された場合(NO)、ステップS12の処理に進む。
【0041】
(ステップS12)制御部110は、受信バッファ103に格納されている受信データにステータス情報が含まれているか否かを解析して判定する。制御部110は、受信データにステータス情報が含まれていると判定した場合(YES)、ステップS13の処理に進む。一方、制御部110は、受信データにステータス情報が含まれていないと判定した場合(NO)、ステップS14の処理に進む。
【0042】
(ステップS13)制御部110は、受信データに含まれているステータス情報をステータス情報格納部106に格納する(図4の(2))。そして、ステップS14の処理に進む。
【0043】
(ステップS14)制御部110は、受信バッファ103に格納されている受信データを受信データ格納バッファ104に格納する(図4の(3))。例えば、制御部110は、受信バッファ103に格納されている受信データのうちステップS12の解析が済んだ受信データを複製して格納し、格納したデータサイズ分「ポインタ1」を進める。ここで「ポインタ1」は、受信データを格納する際の開始位置を示している。制御部110は、受信バッファ103の受信データを「ポインタ1」の位置から格納し、格納した受信データの末尾に「ポインタ1」を移動する。そして、制御部110は、受信バッファ103をクリアし、空き状態にする。
【0044】
図4に示す例では、受信データ格納バッファ104において、P1が「ポインタ1」の位置を示しており、P2が「ポインタ2」の位置を示している。「ポインタ2」は、受信データ格納バッファ104において、受信データ取得機能(第1機能)により受信データを取得する際の開始位置を示している。まず、「ポインタ1」のP1の位置と「ポインタ2」のP2の位置とは同じ位置(例えば、前回格納され、受信データ取得機能(第1機能)により取得済みの受信データの末尾の位置)にあり、受信バッファ103から受信データが格納されると、格納したデータサイズ分「ポインタ1」がP1からP1’へ移動する。即ち、P1’の位置は、今回格納した受信データの末尾の位置である。これにより、制御部110は、受信バッファ103に格納された受信データを、「ポインタ1」を移動させながら順次「ポインタ1」の位置から格納することで受信データ格納バッファ104に蓄積する。
【0045】
(ステップS15)制御部110は、ステップS14における「ポインタ1」の移動において、「ポインタ1」が「ポインタ2」を越えたか否かを判定する。制御部110は、「ポインタ1」が「ポインタ2」を越えていないと判定した場合(NO)、ステップS11に処理を戻し、受信バッファ103に受信データが格納されているか否かの判定を行う。一方、制御部110は、「ポインタ1」が「ポインタ2」を越えたと判定した場合(YES)、制御部110は、ステップS16の処理に進む。
【0046】
(ステップS16)制御部110は、「ポインタ1」が「ポインタ2」を越えたと判定した場合、「ポインタ2」を「ポインタ1」の位置に移動する。即ち、制御部110は、「ポインタ1」に合わせて「ポインタ2」も移動させる。また、制御部110は、受信データ格納バッファ104の上限に達したことを示すフラグ(上限フラグ)を管理する。例えば、制御部110は、「ポインタ1」が「ポインタ2」を越えた場合には、受信データ格納バッファの上限フラグをONにする。そして、制御部110は、ステップS11に処理を戻す。
【0047】
次に、図6及び図7を参照して、受信データ取得機能(第1機能)による受信データ取得処理について説明する。図6は、本実施形態による受信データ取得処理の概要を模式的に表した説明図である。また、図7は、本実施形態による受信データ取得処理の一例を示すフローチャートである。
【0048】
(ステップS21)ホスト装置10において受信データ取得機能(第1機能)が実行されると、制御部110は、受信データ格納バッファ104の上限フラグがONであるか否かを判定する。上限フラグがOFFであると判定された場合(NO)、制御部110は、ステップS22の処理に進む。一方、上限フラグがONであると判定された場合(YES)、制御部110は、ステップS24の処理に進む。
【0049】
(ステップS22)上限フラグがOFFの場合、制御部110は、受信データ格納バッファ104に格納されている受信データを、「ポインタ2」から「ポインタ1」まで取得用バッファ105に格納する(図6の(4))。図6に示す例では、受信データ格納バッファ104において、P1’が「ポインタ1」の位置を示しており、P2が「ポインタ2」の位置を示している。まず、制御部110は、「ポインタ2」のP2の位置から「ポインタ1」のP1’までの受信データを、取得用バッファ105に格納する。そして、制御部110は、ステップS23の処理に進む。
【0050】
(ステップS23)制御部110は、「ポインタ2」をP2からP2’の位置に移動する。即ち、制御部110は、「ポインタ2」を「ポインタ1」の位置へ移動する。これにより、図4に示すデータ格納処理の模式図と同様に「ポインタ1」と「ポインタ2」とが同じ位置の状態となり、次に受信バッファ103から格納する受信データの格納位置と受信データを取得する際の開始位置とが定まる。そして、制御部110は、ステップS26の処理に進む。
【0051】
(ステップS24)上限フラグがONの場合、制御部110は、受信データ格納バッファ104に格納されている受信データを、「ポインタ2」から全て取得用バッファ105に格納する(図6の(4))。そして、制御部110は、ステップS25の処理に進む。
【0052】
(ステップS25)制御部110は、受信データ格納バッファの上限フラグをONからOFFに戻し、ステップS26の処理に進む。なお、取得用バッファ105は、受信データ取得機能(第1機能)の実行時に指定されたデータサイズを格納できるサイズが確保されるように、例えば関数の実行によって生成される。
【0053】
(ステップS26)制御部110は、取得用バッファ105に格納した受信データを、受信データ取得機能(第1機能)に対する取得値としてホスト装置10へ返し(図6の(5))、受信データ取得処理を終了する。
【0054】
次に、図8及び図9を参照して、情報取得機能(第2機能)による情報取得処理について説明する。図8は、本実施形態による情報取得処理の概要を模式的に表した説明図である。また、図9は、本実施形態による情報取得処理の一例を示すフローチャートである。
【0055】
(ステップS31)制御部110は、情報取得機能(第2機能)が実行されると、実行された時点の「ポインタ1」の位置に「ポインタ3」を移動する(図8の(1))。「ポインタ3」は、受信データ格納バッファ104において、情報取得機能(第2機能)により特定の情報を取得する際の開始位置を示している。図8に示す例において、P1が「ポインタ1」の位置を示し、P3が「ポインタ3」の位置を示している。そして、制御部110は、ステップS32の処理に進む。
【0056】
(ステップS32)制御部110は、実行された情報取得機能(第2機能)で指定された情報取得要求コマンドを送信データ生成部101に生成させ、送信バッファ102を介して印刷装置20へ送信する(図8の(2))。これにより、情報取得要求コマンドで特定される特定の情報が印刷装置20から受信バッファ103に格納され(図8の(3))、図4及び図5を参照して説明したデータ格納処理により受信データ格納バッファ104に蓄積される(図8の(4))。制御部110は、受信バッファ103から受信データを複製して受信データ格納バッファ104の「ポインタ1」の位置から格納し、格納したデータサイズ分「ポインタ1」を進める。図8に示す例では、「ポインタ3」のP3の位置と同じ位置にある「ポインタ1」が格納したデータサイズ分P1からP1’へ移動する。そして、制御部110は、ステップS33の処理に進む。
【0057】
(ステップS33)制御部110は、情報取得機能(第2機能)が実行されてから、指定された最大待ち時間が経過したか否かを判定する。制御部110は、指定された最大待ち時間が経過していないと判定した場合(NO)、ステップS34の処理に進む。一方、制御部110は、指定された最大待ち時間が経過したと判定した場合(YES)、ステップS38の処理に進む。
【0058】
(ステップS34)制御部110は、情報取得機能(第2機能)の実行開始後に受信した受信データのサイズが、指定されたデータサイズを超えるか否かを判定する。制御部110は、受信データのサイズが、指定されたデータサイズを超えたと判定した場合(YES)、ステップS38の処理に進む。一方、制御部110は、受信データのサイズが、指定されたデータサイズを超えていないと判定した場合(NO)、ステップS35の処理に進む。
【0059】
(ステップS35)指定された最大待ち時間が経過していないと判定しておらず、且つ受信データのサイズが、指定されたデータサイズを超えていない場合、制御部110は、指定されたデータサイズが受信データ格納バッファ104のサイズを超えるか否かを判定する。制御部110は、指定されたデータサイズが受信データ格納バッファ104のサイズを超えないと判定した場合(NO)、ステップS33に処理を戻す。一方、制御部110は、指定されたデータサイズが受信データ格納バッファ104のサイズを超えたと判定した場合(YES)、ステップS36の処理に進む。
【0060】
(ステップS36)制御部110は、情報取得機能(第2機能)の実行開始後で受信データ格納バッファ104が上限になったか否かを判定する。制御部110は、受信データ格納バッファ104が上限になっていないと判定した場合(NO)、ステップS33に処理を戻す。一方、制御部110は、受信データ格納バッファ104が上限になったと判定した場合(YES)、ステップS37の処理に進む。
【0061】
(ステップS37)制御部110は、受信データ格納バッファ104に格納されている受信データを、「ポインタ3」から全て取得用バッファ105に格納する(図8の(5))。そして、制御部110は、ステップS33に処理を戻す。
【0062】
つまり、情報取得機能(第2機能)の実行時に、受信データ格納バッファ104のサイズを越えるサイズが情報取得要求コマンドで要求する特定の情報のデータサイズとして指定された場合、「ポインタ1」が「ポインタ3」に追いついたときが、受信データ格納バッファ104のサイズ上限に達したとことになる。そのため、制御部110は、「ポインタ1」が「ポインタ3」に追いついたときには、受信データ格納バッファ104に格納されている受信データを全て取得用バッファ105に格納する。以降、制御部110は、指定されたデータサイズに達するまで、「ポインタ1」が「ポインタ3」に追いつく度に、受信データ格納バッファ104に格納されている受信データを全て取得用バッファ105に格納する処理を繰り返す。
【0063】
(ステップS38)制御部110は、情報取得機能(第2機能)が実行されてから、指定された最大待ち時間が経過した場合(ステップS33:YES)、または受信データのサイズが、指定されたデータサイズを超えた場合(ステップS34:YES)、受信データ格納バッファ104の受信データを、「ポインタ3」から「ポインタ1」まで取得用バッファ105に格納する(図8の(5))。そして、制御部110は、ステップS39の処理に進む。なお、取得用バッファ105は、情報取得機能(第2機能)の実行時に指定されたデータサイズを格納できるサイズが確保されるように、例えば関数の実行によって生成される。指定されたデータサイズが受信データ格納バッファ104のサイズ以上の場合もあるため、受信データ格納バッファ104のサイズ以上にも対応している。
【0064】
(ステップS39)制御部110は、取得用バッファ105に格納した受信データ(即ち、情報取得要求コマンドで指定した特定の情報)を、情報取得機能(第2機能)に対する取得値としてホスト装置10へ返し(図8の(6))、情報取得処理を終了する。
【0065】
以上説明してきたように、本実施形態による出力制御装置100は、通信部13と、データ格納制御部111と、第1機能制御部113と、第2機能制御部114とを備えている。通信部13は、一本の通信経路を用いて印刷装置20(出力装置の一例)と通信する。データ格納制御部111は、通信部13を介して印刷装置20から受信した受信データ(第1データ)が逐次に格納される受信バッファ103(第1バッファ部)を定期的に確認し、受信バッファ103に受信データが格納されている場合、格納されている受信データを受信データ格納バッファ104(第2バッファ部)に蓄積する。また、データ格納制御部111は、受信データにステータス情報(第2データ)が含まれている場合、そのステータス情報をステータス情報格納部106(データ格納部の一例)に格納する。また、第1機能制御部113は、受信データ取得機能(第1機能)が実行された場合、受信データ格納バッファ104に蓄積されている受信データを取得用バッファ105(第3バッファ部)に格納し、格納した受信データを上記受信データ取得機能(第1機能)に対する取得値として返す。一方、第2機能制御部114は、情報取得機能(第2機能)が実行された場合、当該実行された時点以降に受信データ格納バッファ104に蓄積された受信データを取得用バッファ105に格納し、格納した受信データを情報取得機能(第2機能)に対する取得値として返す。
【0066】
これにより、出力制御装置100は、一本の通信経路で印刷装置20との通信機能を実現できる。例えば、出力制御装置100は、印刷装置20と一本の通信経路で通信接続する場合であっても、印刷装置20から受信する受信データを取得する受信データ取得機能(第1機能)、印刷装置20から特定の情報を取得する情報取得機能(第2機能)、及び印刷装置20のステータス情報監視機能(第3機能)の3つの機能を実現することができる。例えば、出力制御装置100は、印刷装置20から受信データを抜けが無いように取得できるとともに、受信データの中からステータス情報を分けて取得できる。また、出力制御装置100は、印刷装置20から特定の情報(印刷装置20の設定情報、保持データ情報など)を、印刷装置20からホスト装置10へ定常的に送信しているデータ(処理実行を示す応答、ステータスを示す応答情報等)とは分けて取得できる。
【0067】
また、データ格納制御部111は、受信バッファ103から受信データ格納バッファ104に蓄積する受信データにステータス情報が含まれているか否かを解析するデータ解析部112を備えている。そして、データ格納制御部111は、データ解析部112の解析結果に基づいて、受信データにステータス情報が含まれている場合、ステータス情報をステータス情報格納部106に格納する。
【0068】
これにより、出力制御装置100は、印刷装置20と一本の通信経路で通信接続する場合に、ホスト装置10からの送信要求なしに印刷装置20がホスト装置10へ送信するステータス情報をリアルタイムに取得して、ホスト装置10へ通知することができる。
【0069】
また、第2機能制御部114は、情報取得機能(第2機能)が実行された時点以降に受信データ格納バッファ104に蓄積された受信データを、指定された最大データ数まで取得用バッファ105に格納し、格納した受信データを情報取得機能(第2機能)に対する取得値として返す。これにより、出力制御装置100は、指定したデータサイズ分のデータを、抜けや不足がないように印刷装置20から取得できる。
【0070】
なお、上述した実施形態における出力制御装置100が備える各部の機能全体あるいはその一部は、これらの機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0071】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶部のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0072】
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【0073】
なお、上記実施形態において、出力制御装置100(ホスト装置10)と通信接続される出力装置として印刷装置20を例に説明したが、これに限られるものではない。出力制御装置100は、印刷装置20に限らず、他の出力装置と通信接続し、本実施形態の通信制御処理を適用してもよい。例えば、他の出力装置は、スピーカ、表示装置等であってもよい。
【符号の説明】
【0074】
1 印刷システム、10 ホスト装置、20 印刷装置、100 出力制御装置、101 送信データ生成部、102 送信バッファ、103 受信バッファ、104 受信データ格納バッファ、105 取得用バッファ、106 ステータス情報格納部、110 制御部、111 データ格納制御部、112 データ解析部、113 第1機能制御部、114 第2機能制御部、201 受信バッファ、202 プリンタコマンド解析部、203 印刷部、204 印刷設定等情報保持部、205 ステータス生成部、206 送信バッファ
図1
図2
図3
図4
図5
図6
図7
図8
図9