(57)【特許請求の範囲】
【請求項１】
一本の通信経路を用いて出力装置と通信する通信部と、
前記通信部を介して前記出力装置から受信した第１データが逐次に格納される第１バッファ部を定期的に確認し、前記第１バッファ部に前記第１データが格納されている場合、格納されている前記第１データを第２バッファ部に蓄積するとともに、前記第１データに第２データが含まれている場合、前記第２データをデータ格納部に格納するデータ格納制御部と、
第１機能が実行された場合、前記第２バッファ部に蓄積されている前記第１データを第３バッファ部に格納し、格納した前記第１データを前記第１機能のデータとして取得する第１機能制御部と、
第２機能が実行された場合、当該実行された時点以降に前記第２バッファ部に蓄積された前記第１データを前記第３バッファ部に格納し、格納した前記第１データを前記第２機能のデータとして取得する第２機能制御部と、
を備える出力制御装置。
【請求項２】
前記データ格納制御部は、
前記第１バッファ部から前記第２バッファ部に蓄積する前記第１データに前記第２データが含まれているか否かを解析するデータ解析部、を備え、
前記データ解析部の解析結果に基づいて、前記第１データに前記第２データが含まれている場合、前記第２データを前記データ格納部に格納する、
請求項１に記載の出力制御装置。
【請求項３】
前記第２機能制御部は、
前記第２機能が実行された時点以降に前記第２バッファ部に蓄積された前記第１データを、指定された最大データ数まで前記第３バッファ部に格納し、格納した前記第１データを前記第２機能のデータとして取得する、
請求項１または請求項２に記載の出力制御装置。
【請求項４】
前記第２データは、前記出力装置のステータス情報を含む、
請求項１から請求項３のいずれか一項に記載の出力制御装置。
【請求項５】
前記第１機能は、前記出力装置との通信開始または前回の前記第１データの取得から前記第１機能が実行されるまでの前記第１データの取得する機能である、
請求項１から請求項４のいずれか一項に記載の出力制御装置。
【請求項６】
前記第２機能は、前記出力装置において設定されている情報を取得する機能である、
請求項１から請求項５のいずれか一項に記載の出力制御装置。
【請求項７】
前記出力装置は、前記通信部を介して送信した印刷データを受信し、受信した印刷データに基づいて印刷するプリンタ装置である、
請求項１から請求項６のいずれか一項に記載の出力制御装置。
【請求項８】
前記第２バッファ部は、リングバッファである、
請求項１から請求項７のいずれか一項に記載の出力制御装置。
【請求項９】
一本の通信経路を用いて出力装置と通信する通信部を備えた出力制御装置における制御方法であって、
前記通信部を介して前記出力装置から受信した第１データが逐次に格納される第１バッファ部を定期的に確認し、前記第１バッファ部に前記第１データが格納されている場合、格納されている前記第１データを第２バッファ部に蓄積するステップと、
前記第１データに第２データが含まれている場合、前記第２データをデータ格納部に格納するステップと、
第１機能が実行された場合、前記第２バッファ部に蓄積されている前記第１データを第３バッファ部に格納し、格納した前記第１データを前記第１機能のデータとして取得するステップと、
第２機能が実行された場合、当該実行された時点以降に前記第２バッファ部に蓄積された前記第１データを前記第３バッファ部に格納し、格納した前記第１データを前記第２機能のデータとして取得するステップと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力制御装置、及び制御方法に関する。
【背景技術】
【０００２】
一般的にプリンタは、ホスト装置との双方向通信が可能に構成され、ホスト装置からのコマンドや印刷データをインタフェース（Ｉ／Ｆ）を介して受け取り印刷を行う。例えばプリンタは、これらのデータを受信するためのバッファを備えており、ある程度の量の情報をそのバッファにプールしながら印刷処理を実行する（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１２７５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、上述したようなプリンタとホスト装置との通信においては、ホスト装置がプリンタからの受信データを取得する受信データ取得機能、ホスト装置がプリンタへ取得要求（コマンド送信）をすることによりプリンタから特定の情報を取得する情報取得機能、プリンタのステータスの監視機能等の機能、などが必要となる。例えば、これらの３つの機能を実現するために、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）などを用いた通信であれば複数本の通信経路（ポート）を設けて各機能でそれぞれの通信経路を使用する方法が考えられる。しかしながら、例えば携帯端末等で用いられるＢｌｕｅｔｏｏｔｈ（登録商標）通信機能などのように、携帯端末向けＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）で提供されるＳＤＫ（Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）の通信用ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）では、一本の通信経路しか提供されないケースがある。そのため、プリンタ（印刷装置）のような出力装置と一本の通信経路（ポート）で複数の機能を実現可能とすることが求められていた。
【０００５】
そこで、本発明は上述の事情を鑑みてなされたものであり、出力装置との通信において一本の通信経路（ポート）で複数の機能を実現可能な出力制御装置、及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様は、一本の通信経路を用いて出力装置と通信する通信部と、前記通信部を介して前記出力装置から受信した第１データが逐次に格納される第１バッファ部を定期的に確認し、前記第１バッファ部に前記第１データが格納されている場合、格納されている前記第１データを第２バッファ部に蓄積するとともに、前記第１データに第２データが含まれている場合、前記第２データをデータ格納部に格納するデータ格納制御部と、第１機能が実行された場合、前記第２バッファ部に蓄積されている前記第１データを第３バッファ部に格納し、格納した前記第１データを前記第１機能に対する取得値として返す第１機能制御部と、第２機能が実行された場合、当該実行された時点以降に前記第２バッファ部に蓄積された前記第１データを前記第３バッファ部に格納し、格納した前記第１データを前記第２機能に対する取得値として返す第２機能制御部と、を備える出力制御装置である。
【０００７】
また、本発明の他の態様は、上記出力制御装置において、前記データ格納制御部は、前記第１バッファ部から前記第２バッファ部に蓄積する前記第１データに前記第２データが含まれているか否かを解析するデータ解析部、を備え、前記データ解析部の解析結果に基づいて、前記第１データに前記第２データが含まれている場合、前記第２データを前記データ格納部に格納する。
【０００８】
また、本発明の他の態様は、上記出力制御装置において、前記第２機能制御部は、前記第２機能が実行された時点以降に前記第２バッファ部に蓄積された前記第１データを、指定された最大データ数まで前記第３バッファ部に格納し、格納した前記第１データを前記第２機能に対する取得値として返す。
【０００９】
また、本発明の他の態様は、上記出力制御装置において、前記第２データは、前記出力装置のステータス情報を含む。
【００１０】
また、本発明の他の態様は、上記出力制御装置において、前記第１機能は、前記出力装置との通信開始または前回の前記第１データの取得から前記第１機能が実行されるまでの前記第１データの取得する機能である。
【００１１】
また、本発明の他の態様は、上記出力制御装置において、前記第２機能は、前記出力装置において設定されている情報の取得する機能である。
【００１２】
また、本発明の他の態様は、上記出力制御装置において、前記出力装置は、前記通信部を介して送信した印刷データを受信し、受信した印刷データに基づいて印刷するプリンタ装置である。
【００１３】
また、本発明の他の態様は、上記出力制御装置において、前記第２バッファ部は、リングバッファである。
【００１４】
また、本発明の他の態様は、一本の通信経路を用いて出力装置と通信する通信部を備えた出力制御装置における制御方法であって、前記通信部を介して前記出力装置から受信した第１データが逐次に格納される第１バッファ部を定期的に確認し、前記第１バッファ部に前記第１データが格納されている場合、格納されている前記第１データを第２バッファ部に蓄積するステップと、前記第１データに第２データが含まれている場合、前記第２データをデータ格納部に格納するステップと、第１機能が実行された場合、前記第２バッファ部に蓄積されている前記第１データを第３バッファ部に格納し、格納した前記第１データを前記第１機能に対する取得値として返すステップと、第２機能が実行された場合、当該実行された時点以降に前記第２バッファ部に蓄積された前記第１データを前記第３バッファ部に格納し、格納した前記第１データを前記第２機能に対する取得値として返すステップと、を含む制御方法である。
【発明の効果】
【００１５】
本発明によれば、出力装置との通信において一本の通信経路（ポート）で複数の機能を実現できる。
【図面の簡単な説明】
【００１６】
【図１】実施形態による印刷システムの構成例を示す図。
【図２】実施形態によるホスト装置のハードウェア構成の一例を示す図。
【図３】実施形態による出力制御装置及び印刷装置の構成の一例を示す構成図。
【図４】実施形態によるデータ格納処理の概要を模式的に表した説明図。
【図５】実施形態によるデータ格納処理の一例を示すフローチャート。
【図６】実施形態による受信データ取得処理の概要を模式的に表した説明図。
【図７】実施形態による受信データ取得処理の一例を示すフローチャート。
【図８】実施形態による情報取得処理の概要を模式的に表した説明図。
【図９】実施形態による情報取得処理の一例を示すフローチャート。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について、図面を参照しながら説明する。
（印刷システム１の構成）
図１は、本実施形態による印刷システム１の構成例を示す図である。印刷システム１は、ホスト装置１０と、印刷装置２０とを備えている。ホスト装置１０は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレットＰＣ、スマートフォンやフィーチャーフォン等の携帯電話機、携帯情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）等である。ホスト装置１０は、出力制御装置１００を備え、印刷装置２０と通信接続することにより、印刷装置２０における印刷処理を制御する。例えば、出力制御装置１００は、Ｂｌｕｅｔｏｏｔｈ（登録商標）による１本の通信経路（ポート）を用いて印刷装置２０と通信接続し、印刷装置２０との間の通信を制御する。印刷装置２０は、ホスト装置１０の制御に基づいて印刷処理を行うプリンタである。
【００１８】
図２は、ホスト装置１０のハードウェア構成の一例を示す概略構成図である。この図に示すように、ホスト装置１０は、入力部１１と、表示部１２と、通信部１３と、記憶部１４と、ＣＰＵ１５とを備え、バス１６を介して接続されている。
【００１９】
入力部１１は、ユーザの操作に応じてユーザの操作入力を受付ける入力デバイスである。入力部１１には、例えば、キーボードやボタン、タッチパネル、マウス、マイクロホン等を適用できる。
【００２０】
表示部１２は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ等を含んで構成され、画像、映像、文字等を表示する。
【００２１】
通信部１３は、外部の装置と有線または無線で通信する通信インターフェースを備えている。例えば、通信部１３は、通信インターフェースとしてＢｌｕｅｔｏｏｔｈ（登録商標）を備え、印刷装置２０と通信する。なお、通信部１３は、通信インターフェースとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＲＳ−２３２Ｃ（Ｒｅｃｏｍｍｅｎｄｅｄ  Ｓｔａｎｄａｒｄ  ２３２  ｖｅｒｓｉｏｎ  Ｃ）、等を備え、印刷装置２０と通信してもよい。
【００２２】
記憶部１４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュＲＯＭ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の記録媒体またはこれらの組合せを用いて構成され、ホスト装置１０が備える各部を制御するためのプログラム（例えば、ＣＰＵ１５に基本動作を行わせるためのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ））、インストールされたアプリケーションプログラム、各種情報等を記憶する。また、記憶部１４は、印刷装置２０との通信処理を制御するためのプログラム（以下「ＳＤＫ」（Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）ともいう）を記憶している。
【００２３】
ＣＰＵ１５は、ホスト装置１０の制御中枢として機能する中央情報処理装置を備えており、ホスト装置１０が備える各部を制御する。例えば、ＣＰＵ１５は、記憶部１４に記憶されているＯＳに基づく基本動作の処理を実行するとともに、インストールされているアプリケーションプログラムに基づく処理を実行する。また、ＣＰＵ１５は、ＯＳ上で動作可能な各種のアプリケーションの機能をＯＳを介して実行する処理を行う。また、ＣＰＵ１５は、印刷装置２０との通信処理を制御するＳＤＫに基づいて、出力制御装置１００の機能を実行する。
【００２４】
図３は、出力制御装置１００及び印刷装置２０の構成の一例を示す構成図である。
まず、印刷装置２０の概略構成について説明する。印刷装置２０は、受信バッファ２０１と、プリンタコマンド解析部２０２と、印刷部２０３と、印刷設定等情報保持部２０４と、ステータス生成部２０５と、送信バッファ２０６とを備えている。
【００２５】
受信バッファ２０１は、出力制御装置１００から受信したデータやコマンドを格納するバッファである。プリンタコマンド解析部２０２は、受信バッファ２０１に格納されたコマンドを解析する。例えば、プリンタコマンド解析部２０２は、受信バッファ２０１に格納されたコマンドが印刷開始コマンドであった場合には、印刷開始コマンドを印刷部に出力する。また、プリンタコマンド解析部２０２は、受信バッファ２０１に格納されたコマンドが印刷装置２０の特定の情報の取得を要求する情報取得要求コマンドであった場合には、情報取得要求コマンドを印刷設定等情報保持部２０４に出力する。
【００２６】
印刷部２０３は、印刷開始コマンドを取得すると、印刷開始コマンドに続けて出力制御装置１００から送信される印刷データに基づいて印刷媒体へ印刷する。また、印刷部２０３は、印刷処理の実行状態を逐次ステータス生成部２０５に出力する。なお、印刷部２０３が印刷する印刷媒体は、一般的には紙であるが、印刷できるものであればいずれの材質であってもよい。
【００２７】
印刷設定等情報保持部２０４は、印刷設定等の情報を保持する。そして、印刷設定等情報保持部２０４は、情報取得要求コマンドを取得すると、保持している印刷設定等の情報のうち、当該コマンドにより要求された情報を送信バッファ２０６へ格納する。ステータス生成部２０５は、印刷部２０３から出力される印刷処理の実行状態に基づいて、印刷装置２０の状態を示すステータス情報を生成し、予め設定されたタイミングで、定期的に送信バッファ２０６へ格納する。ステータス情報とは、例えば、印刷待ち、印刷中、印刷終了、エラーなどの各状態を示す情報である。なお、送信バッファ２０６に格納された情報等を含むデータは、逐次に出力制御装置１００へ送信される。
【００２８】
次に、出力制御装置１００の構成について説明する。出力制御装置１００は、送信データ生成部１０１と、送信バッファ１０２と、受信バッファ１０３と、受信データ格納バッファ１０４と、取得用バッファ１０５と、ステータス情報格納部１０６と、制御部１１０とを備えている。
【００２９】
送信データ生成部１０１は、印刷装置２０へ送信する送信データを生成する。例えば、送信データ生成部１０１は、印刷開始コマンド、情報取得要求コマンド等の送信データを生成して、送信バッファ１０２に格納する。送信バッファ１０２に格納された送信データは、逐次に印刷装置２０へ送信される。
【００３０】
受信バッファ１０３は、印刷装置２０から受信した受信データを逐次に格納するバッファである。受信データ格納バッファ１０４は、受信バッファ１０３に格納された受信データの蓄積用バッファである、この受信データ格納バッファ１０４は、リングバッファ（環状バッファ）である。取得用バッファ１０５は、受信データ格納バッファ１０４に蓄積された受信データをホスト装置１０で利用可能なように受け渡すための取得用バッファである。ステータス情報格納部１０６は、印刷装置２０から受信したステータス情報を格納する。
【００３１】
制御部１１０は、印刷装置２０から受信する受信データを取得する受信データ取得機能（第１機能）、印刷装置２０から特定の情報を取得する情報取得機能（第２機能）、及び印刷装置２０のステータス情報監視機能（第３機能）を実行する。
【００３２】
受信データ取得機能（第１機能）は、印刷装置２０との通信開始または前回の受信データ取得から、現在までの受信データを取得する機能である。なお、取得するデータサイズはホスト装置１０側で任意に定めることができる。受信データには、印刷装置２０の各種処理の実行を示す応答や印刷装置２０のステータス情報が含まれており、障害発生時の原因解析にも用いられる。そのため、この受信データ取得機能（第１機能）の目的は、印刷装置２０から受信データを抜けが無いように取得することである。
【００３３】
情報取得機能（第２機能）は、ホスト装置１０から印刷装置２０へ情報取得要求コマンドを送信することをトリガとして、印刷装置２０において設定されている特定の情報を取得する機能である。なお、送信する情報取得要求コマンド、取得するデータサイズ、及び取得の際の最大待ち時間は、ホスト装置１０側で任意に定めることができる。この情報取得機能（第２機能）の目的は、印刷装置２０から特定の情報（印刷装置２０の設定情報、保持データ情報など）を、印刷装置２０からホスト装置１０へ定常的に送信しているデータ（処理実行を示す応答、ステータスを示す応答情報等）とは分けて取得することである。分けて取得しなかった場合、ホスト装置１０から印刷装置２０への送信要求後、受信データ取得機能（第１の機能）にて取得した受信データから所望のデータを抽出しなければならないため、ホスト装置１０での工数が増加してしまうことになる。
【００３４】
ステータス情報監視機能（第３機能）は、印刷装置２０のステータスを常時監視する機能である。このステータス情報監視機能（第３機能）の目的は、ホスト装置１０からの送信要求なしに印刷装置２０がホスト装置１０へ送信するステータス情報をリアルタイムに取得して、ホスト装置１０へ通知することである。
【００３５】
図示する制御部１１０は、データ格納制御部１１１と、データ解析部１１２と、第１機能制御部１１３と、第２機能制御部１１４とを備えている。
データ格納制御部１１１は、受信データを受信データ格納バッファ１０４に格納して蓄積するとともに、ステータス情報をステータス情報格納部１０６に格納する処理を実行する。具体的には、データ格納制御部１１１は、受信バッファ１０３を一定周期でポーリングして定期的に確認することで、受信バッファ１０３に受信データが格納されているか否かを判定する。そして、データ格納制御部１１１は、受信バッファ１０３に受信データが格納されていると判定した場合、格納されている受信データを受信データ格納バッファ１０４に格納し蓄積する。
【００３６】
また、データ格納制御部１１１は、受信バッファ１０３から受信データ格納バッファ１０４に蓄積する受信データにステータス情報が含まれている場合、そのステータス情報をステータス情報格納部１０６に格納する。例えば、データ格納制御部１１１は、受信バッファ１０３から受信データ格納バッファ１０４に蓄積する受信データにステータス情報が含まれているか否かを解析するデータ解析部１１２を備えている。そして、データ格納制御部１１１は、データ解析部１１２の解析結果に基づいて、受信データにステータス情報が含まれていると判定した場合、そのステータス情報をステータス情報格納部１０６に格納する。このステータス情報格納部１０６に格納されたステータス情報を利用することで、ホスト装置１０は、印刷装置２０の状態を常時監視することができる（ステータス情報監視機能（第３機能））。なお、データ解析部１１２は、各受信データに付加されている識別子に基づいて、各受信データの情報の種類を解析することができる。例えば、各受信データには、情報の種類を示す識別子が含まれるヘッダ情報とフッタ情報とが付加されている。
【００３７】
第１機能制御部１１３は、受信データ取得機能（第１機能）に関する処理を実行する。具体的には、第１機能制御部１１３は、受信データ取得機能（第１機能）が実行された場合、受信データ格納バッファ１０４に蓄積されている受信データを取得用バッファ１０５に格納し、格納した受信データを受信データ取得機能（第１機能）に対する取得値として返す。
【００３８】
第２機能制御部１１４は、情報取得機能（第２機能）に関する処理を実行する。具体的には、第２機能制御部１１４は、情報取得機能（第２機能）が実行された場合、情報取得機能（第２機能）が実行された時点以降に受信データ格納バッファ１０４に蓄積された受信データを取得用バッファ１０５に格納し、格納した受信データを情報取得機能（第２機能）に対する取得値として返す。例えば、第２機能制御部１１４は、情報取得機能（第２機能）が実行された時点以降に受信データ格納バッファ１０４に蓄積された受信データを、指定された最大データ数まで取得用バッファ１０５に格納し、格納した受信データを情報取得機能（第２機能）に対する取得値として返す。
【００３９】
（制御部１１０が実行する通信制御処理の動作）
次に、制御部１１０が実行する通信制御処理の動作について説明する。
まず、図４及び図５を参照して、受信データ及びステータス情報を格納するデータ格納処理について説明する。図４は、本実施形態によるデータ格納処理の概要を模式的に表した説明図である。また、図５は、本実施形態によるデータ格納処理の一例を示すフローチャートである。
【００４０】
（ステップＳ１１）出力制御装置１００が通信開始から終了まで印刷装置２０から受信した受信データは、逐次に受信バッファ１０３に格納される（図４の（１））。制御部１１０は、通信開始から終了まで受信バッファ１０３を一定周期でポーリングし、受信バッファ１０３に受信データが格納されているか否かを判定する。制御部１１０は、受信バッファ１０３に受信データが格納されていないと判定された場合（ＮＯ）、このステップＳ１１を繰り返す。一方、制御部１１０は、受信バッファ１０３に受信データが格納されていないと判定された場合（ＮＯ）、ステップＳ１２の処理に進む。
【００４１】
（ステップＳ１２）制御部１１０は、受信バッファ１０３に格納されている受信データにステータス情報が含まれているか否かを解析して判定する。制御部１１０は、受信データにステータス情報が含まれていると判定した場合（ＹＥＳ）、ステップＳ１３の処理に進む。一方、制御部１１０は、受信データにステータス情報が含まれていないと判定した場合（ＮＯ）、ステップＳ１４の処理に進む。
【００４２】
（ステップＳ１３）制御部１１０は、受信データに含まれているステータス情報をステータス情報格納部１０６に格納する（図４の（２））。そして、ステップＳ１４の処理に進む。
【００４３】
（ステップＳ１４）制御部１１０は、受信バッファ１０３に格納されている受信データを受信データ格納バッファ１０４に格納する（図４の（３））。例えば、制御部１１０は、受信バッファ１０３に格納されている受信データのうちステップＳ１２の解析が済んだ受信データを複製して格納し、格納したデータサイズ分「ポインタ１」を進める。ここで「ポインタ１」は、受信データを格納する際の開始位置を示している。制御部１１０は、受信バッファ１０３の受信データを「ポインタ１」の位置から格納し、格納した受信データの末尾に「ポインタ１」を移動する。そして、制御部１１０は、受信バッファ１０３をクリアし、空き状態にする。
【００４４】
図４に示す例では、受信データ格納バッファ１０４において、Ｐ１が「ポインタ１」の位置を示しており、Ｐ２が「ポインタ２」の位置を示している。「ポインタ２」は、受信データ格納バッファ１０４において、受信データ取得機能（第１機能）により受信データを取得する際の開始位置を示している。まず、「ポインタ１」のＰ１の位置と「ポインタ２」のＰ２の位置とは同じ位置（例えば、前回格納され、受信データ取得機能（第１機能）により取得済みの受信データの末尾の位置）にあり、受信バッファ１０３から受信データが格納されると、格納したデータサイズ分「ポインタ１」がＰ１からＰ１’へ移動する。即ち、Ｐ１’の位置は、今回格納した受信データの末尾の位置である。これにより、制御部１１０は、受信バッファ１０３に格納された受信データを、「ポインタ１」を移動させながら順次「ポインタ１」の位置から格納することで受信データ格納バッファ１０４に蓄積する。
【００４５】
（ステップＳ１５）制御部１１０は、ステップＳ１４における「ポインタ１」の移動において、「ポインタ１」が「ポインタ２」を越えたか否かを判定する。制御部１１０は、「ポインタ１」が「ポインタ２」を越えていないと判定した場合（ＮＯ）、ステップＳ１１に処理を戻し、受信バッファ１０３に受信データが格納されているか否かの判定を行う。一方、制御部１１０は、「ポインタ１」が「ポインタ２」を越えたと判定した場合（ＹＥＳ）、制御部１１０は、ステップＳ１６の処理に進む。
【００４６】
（ステップＳ１６）制御部１１０は、「ポインタ１」が「ポインタ２」を越えたと判定した場合、「ポインタ２」を「ポインタ１」の位置に移動する。即ち、制御部１１０は、「ポインタ１」に合わせて「ポインタ２」も移動させる。また、制御部１１０は、受信データ格納バッファ１０４の上限に達したことを示すフラグ（上限フラグ）を管理する。例えば、制御部１１０は、「ポインタ１」が「ポインタ２」を越えた場合には、受信データ格納バッファの上限フラグをＯＮにする。そして、制御部１１０は、ステップＳ１１に処理を戻す。
【００４７】
次に、図６及び図７を参照して、受信データ取得機能（第１機能）による受信データ取得処理について説明する。図６は、本実施形態による受信データ取得処理の概要を模式的に表した説明図である。また、図７は、本実施形態による受信データ取得処理の一例を示すフローチャートである。
【００４８】
（ステップＳ２１）ホスト装置１０において受信データ取得機能（第１機能）が実行されると、制御部１１０は、受信データ格納バッファ１０４の上限フラグがＯＮであるか否かを判定する。上限フラグがＯＦＦであると判定された場合（ＮＯ）、制御部１１０は、ステップＳ２２の処理に進む。一方、上限フラグがＯＮであると判定された場合（ＹＥＳ）、制御部１１０は、ステップＳ２４の処理に進む。
【００４９】
（ステップＳ２２）上限フラグがＯＦＦの場合、制御部１１０は、受信データ格納バッファ１０４に格納されている受信データを、「ポインタ２」から「ポインタ１」まで取得用バッファ１０５に格納する（図６の（４））。図６に示す例では、受信データ格納バッファ１０４において、Ｐ１’が「ポインタ１」の位置を示しており、Ｐ２が「ポインタ２」の位置を示している。まず、制御部１１０は、「ポインタ２」のＰ２の位置から「ポインタ１」のＰ１’までの受信データを、取得用バッファ１０５に格納する。そして、制御部１１０は、ステップＳ２３の処理に進む。
【００５０】
（ステップＳ２３）制御部１１０は、「ポインタ２」をＰ２からＰ２’の位置に移動する。即ち、制御部１１０は、「ポインタ２」を「ポインタ１」の位置へ移動する。これにより、図４に示すデータ格納処理の模式図と同様に「ポインタ１」と「ポインタ２」とが同じ位置の状態となり、次に受信バッファ１０３から格納する受信データの格納位置と受信データを取得する際の開始位置とが定まる。そして、制御部１１０は、ステップＳ２６の処理に進む。
【００５１】
（ステップＳ２４）上限フラグがＯＮの場合、制御部１１０は、受信データ格納バッファ１０４に格納されている受信データを、「ポインタ２」から全て取得用バッファ１０５に格納する（図６の（４））。そして、制御部１１０は、ステップＳ２５の処理に進む。
【００５２】
（ステップＳ２５）制御部１１０は、受信データ格納バッファの上限フラグをＯＮからＯＦＦに戻し、ステップＳ２６の処理に進む。なお、取得用バッファ１０５は、受信データ取得機能（第１機能）の実行時に指定されたデータサイズを格納できるサイズが確保されるように、例えば関数の実行によって生成される。
【００５３】
（ステップＳ２６）制御部１１０は、取得用バッファ１０５に格納した受信データを、受信データ取得機能（第１機能）に対する取得値としてホスト装置１０へ返し（図６の（５））、受信データ取得処理を終了する。
【００５４】
次に、図８及び図９を参照して、情報取得機能（第２機能）による情報取得処理について説明する。図８は、本実施形態による情報取得処理の概要を模式的に表した説明図である。また、図９は、本実施形態による情報取得処理の一例を示すフローチャートである。
【００５５】
（ステップＳ３１）制御部１１０は、情報取得機能（第２機能）が実行されると、実行された時点の「ポインタ１」の位置に「ポインタ３」を移動する（図８の（１））。「ポインタ３」は、受信データ格納バッファ１０４において、情報取得機能（第２機能）により特定の情報を取得する際の開始位置を示している。図８に示す例において、Ｐ１が「ポインタ１」の位置を示し、Ｐ３が「ポインタ３」の位置を示している。そして、制御部１１０は、ステップＳ３２の処理に進む。
【００５６】
（ステップＳ３２）制御部１１０は、実行された情報取得機能（第２機能）で指定された情報取得要求コマンドを送信データ生成部１０１に生成させ、送信バッファ１０２を介して印刷装置２０へ送信する（図８の（２））。これにより、情報取得要求コマンドで特定される特定の情報が印刷装置２０から受信バッファ１０３に格納され（図８の（３））、図４及び図５を参照して説明したデータ格納処理により受信データ格納バッファ１０４に蓄積される（図８の（４））。制御部１１０は、受信バッファ１０３から受信データを複製して受信データ格納バッファ１０４の「ポインタ１」の位置から格納し、格納したデータサイズ分「ポインタ１」を進める。図８に示す例では、「ポインタ３」のＰ３の位置と同じ位置にある「ポインタ１」が格納したデータサイズ分Ｐ１からＰ１’へ移動する。そして、制御部１１０は、ステップＳ３３の処理に進む。
【００５７】
（ステップＳ３３）制御部１１０は、情報取得機能（第２機能）が実行されてから、指定された最大待ち時間が経過したか否かを判定する。制御部１１０は、指定された最大待ち時間が経過していないと判定した場合（ＮＯ）、ステップＳ３４の処理に進む。一方、制御部１１０は、指定された最大待ち時間が経過したと判定した場合（ＹＥＳ）、ステップＳ３８の処理に進む。
【００５８】
（ステップＳ３４）制御部１１０は、情報取得機能（第２機能）の実行開始後に受信した受信データのサイズが、指定されたデータサイズを超えるか否かを判定する。制御部１１０は、受信データのサイズが、指定されたデータサイズを超えたと判定した場合（ＹＥＳ）、ステップＳ３８の処理に進む。一方、制御部１１０は、受信データのサイズが、指定されたデータサイズを超えていないと判定した場合（ＮＯ）、ステップＳ３５の処理に進む。
【００５９】
（ステップＳ３５）指定された最大待ち時間が経過していないと判定しておらず、且つ受信データのサイズが、指定されたデータサイズを超えていない場合、制御部１１０は、指定されたデータサイズが受信データ格納バッファ１０４のサイズを超えるか否かを判定する。制御部１１０は、指定されたデータサイズが受信データ格納バッファ１０４のサイズを超えないと判定した場合（ＮＯ）、ステップＳ３３に処理を戻す。一方、制御部１１０は、指定されたデータサイズが受信データ格納バッファ１０４のサイズを超えたと判定した場合（ＹＥＳ）、ステップＳ３６の処理に進む。
【００６０】
（ステップＳ３６）制御部１１０は、情報取得機能（第２機能）の実行開始後で受信データ格納バッファ１０４が上限になったか否かを判定する。制御部１１０は、受信データ格納バッファ１０４が上限になっていないと判定した場合（ＮＯ）、ステップＳ３３に処理を戻す。一方、制御部１１０は、受信データ格納バッファ１０４が上限になったと判定した場合（ＹＥＳ）、ステップＳ３７の処理に進む。
【００６１】
（ステップＳ３７）制御部１１０は、受信データ格納バッファ１０４に格納されている受信データを、「ポインタ３」から全て取得用バッファ１０５に格納する（図８の（５））。そして、制御部１１０は、ステップＳ３３に処理を戻す。
【００６２】
つまり、情報取得機能（第２機能）の実行時に、受信データ格納バッファ１０４のサイズを越えるサイズが情報取得要求コマンドで要求する特定の情報のデータサイズとして指定された場合、「ポインタ１」が「ポインタ３」に追いついたときが、受信データ格納バッファ１０４のサイズ上限に達したとことになる。そのため、制御部１１０は、「ポインタ１」が「ポインタ３」に追いついたときには、受信データ格納バッファ１０４に格納されている受信データを全て取得用バッファ１０５に格納する。以降、制御部１１０は、指定されたデータサイズに達するまで、「ポインタ１」が「ポインタ３」に追いつく度に、受信データ格納バッファ１０４に格納されている受信データを全て取得用バッファ１０５に格納する処理を繰り返す。
【００６３】
（ステップＳ３８）制御部１１０は、情報取得機能（第２機能）が実行されてから、指定された最大待ち時間が経過した場合（ステップＳ３３：ＹＥＳ）、または受信データのサイズが、指定されたデータサイズを超えた場合（ステップＳ３４：ＹＥＳ）、受信データ格納バッファ１０４の受信データを、「ポインタ３」から「ポインタ１」まで取得用バッファ１０５に格納する（図８の（５））。そして、制御部１１０は、ステップＳ３９の処理に進む。なお、取得用バッファ１０５は、情報取得機能（第２機能）の実行時に指定されたデータサイズを格納できるサイズが確保されるように、例えば関数の実行によって生成される。指定されたデータサイズが受信データ格納バッファ１０４のサイズ以上の場合もあるため、受信データ格納バッファ１０４のサイズ以上にも対応している。
【００６４】
（ステップＳ３９）制御部１１０は、取得用バッファ１０５に格納した受信データ（即ち、情報取得要求コマンドで指定した特定の情報）を、情報取得機能（第２機能）に対する取得値としてホスト装置１０へ返し（図８の（６））、情報取得処理を終了する。
【００６５】
以上説明してきたように、本実施形態による出力制御装置１００は、通信部１３と、データ格納制御部１１１と、第１機能制御部１１３と、第２機能制御部１１４とを備えている。通信部１３は、一本の通信経路を用いて印刷装置２０（出力装置の一例）と通信する。データ格納制御部１１１は、通信部１３を介して印刷装置２０から受信した受信データ（第１データ）が逐次に格納される受信バッファ１０３（第１バッファ部）を定期的に確認し、受信バッファ１０３に受信データが格納されている場合、格納されている受信データを受信データ格納バッファ１０４（第２バッファ部）に蓄積する。また、データ格納制御部１１１は、受信データにステータス情報（第２データ）が含まれている場合、そのステータス情報をステータス情報格納部１０６（データ格納部の一例）に格納する。また、第１機能制御部１１３は、受信データ取得機能（第１機能）が実行された場合、受信データ格納バッファ１０４に蓄積されている受信データを取得用バッファ１０５（第３バッファ部）に格納し、格納した受信データを上記受信データ取得機能（第１機能）に対する取得値として返す。一方、第２機能制御部１１４は、情報取得機能（第２機能）が実行された場合、当該実行された時点以降に受信データ格納バッファ１０４に蓄積された受信データを取得用バッファ１０５に格納し、格納した受信データを情報取得機能（第２機能）に対する取得値として返す。
【００６６】
これにより、出力制御装置１００は、一本の通信経路で印刷装置２０との通信機能を実現できる。例えば、出力制御装置１００は、印刷装置２０と一本の通信経路で通信接続する場合であっても、印刷装置２０から受信する受信データを取得する受信データ取得機能（第１機能）、印刷装置２０から特定の情報を取得する情報取得機能（第２機能）、及び印刷装置２０のステータス情報監視機能（第３機能）の３つの機能を実現することができる。例えば、出力制御装置１００は、印刷装置２０から受信データを抜けが無いように取得できるとともに、受信データの中からステータス情報を分けて取得できる。また、出力制御装置１００は、印刷装置２０から特定の情報（印刷装置２０の設定情報、保持データ情報など）を、印刷装置２０からホスト装置１０へ定常的に送信しているデータ（処理実行を示す応答、ステータスを示す応答情報等）とは分けて取得できる。
【００６７】
また、データ格納制御部１１１は、受信バッファ１０３から受信データ格納バッファ１０４に蓄積する受信データにステータス情報が含まれているか否かを解析するデータ解析部１１２を備えている。そして、データ格納制御部１１１は、データ解析部１１２の解析結果に基づいて、受信データにステータス情報が含まれている場合、ステータス情報をステータス情報格納部１０６に格納する。
【００６８】
これにより、出力制御装置１００は、印刷装置２０と一本の通信経路で通信接続する場合に、ホスト装置１０からの送信要求なしに印刷装置２０がホスト装置１０へ送信するステータス情報をリアルタイムに取得して、ホスト装置１０へ通知することができる。
【００６９】
また、第２機能制御部１１４は、情報取得機能（第２機能）が実行された時点以降に受信データ格納バッファ１０４に蓄積された受信データを、指定された最大データ数まで取得用バッファ１０５に格納し、格納した受信データを情報取得機能（第２機能）に対する取得値として返す。これにより、出力制御装置１００は、指定したデータサイズ分のデータを、抜けや不足がないように印刷装置２０から取得できる。
【００７０】
なお、上述した実施形態における出力制御装置１００が備える各部の機能全体あるいはその一部は、これらの機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００７１】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶部のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００７２】
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【００７３】
なお、上記実施形態において、出力制御装置１００（ホスト装置１０）と通信接続される出力装置として印刷装置２０を例に説明したが、これに限られるものではない。出力制御装置１００は、印刷装置２０に限らず、他の出力装置と通信接続し、本実施形態の通信制御処理を適用してもよい。例えば、他の出力装置は、スピーカ、表示装置等であってもよい。
【符号の説明】
【００７４】
１  印刷システム、１０  ホスト装置、２０  印刷装置、１００  出力制御装置、１０１  送信データ生成部、１０２  送信バッファ、１０３  受信バッファ、１０４  受信データ格納バッファ、１０５  取得用バッファ、１０６  ステータス情報格納部、１１０  制御部、１１１  データ格納制御部、１１２  データ解析部、１１３  第１機能制御部、１１４  第２機能制御部、２０１  受信バッファ、２０２  プリンタコマンド解析部、２０３  印刷部、２０４  印刷設定等情報保持部、２０５  ステータス生成部、２０６  送信バッファ
【図１】
0006556646.tif 000002
【図２】
0006556646.tif 000003
【図３】
0006556646.tif 000004
【図４】
0006556646.tif 000005
【図５】
0006556646.tif 000006
【図６】
0006556646.tif 000007
【図７】
0006556646.tif 000008
【図８】
0006556646.tif 000009
【図９】
0006556646.tif 000010