(57)【要約】【課題】バーコード読み取りが安定するゲイン値を比較的短時間で収束させることができるバーコード読取装置及びバーコード読取方法を提供する。【解決手段】走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する。記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができた場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出す。バーコード情報を正常に読み取ることができなかった場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する。【選択図】図８
2009271579.tif 000002
【特許請求の範囲】
【請求項１】
光を出射する発光素子と、
該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、
バーコードからの反射光を受光する受光素子と
を備え、
前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置において、
走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する読取結果記憶手段と、
記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する判断手段と、
該判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する条件設定手段と
を備えることを特徴とするバーコード読取装置。
【請求項２】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
前記条件設定手段は、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出するようにしてあることを特徴とする請求項１記載のバーコード読取装置。
【請求項３】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
設定するべき所定数のゲイン値を記憶するゲイン値記憶手段を備え、
前記条件設定手段は、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、次の位置での走査において同一のゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、記憶されているゲイン値を周期的に変更して設定するようにしてあることを特徴とする請求項１記載のバーコード読取装置。
【請求項４】
光を出射する発光素子と、
該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、
バーコードからの反射光を受光する受光素子と
を備え、
前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置で実行することが可能なバーコード読取方法において、
走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、
記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断し、
バーコード情報を正常に読み取ることができたと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定することを特徴とするバーコード読取方法。
【請求項５】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、
以後の走査周期では、バーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することを特徴とする請求項４記載のバーコード読取方法。
【請求項６】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
設定するべき所定数のゲイン値を記憶し、
バーコード情報を正常に読み取ることができたと判断された場合、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、記憶されているゲイン値を周期的に変更して設定することを特徴とする請求項４記載のバーコード読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ラスタスキャン方式のバーコード読取装置及びバーコード読取方法に関する。特に、読取結果に基づいて最適なゲイン調整を実行することができるラスタスキャン方式のバーコード読取装置及びバーコード読取方法に関する。
【背景技術】
【０００２】
従来、半導体レーザを発光素子に用い、光線束によりバーコードをスキャンするバーコードリーダが多々開発されている。バーコードを確実にスキャンするためには、発光素子から発せられた光線束の反射光を、受光素子にて適切な受光強度で受光することが必要となる。
【０００３】
例えば特許文献１では、バーコードをスキャンするスキャン幅を変えることにより、受光素子での受光量を調整することができる走査装置が開示されている。特許文献１では、狭い角度でスキャン幅を定める第１のスキャンモードと、広い角度でスキャン幅を定める第２のスキャンモードとを切り替えることにより受光素子の受光量を増減させ、バーコードを正しくスキャンすることができるよう調整する。
【０００４】
より具体的には、例えば特許文献２に開示されているように、バーコードをスキャンするスキャン幅を狭い角度で定めた場合には、スキャン範囲に存在する受光素子の受光量を増大させることにより、バーコードのスキャン部分を特定しやすくし、特定した後は、バーコード全体をスキャン範囲とするべくスキャン幅を広い角度となるよう調整している。
【特許文献１】特許第２６１２６１７号公報
【特許文献２】特許第３０５８９４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した特許文献１及び２に開示されている走査装置では、バーコードからの反射光の受光強度が一定範囲内に収束するように増幅回路のゲイン値を制御している。そのために、通常は直前にスキャンした場合の受光量を記憶しておき、記憶してある過去の受光量に基づいて受光強度が一定範囲に収束するようにゲイン値を増減していた。
【０００６】
しかし、走査線が複数存在するラスタスキャン方式のバーコード読取装置の場合、バーコードが円柱状の被検出物体に貼付されているとき、走査線の一部のみがバーコード領域に掛かっているとき等には、走査線ごとに最適な読取条件が相違する。したがって、従来のように一律にゲイン値を増減した場合、ある走査線にとっては適切な受光量を確保することができても、ある走査線にとっては受光量が過大あるいは過小となり、バーコードを正常に読み取ることができないおそれがあるという問題点があった。
【０００７】
また、過去の反射光の受光量に基づいて、ゲイン値を平均値として求めることも考えられるが、一度過大又は過小な受光量を記憶した場合にはゲイン値が収束するまで相当の時間を要する。したがって、バーコード読取を開始してから安定するまでに時間を要するという問題点もあった。
【０００８】
本発明は上記事情に鑑みてなされたものであり、バーコード読み取りが安定するゲイン値を比較的短時間で収束させることができるバーコード読取装置及びバーコード読取方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために第１発明に係るバーコード読取装置は、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置において、走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する読取結果記憶手段と、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する判断手段と、該判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する条件設定手段とを備えることを特徴とする。
【００１０】
また、第２発明に係るバーコード読取装置は、第１発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、前記条件設定手段は、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出するようにしてあることを特徴とする。
【００１１】
また、第３発明に係るバーコード読取装置は、第１発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶するゲイン値記憶手段を備え、前記条件設定手段は、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、次の位置での走査において同一のゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、記憶されているゲイン値を周期的に変更して設定するようにしてあることを特徴とする。
【００１２】
次に、上記目的を達成するために第４発明に係るバーコード読取方法は、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置で実行することが可能なバーコード読取方法において、走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断し、バーコード情報を正常に読み取ることができたと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定することを特徴とする。
【００１３】
また、第５発明に係るバーコード読取方法は、第４発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、バーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することを特徴とする。
【００１４】
また、第６発明に係るバーコード読取方法は、第４発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶し、バーコード情報を正常に読み取ることができたと判断された場合、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、記憶されているゲイン値を周期的に変更して設定することを特徴とする。
【００１５】
第１発明及び第４発明では、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得する。走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する。読み取ることができた場合には、直前の走査周期での読み取り時に設定されている条件に関する情報を維持し、正常に読み取ることができなかった場合には、直前の走査周期での読み取り時に設定されている条件に関する情報を変更する。一定の規則性をもってバーコードの複数の異なる位置を周期的に走査することで、直前の走査周期で正常に読み取ることができた場合には、読み取り時に設定されている条件をそのまま用いてバーコード情報を読み取り、直前の走査周期で正常に読み取ることができなかった場合には、読み取り時に設定されている条件とは異なる条件に変更することができ、バーコード情報を読み取るための適切な条件に早期に収束させることができる。したがって、例えばバーコードが円柱状の被検出物体に貼付されている場合、走査線の一部のみがバーコード領域に掛かっている場合等であっても、適切な条件に関する情報を早期に特定することができ、バーコード情報を安定して読み取ることが可能となる。
【００１６】
第２発明及び第５発明では、条件に関する情報は、受光信号を増幅する増幅回路で設定するゲイン値を含み、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出する。以後の走査周期では、バーコード情報を正常に読み取ることができた場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかった場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出する。これにより、直前の走査周期にて正常に読み取ることができなかった位置についてのみ、記憶されている直前の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することができ、早期にゲイン値を安定させることが可能となる。
【００１７】
第３発明及び第６発明では、条件に関する情報は、受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶しておく。バーコード情報を正常に読み取ることができた場合は、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかった場合は、記憶されているゲイン値を周期的に変更して設定する。これにより、バーコード情報を正常に読み取ることができなかった場合に、その都度ゲイン値を算出する必要が無く、適切なゲイン値となるまで繰り返し走査を実行することにより、早期にゲイン値を安定させることが可能となる。
【発明の効果】
【００１８】
上記構成によれば、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査することで、直前の走査周期で正常に読み取ることができた場合には、読み取り時に設定されている条件をそのまま用いてバーコード情報を読み取り、直前の走査周期で正常に読み取ることができなかった場合には、読み取り時に設定されている条件とは異なる条件に変更することができ、バーコード情報を読み取るための適切な条件に早期に収束させることができる。したがって、例えばバーコードが円柱状の被検出物体に貼付されている場合、走査線の一部のみがバーコード領域に掛かっている場合等であっても、適切な条件に関する情報を早期に特定することができ、バーコード情報を安定して読み取ることが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態に係るバーコード読取装置について、図面を参照して説明する。なお、参照する図面を通じて、同一又は同様の構成又は機能を有する要素については、同一又は同様の符号を付して、重複する説明は省略する。
【００２０】
（実施の形態１）
図１は、本発明の実施の形態１に係るバーコード読取装置の構成を模式的に示すブロック図である。図１に示すように本実施の形態１に係るバーコード読取装置１は、半導体レーザ、ＬＥＤ等の発光素子１１から光を出射し、ミラー機構であるポリゴンミラー１２の一面にて被検出物体３へ向けて反射させる。
【００２１】
ポリゴンミラー１２で反射された反射光は、被検出物体３に貼付されているバーコード２へ誘導され、ＣＣＤ、フォトダイオード等の受光素子１３は、バーコード２からの反射光を受光して光電変換した受光信号を出力する。受光信号は、コンデンサ１４にて直流成分を排除され、増幅回路１５にて設定されたゲイン値に応じて増幅され、Ａ／Ｄ変換器１６にてデジタル信号に変換された後、制御装置１０へと入力される。
【００２２】
制御装置１０は、発光素子１１の出射タイミングと、ポリゴンミラー１２の回転数とを同期させ、被検出物体３へ出射される光の幅とタイミングとを制御する。また、増幅回路１５のゲイン値は、バーコード２で示されるバーコード情報のデコード時に後述する方法にて設定される。
【００２３】
図２は、本発明の実施の形態１に係るバーコード読取装置１のポリゴンミラー１２の取り付け状態を示す模式図である。図２に示すように本実施の形態１に係るポリゴンミラー１２は、回転軸３０に対して所定の角度θだけ傾斜して取り付けられている。回転軸３０の回転によりポリゴンミラー１２が回転した場合、発光素子１１から出射された光のポリゴンミラー１２の各面ごとでの入射角が変動し、一定の規則性をもって複数の異なる走査線に沿って周期的に走査することができる。
【００２４】
図３は、本発明の実施の形態１に係るバーコード読取装置１の制御装置１０の構成を示すブロック図である。図３に示すように本実施の形態に係るバーコード読取装置１の制御装置１０は、少なくともＣＰＵ（中央演算装置）２０、ＲＡＭ１７、通信手段１８及び上述したハードウェアを接続する内部バス１９で構成されている。ＣＰＵ２０は、内部バス１９を介して制御装置１０の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、ＲＡＭ１７に記憶されているコンピュータプログラムに従って、種々のソフトウェア的機能を実行する。ＲＡＭ１７は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラムの実行時にロードモジュールが展開され、コンピュータプログラムの実行時に発生する一時的なデータ等を記憶する。例えば、バーコード２の読取処理を実行した走査線ごとの読取データ（受光量、光量、ゲイン値等）を記憶する。
【００２５】
通信手段１８は内部バス１９に接続されており、発光素子１１、ポリゴンミラー１２の回転駆動部、増幅回路１５等に通信線を介して接続されており、発光素子１１のオンオフ信号、ポリゴンミラー１２の回転速度等の指示信号、ゲイン値の指示信号等を送出する。また、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワークに接続されることにより、外部のコンピュータ等ともデータ送受信を行うことが可能となる。なお、ＲＡＭ１７に記憶されているコンピュータプログラムは、通信手段１８を介して外部コンピュータからダウンロードされたコンピュータプログラムである。
【００２６】
制御装置１０のＣＰＵ２０は、受光信号取得手段２０１、微分処理手段２０３と、フィルタ処理手段２０４と、二値化処理手段２０５とを有する信号処理手段２０２、デコード手段２０６、読取結果記憶手段２０７、判断手段２０８及び条件設定手段２０９を含み、これらの処理動作を制御する。
【００２７】
受光信号取得手段２０１は、通信手段１８で受信した、デジタル信号としての受光信号を取得する。すなわち、バーコード２での反射光は、ＣＣＤ、フォトダイオード等の受光素子１３にて受光され、光電変換される。光電変換されたアナログ信号は、コンデンサ１４にて直流成分を排除され、増幅回路１５にて設定されたゲイン値に応じて増幅され、Ａ／Ｄ変換器１６にてデジタル信号に変換される。受光信号取得手段２０１は、斯かるデジタル信号を取得する。
【００２８】
信号処理手段２０２は、取得したデジタル信号である受光信号を、デコードすることが可能な状態の信号へ前処理する。信号処理手段２０２の微分処理手段２０３は、取得した受光信号を微分処理することにより、受光信号のエッジ部分を抽出する。
【００２９】
フィルタ処理手段２０４は、特定の周波数帯域に存在する信号のみを通過させるバンドパスフィルタである。二値化処理手段２０５は、フィルタ処理手段２０４により限定された周波数帯域の信号について、所定の閾値より大きい信号をオン状態に、小さい信号をオフ状態とすることにより、パルス信号化する。
【００３０】
デコード手段２０６は、信号処理手段２０２にてパルス信号化された信号の内容を読み取る。具体的には、バーコード２の開始点及び終了点を示す情報、パリティ情報等を読み取るとともに、バーコード情報を読み取って出力し、ＲＡＭ１７に記憶する。バーコード情報を読み取ることができなかった場合にはその旨を示す情報を出力し、ＲＡＭ１７に記憶する。
【００３１】
読取結果記憶手段２０７は、デコード手段２０６で、一定の規則性をもって複数の異なる走査線（位置）に沿って周期的に走査した場合に、周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、読み取り時に設定されている条件に関する情報及び複数の走査線に対応付けてＲＡＭ１７に記憶する。したがって、何周期目の走査では、どの走査線でバーコード情報を正常に読み取ることができ、どの走査線でバーコード情報を読み取ることができなかったのかを、条件に関する情報と対応付けた履歴情報として記憶することができる。なお、条件に関する情報とは、例えば増幅回路１５に設定するゲイン値等の情報全般を意味している。
【００３２】
判断手段２０８は、読取結果記憶手段２０７にてＲＡＭ１７に記憶されている、直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ走査線でのバーコード情報を正常に読み取ることができたか否かを判断する。例えばｎ（ｎは自然数）番の走査線でバーコード情報を読み取る場合、前回の走査周期でｎ（ｎは自然数）番の走査線にてバーコード情報を正常に読み取ることができたか否かを判断する。
【００３３】
条件設定手段２０９は、判断手段２０８で、前回の走査周期ではバーコード情報を正常に読み取ることができたと判断した場合、前回の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前の読み取り時に設定されている条件に関する情報及び受光量に基づいて新たな条件に関する情報を設定する。すなわち、正常に読み取ることができなかった走査線についてのみ、新たな条件に関する情報、例えば新たなゲイン値に設定する。
【００３４】
従来は、走査線ごとに増幅回路１５のゲイン値を設定し、受光素子１３で受光した受光量にゲイン値を乗算した値を光量として制御装置１０が受け取る。図４は、受光素子１３が受け取った光量とゲイン値との関係を走査線ごとに示した例示図である。図４の例では、走査線１番及び２番の光量が他の走査線に比べて大きくなっており、走査線１番については最大光量を超えて飽和していることを示している。
【００３５】
この場合、光量を各走査線で略均一にするためには、走査線１番及び２番のゲイン値を下げれば良い。特に走査線２番については、ゲイン値を４分の１に設定することにより光量が他の走査線と一致することが明白である。一方、走査線１番については、とりあえずゲイン値を８分の１に設定することにより、光量を他の走査線に近づけることができる。
【００３６】
このようなゲイン値の調整方法は、バーコード２の読取処理の開始からゲイン値の設定が完了するまで光量が一定であることが前提となっている。しかし、実際にはバーコード２の読取処理の開始からゲイン値の設定が完了するまで光量が一定しない状況も多々考えうる。
【００３７】
図５は、円柱状の被検出物体３にバーコード２が付されている場合の模式図である。図５では、円柱状の被検出物体３として試験管等を想定している。図５に示すように、走査線ごとにバーコード読取装置１とバーコード２を付してある被検出物体３との直線距離が変動する場合、被検出物体（試験管）３の中央付近に当たる走査線４番及び５番では正反射に近いことから反射光の光量が大きいのに対して、被検出物体（試験管）３の中央から離れた走査線１番及び８番では、バーコード読取装置１との距離が離れること、反射光が拡散しやすいこと等により、光量が相対的に小さくなってしまう。
【００３８】
また図６は、バーコード２の一部分しか走査線が当たらない場合の例示図である。図６に示すように、走査線１番乃至３番はバーコード２上に存在するのに対し、走査線４番乃至８番はバーコード２に直接当たっていない。したがって、走査線４番乃至８番は白紙を走査している場合と同様、正反射の強い状態となるために反射光の光量が大きくなる。
【００３９】
これらの場合、バーコード２の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない。そこで、複数の走査線について順番にバーコード読み取りを実行する場合、直前に読取処理を実行した走査線における反射光の光量、及び設定されているゲイン値に基づいて、ゲイン値を決定することが良く行われている。
【００４０】
図７は、直前の他の走査線における読取処理の結果に基づくゲイン値算出の例示図である。図７では、例えば反射光の受光量が、走査線１番から８番まで順に、５０、６０、７０、１００、１５０、１００、７０、６０である場合について説明する。図７の数字は、１〜８までが１回目に順次読み取った走査線１番乃至８番のそれぞれの読取処理の結果を示している。例えば走査線１番では、ゲイン値が‘６４’であるが、光量は‘１０００’を超えた飽和光量となっている。したがって、走査線２番では、一律にゲイン値を走査線１番の読取処理時に用いたゲイン値の８分の１である‘８’に設定し、光量‘４８０’を得る。
【００４１】
次に走査線３番では、前回のゲイン値、すなわち走査線２番の読取処理時に用いたゲイン値‘８’と、直前の読取処理時の光量、すなわち走査線２番の読取処理の結果である光量‘４８０’を用いて、光量が‘１００’になるよう補正する。すなわち、走査線３番のゲイン値は、８×１００／４８０で‘１．６６６６７’を得る。
【００４２】
以下、順次、直前の読取処理時に用いたゲイン値及び読取処理の結果である光量に基づいて、読取処理時に設定するゲイン値を設定して、読取処理の結果である光量を走査線ごとに算出している。
【００４３】
走査線９番乃至１１番は、それぞれ走査線１番乃至３番に着目して、走査線１番及び２番のゲイン値を修正した読取処理の結果を９番及び１０番に、走査線３番をそのままのゲイン値で読み取った読取処理の結果を１１番に、それぞれ示している。
【００４４】
しかし、図７の例では、直前の他の走査線で読取処理を実行した時点でのゲイン値及び光量を基準にゲイン値を継続して修正しているため、既に正常に読み取ることができている走査線についても直前の読取処理を実行した時点でのゲイン値及び光量を基準にゲイン値を修正する。したがって、本来修正する必要が無いゲイン値も無差別に修正することからゲイン値が一定範囲内に収束するまで相当の時間を要し、安定してバーコード２を読み取るまでに時間がかかるという問題が生じる。
【００４５】
そこで、本実施の形態１では、走査線ごとに読取処理を実行する点は従来と同様であるものの、正常に読み取ることができたか否かを走査線ごとに判断し、正常に読み取ることができなかった場合にのみ、直前の他の走査線で読取処理を実行した時点でのゲイン値及び光量（受光量にゲイン値を乗算した値）に基づいてゲイン値を設定する。
【００４６】
図８は、本発明の実施の形態１に係るバーコード読取装置１の制御装置１０のＣＰＵ２０のゲイン値修正処理の手順を示すフローチャートである。図８の例では、説明を簡単にするために、直前の走査線にてバーコード情報を正常に読み取ることができなかった場合、ゲイン値を直前の走査線の読取処理時に設定されていたゲイン値の２分の１となるよう更新している。図８において、制御装置１０のＣＰＵ２０は、カウンタｎを初期値‘１’に設定し（ステップＳ８０１）、第ｎの走査線でバーコード２の読取処理を実行して（ステップＳ８０２）、読取処理の結果である読取結果情報として、バーコード情報を正常に読み取ることができたか否かに関する情報、ＣＰＵ２０が受け取った光量（受光素子１３での受光量×ゲイン値）及びゲイン値をＲＡＭ１７に記憶する（ステップＳ８０３）。
【００４７】
なお、バーコード情報を正常に読み取ることができたか否かを判断する方法は、特に限定されるものではない。本実施の形態１では、ＣＰＵ２０が受け取った光量が１００より大きく６００より小さいか否かによって判断している。もちろん、判断条件はこれに限定されるものではない。
【００４８】
ＣＰＵ２０は、現在の読取処理が第一の走査周期での読取処理であるか否かを判断し（ステップＳ８０４）、ＣＰＵ２０が、第一の走査周期での読取処理であると判断した場合（ステップＳ８０４：ＹＥＳ）、ＣＰＵ２０は、ＲＡＭ１７に記憶してある光量及びゲイン値に基づいて、次の走査線で用いるべき読取条件、例えば読取処理で設定するゲイン値を算出する（ステップＳ８０５）。ＣＰＵ２０は、読取条件を、算出された新たな読取条件に変更する（ステップＳ８０６）。もちろん、読取処理結果によっては読取条件が前回と同一であっても良い。
【００４９】
ＣＰＵ２０は、カウンタｎを‘１’インクリメントし（ステップＳ８０７）、一走査周期の読取処理が終了したか否かを判断する（ステップＳ８０８）。ＣＰＵ２０が、一走査周期の読取処理が終了していないと判断した場合（ステップＳ８０８：ＮＯ）、ＣＰＵ２０は、処理をステップＳ８０２へ戻し、上述の処理を繰り返す。
【００５０】
ＣＰＵ２０が、一走査周期の読取処理が終了したと判断した場合（ステップＳ８０８：ＹＥＳ）、ＣＰＵ２０は、カウンタｎを初期値‘１’に再設定し（ステップＳ８０９）、処理をステップＳ８０２へ戻して上述の処理を繰り返す。
【００５１】
ＣＰＵ２０が、現在の読取処理が第一の走査周期での読取処理ではないと判断した場合（ステップＳ８０４：ＮＯ）、ＣＰＵ２０は、前回の走査周期で第ｎ走査線の読取処理にてバーコード情報を正常に読み取ることができたか否かを判断する（ステップＳ８１０）。具体的には、デコード手段２０６にて出力されるバーコード２の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がＲＡＭ１７に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がＲＡＭ１７に記憶されている場合には正常に読み取ることができなかったと判断する。
【００５２】
ＣＰＵ２０が、前回の走査周期で第ｎ走査線の読取処理にてバーコード情報を正常に読み取ることができなかったと判断した場合（ステップＳ８１０：ＮＯ）、ＣＰＵ２０は、ＲＡＭ１７に記憶してある光量及びゲイン値に基づいて、次の走査線で用いるべき読取条件、例えば読取処理で設定するゲイン値を算出する（ステップＳ８１１）。ＣＰＵ２０は、読取条件を、算出された新たな読取条件に変更する（ステップＳ８１２）。もちろん、読取処理結果によっては読取条件が前回と同一であっても良い。
【００５３】
ＣＰＵ２０が、前回の走査周期で第ｎ走査線の読取処理にてバーコード情報を正常に読み取ることができたと判断した場合（ステップＳ８１０：ＹＥＳ）、ＣＰＵ２０は、前回の走査周期での読取条件に設定し（ステップＳ８１３）、カウンタｎを‘１’インクリメントする（ステップＳ８１４）。一度正常に読み取ることができた読取条件であれば、その後同一読取条件にて正常に読み取ることができなくなることは考えにくいことから、同一の走査線について前回の走査周期での読取処理時に用いた読取条件をそのまま用いることが望ましいからである。
【００５４】
ＣＰＵ２０は、全ての走査線の光量が所定の範囲内に収束したか否かを判断する（ステップＳ８１５）。ＣＰＵ２０が、まだ収束していないと判断した場合（ステップＳ８１５：ＮＯ）、ＣＰＵ２０は、処理をステップＳ８０８へ戻して上述した処理を繰り返す。ＣＰＵ２０が、収束したと判断した場合（ステップＳ８１５：ＹＥＳ）、ＣＰＵ２０は、処理を終了する。
【００５５】
図９は、本発明の実施の形態１に係るゲイン値修正処理の手順を示す模式図である。図９の左端の数字は、８個の走査線を識別する番号であり、上から走査線１番、２番、・・・、８番となっている。
【００５６】
図９の例では、第一走査周期において、走査線１番から８番まで順次、直前の走査線での光量及びゲイン値に基づいて新たなゲイン値を算出している。すなわち、走査線１番がゲインＡであった場合、走査線２番はゲインＡ及び走査線１番での光量に基づいて算出されたゲインＢに設定し、走査線３番はゲインＢ及び走査線２番での光量に基づいて算出されたゲインＣに設定し、以下順次走査線８番にゲインＨを設定するまでゲイン値を算出する。
【００５７】
また、算出されたゲイン値にて、バーコード情報を正常に読み取ることができたか否かに関する読取結果情報をＲＡＭ１７に記憶する。図９の例では、‘ＯＫ’が正常に読み取ることができた旨を示し、‘ＮＧ’が正常に読み取ることができなかった旨を示している。図９の例では、第一走査周期において、走査線１番から４番まではバーコード情報を正常に読み取ることができていないが、走査線５番から８番まではバーコード情報を正常に読み取ることができている。
【００５８】
第二走査周期では、同じ走査線について、前回の走査周期での読取結果情報に基づいて、ゲイン値を算出するか否かを決定している。すなわち第一走査周期にて‘ＯＫ’であった走査線については第一走査周期にて設定されているゲイン値を変更せず、第一走査周期にて‘ＮＧ’であった走査線については、第一走査周期で算出した方法と同様に、直前の走査線での光量及びゲイン値に基づいて、新たなゲイン値を算出している。
【００５９】
図９の例では、走査線１番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線８番の光量及びゲイン値に基づいて算出する。すなわち第一走査周期でのゲイン値であるゲインＡとは無関係にゲインＩに設定される。同様に、走査線２番も第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第二走査周期の走査線１番の光量及びゲイン値に基づいてゲインＪが算出される。以下同様に走査線４番までは第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線での光量及びゲイン値に基づいて算出される。
【００６０】
走査線５番は、第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は第一走査周期でのゲイン値であるゲインＥがそのまま維持される。以下、同様に走査線６番から８番までは、第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値として第一走査周期でのゲイン値であるゲインＦ、ゲインＧ、ゲインＨがそれぞれ維持される。
【００６１】
第二走査周期にて、すべての走査線についてバーコード情報を正常に読み取ることができるようになった場合、すなわち走査線１番から８番まで全て‘ＯＫ’となった場合には、第三走査周期以降、全ての走査線について設定されているゲイン値を維持してバーコード情報を読み取る。‘ＮＧ’となる走査線があった場合には、第三走査周期以降も上述と同様の方法によって新たなゲイン値を算出する。
【００６２】
具体的なゲイン値の算出例を以下に示す。図１０は、図８に示す本発明の実施の形態１に係るゲイン値修正処理を８個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。図１０の左端欄内の数字は、８個の走査線を識別する番号であり、上から走査線１番、２番、・・・、８番となっている。
【００６３】
図１０の例では、初期値を‘６４’とし、前回の走査線での光量（受光量×ゲイン値）が２００以上５００以下の範囲内である場合には前回の走査線でのゲイン値を維持し、範囲外である場合には前回の走査線でのゲイン値を２分の１倍することで新たなゲイン値を設定する、というルールでゲイン値を設定している。
【００６４】
走査線１番の第一走査周期では、光量が飽和光量であることから、読取条件として設定されているゲイン値‘６４’は適切ではないと判断することができる。そこで、走査線１番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線２番のゲイン値として、走査線１番のゲイン値‘６４’を用いて、（６４×１／２）にてゲイン値‘３２’を得る。なお、読取結果が正常であるか否かは、光量が１００以上６００以下の範囲内であるか否かに基づいて判断するものとする。
【００６５】
以下、走査線３番の第一走査周期までは、光量が飽和光量であることから、各走査線の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてＲＡＭ１７に記憶するとともに、各走査線のゲイン値として、直前の走査線でのゲイン値を２分の１倍した新たなゲイン値を設定している。
【００６６】
走査線５番の第一周期では、光量が‘４２４’であり、２００以上５００以下の範囲内であることから、読取条件として設定されているゲイン値‘４’は適切であると判断することができる。そこで、走査線５番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線６番のゲイン値として、走査線５番のゲイン値‘４’をそのまま設定する。
【００６７】
以下、同様に第一走査周期については、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。これは、第一走査周期では、走査線ごとに前回の読取条件であるゲイン値が算出されていないからである。
【００６８】
次に、走査線１番の第二走査周期では、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【００６９】
すなわち、走査線１番の第二走査周期では光量が‘５２８’であり、２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘４’が適切ではないと判断することができる。そこで、走査線１番の第二走査周期での読取結果が正常である旨を示す情報として‘○’をＲＡＭ１７に記憶するとともに、走査線２番のゲイン値として、走査線１番のゲイン値‘４’を２分の１倍した新たなゲイン値‘２’を設定する。
【００７０】
次に、走査線２番の第二走査周期では、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【００７１】
すなわち、走査線２番の第二走査周期では光量が‘８００’であり、２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘２’が適切ではないと判断することができる。そこで、走査線２番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をＲＡＭ１７に記憶するとともに、走査線３番のゲイン値として、走査線２番のゲイン値‘２’を２分の１倍した新たなゲイン値‘１’を設定する。
【００７２】
以下、走査線４番の第二走査周期までは、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出すことから、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【００７３】
次に、走査線５番の第二走査周期では、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常である旨を示す情報である‘○’を読み出す。したがって、第一走査周期でのゲイン値をそのまま維持し、読取条件としてゲイン値‘４’を設定する。
【００７４】
以下、走査線８番までは、第一走査周期での読取結果が正常である旨を示す情報である‘○’が記憶されていることから、いずれも第一走査周期でのゲイン値‘４’を、そのままゲイン値として設定する。第三走査周期以降についても、同様の処理を繰り返す。
【００７５】
以上のように本実施の形態１によれば、一度でも正常に読み取ることができた走査線については、以後継続して正常に読み取ることができ、正常に読み取ることができなかった走査線についてのみ適切な読取条件に収束させることができることから、安定するまでの総時間を短縮することができる。
【００７６】
また、バーコード２の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない場合、例えば、円柱状の被検出物体３にバーコード２が付されている場合、バーコード２の一部分しか走査線が当たらない場合等であっても、適切な読取条件であるゲイン値等を早期に特定することができ、安定したバーコード読取を実行することができるバーコード読取装置を提供することが可能となる。
【００７７】
（実施の形態２）
本発明の実施の形態２に係るバーコード読取装置の構成は、実施の形態１と同様であることから、同一の符号を付することにより詳細な説明を省略する。本実施の形態２では、走査線ごとに読取処理を実行する点は従来と同様であるものの、正常に読み取ることができたか否かを走査線ごとに判断し、正常に読み取ることができなかった場合には、事前に記憶してある複数のゲイン値を、所定の順序で繰り返し設定する点で実施の形態１と相違する。
【００７８】
図１１は、本発明の実施の形態２に係るバーコード読取装置１の制御装置１０のＣＰＵ２０のゲイン値修正処理の手順を示すフローチャートである。図１１において、制御装置１０のＣＰＵ２０は、カウンタｎを初期値‘１’に設定し（ステップＳ１１０１）、第ｎの走査線でバーコード２の読取処理を実行して（ステップＳ１１０２）、読取処理の結果である読取結果情報として、バーコード情報を正常に読み取ることができたか否かに関する情報、ＣＰＵ２０が受け取った光量（受光素子１３での受光量×ゲイン値）及びゲイン値をＲＡＭ１７に記憶する（ステップＳ１１０３）。
【００７９】
なお、バーコード情報を正常に読み取ることができたか否かを判断する方法は、特に限定されるものではない。本実施の形態２では、ＣＰＵ２０が受け取った光量が１００以上６００以下の範囲内であるか否かに基づいて判断する。
【００８０】
ＣＰＵ２０は、現在の読取処理が第一の走査周期での読取処理であるか否かを判断し（ステップＳ１１０４）、ＣＰＵ２０が、第一の走査周期での読取処理であると判断した場合（ステップＳ１１０４：ＹＥＳ）、ＣＰＵ２０は、今回の走査でバーコード情報を正常に読み取ることができたか否かを判断する（ステップＳ１１０５）。具体的には、デコード手段２０６にて出力されるバーコード２の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がＲＡＭ１７に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がＲＡＭ１７に記憶されている場合には正常に読み取ることができなかったと判断する。
【００８１】
ＣＰＵ２０が、バーコード情報を正常に読み取ることができなかったと判断した場合（ステップＳ１１０５：ＮＯ）、ＣＰＵ２０は、ＲＡＭ１７に事前に記憶してあるゲイン値候補から次に設定するべきゲイン値を選択する（ステップＳ１１０６）。図１２は、ＲＡＭ１７に記憶してあるゲイン値候補の例示図である。図１２の例では、ゲインＡからゲインＩまでの９つのゲイン値が、１〜９の順序付けをされて記憶されている。ＣＰＵ２０は、順序付けにしたがって順次、ゲイン値を選択する。
【００８２】
図１１に戻って、制御装置１０のＣＰＵ２０が、バーコード情報を正常に読み取ることができたと判断した場合（ステップＳ１１０５：ＹＥＳ）、ＣＰＵ２０は、ゲイン値を変更する必要が無いと判断し、ステップＳ１１０６をスキップし、カウンタｎを‘１’インクリメントして（ステップＳ１１０７）、一走査周期の読取処理が終了したか否かを判断する（ステップＳ１１０８）。ＣＰＵ２０が、一走査周期の読取処理が終了していないと判断した場合（ステップＳ１１０８：ＮＯ）、ＣＰＵ２０は、処理をステップＳ１１０２へ戻し、上述の処理を繰り返す。
【００８３】
ＣＰＵ２０が、一走査周期の読取処理が終了したと判断した場合（ステップＳ１１０８：ＹＥＳ）、ＣＰＵ２０は、カウンタｎを初期値‘１’に再設定し（ステップＳ１１０９）、処理をステップＳ１１０２へ戻して上述の処理を繰り返す。
【００８４】
ＣＰＵ２０が、現在の読取処理が第一の走査周期での読取処理ではないと判断した場合（ステップＳ１１０４：ＮＯ）、ＣＰＵ２０は、前回の走査周期で第ｎ走査線の読取処理にてバーコード情報を正常に読み取ることができたか否かを判断する（ステップＳ１１１０）。具体的には、デコード手段２０６にて出力されるバーコード２の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がＲＡＭ１７に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がＲＡＭ１７に記憶されている場合には正常に読み取ることができなかったと判断する。
【００８５】
ＣＰＵ２０が、前回の走査周期で第ｎ走査線の読取処理にてバーコード情報を正常に読み取ることができなかったと判断した場合（ステップＳ１１１０：ＮＯ）、ＣＰＵ２０は、直前の走査線でのゲイン値、すなわち第ｎ−１走査線の読取処理で設定されていたゲイン値と、前回の走査周期で第ｎ走査線の読取処理に設定されていたゲイン値とが同一であるか否かを判断する（ステップＳ１１１１）。ＣＰＵ２０が、同一であると判断した場合（ステップＳ１１１１：ＹＥＳ）、ＣＰＵ２０は、ＲＡＭ１７に事前に記憶してあるゲイン値候補から次に設定するべきゲイン値を選択する（ステップＳ１１１２）。ＣＰＵ２０が、同一ではないと判断した場合（ステップＳ１１１１：ＮＯ）、ＣＰＵ２０は、直前の走査線でのゲイン値、すなわち第ｎ−１走査線の読取処理で設定されていたゲイン値を選択する（ステップＳ１１１３）。
【００８６】
ＣＰＵ２０が、前回の走査周期で第ｎ走査線の読取処理にてバーコード情報を正常に読み取ることができたと判断した場合（ステップＳ１１１０：ＹＥＳ）、ＣＰＵ２０は、ステップＳ１１１１乃至ステップＳ１１１３をスキップして、カウンタｎを‘１’インクリメントする（ステップＳ１１１４）。ＣＰＵ２０は、全ての走査線の光量が所定の範囲内に収束したか否かを判断し（ステップＳ１１１５）、ＣＰＵ２０が、まだ収束していないと判断した場合（ステップＳ１１１５：ＮＯ）、ＣＰＵ２０は、処理をステップＳ１１０８へ戻して上述した処理を繰り返す。ＣＰＵ２０が、収束したと判断した場合（ステップＳ１１１５：ＹＥＳ）、ＣＰＵ２０は、処理を終了する。
【００８７】
図１３は、本発明の実施の形態２に係るゲイン値修正処理の手順を示す模式図である。図１３の左端の数字は、８個の走査線を識別する番号であり、上から走査線１番、２番、・・・、８番となっている。図１３の例では、第一走査周期において、走査線１番から８番まで順次、直前の走査線での光量及びゲイン値に基づいて、所定のルールでゲイン値を設定している。
【００８８】
まず、設定されたゲイン値にて、バーコード情報を正常に読み取ることができたか否かに関する読取結果情報をＲＡＭ１７に記憶する。図１３の例では、‘ＯＫ’が正常に読み取ることができた旨を示し、‘ＮＧ’が正常に読み取ることができなかった旨を示している。
【００８９】
そして、走査線１番がゲインＡであった場合、走査線２番は、走査線１番でバーコード情報を正常に読み取ることができたか否かを判断し、正常に読み取ることができた場合にはゲインＡのまま、正常に読み取ることができなかった場合には、ＲＡＭ１７に記憶してある次の順位のゲイン値であるゲインＢに変更する。
【００９０】
図１３の例では、走査線１番が‘ＮＧ’であることから、走査線２番は、ＲＡＭ１７に記憶してある次の順位のゲイン値であるゲインＢに変更している。以下同様に、直前の走査線でバーコード情報を正常に読み取ることができた場合、すなわち‘ＯＫ’である場合には、直前の走査線でのゲイン値をそのまま用い、正常に読み取ることができなかった場合、すなわち‘ＮＧ’である場合には、ＲＡＭ１７に記憶してある次の順位のゲイン値に変更する。
【００９１】
第二走査周期では、同じ走査線について、前回の走査周期での読取結果情報に基づいて、ゲイン値を算出するか否かを決定している。すなわち第一走査周期にて‘ＯＫ’であった走査線については第一走査周期にて設定されているゲイン値を変更せず、第一走査周期にて‘ＮＧ’であった走査線については、第一走査周期で算出した方法と同様に、直前の走査線での光量及びゲイン値に基づいて、新たなゲイン値を設定している。
【００９２】
図１３の例では、走査線１番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線８番の光量及びゲイン値に基づいて設定する。すなわち第一走査周期でのゲイン値であるゲインＡとは無関係にゲインＧに設定される。同様に、走査線２番も第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第二走査周期の走査線１番の光量及びゲイン値に基づいてゲインＨに設定される。
【００９３】
走査線３番は第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は、直前の走査線である第一走査周期の走査線３番のゲイン値であるゲインＣに設定される。走査線４番も第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は、直前の走査線である第一走査周期の走査線４番のゲイン値であるゲインＣに設定される。
【００９４】
走査線５番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線４番の光量及びゲイン値に基づいて設定する。すなわち第一走査周期でのゲイン値であるゲインＣとは無関係に、直前の走査線である第二走査周期の走査線４番で正常に読み取ることができていることから、第二走査周期の走査線４番で設定されているゲインＣに設定される。
【００９５】
以下同様に、前回の走査周期にてバーコード情報を正常に読み取ることができているか否か、及び直前の走査線で正常に読み取ることができているか否かに応じて、順次ＲＡＭ１７に記憶されているゲイン値を周期的に設定していく。
【００９６】
具体的なゲイン値の算出例を以下に示す。図１４は、図１１に示す本発明の実施の形態２に係るゲイン値修正処理を８個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。図１４の左端欄内の数字は、８個の走査線を識別する番号であり、上から走査線１番、２番、・・・、８番となっている。なお、図１２に示すゲインＡ乃至Ｉは、それぞれ‘１’、‘２’、‘４’、‘８’、‘１６’、‘３２’、‘６４’、‘１２８’、‘２５６’に設定している。
【００９７】
図１４の例では、ゲイン値の初期値を‘１’とし、前回の走査線での光量（受光量×ゲイン値）が２００以上５００以下の範囲内である場合には前回の走査線でのゲイン値を維持し、範囲外である場合には、ＲＡＭ１７に記憶してある次の順位のゲイン値に設定する、というルールでゲイン値を設定する。
【００９８】
走査線１番の第一走査周期では、光量が‘１１１’であり、光量（受光量×ゲイン値）が２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘１’は適切ではないと判断することができる。そこで、走査線１番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線２番のゲイン値として、走査線１番のゲイン値‘１’の次の順位でＲＡＭ１７に記憶してあるゲイン値‘２’を設定する。
【００９９】
走査線２番の第一走査周期では、光量が‘１９２’であり、光量（受光量×ゲイン値）が２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘２’は適切ではないと判断することができる。そこで、走査線２番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線３番のゲイン値として、走査線２番のゲイン値‘２’の次の順位でＲＡＭ１７に記憶してあるゲイン値‘４’を設定する。
【０１００】
走査線３番の第一走査周期では、光量が‘４４８’であり、光量（受光量×ゲイン値）が２００以上５００以下の範囲内であることから、読取条件として設定されているゲイン値‘４’は適切であると判断することができる。そこで、走査線３番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線４番のゲイン値として、走査線３番のゲイン値‘４’をそのまま設定する。
【０１０１】
走査線４番の第一走査周期では、光量が‘４０４’であり、光量（受光量×ゲイン値）が２００以上５００以下の範囲内であることから、読取条件として設定されているゲイン値‘４’は適切であると判断することができる。そこで、走査線４番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線５番のゲイン値として、走査線４番のゲイン値‘４’をそのまま設定する。
【０１０２】
走査線５番の第一走査周期では、光量が飽和光量となっており、光量（受光量×ゲイン値）が２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘４’は適切ではないと判断することができる。そこで、走査線５番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてＲＡＭ１７に記憶するとともに、走査線６番のゲイン値として、走査線５番のゲイン値‘４’の次の順位でＲＡＭ１７に記憶してあるゲイン値‘８’を設定する。
【０１０３】
以下、第一走査周期については、順次上述した手順にて走査線ごとにゲイン値を設定する。これは、第一走査周期では、走査線ごとに前回の読取条件であるゲイン値が存在しないからである。
【０１０４】
次に、走査線１番の第二走査周期では、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【０１０５】
すなわち、走査線１番の第二走査周期では光量が飽和光量であり、２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘６４’が適切ではないと判断することができる。そこで、走査線１番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をＲＡＭ１７に記憶するとともに、走査線２番のゲイン値として、走査線１番のゲイン値‘６４’の次の順位でＲＡＭ１７に記憶してあるゲイン値‘１２８’を設定する。
【０１０６】
次に、走査線２番の第二走査周期では、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【０１０７】
すなわち、走査線２番の第二走査周期でも光量が飽和光量であり、２００以上５００以下の範囲外であることから、読取条件として設定されているゲイン値‘１２８’が適切ではないと判断することができる。そこで、走査線２番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をＲＡＭ１７に記憶する。
【０１０８】
走査線３番の第二走査周期では、ＲＡＭ１７に記憶してある読取結果情報から、第一走査周期での読取結果が正常である旨を示す情報である‘○’を読み出す。したがって、第一走査周期で用いたゲイン値をそのまま読取条件として設定する。すなわち、走査線３番のゲイン値としてゲイン値‘４’設定する。
【０１０９】
以下、同様に順次ゲイン値を設定し、ゲイン値が最大値である‘２５６’になった場合には、次の順位に記憶してあるゲイン値として、最初の順位で記憶してあるゲイン値‘１’へ戻ってゲイン値を設定する。
【０１１０】
以上のように本実施の形態２によっても、一度でも正常に読み取ることができた走査線については、以後継続して正常に読み取ることができ、正常に読み取ることができなかった走査線についてのみ適切な読取条件に収束させることができることから、安定するまでの総時間を短縮することができる。
【０１１１】
また、バーコード２の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない場合、例えば、円柱状の被検出物体３にバーコード２が付されている場合、バーコード２の一部分しか走査線が当たらない場合等であっても、適切な読取条件であるゲイン値等を早期に特定することができ、安定したバーコード読取を実行することができるバーコード読取装置を提供することが可能となる。
【０１１２】
なお、上述した実施の形態１及び２では、ポリゴンミラー１２を回転軸３０に対して所定の角度θだけ傾斜して取り付けることにより、一定の規則性をもって複数の異なる走査線に沿って周期的に走査するようにしているが、ミラー機構としてはポリゴンミラー１２に限定されるものではなく、ガルバノミラーであっても良い。ガルバノミラーを用いる場合、一定の規則性をもって複数の異なる走査線に沿って周期的に走査できるようにするためには、例えばガルバノミラーの姿勢制御を行う互いに直交する２軸の回転軸を設け、２軸制御すれば良い。
【０１１３】
また、上述した実施の形態１及び２では、受光信号を正常に読み取ることができたか否かを、受光信号の光量が所定の範囲内であるか否かによって判断しているが、判断方法は特にこれに限定されるものではない。例えば、読取対象がバーコード２であることから、バーコード２の両端部に存在する無信号区間を検出することができたか否か、バーコード２のスタート信号／エンド信号を検出することができたか否か、バーコード情報として含まれていることが既知である情報が含まれていたか否か等のいずれか、又はこれらの組み合わせで判断しても良い。
【０１１４】
その他、本発明は上記実施の形態に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変形、置換等が可能であることは言うまでもない。
【図面の簡単な説明】
【０１１５】
【図１】本発明の実施の形態１に係るバーコード読取装置の構成を模式的に示すブロック図である。
【図２】本発明の実施の形態１に係るバーコード読取装置のポリゴンミラーの取り付け状態を示す模式図である。
【図３】本発明の実施の形態１に係るバーコード読取装置の制御装置の構成を示すブロック図である。
【図４】受光素子が受け取った光量とゲイン値との関係を走査線ごとに示した例示図である。
【図５】円柱状の被検出物体にバーコードが付されている場合の模式図である。
【図６】バーコードの一部分しか走査線が当たらない場合の例示図である。
【図７】直前の他の走査線における読取処理の結果に基づくゲイン値算出の例示図である。
【図８】本発明の実施の形態１に係るバーコード読取装置の制御装置のＣＰＵのゲイン値修正処理の手順を示すフローチャートである。
【図９】本発明の実施の形態１に係るゲイン値修正処理の手順を示す模式図である。
【図１０】本発明の実施の形態１に係るゲイン値修正処理を８個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。
【図１１】本発明の実施の形態２に係るバーコード読取装置の制御装置のＣＰＵのゲイン値修正処理の手順を示すフローチャートである。
【図１２】ＲＡＭに記憶してあるゲイン値候補の例示図である。
【図１３】本発明の実施の形態２に係るゲイン値修正処理の手順を示す模式図である。
【図１４】本発明の実施の形態２に係るゲイン値修正処理を８個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。
【符号の説明】
【０１１６】
１  バーコード読取装置
２  バーコード
３  被検出物体
１０  制御装置
１１  発光素子
１２  ポリゴンミラー
１３  受光素子
１４  コンデンサ
１５  増幅回路
１６  Ａ／Ｄ変換器
１７  ＲＡＭ
１８  通信手段
１９  内部バス
２０  ＣＰＵ
２１  入出力インタフェース
【図１】
2009271579.tif 000003
【図２】
2009271579.tif 000004
【図３】
2009271579.tif 000005
【図４】
2009271579.tif 000006
【図５】
2009271579.tif 000007
【図６】
2009271579.tif 000008
【図７】
2009271579.tif 000009
【図８】
2009271579.tif 000010
【図９】
2009271579.tif 000011
【図１０】
2009271579.tif 000012
【図１１】
2009271579.tif 000013
【図１２】
2009271579.tif 000014
【図１３】
2009271579.tif 000015
【図１４】
2009271579.tif 000016