(57)【特許請求の範囲】
【請求項１】
多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置し、前記長尺紙を搬送させる過程での前記光電センサの出力レベルを閾値と比較して、その比較結果に基づいて前記ラベルの位置又は間隔を検出するラベル検出方法において、
前記長尺紙を前記ラベルの１枚分以上搬送し、その間の前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に前記閾値を設定することを特徴とするラベル検出方法。
【請求項２】
前記閾値の設定後も、前記長尺紙を前記ラベルの１枚分以上搬送する毎に、常に前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に前記閾値を設定するように前記設定された閾値を更新することを特徴とする請求項１記載のラベル検出方法。
【請求項３】
請求項１記載のラベル検出方法において、前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルから設定された閾値を、前記光電センサの出力レベルの時間的変化の最大値と最小値のレベルから近似する演算式を設定し、その後、前記長尺紙を前記ラベルの１枚分以上搬送中に、前記光電センサの出力レベルの時間的変化の最大値と最小値のレベルから前記演算式によって新たな閾値を算出して、前記設定した閾値を更新することを特徴とするラベル検出方法。
【請求項４】
多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置し、前記長尺紙を搬送させる過程での前記光電センサの出力レベルを閾値と比較して、その比較結果に基づいて前記ラベルの位置又は間隔を検出するラベル検出方法において、
前記長尺紙を前記ラベルの１枚分以上搬送し、その間の前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときと最大値及び最小値の各レベルを検出し、予め用意した複数組の閾値の演算式に前記最大値および最小値を入れて、複数組の閾値を計算し、計算した複数組の閾値のうち、前記差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルであるｔｏｐとｂａｓｅの内側であって、かつ、ｔｏｐ又はｂａｓｅ、とのレベル差が小さい方のレベル差が最大である組の演算式を、最大値と最小値から閾値を計算するための演算式として設定し、その演算式によって前記閾値を算出して設定するとともに、
その後、前記長尺紙を前記ラベルの１枚分以上搬送中に、前記光電センサの出力レベルの時間的変化の最大値と最小値のレベルから前記演算式によって新たな閾値を算出して、前記設定した閾値を更新することを特徴とするラベル検出方法。
【請求項５】
請求項１乃至４のいずれか一項に記載のラベル検出方法において、前記光電センサとして、前記長尺紙による透過光量を検出する透過型の光電センサを使用し、その光電センサの出力レベルを前記設定された閾値と比較して、その比較結果に基づいて前記ラベルの間隔と該ラベルの前端及び後端の位置を検出することを特徴とするラベル検出方法。
【請求項６】
多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置すると共に、前記長尺紙を搬送させる過程での前記光電センサの出力レベルを閾値と比較して、その比較結果に基づいて前記ラベルの位置又は間隔を検出する手段を設けたラベル検出装置において、
前記長尺紙を前記ラベルの１枚分以上搬送させる搬送手段と、該手段による前記長尺紙の搬送中における前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを記憶するレベル記憶手段と、該レベル記憶手段に記憶した前記各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に前記閾値を設定する閾値設定手段とを有することを特徴とするラベル検出装置。
【請求項７】
前記閾値設定手段が、前記閾値の設定後も、前記搬送手段により前記長尺紙を前記ラベルの１枚分以上搬送する毎に、常にレベル記憶手段に記憶される前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に前記閾値を設定するように以前に設定した閾値を更新する手段を備えていることを特徴とする請求項６記載のラベル検出装置。
【請求項８】
請求項６記載のラベル検出装置において、前記閾値設定手段が前記記憶手段によって記憶した前記各レベルの値から設定した前記閾値を、前記光電センサの出力レベルの時間的変化の最大値と最小値のレベルから近似する演算式を設定する演算式設定手段と、前記閾値を設定した後の前記搬送手段による前記長尺紙の前記ラベルの１枚分以上搬送中に、前記光電センサの出力レベルの時間的変化の最大値と最小値のレベルを記憶する手段と、該手段によって記憶された最大値と最小値のレベルから前記演算式設定手段によって設定された演算式によって新たな閾値を算出して、前記設定した閾値を更新する閾値更新手段とを設けたことを特徴とするラベル検出装置。
【請求項９】
多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置すると共に、前記長尺紙を搬送させる過程での前記光電センサの出力レベルを閾値と比較して、その比較結果に基づいて前記ラベルの位置又は間隔を検出する手段を設けたラベル検出装置において、
前記長尺紙を前記ラベルの１枚分以上搬送させる搬送手段と、該手段による前記長尺紙の搬送中における前記光電センサの出力レベルの時間的変化差分がゼロ、または差分が正から負あるいは負から正に変わったときと最大値及び最小値の各レベルを記憶するレベル記憶手段と、予め用意した複数組の閾値の演算式に前記最大値および最小値を入れて、複数組の閾値を計算し、計算した複数組の閾値のうち、前記差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルであるｔｏｐとｂａｓｅの内側であって、かつ、ｔｏｐ又はｂａｓｅ、とのレベル差が小さい方のレベル差が最大である組の演算式を、最大値と最小値から閾値を計算するための演算式として設定する演算式設定手段と、その演算式によって前記閾値を算出して設定する手段と、
該手段によって閾値を設定した後の前記長尺紙の前記ラベルの１枚分以上搬送中に、前記光電センサの出力レベルの時間的変化の最大値と最小値のレベルを記憶する手段と、該手段に記憶された最大値と最小値のレベルから前記演算式設定手段によって設定された演算式によって新たな閾値を算出して、前記設定した閾値を更新する閾値更新手段とを設けたことを特徴とするラベル検出装置。
【請求項１０】
請求項６乃至９のいずれか一項に記載のラベル検出装置において、前記光電センサが、前記長尺紙による透過光量を検出する透過型の光電センサであり、前記ラベルの位置又は間隔を検出する手段が、前記光電センサの出力を前記設定された閾値と比較して、その比較結果に基づいて前記ラベルの間隔と該ラベルの前端及び後端の位置を検出する手段であることを特徴とするラベル検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ラベルプリンタにおけるラベル検出方法及びラベル検出装置に関し、特に予め所定の印刷がなされて長尺の台紙上に貼付されたラベル（「プリプリントラベル」と称す）の位置あるいは間隔等を検出する方法及びその装置に関する。
【０００２】
【従来の技術】
ラベルプリンタによって、文字・記号やバーーコードなどを印刷するラベルは、一般に長尺の台紙上に貼付されている。また、そのラベルとして予めロゴやマーク、罫線等のフォーマットが印刷されているプリプリントラベルが使用されることも多い。
このようなラベルに新たな印刷を行う際には、印刷すべきラベルを印字ヘッドによる所定の印字位置に正確に位置決めする必要がある。そのため、ラベルの搬送中にその位置あるいは隣接するラベル間の間隔を正確に検出する必要がある。
【０００３】
例えば、特開平５−３２２４３号公報に記載されているラベルプリンタにおいては、ラベルに予め印刷されたフォーマット及び配置位置のデータを予め入力して記憶させておき、そのラベルに新たな印刷をするために台紙と共に搬送する際に、そのフォーマットを検出し、そのフォーマットに対応する配置位置のデータに基づいてラベルを位置決めする。
また、この公報には従来のラベル検出方法として、ラベル用紙の裏面に位置決め用のブラックマークを印刷しておき、そのラベル用紙の供給路の途中の裏面側に設けた反射センサによって、そのブラックマークを検出して印字位置への位置決めを行っていたことも記載されている。
【０００４】
さらに、特許第２７４０６０９号公報には、多数のラベル（印字部）が所定の間隔で配列された長尺紙を、電源投入時に一方向に搬送して、透過型の光電センサによってラベルを検出した時のセンサ出力と隣接するラベル間の境界部を検出した時のセンサ出力とに基づいて、所定の演算式で閾値を設定し、その後の搬送過程でその閾値に基づいてラベルを検出した時のセンサ出力と境界部を検出した時のセンサ出力とを区別することによって、ラベルの位置を検出する方法が開示されている。
また、特許第２５３０９４９号公報にも、上記と同様に多数のラベルが間隔を置いて配列された長尺紙を搬送しながら、そのラベルを１枚検出するのに必要な搬送距離内における光電センサによる透過光量又は反射光量の検出出力の最大値と最小値を記憶し、少なくとも３枚以上のラベルを検出する毎に、その間に記憶した上記最大値と最小値に基づいて、ラベル位置検出用の閾値を更新することが記載されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した特開平５−３２２４３号公報に記載されている方法では、ラベルに予め印刷されたフォーマット及び配置位置のデータを予め正確に入力して記憶させておかなくてはならないため、その作業が難しく且つ面倒であった。
また、ラベル用紙の裏面に印刷されたブラックマークを検出する方法では、そのブラックマークを検出するための専用の反射型センサが必要になるため、コストアップになるという問題があった。
【０００６】
さらに、特許第２７４０６０９号公報あるいは特許第２５３０９４９号公報に開示されているように、光電センサによってラベルを検出した時のセンサ出力と隣接するラベル間の境界部を検出した時のセンサ出力、あるいは検出出力の最大値と最小値に基づいて、ラベル位置を検出するための閾値を設定あるいは更新する方法では、事前に何らかの印刷がなされているプリプリントラベルを検出する場合には、その搬送時のセンサ出力からラベルの境界部を確実に検出したり、センサ出力の最大値と最小値だけに基づいて適切な閾値を設定あるいは更新することは困難であった。
【０００７】
この発明は、このような従来の問題点を解決するためになされたものであり、事前に特別なデータを入力する必要がなく、専用のセンサも使用せずに、事前印刷がなされたプリプリントラベルの位置検出も確実に行えるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
この発明は、上記の目的を達成するため、次のように構成したラベル検出方法及びラベル検出装置を提供する。
この発明によるラベル検出方法は、多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置し、長尺紙を搬送させる過程での光電センサの出力レベルを閾値と比較して、その比較結果に基づいて上記ラベルの位置又は間隔を検出するラベル検出方法において、上記長尺紙をラベルの１枚分以上搬送し、その間の光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルから上記閾値を設定する。
【０００９】
特に、上記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に上記閾値を設定するのが望ましい。
また、上記閾値の設定後も、上記長尺紙をラベルの１枚分以上搬送する毎に、常に上記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に閾値を設定するように上記設定された閾値を更新するとよい。
それによって、環境（温度等）の変化や経時変化による光電センサの出力レベルの変動に対応することができる。
【００１０】
あるいは、上記のように光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルから設定された閾値を、光電センサの出力レベルの時間的変化の最大値と最小値のレベルから近似する演算式を設定し、その後、上記長尺紙をラベルの１枚分以上搬送中に、光電センサの出力レベルの時間的変化の最大値と最小値のレベルから上記演算式によって新たな閾値を算出して、前に設定した閾値を更新するようにしてもよい。
【００１１】
または、上記長尺紙をラベルの１枚分以上搬送し、その間の上記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときと最大値及び最小値の各レベルを検出し、予め用意した複数組の閾値の演算式に前記最大値および最小値を入れて、複数組の閾値を計算し、計算した複数組の閾値のうち、前記差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルであるｔｏｐとｂａｓｅの内側であって、かつ、ｔｏｐ又はｂａｓｅ、とのレベル差が小さい方のレベル差が最大である組の演算式を、最大値と最小値から閾値を計算するための演算式として設定し、その演算式によって上記閾値を算出して設定するとともに、その後、上記長尺紙をラベルの１枚分以上搬送中に、上記光電センサの出力レベルの時間的変化の最大値と最小値のレベルから上記演算式によって新たな閾値を算出して、前に設定した閾値を更新するようにしてもよい。
【００１２】
これらの更新方法によれば、長尺紙をラベルの１枚分以上搬送し、その間の上記光電センサの出力レベルの時間的変化の最大値と最小値だけによって、閾値の更新を行うことができ、処理の負担が軽くなる。
これらのラベル検出方法において、上記光電センサとして、上記長尺紙による透過光量を検出する透過型の光電センサを使用し、その光電センサの出力レベルを上記設定された閾値と比較して、その比較結果に基づいてラベルの間隔と該ラベルの前端及び後端の位置を検出することができる。
【００１３】
この発明によるラベル検出装置は、多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置すると共に、上記長尺紙を搬送させる過程での上記光電センサの出力レベルを閾値と比較して、その比較結果に基づいてラベルの位置又は間隔を検出する手段を設けたラベル検出装置において、上記長尺紙をラベルの１枚分以上搬送させる搬送手段と、それによる長尺紙の搬送中における上記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを記憶するレベル記憶手段と、それに記憶した各レベルの値から上記閾値を設定する閾値設定手段とを有する。
【００１４】
その閾値設定手段は、上記レベル記憶手段に記憶した前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に上記閾値を設定する手段であるのが望ましい。
また、温度等の環境や経時変化による光電センサの出力レベルの変動に対応するため、上記閾値設定手段が、前記閾値の設定後も、前記搬送手段により前記長尺紙を前記ラベルの１枚分以上搬送する毎に、常にレベル記憶手段に記憶される前記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルの間に前記閾値を設定するように以前に設定した閾値を更新する手段を備えているとよい。
【００１５】
あるいは、上記閾値設定手段が前記記憶手段によって記憶した上記各レベルの値から設定した前記閾値を、上記光電センサの出力レベルの時間的変化の最大値と最小値のレベルから近似する演算式を設定する演算式設定手段と、上記閾値を設定した後の上記搬送手段による長尺紙のラベルの１枚分以上搬送中に、上記光電センサの出力レベルの時間的変化の最大値と最小値のレベルを記憶する手段と、それによって記憶された最大値と最小値のレベルから上記演算式設定手段によって設定された演算式によって新たな閾値を算出して、前に設定した閾値を更新する閾値更新手段とを設けるようしてもよい。
【００１６】
さらにまた、上記長尺紙をラベルの１枚分以上搬送させる搬送手段と、それによる長尺紙の搬送中における上記光電センサの出力レベルの時間的変化の差分がゼロ、または差分が正から負あるいは負から正に変わったときと最大値及び最小値の各レベルを記憶するレベル記憶手段と、予め用意した複数組の閾値の演算式に前記最大値および最小値を入れて、複数組の閾値を計算し、計算した複数組の閾値のうち、前記差分がゼロ、または差分が正から負あるいは負から正に変わったときの各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルであるｔｏｐとｂａｓｅの内側であって、かつ、ｔｏｐ又はｂａｓｅ、とのレベル差が小さい方のレベル差が最大である組の演算式を、最大値と最小値から閾値を計算するための演算式として設定する演算式設定手段と、その演算式によって閾値を算出して設定する手段と、それによって閾値を設定した後の上記長尺紙のラベルの１枚分以上搬送中に、上記光電センサの出力レベルの時間的変化の最大値と最小値のレベルを記憶する手段と、それに記憶された最大値と最小値のレベルから上記演算式設定手段によって設定された演算式によって新たな閾値を算出して、上記設定した閾値を更新する閾値更新手段とを設けるようにすることもできる。
【００１７】
これらのラベル検出装置において、上記光電センサを、上記長尺紙による透過光量を検出する透過型の光電センサとし、上記ラベルの位置又は間隔を検出する手段を、上記光電センサの出力を上記設定された閾値と比較して、その比較結果に基づいて上記ラベルの間隔と該ラベルの前端及び後端の位置を検出する手段とすることができる。
【００１８】
【発明の実施の形態】
以下、この発明の好ましい実施の形態を図面を参照して説明する。
図１はこの発明によるラベル検出方法及びラベル検出装置を適用するプリンタの要部のみを示す概略図である。
このプリンタは、用紙ロール１から連続した長尺紙２を引き出し、ガイドコロ３を介してプラテンローラ４とサーマルヘッド５との間を通して搬送する。その長尺紙２の搬送路を挟んで、プラテンローラ４とサーマルヘッド５より上流側に用紙センサとしての光電センサ６を、下流側に長尺紙２を切断するカッタ７を配置している。
【００１９】
光電センサ６は、発光ダイオード等の発光素子６ａとフォトトランジスタ等の受光素子６ｂとが、長尺紙２を挟んで対向するように設けられた透過型の光電センサであり、長尺紙２を通しての透過光量に応じた信号を検出する。
長尺紙２は、図２に示すようにテープ状の長尺の台紙２１上に多数のラベル（印刷する用紙）２２が所定の間隔Ｓを置いて貼着して配列されている。
そして、図１において矢示Ｆ方向に搬送される長尺紙２上のラベル２２の位置又は間隔Ｓを光電センサ６の検出信号から検知し、サーマルヘッド５によってそのラベルに所要の印刷を施した後、１枚毎あるいは所定枚数毎にカッタ７によって切断して、外部へ送出する。
【００２０】
図３は、（ａ）に長尺紙２の隣接する２枚のラベル部分の拡大断面図を示し、（ｂ）にその長尺紙２の搬送中のラインフィード・ステップ毎の光電センサ６による出力信号のレベル（以下「センサレベル」という）の変化を対応させて示している。ラベル２２上の黒い部分は予め印刷されたインク部分２３を模式的に示す。
なお、この光電センサ６はその検出回路との関係で、センサレベルが透過光量に反比例する。すなわち、図３の（ｂ）に示すように、透過光量が最も多い台紙２１のみの部分（ラベル２２の間隔Ｓの部分）で最小値を示し、透過光量がそれより少ないラベル２２のインクのない部分ではかなり高い略一定のレベルを示し、透過光量が最も少ないインク部分２３ではそれより高い最大値に近いピーク状のレベルを示す。
【００２１】
ここで、ラベル２２の境界（前端又は後端）を確実に検知するためには、検出されるセンサレベルと比較する閾値を、図３の（ｂ）に示す閾値を設定したいレベル差Ｄの中央に設定すればよいことが判る。
そこで、長尺紙２の搬送中のラインフィード・ステップ毎のセンサレベルとその変化量（差分）の組に着目し、センサレベルをＸ軸、差分をＹ軸とする二次元空間にプロットし、連続するラインフィード・ステップのデータを線で結ぶと、図４に示すように小さな楕円の集合と大きな一個の楕円を組み合わせた形のグラフができる。
これはさらに、８ステップ分の移動平均をとったセンサレベルを用いて、より連続性の高いデータでプロットしてみると図５に示すようなグラフになり、さらにはっきりする。
【００２２】
これらのグラフにおいて、小さな楕円の集合はラベル２２のインクのない部分とインク部分２３とのセンサレベル差から形成されており、大きな楕円はラベル２２のある部分と台紙２１のみの部分とのセンサレベル差から形作られている。
ここで、Ｘ軸付近の点はセンサレベルが安定していることを示し、Ｘ軸から上下に離れた点はセンサレベルが動いているエッジ（境界）であることを示している。別の見方をすれば、Ｘ軸との交点のＸ座標は、時間軸に対してセンサレベルをプロットした場合の極大値か極小値、あるいは一定時間変動がゼロの時の値である。
従って、図４及び図５に示す左側の直線Ａがラベル２２の間隔Ｓの部分のセンサレベル最小値となり、右側の直線Ｂがラベル２２の部分のセンサレベル最大値となる。そこで、この２本の直線ＡとＢの間に、両直線Ａ，Ｂに対して充分マージンを持った位置に閾値を設定することにより、プリプリントされたラベル２２の間隔（境界）部分を安定して検知することができる。
【００２３】
実際の閾値設定処理は、次の手順で行う。
１．設定されたラベル１枚の搬送方向の長さより充分長く長尺紙２を搬送する。
２．差分がゼロ（極大値又は極小値）、または差分が正から負あるいは負から正に変わったとき（変極点）のセンサレベルを記憶する。これは、図４又は図５におけるＸ軸との交点の位置を示す。Ｘ軸をまたぐ２点のレベル差が大きな場合には、補間処理によってより正確なＸ軸との交点を求めることもできる。
３．記憶したデータを昇順にならべ、隣り合うレベルの間の差が最も大きい箇所を見つける。
４．その隣り合うレベルが図４又は図５における２本の直線Ａ，Ｂに対応するので、その間に充分なマージンを持った位置に閾値を設定する。
【００２４】
図５はセンサレベルに移動平均処理を行った値を用いているが、図４に示したように移動平均処理を行わなくてもよい。
また、一旦設定した閾値を、環境の変化や経時変化に追従させるためには、長尺紙２の搬送中、上記２〜４の処理を常に行って、閾値を逐一更新する方法もあるが、もっと簡単な方法として、例えばラベル１枚分搬送中のセンサレベルの最大値と最小値に対する閾値の比率を維持するようにすれば、常に上記２〜４の処理を行わなくても、センサレベルの最大値と最小値を監視するだけで閾値をレベル変化に追従させ、安定して長期間正確にラベル端（ラベルの前端と後端）位置を検出することができる。
また、台紙に等間隔にラベルの位置および間隔を示すマーク及びそれ以外の事前印刷（プリプリント）がなされた長尺紙に対して、反射型の光電センサを配置した場合でも、上述のような方法を採ることによって、事前印刷の有無に影響されずにラベルの境界を検出することができる。
【００２５】
次に、図１に示したプリンタの制御部を含む概略構成を図６によって説明する。
このプリンタは、ＣＰＵ１０とＲＯＭ１１とＲＡＭ１２からなるマイクロコンピュータ、ホストＩ／Ｆ１３、ヘッドドライバ１５及びＡ／Ｄコンバータ１６等からなる制御部によって、図１に示したサーマルヘッド５及び光電センサ６と、図１には示していない用紙搬送部８を制御するとともに、この発明によるラベル検出装置としての機能も果たす。
【００２６】
ＣＰＵ１０は、このプリンタを統括制御する演算処理機能を有する中央処理装置、ＲＯＭ１１は、ＣＰＵ１０が実行する各種処理のプログラムや使用する固定データ等を格納したリードオンリメモリ、ＲＡＭ１２は、ホストＩ／Ｆ１３に入力するプリントデータやＡ／Ｄコンバータ１６を通して入力するセンサレベルのデータ等を一時的に記憶したり、ＣＰＵ１０のワーキングメモリにも使用されるランダムアクセスメモリである。
ホストＩ／Ｆ１３は、パーソナルコンピュータ等のホスト装置から文字やバーコードなどのプリントデータを入力するためのインタフェース、ヘッドドライバ１５は、ＣＰＵ１０からの指示に従ってサーマルヘッド５の各発熱素子を駆動するための回路、Ａ／Ｄコンバータ１６は、光電センサ６（センサ回路も含む）から出力される前述したセンサレベルをデジタル値に変換してＣＰＵ１０に取り込ませる回路である。用紙搬送部８には、図１に示した長尺紙２を送るための搬送ローラ及びその駆動用ステップモータとそのドライブ回路等を含んでいる。
【００２７】
そして、このプリンタは、用紙搬送部８を駆動して図１に示した長尺紙２をラべル１枚分以上搬送して、その間に光電センサ６によって出力されるセンサレベルをＡ／Ｄコンバータ１６を通してデジタル値に変換してＣＰＵ１０に取り込み、前述した方法、すなわちＣＰＵ１０が前記２〜４の処理を行って閾値を設定し、その後に入力するセンサレベルをその閾値と比較して、その比較結果が反転する位置によって図２及び図３に示したラベル２２の前端および後端あるいは間隔Ｓを検知し、印刷すべきラベル２２をサーマルヘッド５に対して正確に位置決めして、ホストＩ／Ｆ１３から入力してＲＡＭ１２に記憶しているプリントデータに応じた印刷を、サーマルヘッド５によってそのラベル２２に対して行う。
【００２８】
次に、このプリンタのＣＰＵ１０によるラベル検出装置に関わる処理のうち、閾値を設定するための処理について、図７以降のフローチャートと図１０のテーブルによって説明する。なお、各フローチャートにおいて、ステップをＳと略記する。
図７は閾値を設定するための処理のメインフローであり、この処理を開始すると、まずステップ１で初期化を行い、次いでステップ２で用紙を送ってセンサレベルを得る。そして、ステップ３でレベル差が最大の隣接ピークを探し、ステップ４で閾値を計算して処理を終了する。
【００２９】
以下、このステップ１から４の各サブルーチンの処理について説明する。
図８は図７におけるステップ１の「初期化」のサブルーチンの処理フローを示す。この処理では、まずステップ１１で全てのレベルに対するピーク検出フラグをクリアする。この全てのレベルは、図６に示したＡ／Ｄコンバータ１６が８ビットの場合、図１０のテーブルに示す０〜２５５のレベルである。
そして、次のステップ１２で、レジスタｎｅｗに新しいセンサレベルを格納し、ステップ１３で、新しいレベル差を格納するレジスタｎｅｗ_ｄｉｆｆを０にして、図７のメインルーチンへ戻る。
【００３０】
図９は図７におけるステップ２の「用紙を送ってセンサレベルを得る」のサブルーチンの処理フローを示す。
この処理では、ステップ２１で所定の時間後に１ステップ用紙（図１〜３に示した長尺紙２を単に用紙という）を送る。ここで、１ステップとは単位搬送距離であり、例えばステップモータによって駆動される搬送ローラによって用紙を搬送する場合、そのステップモータの１ステップ回転とすることができる。
そして、ステップ２２で、レジスタｎｅｗのレベルデータをレジスタｏｌｄに置き換え、レジスタｎｅｗ_ｄｉｆｆのデータ（最初は０）を前のレベル差を格納するレジスタ０ｌｄ_ｄｉｆｆに置き換える。
【００３１】
次いで、ステップ２３で、図６のＡ／Ｄコンバータ１６を通して入力された新しいセンサレベルのデータをレジスタｎｅｗに格納し、レジスタｎｅｗとレジスタｏｌｄのレベルデータの差（ｎｅｗ−ｏｌｄ）すなわち新しいレベル差をとって、それをレジスタｎｅｗ_ｄｉｆｆに格納する。
そして、ステップ２４でレジスタｎｅｗ_ｄｉｆｆのデータが０か否かを判断し、０であればここが極大又は極小のピーク、あるいは３次曲線の傾きがゼロになる変極点であると判断して、ステップ２７へ進んで、このときのレジスタｎｅｗのレベルデータに対するピーク検出フラグをセットする。
【００３２】
ステップ２４でレジスタｎｅｗ_ｄｉｆｆのデータが０でなければ、ステップ２５へ進んで、レジスタｎｅｗ_ｄｉｆｆのレベル差とレジスタｏｌｄ_ｄｉｆｆのレベル差の積が負（＜０）か否かを判断し、負であれば前のステップと現ステップの間でレベル変化が正から負にあるいは負から正に変わったので、この間に極大又は極小のピークがあったので、ステップ２７へ進んで、このときのレジスタｎｅｗのレベルデータに対するピーク検出フラグをセットする。
負でなければ、ステップ２６で所定ステップ（用紙をラベル１枚分以上搬送するための予め決めたステップ数）に達したか否かを判断し、所定ステップに達していなければステップ２１へ戻って上述した処理を繰り返す。そして、所定ステップに達したら、図７のメインルーチンへ戻る。
【００３３】
このサブルーチンの処理によって、図１０に示すように、Ａ／Ｄ変換したセンサレベル０〜２５５のうち、ステップ２４又は２５でＹｅｓになったレベルに対して、ステップ２７でピーク検出フラグをセットしたテーブルを作成する。この図１０に示すテーブルでは、センサレベルの時間的変化の極大値と極小値及び変極点の各レベルがレベル値の昇順に整列している。これを逆にレベル値の降順に整列させてもよい。
【００３４】
図１１は図７におけるステップ３の「レベル差が最大の隣接ピークを探す」のサブルーチンの処理フローを示す。
この処理では、まずステップ３０１て第１のピークレベル検出用のレジスタｌｅｖｅｌ１を０にして、ステップ３０２でレジスタｌｅｖｅｌ１のレベルデータが２５５を超えたか否かを判断し、超えた場合はピークが無かったと判断してエラー終了する。
２５５を超えていなければ、ステップ３０３で図１０に示したテーブルを参照してレジスタｌｅｖｅｌ１のレベルデータに対するピーク検出フラグをチェックし、クリアであればステップ３０４へ進んで、レジスタｌｅｖｅｌ１のレベルデータに１を加え、ステップ３０２に戻り、ステップ３０２から３０４の処理をステップ３０３でピーク検出フラグのセットを見つけるまで繰り返す。
【００３５】
ステップ３０３でピーク検出フラグがセットされていると、ステップ３０５へ進んで、最大レベル差を格納するレジスタｍａｘ_ｄｉｓｔａｎｃｅを０にする。このとき、レジスタｌｅｖｅｌ１には最初のピーク検出フラグがセットされてるレベルのデータが格納されている。
そして、ステップ３０６で、このときのレジスタｌｅｖｅｌ１のレベルデータとレジスタｍａｘ_ｄｉｓｔａｎｃｅのレベル差データ（最初は０）の和が２５５を超えるまでは、ステップ３０７へ進んで次のピークを探す。
ステップ３０７では、第２のピークレベル検出用のレジスタｌｅｖｅｌ２に、レジスタｌｅｖｅｌ１のレベルデータに１を加えたデータを格納する。
【００３６】
次いで、ステップ３０８でレジスタｌｅｖｅｌ２のレベルデータが２５５になるまで、ステップ３０９とステップ３１０の処理を繰り返す。ステップ３０９では、図１０に示したテーブルを参照してレジスタｌｅｖｅｌ２のレベルに対するピーク検出フラグをチェックし、クリアされていると、ステップ３１０でレジスタｌｅｖｅｌ２のレベルデータに１を加えてステップ３０８へ戻る。
ステップ３０９でピーク検出フラグがセットされていると、次のピークが見つかったのでステップ３１１へ進んで、レジスタｌｅｖｅｌ２のレベルデータとレジスタｌｅｖｅｌ１のレベルデータの差をとって、隣接ピーク間のレベル差ｄｉｓｔａｎｃｅを算出する。
【００３７】
そして、ステップ３１２で、そのレベル差ｄｉｓｔａｎｃｅがレジスタｍａｘ_ｄｉｓｔａｎｃｅに格納されている最大レベル差（最初は０）より大きいか否かを判断し、大きければステップ３１３へ進んで、算出したレベル差ｄｉｓｔａｎｃｅをレジスタｍａｘ_ｄｉｓｔａｎｃｅに格納し、レジスタｂａｓｅにレジスタｌｅｖｅｌ１のレベルデータを格納し、レジスタｔｏｐにレジスタｌｅｖｅｌ２のレベルデータを格納する。その後、ステップ３１２でレベル差ｄｉｓｔａｎｃｅが最大レベル差より大きくなかった場合同様にステップ３１４へ進んで、レジスタｌｅｖｅｌ２のレベルデータをレジスタｌｅｖｅｌ１に格納してステップ３０６へ戻る。
【００３８】
このステップ３０６〜３１４の処理をステップ３０６でＮｏになるまで、すなわちレジスタｌｅｖｅｌ１のレベルデータとレジスタｍａｘ_ｄｉｓｔａｎｃｅのレベル差データの和が２５５を超えるまで繰り返し、ステップ３０９でピーク検出フラグが見つかる毎に、ステップ３１１で隣接ピーク間のレベル差ｄｉｓｔａｎｃｅを算出する。
そして、ステップ３１２で、そのレベル差ｄｉｓｔａｎｃｅがレジスタｍａｘ_ｄｉｓｔａｎｃｅに格納されている最大レベル差より大きければ、ステップ３１３でその算出したレベル差ｄｉｓｔａｎｃｅでレジスタｍａｘ_ｄｉｓｔａｎｃｅのデータを更新し、レジスタｂａｓｅとレジスタｔｏｐのデータもそのときのレジスタｌｅｖｅｌ１とｌｅｖｅｌ２のレベルデータにそれぞれ更新する。
【００３９】
レジスタｌｅｖｅｌ１のレベルデータとレジスタｍａｘ_ｄｉｓｔａｎｃｅのレベル差データの和が２５５を超えると、ステップ３０６でＮｏになり、ステップ３１５へ進んで、レジスタｍａｘ_ｄｉｓｔａｎｃｅのレベル差データを、閾値を設定する上で必要な最小レベル差ＭＩＮ_ＤＩＳＴＡＮＣＥと比較し、それより小さくなければ図７のメインルーチンへリターンする。このときレジスタｂａｓｅとｔｏｐに、隣接するレベルの差が最大となる２つのレベルのデータが格納されている。
レジスタｍａｘ_ｄｉｓｔａｎｃｅのレベル差データが最小レベル差ＭＩＮ_ＤＩＳＴＡＮＣＥ未満のとききは閾値を設定できないので、エラー終了する。
【００４０】
図７のメインルーチンへリターンすると、次にステップ４で閾値を計算して設定する。そのサブルーチンを図１２に示す。
このサブルーチンは、図７のステップ４の計算内容を具体的に示したものであり、立上り検出用の閾値Ｖthと立下り検出用の閾値Ｖtlを、それぞれ前述のサブルーチンで求めた隣接するレベルの差が最大となる２つのレベル（ここではそのレベルをｂａｓｅとｔｏｐとする）から、次の数１の演算式によって算出する。
【００４１】
【数１】
Ｖth＝(５＊ｔｏｐ＋３＊ｂａｓｅ)／８
Ｖtl＝(３＊ｔｏｐ＋５＊ｂａｓｅ)／８
【００４２】
ｂａｓｅとｔｏｐは、図４および図５にそれぞれ直線Ａと直線Ｂで示したレベルであり、上記演算式によって閾値を算出することによって、この２つのレベルの間の最適なレベルに閾値を設定することができる。
例えば、図４に示したグラフの例では、ｂａｓｅ＝１９４でとｔｏｐ＝２２３であるから、これを用いて数１によって閾値ＶthとＶtlを計算すると、Ｖth≒２１２、Ｖtl≒２０５となる。
立上り検出用の閾値Ｖthと立下り検出用の閾値Ｖtlを若干異ならせているのは、センサレベルとの比較によってラベルの前端及び後端を検出する際に、若干ヒステリシスを持たせてハンチングを防止するためである。
その後の長尺紙の搬送時に光電センサの出力レベルとこの設定した２つの閾値Ｖth，Ｖtlとを比較して、ラベルの間隔とラベル前端及び後端を検出する処理は、図示しない他のルーチンによって行う。
【００４３】
そして、上述した各処理は、いずれも図６に示した制御部のＣＰＵ１０とＲＯＭ１１とＲＡＭ１２からなるマイクロコンピュータによってなされる。
したがって、この発明によるラベル検出方法及びラベル検出装置によれば、長尺紙に検出用のマークを印刷しておく必要がなく、それを検出するための専用の反射型センサも不要であり、ラベル毎の諸設定も不要で、長尺紙をラベル１枚分以上送るだけで、事前印刷のないラベルでも事前印刷のあるラベル（プリプリントラベル
）でも最適な閾値を設定してそのラベル境界である端縁を確実に検出することが可能になる。
【００４４】
ところで、このようにして閾値を設定した後は、その閾値のレベルをプリンタの電源を切っても記憶データが保持される不揮発性のメモリに記憶させておき、同じプリプリントラベルに印刷をする際には常にその設定した閾値でラベル検出を行うことができる。
しかし、環境の温度や湿度等の変化や経時変化により、光電センサの出力レベルが変化するため、プリンタの使用中は常時あるいは定期的（所定の時間あるいはラベル印刷枚数毎）に、新たに閾値を求めて設定した閾値を更新するようにするとよい。
【００４５】
その更新方法としては、最初に閾値を設定した後も、図７から図１２によって説明した閾値の設定処理を繰り返し行って、レベルへの印刷のために図１〜図３に示した長尺紙２をラベル２２の１枚分以上搬送する毎に、常に光電センサ６の出力レベルの時間的変化の極大値と極小値及び変極点の各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルを求め、その２つのレベルから図１２に示した演算式によって新たな閾値を算出して、以前に設定した閾値を更新することができる。
【００４６】
しかしながら、この方法では、長尺紙２をラベル２２の１枚分以上搬送する毎に、光電センサ６の出力レベルの時間的変化の極大値と極小値及び変極点の各レベルを求めて記憶し、それを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルを求める処理が必要になるため、ＣＰＵ１０の負担が重くなり、処理能力の小さいＣＰＵを使用すると、処理に時間がかかったり他の処理が遅れる虞れが生じる。
そこで、この設定した閾値を更新する処理を簡略化できるようにする方法について、次に説明する。
まず、図７〜図１２に説明した方法によって閾値を設定し、その後は簡略な方法でその閾値を更新する方法について説明する。
【００４７】
図１３はその場合の閾値の設定及びその後の更新の処理を、図６に示したＣＰＵ１０等によるマイクロコンピュータによって行う処理フローを示し、図７のフローと同じ処理を行うステップには同じステップ番号を付してあり、それらの説明は省略する。
この図１３において、ステップ１からステップ４の処理は、図７に示した前述の閾値を設定するメインルーチンのステップ１〜４と殆ど同じであり、前述の場合と同様に、ステップ４で立上り検出用の閾値Ｖthと立下り検出用の閾値Ｖtlを計算して設定する。
但し、ステップ２′の用紙を送ってセンサレベルを得る処理では、図７のステップ２の場合と同様に、センサレベルの時間的変化の極大値と極小値及び変極点の各レベルを検出して記憶し、図１０に示したようなテーブルを作成する際に、その間のセンサレベルの最大値と最小値も検出して記憶する。
【００４８】
そして、ステップ５で、その計算して得た各閾値を、ステップ２′で検出して記憶した最大値と最小値から近似する演算式を設定する。
それは例えば、図１２に示したステップ４でｔｏｐとｂａｓｅの２つのレベルから閾値Ｖth，Ｖtlを計算した演算式（数１）と同様な演算式で、ｔｏｐとｂａｓｅの代わりに最大値ｍａｘと最小値ｍｉｎを用いたとき、そのｍａｘとｍｉｎの比率をどのようにしたら、ステップ４で計算した閾値Ｖth，Ｖtlに最も近似できるかを見出す。
すなわち、次の数２のような演算式を想定して、ａとｂ，ｃとｄの係数を選定し、その各演算式を不揮発性メモリに記憶する。但し、この例では、
ａ＋ｂ＝ｃ＋ｄ＝８  とする。
【００４９】
【数２】
Ｖth＝(ａ＊ｍａｘ＋ｂ＊ｍｉｎ)／８
Ｖtl＝(ｃ＊ｍａｘ＋ｄ＊ｍｉｎ)／８
【００５０】
その後、ステップ６でプリント終了か否かを判断し、終了であればこの処理を終了するが、その際には、ステップ４で算出した閾値Ｖth，Ｖtlおよびステップ５で設定した２つの演算式のデータは不揮発性メモリに記憶されているので、プリンタの電源がオフになっても保存される。
プリント終了でなければ、ステップ７で用紙をラベル１枚分以上送ってセンサレベルの最大値と最小値を検出して記憶する。このときの用紙の搬送はラベルに印刷するための搬送を兼ねることができる。
そして、ステップ８で、ステップ７で得た最大値と最小値のレベルと先に設定した演算式によって新しい閾値を算出し、ステップ９で、前に設定した閾値を新たに算出した閾値に更新する。その後ステップ６へ戻り、プリントが終了するまでステップ６〜９の処理を繰り返して閾値を常に更新する。
【００５１】
一旦プリントを終了した後、再びプリントを開始する場合には、このフローチャートのステップ６から９の処理だけを行うようにすればよい。
このようにすれば、最初に閾値を設定するときだけ、ステップ１〜５の処理を行う必要があるが、その後はステップ６〜９の処理だけを行えばよく、用紙をラベル１枚分以上送る間のセンサレベルの最大値と最小値のみから、新たな閾値を算出して前に設定した閾値を更新することができ、ＣＰＵ１０の負担が軽くなる。
【００５２】
次に、閾値を最初に設定するときから、その後の更新をセンサレベルの最大値と最小値のみから行えるようにするための演算式を設定するようにした例を図１４及び図１５によって説明する。
図１４はその場合の閾値の設定及びその後の更新の処理を、図６に示したＣＰＵ１０等によるマイクロコンピュータによって行う処理フローを示し、図１３のフローと同じ処理を行うステップには同じステップ番号を付してあり、それらの説明は省略する。
この場合も、ステップ２′の用紙を送ってセンサレベルを得る処理では、センサレベルの時間的変化の極大値と極小値及び変極点の各レベルを検出して記憶し、図１０に示したようなテーブルを作成するとともに、その間のセンサレベルの最大値と最小値も検出して記憶する。
【００５３】
そして、ステップ３で、その極大値と極小値及び変極点の各レベルを昇順あるいは降順に整列した時の隣接するレベルの差が最大となる２つのレベルｔｏｐとｂａｓｅを探した後、ステップ５０へ進む。
このステップ５０では、ステップ２′で記憶した最大値と最小値のレベルから、ステップ３で探した２つのレベルｔｏｐとｂａｓｅの間で、この２つのレベルからなるべく離れたレベルに閾値を得るための演算式を設定する。
その後、ステップ５１で最大値と最小値のレベルからその演算式によって閾値を計算して設定する。
その後の更新時のステップ６から９の処理は、図１３によって説明したステップ６〜９の処理と殆ど同じであるが、ステップ８′で新たな閾値を算出する際に使用する演算式が、ステップ５０で設定した演算式である点だけが相違する。
【００５４】
そこで、ステップ５０のサブルーチンの処理の詳細を図１５によって説明する。
このサブルーチンの処理を開始すると、まずステップ５０１で、予め用意してある何通りかの近似式を用いて、ステップ２′で記憶した最大値ｍａｘと最小値ｍｉｎから立上り検出用の閾値Ｖthと立下り検出用の閾値Ｖtlを計算する。
この例では、プリントモードを０〜３の４種類として、それに対応する閾値の演算式を用意している。ステップ５０１において、４組の各演算式の左側に記載している数値がそのプリントモード番号である。その各プリントモードでの閾値の演算式は次の４通りである。
【００５５】
プリントモード０（通常モード）
Ｖth[0]＝(６＊ｍａｘ＋２＊ｍｉｎ)／８
Ｖtl[0]＝(４＊ｍａｘ＋４＊ｍｉｎ)／８
プリントモード１（プリプリントモード）
Ｖth[1]＝(５＊ｍａｘ＋３＊ｍｉｎ)／８
Ｖtl[1]＝(４＊ｍａｘ＋４＊ｍｉｎ)／８
プリントモード２（プリプリントモード）
Ｖth[2]＝(４＊ｍａｘ＋４＊ｍｉｎ)／８
Ｖtl[2]＝(３＊ｍａｘ＋５＊ｍｉｎ)／８
プリントモード３（プリプリントモード）
Ｖth[3]＝(３＊ｍａｘ＋５＊ｍｉｎ)／８
Ｖtl[3]＝(２＊ｍａｘ＋６＊ｍｉｎ)／８
ここで、センサレベルの最大値ｍａｘが２３９、最小値ｍｉｎが１９０であった場合の各閾値を計算すると、表１に示すようになる。
【００５６】
【表１】
0004862188.tif 000002
【００５７】
次いで、ステップ５０２以降の処理で、ｔｏｐとｂａｓｅの内側で、それらから最も離れている組を求める。この例ではｔｏｐ＝２２３，ｂａｓｅ＝１９４である。
ステップ５０２では、ｍａｘ＿ｍｉｎ＿ｄｉｆｆを０にし、ｐｒｉｎｔ＿ｍｏｄｅを−１にし、ｉ＝０にする。ここで、ｍａｘ＿ｍｉｎ＿ｄｉｆｆは、ステップ５０１で計算した閾値の組のうち、ｔｏｐ又はｂａｓｅとのレベル差が小さい方のレベル差（ｍｉｎ＿ｄｉｆｆ）の最大のものを記憶するレジスタの記憶値、ｐｒｉｎｔ＿ｍｏｄｅは、プリントモードの番号を記憶するレジスタの記憶値である。ｉは各閾値を区別する数値である。
【００５８】
次のステップ５０３では、ｉ番目の閾値の組のｔｏｐ又はｂａｓｅとのレベル差が小さい方のレベル差ｍｉｎ（ｔｏｐ−Ｖth[i]，Ｖtl[i]−ｂａｓｅ）を求めてｍｉｎ＿ｄｉｆｆのレジスタに記憶する。最初はｉ＝０  であるから、ｍｉｎ（ｔｏｐ−Ｖth[0]，Ｖtl[0]−ｂａｓｅ）を求めてｍｉｎ＿ｄｉｆｆとして記憶する。
そして、ステップ５０４でそのｍｉｎ＿ｄｉｆｆをｍａｘ＿ｍｉｎ＿ｄｉｆｆと比較する。最初はｍａｘ＿ｍｉｎ＿ｄｉｆｆ＝０であるから、ｍｉｎ＿ｄｉｆｆの方が大きいから、ステップ５０５へ進んで、そのｍｉｎ＿ｄｉｆｆの値をｍａｘ＿ｍｉｎ＿ｄｉｆｆとして記憶する。また、ｐｒｉｎｔ＿ｍｏｄｅをｉにして、ステップ５０６へ進む。２回目以降のステップ５０４で、ｍｉｎ＿ｄｉｆｆがｍａｘ＿ｍｉｎ＿ｄｉｆｆより大きくなかった場合は直接ステップ５０６へ進む。
【００５９】
ステップ５０６では、ｉをｉ＋１にし（インクリメントし）、ステップ５０７でそのｉを「４」と比較して、ｉ＜４でなくなる（ｉ＝４になる）まで、ステップ５０３へ戻って上記の処理を繰り返す。それによって、ステップ５０１で算出した４組の閾値のうちのｔｏｐ又はｂａｓｅとのレベル差が小さい方のレベル差（ｍｉｎ＿ｄｉｆｆ）の最大のレベル差がｍａｘ＿ｍｉｎ＿ｄｉｆｆとして記憶され、その閾値の組のプリントモードの番号がｐｒｉｎｔ＿ｍｏｄｅとして記憶されている。
ステップ５０７でｉ＜４でなくなる（ｉ＝４になる）と、ステップ５０８へ進んでｐｒｉｎｔ＿ｍｏｄｅの数値が負か否かをチェックし、負の場合は用意した近似式では対応できないので、エラー終了する。正であれば図１４のメインルーチンへ戻る。このとき、レジスタｐｒｉｎｔ＿ｍｏｄｅに記憶している番号の近似式を、その後のセンサレベルの最大値と最小値から閾値を計算するための近似式として設定したことになる。
【００６０】
そして、図１４のステップ５１で最初の閾値を設定する。これはステップ５０の上述した処理で設定した近似式による閾値ＶthとＶtlは既に算出されているので、それを選択して設定すればよい。
その後の閾値の更新の際の処理である図１４のステップ６〜９の各処理は、図１３によって説明した例の場合と殆ど同じである。僅かに相違するのは、図１３のステップ８では、ステップ５によって設定した演算式（近似式）によって閾値を計算するが、図１４のステップ８′では、前述のステップ５０で設定した演算式（近似式）を用いて閾値を算出する点だけである。
【００６１】
これらの方法によって、最初に設定した閾値を更新していくことによって、環境（温度や湿度など）の変化やセンサの経時変化等によるセンサレベルの変動に左右されずに、ラベルの境界を常に正確に検出することができる。
その閾値の更新処理は、ラベル１枚の印刷毎に実施すれば最もよいが、所定の印刷枚数毎又は所定時間毎、新たな長尺紙がセットされる毎、あるいはプリンタの電源が投入されたときなどに実施するようにしても実用上問題はない。
【００６２】
【発明の効果】
以上説明してきたように、この発明によれば、多数のラベルが間隔を置いて配列された長尺紙の搬送路に、その長尺紙による透過光量又は反射光量を検出する光電センサを配置し、長尺紙を搬送させる過程での光電センサの出力レベルを閾値と比較して、その比較結果に基づいてラベルの位置（前端及び後端）又は間隔を検出するラベル検出方法及びラベル検出装置において、事前に特別なデータを入力する必要がなく、専用のセンサも使用せずに、事前印刷がなされていないラベルに対しても事前印刷がなされているプリプリントラベルに対しても常に最適な閾値を設定して、その位置を確実に検出することができる。
また、一旦設定した閾値を前述のように更新することを繰り返すことによって、環境（温度や湿度等）の変化や経時変化による光電センサの出力レベルの変動に影響されることなく、長期間に亘って安定して高精度にラベル位置を検出することができる。
【図面の簡単な説明】
【図１】この発明を適用するプリンタの要部のみを示す概略図である。
【図２】図１における長尺紙２と光電センサ６との配置関係を示す斜視図である。
【図３】長尺紙の隣接するラベル間付近の拡大断面図とその用紙送り量に対する光電センサの出力レベルを示す線図である。
【図４】長尺紙の搬送中のラインフィード・ステップ後のセンサレベルとその変化量の組を二次元空間にプロットし、連続するラインフィード・ステップを線で結んだ線図である。
【図５】同じくそれを８ステップ分の移動平均をとったセンサレベルを用いてより連続性の高いデータでプロットした場合の線図である。
【図６】図１に示したプリンタの制御部を含む概略構成図である。
【図７】図６に示したＣＰＵによるこの発明に関わる閾値を設定するための処理のメインルーチンのフロー図である。
【図８】図７におけるテップ１の「初期化」処理のサブルーチンの処理内容を示すフロー図である。
【図９】図７におけるステップ２の「用紙を送ってセンサレベルを得る」処理のサブルーチンの処理内容を示すフロー図である。
【図１０】図９に示したサブルーチンで作成されるテーブルの例を示す図である。
【図１１】図７におけるステップ３の「レベル差が最大の隣接ピークを探す」処理のサブルーチンの処理内容を示すフロー図である。
【図１２】図７におけるステップ４の「閾値を計算する」処理のサブルーチンの処理内容を示すフロー図である。
【図１３】図６に示したＣＰＵによるこの発明に関わる閾値を設定し且つ常に更新するための処理のメインルーチンのフロー図である。
【図１４】図６に示したＣＰＵによるこの発明に関わる閾値を設定し且つ常に更新するための処理の他の例を示すメインルーチンのフロー図である。
【図１５】図１４におけるステップ５０の「最大値と最小値から閾値を計算する演算式を設定する」処理のサブルーチンの処理内容を示すフロー図である。
【符号の説明】
１：用紙ロール    ２：長尺紙    ３：ガイドコロ
４：プラテンローラ      ５：サーマルヘッド
６：光電センサ          ７：カッタ
８：用紙搬送部          １０：ＣＰＵ
１１：ＲＯＭ    １２：ＲＡＭ
１３：ホスト・インタフェース
１５：ヘッドドライバ    １６：Ａ／Ｄコンバータ
２１：台紙              ２２：ラベル
２３：事前印刷されたインク部分
【図１】
0004862188.tif 000003
【図２】
0004862188.tif 000004
【図３】
0004862188.tif 000005
【図４】
0004862188.tif 000006
【図５】
0004862188.tif 000007
【図６】
0004862188.tif 000008
【図７】
0004862188.tif 000009
【図８】
0004862188.tif 000010
【図９】
0004862188.tif 000011
【図１０】
0004862188.tif 000012
【図１１】
0004862188.tif 000013
【図１２】
0004862188.tif 000014
【図１３】
0004862188.tif 000015
【図１４】
0004862188.tif 000016
【図１５】
0004862188.tif 000017