(57)【特許請求の範囲】
【請求項１】
ホストマシンと周辺機器間の半二重通信システムに使用され、送信データと受信データとを格納するバッファを有する、半二重通信システムにおける周辺機器において、
前記ホストからの受信データを前記バッファに格納後に前記ホストに対しデータを送信する際に、前記バッファの余裕量と前記送信データ量とを比較して、該送信データをバッファ内に格納できる余裕が前記バッファ内にあるか否かを判断するバッファ比較部を備え、前記バッファ内に前記送信データを格納する余裕がない場合には、前記送信データをバッファ内に格納するために不足するデータ量に相当する量を、前記バッファ内に格納されている前記受信データから部分的にリセットして送信データ領域を確保し、その後、前記送信データを前記バッファ内に書き込むと共に、前記バッファ内に書き込まれた送信データを前記ホストに送信することを特徴とする周辺機器。
【請求項２】
前記バッファ内に書き込まれた送信データを前記ホストに送信する際に、前記部分的にリセットされたデータ量を前記ホストに通知することを特徴とする請求項１に記載の周辺機器。
【請求項３】
ホストマシンと周辺機器間の半二重通信システムに使用され、送信データと受信データとを格納するバッファを有する、半二重通信システムにおけるバッファ制御方法において、
前記ホストからの受信データを前記バッファに格納後に前記ホストに対しデータを送信する際に、前記バッファの余裕量と前記送信データ量とを比較して、該送信データをバッファ内に格納できる余裕が前記バッファ内にあるか否かを判断し、前記バッファ内に前記送信データを格納する余裕がない場合には、前記送信データをバッファ内に格納するために不足するデータ量に相当する量を、前記バッファ内に格納されている前記受信データから部分的にリセットして送信データ領域を確保し、その後、前記送信データを前記バッファ内に書き込むと共に、前記バッファ内に書き込まれた送信データを前記ホストに送信することを特徴とするバッファ制御方法。
【請求項４】
前記バッファ内に書き込まれた送信データを前記ホストに送信する際に、前記部分的にリセットされたデータ量を前記ホストに通知することを特徴とする請求項３に記載のバッファ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半二重通信システムにおけるホストコンピュータと周辺装置、例えばプリンタ装置における、バッファの制御に関する。
【０００２】
【従来の技術】
ホストマシンと周辺機器間の通信システムとして半二重システムがあり、このシステムは、ホストマシンから周辺機器へ、またその反対方向へ、どちらの方向にも通信できるようになっているが、両方向同時には通信できないシステムである。
【０００３】
そして、従来公知の周辺機器側バッファ制御方法としては、特開平３ー１４９６１５号公報に記載されているように、周辺機器側はホストマシンからの受信データを入力バッファ、ＣＰＵを経由し、データ処理部により処理されたデータを、キャッシュに格納している。そして、ホストマシンからの要求があれば、キャッシュ内の状態を出力バッファを経由してホストマシンに通知している。また、キャッシュ内の状態制御は、リセットによりホストマシンからの受信データの流れをスムーズにすることで効率化を得ている。
【０００４】
【発明が解決しようとする課題】
しかしながら、従来においては、前記データ処理部により処理してからデータをキャッシュに格納し、その後キャッシュ内の状態をホストに通知する方法なので、キャッシュ内の状態が確定するまで時間がかかると共に、ホストマシンからの命令によりリセットされるかもしれないデータに対しても前記データ処理部はデータ処理しキャッシュに格納してしまうという問題があった。更に、入力バッファと出力バッファとを分けて構成しているので回路構成が大きくなりコストアップになるという問題点もあった。
【０００５】
【課題を解決するための手段】
本発明の周辺機器は、ホストマシンと周辺機器間の半二重通信システムに使用され、送信データと受信データとを格納するバッファを有する、半二重通信システムにおける周辺機器において、前記ホストからの受信データを前記バッファに格納後に前記ホストに対しデータを送信する際に、前記バッファの余裕量と前記送信データ量とを比較して、該送信データをバッファ内に格納できる余裕が前記バッファ内にあるか否かを判断するバッファ比較部を備え、前記バッファ内に前記送信データを格納する余裕がない場合には、前記送信データをバッファ内に格納するために不足するデータ量に相当する量を、前記バッファ内に格納されている前記受信データから部分的にリセットして送信データ領域を確保し、その後、前記送信データを前記バッファ内に書き込むと共に、前記バッファ内に書き込まれた送信データを前記ホストに送信することを特徴とするものである。
【０００６】
ここで、前記バッファ内に書き込まれた送信データを前記ホストに送信する際に、前記部分的にリセットされたデータ量を前記ホストに通知してもよい。
【０００７】
また、本発明のバッファ制御方法は、ホストマシンと周辺機器間の半二重通信システムに使用され、送信データと受信データとを格納するバッファを有する、半二重通信システムにおけるバッファ制御方法において、前記ホストからの受信データを前記バッファに格納後に前記ホストに対しデータを送信する際に、前記バッファの余裕量と前記送信データ量とを比較して、該送信データをバッファ内に格納できる余裕が前記バッファ内にあるか否かを判断し、前記バッファ内に前記送信データを格納する余裕がない場合には、前記送信データをバッファ内に格納するために不足するデータ量に相当する量を、前記バッファ内に格納されている前記受信データから部分的にリセットして送信データ領域を確保し、その後、前記送信データを前記バッファ内に書き込むと共に、前記バッファ内に書き込まれた送信データを前記ホストに送信することを特徴とするものである。
【０００８】
ここで、前記バッファ内に書き込まれた送信データを前記ホストに送信する際に、前記部分的にリセットされたデータ量を前記ホストに通知してもよい。
【０００９】
【作用】
本発明では、インターフェース内に入出力兼用バッファを設けたことで回路規模を小さくでき、更に前記バッファの管理を周辺機器側のみでなく半二重通信を用いてホストマシンからの命令で行えるのでホストマシン側で周辺機器側バッファ内のデータ格納状態を速やかに把握できると共に、ホストマシンからの命令により周辺機器側のバッファ格納データの割り付けを任意に行えるので、自由度が高く、かつ効率の良いバッファ使用が得られる。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態を説明する。
図面に基づいて本発明の実施例について説明する。図１は、本発明の半二重通信システムに使用される周辺機器を、プリンタ装置に適用した一実施例を示すブロック構成図である。
【００１１】
図１において、半二重通信システムは、ホストマシン１と、プリンタ装置２と、ホストマシン１とプリンタ装置２とを接続する双方向データバス３とからなり、プリンタ装置２は、ホストマシン１と半二重データ通信を行う為の、例えばＩＥＥＥ１２８４といったインターフェース２１と、ＣＰＵ２２と、ＲＯＭ２３と、ＲＡＭ２４と、内部バス２５等からなる。インターフェース２１は、入力と出力を兼用する先入れ先出し（ＦＩＦＯ）バッファ２１１と、ホストマシン１とプリンタ装置２間の情報をバッファ２１１に読み書き手段及びバッファ２１１内データの保持又は部分リセットする手段を有するバッファコントローラ２１２と、バッファ２１１内のデータ格納状態を常に監視するバッファ監視部２１３と、バッファ２１１に格納されている現在のデータ量とプリンタ装置２からホストマシン１に送信するデータ量を比較するバッファ比較部２１４とを備えている。
【００１２】
バッファ監視部の状態をホストマシンへ通知する通知手段は、バッファコントローラ２１２が行う。
送信データと受信データとを共通に格納するバッファを使用することにより、それぞれにバッファを設けることに比べて、回路規模を小さくできる。
【００１３】
次に、バッファ比較部におけるバッファ容量、格納データ量及び送信データ量の比較方法について、説明する。
図２は、本実施例におけるデータ処理の流れを示すフローチャートの説明図である。
【００１４】
まず、ホストマシン１より送られてきたデータをバッファ２１１に格納する（ステップＳ１）。
ここで、ホスト１よりプリンタ装置情報の送信要求が有るかどうかを判断する（Ｓ２）。
【００１５】
送信要求がない場合は他の処理を実施し、送信要求が有る場合は、バッファ監視部２１３により監視されたバッファ内の格納データ量をバッファ比較部２１４により演算し（Ｓ３）、（バッファ容量−格納データ量）と（送信データ量）の大小により、バッファ内に空きが有るかを判断する（Ｓ４）。
【００１６】
その結果バッファ２１１の空き領域に余裕がある場合、即ち、（バッファ容量−格納データ量）＞（送信データ量）となる場合は、バッファ２１１内に受信データを保持し（Ｓ５）、前記空き領域の一部を送信領域に一時確保し、送信データとバッファ比較部７の演算結果（空き領域情報）を書き込む（Ｓ６）。
【００１７】
ホストマシン１による送信データについての処理完了後（Ｓ７）、ホストマシン１はステップＳ１の残データもしくは、新しいデータをプリンタ装置２側に送信する。
【００１８】
ステップＳ４でバッファ２１１の空き領域に余裕がない場合、即ち、（バッファ容量−格納データ量）＜（送信データ量）となる場合は、バッファコントローラ２１２により送信データ領域を確保するために、バッファ２１１内の不足分の受信データ量に相当する量（格納データ量＋送信データ量−バッファ容量）だけ、最終格納側より部分リセットする。（Ｓ８）。
【００１９】
部分リセットにより生じた空き領域を送信領域に一時確保し送信データとバッファ比較部７の演算結果（部分リセット情報）を書き込む（Ｓ６）。
【００２０】
ホストマシン１による送信データについての処理完了後（Ｓ７）、ホストマシン１はまず部分リセットされたデータを送信し、その後ステップＳ１の残データもしくは、新しいデータをプリンタ装置２側に送信する。
【００２１】
図３及び図４は本実施例におけるバッファ２１１のポインタの移動についての詳細図である。
【００２２】
図３（ａ）〜（ｃ）は、バッファ比較部の比較結果が（バッファ容量−格納データ量）＞（送信データ量）のとき、即ち、バッファ比較部２１４により演算しバッファ２１１の空き領域に余裕がある場合についての一例である。
【００２３】
ホストマシン１からの受信データがバッファ２１１のＲＤ０ｐｏｉｎｔ（アドレス１２）からＲＤ１ｐｏｉｎｔ（アドレス２）まで順に格納されている（図３（ａ）参照）。ＲＤ０ｐｏｉｎｔは、受信領域として使用している領域の最初のアドレスを示しており、このアドレスから読み出されていく。ＲＤ１ｐｏｉｎｔは、受信領域として使用されている領域の最後のアドレスを示しており、この次のアドレス（アドレス３）ＷＲｐｏｉｎｔからが空き領域となる。ＷＲｐｏｉｎｔから新しいデータが書き込まれていく。
【００２４】
ホストマシン１よりプリンタ装置情報の送信要求があり、バッファ比較部２１４により演算し、バッファ２１１の空き領域に余裕があるので、即ち、バッファ２１１の空き領域が９アドレス分有り、そして送信データ量が４アドレス分であり、バッファ２１１の空き領域に５アドレス分余裕があるので、ＷＲｐｏｉｎｔ（アドレス３）から４アドレス分、即ちアドレス６までが送信領域として一時確保し、送信データとバッファ比較部２１４の演算結果（空き領域情報）とを書き込む。そのとき、受信用ＲＤ０ｐｏｉｎｔはアドレス１２、受信用ＲＤ１ｐｏｉｎｔはアドレス２のままであり、送信用ＲＤ０ｐｏｉｎｔはアドレス３、送信用ＲＤ１ｐｏｉｎｔはアドレス６となり、ＷＲｐｏｉｎｔはアドレス７となる（図３（ｂ）参照）。そして、ホストマシン１に送信する際には、送信用ＲＤ０ｐｏｉｎｔであるアドレス３から順に読み出され、４アドレス分の送信データとして送信される。ホストマシン１の処理能力は非常に大きいので、送信されると送信領域は空になり、ＷＲｐｏｉｎｔはアドレス３に戻る（図３（ｃ）参照）。ホストマシン１により送信データの処理終了後ホストマシン１からの残データもしくは、新しいデータをＷＲｐｏｉｎｔ（アドレス３）より継続格納する。
【００２５】
図４（ａ）〜（ｄ）は、（バッファ容量−格納データ量）＜（送信データ量）のとき、即ち、バッファ比較部２１４により演算しバッファ２１１の空き領域が不足した場合の、バッファの一例である。
【００２６】
図４（ａ）において、ホストマシン１からの受信データがバッファ２１１のＲＤ０ｐｏｉｎｔ（アドレス１３）からＲＤ１ｐｏｉｎｔ（アドレス８）に格納されていて、アドレス９（ＷＲｐｏｉｎｔ）からアドレス１２までの４アドレス分が空き領域である。そのときに、ホストマシン１よりプリンタ装置情報の送信要求があり、送信領域が９アドレス分必要な場合、バッファ比較部２１４により演算しバッファ２１１の不足する領域は５アドレス分になる。
【００２７】
バッファコントローラ２１２により送信データ領域を確保するために不足分（格納データ量＋送信データ量−バッファ容量）（５アドレス分）の受信データの格納領域を更に確保する必要が有り、最終格納側つまりＲＤ１ｐｏｉｎｔ（アドレス８）よりこの例では５アドレス分だけ、即ちＲＤ２ｐｏｉｎｔ（アドレス３）の次のアドレス（アドレス４）まで部分リセットを行って必要な空き領域を設ける。このＲＤ２ｐｏｉｎｔとは、部分リセットにより、新しいＲＤ１ｐｏｉｎｔとなるアドレスである。
【００２８】
それにより、バッファ内は、図４（ｂ）に示すようになる。ＲＤ２ｐｏｉｎｔ（アドレス３）は受信用ＲＤ１ｐｏｉｎｔに、その次のアドレス（アドレス４）はＷＲｐｏｉｎｔにそれぞれなって９アドレス分を空き領域として送信領域用に一時確保し、送信データとバッファ比較部２１４の演算結果（部分リセット情報）とを書き込む。そのときのバッファを図４（ｃ）に示す。受信用ＲＤ０ｐｏｉｎｔはアドレス１３、受信用ＲＤ１ｐｏｉｎｔはアドレス３のままであり、送信用ＲＤ０ｐｏｉｎｔはアドレス４、送信用ＲＤ１ｐｏｉｎｔはアドレス１２となる。９アドレス分の送信データをホストマシン１に送信する。その際、受信データの一部がリセットされていることを、その部分リセットされたデータ量、この例では５アドレス分、とともにホストマシン１に送信する。なお、ホストマシン１に送信する際には、送信用ＲＤ０ｐｏｉｎｔのアドレス（アドレス４）から順に読み出され、送信データとして送信される。ホストマシン１の処理能力は非常に大きいので、送信されると送信領域は空になり、受信用ＲＤ１ｐｏｉｎｔはアドレス３のままであり、ＷＲｐｏｉｎｔはアドレス４になる。そのときのバッファを図４（ｄ）に示す。最初の状態を示す図４（ａ）と比較すると、受信用ＲＤ０ｐｏｉｎｔはアドレス１３のままであるが、受信用ＲＤ１ｐｏｉｎｔは、アドレス８からアドレス３に変わっており、アドレス４からアドレス８までの５アドレス分のデータが部分リセットされているのがわかる。
【００２９】
ホストマシン１は、送信データについての処理完了後、まず前記５アドレス分の部分リセットされたデータを再送信し、その次に、残データもしくは、新しいデータを送信し、バッファ２１１は、移動後の新ＲＤ１ｐｏｉｎｔ（アドレス３）の次のＷＲｐｏｉｎｔ（アドレス４）より継続格納する。
【００３０】
このように、バッファの管理を周辺機器側のみでなく半二重通信を用いてホストマシンからの命令で行えるので、ホストマシン側で周辺機器側バッファ内の格納データ量等のデータ格納状態を速やかに把握できると共に、ホストマシンからの命令により周辺機器側のバッファ格納データの部分リセット等の割り付けを任意に行え、そしてデータを再送信することができるので、自由度が高く、かつ効率の良いバッファ使用が得られる。
【００３１】
なお、空き領域を確保するために部分リセットする量は、最低限（格納データ量＋送信データ量−バッファ容量）分だけ必要であり、その量よりも多くすることも可能である。
【００３２】
【発明の効果】
以上述べたように、この発明によれば、インターフェース内に入出力兼用バッファを設けたことで回路規模を小さくできる。
また、バッファ内の格納状態をホストマシンに通知することができると共に、前記状態によりバッファ内のデータを保持又は必要最小限の部分リセットをして空き領域を有効に活用することで自由度の高いバッファ制御が可能となる。
【図面の簡単な説明】
【図１】本発明の一実施例を示す構成図。
【図２】本発明の一実施例のフローチャート説明図。
【図３】本発明の一実施例の先入れ先出しバッファの詳細説明図。
【図４】本発明の一実施例の先入れ先出しバッファの詳細説明図。
【符号の説明】
１  ホストマシン、  ２  プリンタ装置、  ２１  インターフェース、
２１１  先入れ先出しバッファ、  ２１２  バッファコントローラ、
２１３  バッファ監視部、  ２１４  バッファ比較部、  ２２  ＣＰＵ、
２３  ＲＯＭ、  ２４  ＲＡＭ、  ２５  内部バス、  ３  双方向データバス。
【図１】
0003674207.tif 000002
【図２】
0003674207.tif 000003
【図３】
0003674207.tif 000004
【図４】
0003674207.tif 000005