以下、添付図面を参照して本発明に係る好適な実施の形態及び変形例を順に詳細に説明する。なお、本発明は、図示例に限定されるものではない。
図1〜図14を参照して本発明に係る実施の形態を説明する。先ず、図1及び図2を参照して本実施の形態の装置構成を説明する。図1に、本実施の形態のハンディターミナル1の回路構成を示す。図2に、スキャナ部16の内部構成を示す。
本実施の形態のバーコード読取装置としてのハンディターミナル1は、バーコード読取、ユーザ操作による情報の入力、情報の記憶、等の機能を有する携帯端末である。ハンディターミナル1は、通常モードでは、バーコード読取のトリガキーを操作する毎にバーコード読取用のレーザ光を発光及び受光してバーコード読取を行うが、バーコード連続読取モードになると、トリガキーの操作でバーコード読取が開始されて、バーコード読取用のレーザ光を連続的に発光及び受光してバーコード読取を繰り返し行う装置である。
図1に示すように、ハンディターミナル1は、制御手段としてのCPU(Central Processing Unit)11、入力部12、RAM(Random Access Memory)13、通知手段としての表示部14、ROM(Read Only Memory)15、バーコード読取手段としてのスキャナ部16、記憶手段としてのフラッシュメモリ17、I/F(InterFace)18、通知手段としての音出力部19等を備えて構成され、各部がバス20を介して接続される。
CPU11は、ハンディターミナル1の各部を中央制御する。CPU11は、ROM15に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをRAM13に展開し、RAM13に展開されたプログラムとの協働で、各種処理を実行する。
CPU11は、ROM15に記憶されたスキャンプログラムとの協働により、スキャナ部16によりスキャンされた読取候補バーコードのバーコードイメージを取得してRAM13のバーコードイメージ32に格納し、読取候補バーコードのバーコードイメージ32より後にスキャナ部16にスキャンされた同一バーコードのバーコードイメージを取得してRAM13のバーコードイメージ52に格納し、バーコードイメージ52に対するバーコードイメージ52の変化状態が動作閾値データ65〜68の動作条件を満たすか否かを判定する。そして、CPU11は、動作条件を満たす場合に、ハンディターミナル1に規定動作があったと判定し、バーコードの読取を確定し(読取確定バーコードを確定し)、そのバーコードのデコードデータをフラッシュメモリ17に記憶するとともに、読取バーコードを確定した旨を表示部14に表示する。
読取候補バーコードとは、スキャナ部16にスキャンされたバーコードであり、ハンディターミナル1が規定動作をしたか否かの判定の基準となるバーコードである。読取確定バーコードとは、読取候補バーコードと同一のバーコードであり、読取候補バーコードよりも後にスキャナ部16にスキャンされたバーコードであり、ハンディターミナル1が規定動作をしたか否かの判定に用いられるバーコードイメージのバーコートである。
入力部12は、バーコード読取を指示するためのトリガキー、数字・文字入力キー、各種機能キー等の各種キーを含み、操作者から押下入力された各キーのキー入力信号をCPU11に出力する。また、入力部12は、表示部14と一体的にタッチパネルが構成されることとしてもよい。
RAM13は、情報を一時的に格納する揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納するワークエリアを有する。RAM13には、後述する格納データ30,50が格納される。
表示部14は、LCD(Liquid Crystal Display)、ELD(ElectroLuminescent Display)等で構成され、CPU11からの表示信号に従って各種表示を行う。
ROM15は、各種プログラム、各種データが予め読み出し専用に記憶される記憶部である。ROM15は、スキャナプログラムを記憶する。
スキャナ部16は、CPU11の制御信号に従い、バーコードからバーコードイメージを読取り、そのバーコードイメージのデータをCPU11に出力する一次元バーコードスキャナである。図2に示すように、スキャナ部16は、発光部161と、バイブレーションミラー162と、受光部163と、ゲイン回路164と、二値化回路165と、を備えて構成される。
発光部161は、レーザ光Lを発光する。バイブレーションミラー162は、CPU11の制御信号に従い、図示しないモータ等によりバイブレートされることにより、発光部161から発光されたレーザ光Lを反射して左右に広げる。受光部163は、バイブレーションミラー162に反射されたレーザ光Lが実際にバーコードに当たった反射光を受光して電気信号に変換するモジュールである。
ゲイン回路164は、受光部163で受光した反射光の電気信号を増幅して波形を最適化する。二値化回路165は、ゲイン回路164で最適化された電気信号をバーコードイメージとしての二値データに変換してCPU11に出力する。CPU11は、二値化回路165から入力された二値データをデコードすることとなる。
フラッシュメモリ17は、各種データ等の情報が読み出し及び書き込み可能な記憶部である。フラッシュメモリ17は、後述する閾値データ40,60が記憶される。また、フラッシュメモリ17は、バーコード確定後のデコードデータが記憶される。
I/F18は、通信ケーブルを介して外部機器と情報を送受信する。I/F18は、例えば、USB(Universal Serial Bus)方式の有線通信部である。また、ハンディターミナル1が無線通信機能を有する無線通信部を有する構成としてもよい。
音出力部19は、アンプ、スピーカ等から構成され、CPU11の制御信号に従い、アンプにより音の信号を増幅し、ブザー音等の音をスピーカから出力する。
次に、図3及び図4を参照して、RAM13及びフラッシュメモリ17に記憶されるデータを説明する。図3(a)に、読取候補バーコードの格納データ30の構成を示す。図3(b)に、読取候補バーコードの閾値データ40の構成を示す。図4(a)に、読取確定バーコードの格納データ50の構成を示す。図4(b)に、読取確定バーコードの閾値データ60の構成を示す。
RAM13には、スキャナ処理において、図3(a)に示す読取候補バーコードの格納データ30と、図4(a)に示す読取確定バーコードの格納データ50と、が格納される。
格納データ30は、デコードデータ31と、バーコードイメージ32と、条件成立回数(M)33と、を含む。
デコードデータ31は、読取候補バーコードのデコードが完了した際の読取データである。デコードデータ31に格納されているデコードデータと、今回デコードした結果とが比較され、同一であるか否かの判定に使用する。
バーコードイメージ32は、読取候補バーコードを構成する黒バー及び白スペースの幅と、左右のマージン幅のデータである。実際にバーコードを読取った時点では、バーコード以外のごみデータ等が、イメージとして存在するが、デコードが完了しているため、取得したバーコードイメージのどの部分がデータとして有効であり、どの部分が不要な部分であるかが、判別できる。このため、バーコードとして構成される有効なデータ及びその両側にあるマージン部のみがイメージデータとしてバーコードイメージ32に格納されている。また、バーコードイメージ32の左右のマージン幅のデータをみることにより、バーコードの開始位置と終了位置とがわかる。
条件成立回数33は、読取候補バーコードとしての成立条件が成立した回数のデータである。変数Mは、条件成立回数33の変数である。
格納データ50は、デコードデータ51と、バーコードイメージ52と、条件成立回数(N)53と、を含む。デコードデータ51、バーコードイメージ52、条件成立回数53は、順に、格納データ30のデコードデータ31、バーコードイメージ32、条件成立回数33のデータ形式と同様である。
デコードデータ51は、読取確定バーコードのデコードが完了した際の読取データである。バーコードイメージ52は、読取確定バーコードを構成する黒バー及び白スペースの幅と、左右のマージン幅のデータである。条件成立回数53は、読取確定バーコードとしての成立条件が成立した回数のデータである。変数Nは、条件成立回数33の変数である。
フラッシュメモリ17には、図3(b)に示す読取候補バーコードの閾値データ40と、図4(b)に示す読取確定バーコードの閾値データ60と、が記憶されている。
閾値データ40は、閾値(右)41と、閾値(左)42と、閾値(遠)43と、閾値(近)44と、を含む。閾値(右)41は、読取候補バーコードのバーコードイメージ右側の変化の許容範囲を示すデータであり、例えばxx%(xx:任意のパーセンテージ値であり、以下同様とする。)のデータとする。バーコードイメージ52に格納されているバーコードイメージの右側のマージン幅と、今回読取ったバーコードイメージの右側のマージン幅と、を比較し、閾値(右)41に格納されているxx%以内であることを、そのバーコードイメージを読取候補バーコードとして採用する条件の一つとする。閾値(左)42は、閾値(右)41と同様に、読取候補バーコードのバーコードイメージ左側の変化の許容範囲を示すデータであり、例えばxx%のデータとする。
閾値(遠)43は、閾値(右)41と同様に、読取候補バーコードのバーコードイメージの遠ざかり方の変化の許容範囲を示すデータであり、例えばxx%のデータとする。バーコードイメージ52に格納されているバーコードイメージのデータ部分の幅と、今回読取ったバーコードイメージのデータ部分と、を比較し、ここで格納されているxx%以内であることを、バーコードイメージを読取候補バーコードとして採用する条件の一つとする。閾値(近)44は、閾値(右)41と同様に、読取候補バーコードのバーコードイメージの近づき方の変化の許容範囲を示すデータであり、例えばxx%のデータとする。
閾値データ60は、閾値(右)61と、閾値(左)62と、閾値(遠)63と、閾値(近)64と、動作閾値(右)65と、動作閾値(左)66と、動作閾値(遠)67と、動作閾値(近)68と、規定パターン69と、を含む。
閾値(右)61、閾値(左)62、閾値(遠)63、閾値(近)64は、順に、閾値データ40の閾値(右)41、閾値(左)42、閾値(遠)43、閾値(近)44と同様のデータ形式である。閾値(右)61は、読取確定バーコードのバーコードイメージ右側の変化の許容範囲を示すデータである。閾値(左)62は、読取確定バーコードのバーコードイメージ左側の変化の許容範囲を示すデータである。閾値(遠)63は、読取確定バーコードのバーコードイメージの遠ざかり方の変化の許容範囲を示すデータである。閾値(近)64は、読取確定バーコードのバーコードイメージの近づき方の変化の許容範囲を示すデータである。
動作閾値(右)65は、ハンディターミナル1(スキャナ部16)が右方向に規定動作の移動をしたと判断するための閾値のデータであり、例えばxx%のデータとする。バーコードイメージ52に格納されているバーコードイメージの、右側のマージン幅と、今回読取ったバーコードイメージの右側のマージン幅と、を比較し、動作閾値(右)65に格納されているxx%以上であれば、右方向に規定動作の移動をしたと判定される。但し、あまりにも大きい移動がおきた際に、ガードをかけ、規定動作の移動とみなさないようにすることも可能である。
動作閾値(左)66は、動作閾値(右)65と同様に、ハンディターミナル1(スキャナ部16)が左方向に規定動作の移動をしたと判断するための閾値のデータであり、例えばxx%のデータとする。
動作閾値(遠)67は、ハンディターミナル1(スキャナ部16)が後方向に規定動作の移動をしたと判断するための閾値のデータであり、例えばxx%のデータとする。バーコードイメージ52に格納されているバーコードイメージのデータ部分の幅と、今回読取ったバーコードイメージのデータ部分と、を比較し、動作閾値(遠)67に格納されているxx%以上であれば、後方向に規定動作の移動をしたと判定される。但し、あまりにも大きい移動がおきた際に、ガードをかけ、規定動作の移動とみなさないようにすることも可能である。
動作閾値(近)68は、ハンディターミナル1(スキャナ部16)が前方向に規定動作の移動をしたと判断するための閾値のデータであり、例えばxx%のデータとする。
規定パターン69は、バーコードの読取を確定させるための規定動作の動作パターン(ハンディターミナル1(スキャナ部16)の移動パターン)を識別するデータである。本実施の形態では、規定パターン69がハンディターミナル1をバーコードに一回近づける動作(近づけ動作)の動作パターンの識別情報であるものとする。
ここで、閾値データ40,60に関し、図5を参照して、バーコードに対するハンディターミナル1(スキャナ部16)の移動によるバーコード読取の変化を説明する。図5に、バーコードB0を読取ったバーコードイメージI1〜I4を示す。
図5に示すように、バーコードB0を読取る場合に、ハンディターミナル1を、左方向、右方向、遠方向、近方向に動かすと、それぞれ順に、バーコードイメージI1,I2,I3,I4が生成される。このため、前回読取ったバーコードイメージと、今回読取ったバーコードイメージと、を比較することにより、どれだけ、その方向にハンディターミナル1を動かしたかが判別できる。
そこで、一定以上の間、同一位置で読取が行われた状態を、読取候補バーコード(又は読取確定バーコード)として成立させるため、取得したバーコードイメージの開始位置B01及び終了位置B02が、どれだけ動いたかを判別し、一定の閾値(±xx%)内での移動(変化)であれば、読取位置が前回と同一であると判定するようにすることにより、ハンディターミナル1の手持ち操作によるぶれを吸収することが可能である。逆に、ここで設定されている閾値を超えていた場合は、スキャナを大きく動かしたものと判定し、その場合に読取ったバーコードが、読取候補バーコード(又は読取確定バーコード)とは看做さないようにする。この判定に、閾値41〜44、閾値61〜64が用いられる。
動作閾値65〜68は、ハンディターミナル1の操作のぶれによる移動の判定ではなく、ハンディターミナル1が規定動作の移動をしたか否かの判定を行うための情報である。
次に、図6〜図14を参照して、ハンディターミナル1の動作を説明する。先ず、図6及び図7を参照して、ハンディターミナル1で実行されるスキャン処理の概要を説明する。図6に、スキャン処理の概要の流れを示す。図7(a)に、バーコードB1に対する読取候補バーコードの取得動作を示す。図7(b)に、バーコードB1に対する読取確定バーコードの取得動作を示す。
スキャン処理は、ハンディターミナル1でバーコードを読取り、そのバーコード読取を確定する処理である。ハンディターミナル1でスキャン処理が開始されると、ユーザによりハンディターミナル1が把持されて、スキャナ部16が発光するレーザ光の照射方向が読取りたいバーコードに向けられ、スキャナ部16によりバーコードイメージの二値データが取得される(ステップS1)。そして、CPU11により、ステップS1でスキャナ部16により取得されたバーコードイメージの二値データがデコードされ、デコードデータが生成されてRAM13に格納される(ステップS2)
そして、CPU11により、ハンディターミナル1のスキャン動作が規定動作であるか否かが判定される(ステップS3)。ステップS3では、読取りたいバーコードに対して、ハンディターミナル1をどのように動作させたかを、ステップS1で取得したバーコードのイメージと、ステップS2で生成されたデコードデータと、に基づいて算出し、規定動作になっているかどうかが判定される。本実施の形態における規定のスキャン動作とは、読取りたいバーコードにレーザ光を照射したまま、ハンディターミナル1をそのバーコードに近づける動作である。
そして、CPU11により、ステップS3の判定結果に基づいて、ハンディターミナル1のスキャン動作が規定動作になっているか否かが判別される(ステップS4)。規定動作になっていない場合(ステップS4;NO)、ステップS1に移行される。
規定動作になっている場合(ステップS4;YES)、バーコードの読取を確定した旨が表示部14に表示され、ステップS2で生成されたRAM13内のデコードデータが読取結果としてフラッシュメモリ17に記憶され(ステップS5)、スキャン処理が終了する。
スキャナ処理では、例えば、図7(a)に示すように、先ず、ハンディターミナル1がバーコードB1にレーザ光が照射される位置に移動される。この状態で、ステップS1,S2に対応して、バーコードB1のバーコードイメージを常にスキャンしデコードしている。しかし、読取る距離に変化がないためステップS4でステップS1に移行され、ステップS5でバーコードの読取を確定した旨が表示部14に表示されることはない。
そこで、図7(b)に示すように、バーコードB1にレーザ光を照射したままハンディターミナル1をバーコードB1側に近づける(押し込む)規定動作を行うと、読取る距離の変化が発生し、ステップS4でスキャナ動作として規定動作が判定できたタイミングで、ステップS5でバーコードの読取を確定した旨が表示部14に表示される。
次いで、図8〜図13を参照して、ハンディターミナル1で実行される図7のスキャン処理の詳細を説明する。図8に、スキャン処理の流れを示す。図9に、図8の続きのスキャン処理の流れを示す。図10に、読取候補バーコード判定処理の流れを示す。図11に、読取確定バーコード判定処理の流れを示す。
ハンディターミナル1において、例えば、ユーザにより入力部12を介してバーコード連続読取モードの設定が入力されたことをトリガとして、ROM15から読み出されて適宜RAM13に展開されたスキャンプログラムと、CPU11との協働で、以下のスキャン処理が実行される。
このとき、例えば、複数のバーコードが近接している状態で、そのうちの一つの読取りたいバーコードに向けてレーザ光が照射されるよう、ユーザによりハンディターミナル1の位置及び姿勢が調整される。
図8及び図9に示すように、先ず、スキャナ部16により、レーザ光が照射されているバーコードのバーコードイメージの二値データ(黒バー及び白スペースの幅データ及び左右のマージン幅のデータ)が取得される(ステップS11)。そして、ステップS11で取得されたバーコードイメージの二値データがキャラクタ化されることによりデコードされてデコードデータが生成される(ステップS12)。
そして、ステップS12で生成されたデコードデータが正常なデータであるか否かにより、デコードが完了したか否かが判別される(ステップS13)。デコードが完了していない場合(ステップS13;NO)、ステップS11に移行される。
デコードが完了した場合(ステップS13;YES)、ステップS11で読取られたバーコードが読取候補バーコードとされ、ステップS11で取得された読取候補バーコードのバーコードイメージが格納データ30のバーコードイメージ32としてRAM13に格納され、ステップS12で生成された読取候補バーコードのデコードデータが格納データ30のデコードデータ31としてRAM13に格納される(ステップS14)。そして、ステップS14でRAM13に格納された情報等を用いて、ステップS11,S12で読取りしたバーコードを読取候補バーコードとして確定してよいか否かを判定する読取候補バーコード判定処理が実行される(ステップS15)。ステップS15の読取候補バーコード判定処理は、詳細に後述される。
そして、ステップS15の判定結果に基づいて、読取候補バーコードとして確定する判定が成立するか否かが判別される(ステップS16)。読取候補バーコードとして確定する判定が成立しない場合(ステップS16;NO)、ステップS11に移行される。
読取候補バーコードとして確定する判定が成立する場合(ステップS16;YES)、読取候補バーコードの取得が完了した旨及びデコードしたバーコードの数値が表示部14にメッセージ表示される(ステップS17)。なお、ステップS17は、読取候補バーコードを判定した旨をユーザに知らせる処理なので、ステップS17を省略してもよい。
そして、スキャナ部16により、レーザ光が照射されているバーコードのバーコードイメージの二値データ(黒バー及び白スペースの幅データ及び左右のマージン幅のデータ)が取得される(ステップS18)。そして、ステップS18で取得されたバーコードイメージの二値データがキャラクタ化されることによりデコードされてデコードデータが生成される(ステップS19)。
そして、ステップS19で生成されたデコードデータが正常なデータであるか否かにより、デコードが完了したか否かが判別される(ステップS20)。デコードが完了した場合(ステップS20;YES)、ステップS18で読取られたバーコードが読取確定バーコードとされ、ステップS18で取得された読取確定バーコードのバーコードイメージが格納データ50のバーコードイメージ52としてRAM13に格納され、ステップS19で生成された読取確定バーコードのデコードデータが格納データ50のデコードデータ51としてRAM13に格納される(ステップS21)。
そして、ステップS21でRAM13に格納された情報を用いて、読取候補バーコードのバーコードイメージに対する読取確定バーコードのバーコードイメージの変化分により、ハンディターミナル1に規定動作があったか否かを判定する読取確定バーコード判定処理が実行される(ステップS22)。ステップS22の読取確定バーコード判定処理は、詳細に後述される。
そして、ステップS22の判定結果に基づいて、ハンディターミナル1に規定動作があったとする判定が成立するか否かが判別される(ステップS23)。ハンディターミナル1に規定動作があったとする判定が成立した場合(ステップS23;YES)、ステップS18で読取られたバーコードの読取が確定される(ステップS24)。そして、バーコードの読取が確定した旨及びデコードしたバーコードの数値が表示部14にメッセージ表示され、RAM13に格納されるデコードデータ51がフラッシュメモリ17に記憶され(ステップS25)、スキャン処理が終了する。
デコードが完了していない場合(ステップS20;NO)、ステップS18→ステップS19→ステップS20→ステップS26→ステップS18のループの実行時間が、予め設定された規定時間以上になったか否か(タイムアウトになったか否か)により、読取候補バーコードの再読取りをするか否かが判別される(ステップS26)。タイムアウトになると、バーコードの読取の確定をあきらめて、再び読取候補バーコードのスキャンを行うためである。
読取候補バーコードの再読取りをしない場合(ステップS26;NO)、ステップS18に移行される。読取候補バーコードの再読取りをする場合(ステップS26;YES)、ステップS11に移行される。
ハンディターミナル1に規定動作があったとする判定が成立しない場合(ステップS23;NO)、ステップS22で設定された読取候補バーコードの再読取りをするかの情報に基づいて、読取候補バーコードの再読取りをするか否かが判別される(ステップS27)。読取候補バーコードの再読取りをしない場合(ステップS27;NO)、ステップS18に移行される。読取候補バーコードの再読取りをする場合(ステップS27;YES)、ステップS11に移行される。このとき、バーコードイメージ32、デコードデータ31、バーコードイメージ52及びデコードデータ51が消去されることとしてもよい。
図10を参照して、スキャン処理のステップS15の読取候補バーコード判定処理を説明する。図10に、読取候補バーコード判定処理の流れを示す。
スキャン処理のステップS14実行後、先ず、RAM13の格納データ30のデコードデータ31が参照され、直近の読取候補バーコードのデコードデータと、その1つ前のデコードデータとが比較され、同一のデコードデータであるか否かが判別される(ステップS151)。
同一のデコードデータである場合(ステップS151;YES)、フラッシュメモリ17に記憶された閾値データ40の閾値41〜44が読み出され、RAM13の格納データ30のバーコードイメージ32が参照され、直近の読取候補バーコードのバーコードイメージと、その1つ前のバーコードイメージとが比較され、読取候補バーコードの移動距離が閾値41〜44内であるか否かにより、バーコードの読取位置が同一であるか否かが判別される(ステップS152)。ステップS152では、図5で説明したように、バーコードの開始位置及び終了位置の移動距離が、右方向、左方向、遠方向、近方向にそれぞれ対応する閾値41〜44内(±xx%内)であるか否かにより判別される。
バーコードの読取位置が同一である場合(ステップS152;YES)、RAM13の格納データ30の条件成立回数33の変数Mが1インクリメントされる(ステップS153)。条件成立回数33の変数Mの初期値は、例えば0に設定されるものとする。そして、条件成立回数33の変数Mが、予め設定された規定値より大きいか否かが判別される(ステップS154)。この条件成立回数33の変数Mの規定値は、設定により可変であるものとする。この規定値が大きければ大きいほど、読取りたいバーコードを特定し易くなるが、読取レスポンスが低下するため、用途に応じて、最適な値を規定値として設定するのが好ましい。
条件成立回数M>規定値である場合(ステップS154;YES)、読取候補バーコードを確定するか否かの判定結果として、判定成立が設定され(ステップS155)、読取候補バーコード判定処理が終了する。
同一のデコードデータでない場合(ステップS151;NO)、バーコードの読取位置が同一でない場合(ステップS152;NO)、又は条件成立回数M>規定値でない場合(ステップS154;NO)、読取候補バーコードを確定するか否かの判定結果として、判定不成立が設定され(ステップS156)、読取候補バーコード判定処理が終了する。ステップS16では、ステップS155又はS156で設定された判定結果に基づいて、判別が行われる。
図11を参照して、スキャン処理のステップS22の読取確定バーコード判定処理を説明する。図11に、読取確定バーコード判定処理の流れを示す。
スキャン処理のステップS21実行後、先ず、RAM13の格納データ30のデコードデータ31と、格納データ50のデコードデータ51とが参照され、デコードデータ51の直近のデコードデータと、デコードデータ31の読取候補バーコードのデコードデータとが比較され、同一のデコードデータであるか否かが判別される(ステップS221)。
同一のデコードデータである場合(ステップS221;YES)、フラッシュメモリ17に記憶された閾値データ60の閾値61〜64が読み出され、RAM13の格納データ30のバーコードイメージ32と、格納データ50のバーコードイメージ52とが参照され、バーコードイメージ32の読取候補バーコードのバーコードイメージと、バーコードイメージ52の直近のバーコードイメージとが比較され、読取候補バーコードからの現在のバーコードの移動距離が閾値61〜64内であるか否かにより、バーコードの読取位置が同一であるか否かが判別される(ステップS222)。ステップS222では、バーコードの開始位置及び終了位置の移動距離が、右方向、左方向、遠方向、近方向にそれぞれ対応する閾値61〜64内(±xx%内)であるか否かにより判別される。
バーコードの読取位置が同一である場合(ステップS222;YES)、RAM13の格納データ50の条件成立回数53の変数Nが1インクリメントされる(ステップS223)。条件成立回数53の変数Nの初期値は、例えば0に設定されるものとする。そして、条件成立回数53の変数Nが、予め設定された規定値より大きいか否かが判別される(ステップS224)。この条件成立回数53の変数Nの規定値は、設定により可変であるものとする。この規定値が大きければ大きいほど、読取りたいバーコードを特定し易くなるが、読取レスポンスが低下するため、用途に応じて、最適な値を規定値として設定するのが好ましい。
条件成立回数N>規定値である場合(ステップS224;YES)、フラッシュメモリ17に記憶された閾値データ60の動作閾値65〜68、規定パターン69が読み出され、RAM13の格納データ30のバーコードイメージ32と、格納データ50のバーコードイメージ52とが参照され、バーコードイメージ32の読取候補バーコードのバーコードイメージと、バーコードイメージ52の直近のバーコードイメージとが比較され、読取候補バーコードからの現在のバーコードの移動距離が閾値61〜64以上であるか否かにより、バーコードの移動状態が規定動作どおりであるか否かが判別される(ステップS225)。ステップS225では、バーコードの開始位置及び終了位置の移動距離が、右方向、左方向、遠方向、近方向にそれぞれ対応する動作閾値65〜68以上(xx%以上)であるか否かにより判別される。
ここで、図12を参照して、ステップS225を具体的に説明する。図12に、バーコードイメージI10,I11及びその差分を示す。
図12に示すように、読取候補バーコードのバーコードイメージI10と、ステップS225時点での読取確定バーコードのバーコードイメージI11と、を考える。本実施の形態では、バーコードの読取の確定のためにハンディターミナル1を前方向に近づけた(押し込んだ)操作を想定しているため、バーコードイメージI10に対するバーコードイメージI11のように、イメージが大きくなっている必要がある。また、バーコードイメージI11は、規定パターン69(近づけ動作)の規定動作後のバーコードイメージであるとする。
バーコードイメージI11に対するバーコードイメージI10の左方向の差分ΔAと右方向の差分ΔBとは、それぞれ設定可能であり、この差分ΔA,ΔBの値により、近づける(押し込む)距離と、左右のぶれ度合いをどれだけ吸収するかを定義することが可能である。差分ΔA,ΔBが、動作閾値62,61に対応する。
図11に戻り、バーコードの移動状態が規定動作どおりである場合(ステップS225;YES)、読取確定バーコード設定の判定結果として、判定成立が設定され(ステップS226)、読取確定バーコード判定処理が終了する。
同一のデコードデータである場合(ステップS221;NO)、又はバーコードの移動状態が規定動作どおりでない場合(ステップS225;NO)、読取確定バーコード設定の判定結果として、判定不成立が設定され、また読取候補バーコードの再読込設定がなされる(ステップS227)、読取確定バーコード判定処理が終了する。
バーコードの読取位置が同一でない場合(ステップS222;NO)、又は条件成立回数N>規定値でない場合(ステップS224;NO)、読取確定バーコード設定の判定結果として、判定不成立が設定され、また読取候補バーコードを再読込しない設定がなされ(ステップS228)、読取確定バーコード判定処理が終了する。
ここで、図13を参照して、上記スキャン処理におけるハンディターミナル1の具体的な動きを説明する。図13(a)に、バーコードB2の読取の状態を示す。図13(b)に、バーコードB3,B4の読取の状態を示す。図13(c)に、バーコードB5,B6の読取の状態を示す。図13(d)に、バーコードB6の読取候補バーコード読取の状態を示す。図13(e)に、バーコードB6の読取確定バーコード読取の状態を示す。
図12(a)に示すように、ここでは、5つのバーコードB2,B3,B4,B5,B6が印刷された商品G1を想定し、実際に読取りたいバーコードが、左下のバーコードB6である状態を考える。ハンディターミナル1がバーコード読取モードに設定されており、スキャナ部16から常にレーザ光が照射され、商品G1の印刷面の上からなぞると、レーザ光が当たっているバーコードに対しては、常にデコードが行われることになる。
通常では、デコードが完了すると、その読取結果をデコードデータとして出力する。しかし、本実施の形態では、ハンディターミナル1自体が規定の動きをしていない場合は、たとえ、デコードが完了していても、そのデコードデータを読取結果として出力(フラッシュメモリ17への記憶)しないため、以下のような動作となる。
図13(a)に示すように、先ず、商品G1の最上段の横長のバーコードB2にレーザ光が照射されるようにハンディターミナル1が移動され、バーコードB2のデコードが完了するが、ハンディターミナル1に規定動作(近づけ動作)が無い為、読取結果の出力は行われない。そして、図13(b)に示すように、商品G1の2段目の小さいバーコードB3,B4にレーザ光が照射されるようにハンディターミナル1が移動され、バーコードB3,B4のどちらかのデコードが完了するが、ハンディターミナル1に規定動作が無い為、読取結果の出力は行われない。
そして、図13(c)に示すように、商品G1の最下段のバーコードB5,B6にレーザ光が照射されるようにハンディターミナル1が移動され、読取りたいバーコードB6又はその右側のバーコードB5のデコードが完了するが、ハンディターミナル1に規定動作が無い為、読取結果の出力は行われない。そして、図13(d)に示すように、読取りたいバーコードB6にレーザ光が照射されるようにハンディターミナル1が移動され、読取候補バーコードとしてバーコードB6のデコードが完了するが、ハンディターミナル1に規定動作が無い為、読取結果の出力は行われない。
そして、図13(e)に示すように、読取りたいバーコードB6にレーザ光が照射されたまま規定動作(近づけ動作)をとるようハンディターミナル1が移動され、且つ読取確定バーコードとしてバーコードB6のデコードが完了しているため、バーコードB6の読取結果が出力される。
上記規定動作としての近づけ(押し込み)動作は、パソコンのデスクトップ上にあるアイコンをクリックすることにより実行する操作と同等である。「読取候補バーコードの判定」は、デスクトップ上にある実行したいアイコン上にマウスをもってきて、その下にあるアイコンを判定するものと同等である。「読取確定バーコードの判定」は、選択したアイコンをマウスによりクリックすることにより実行するものと同等である。このため、上記規定動作としての近づけ(押し込み)動作の操作は、マウスのクリックと同等の操作をハンディターミナル1で実現するものである。
以上、本実施の形態によれば、ハンディターミナル1において、スキャナ部16によりスキャンされた同一のバーコードのバーコードイメージに基づいて、ハンディターミナル1に規定動作があるか否かを判定し、ハンディターミナル1に規定動作があると判定された場合に、前記スキャンされたバーコードイメージのバーコードの読取を確定する。すなわち、たとえ複数のバーコードが存在する状態で、ハンディターミナル1が発するレーザ光が不特定のバーコードに当たっていたとしても、手で持っているハンディターミナル1で規定動作の動きを行わない限り、誤ったバーコードの読取が行われないため、読取りたいバーコードに確実にレーザ光を当てて、規定動作をすることにより、意図しないバーコードの読取が行われてしまったり、どのバーコードを読んだのかがわからなくなってしまったりすることを回避でき、読取たいバーコードを確実に読むことが可能となる。このため、距離センサやジャイロセンサ等の特殊なデバイスを用いることなく、読取りたいバーコードを確実に読取って確定でき、トリガキー等のキー操作が不要で、バーコード読取の操作性を高めることができる。
また、ハンディターミナル1において、スキャナ部16により生成された読取候補バーコードのバーコードイメージを取得してRAM13のバーコードイメージ32に格納し、読取候補バーコードのバーコードイメージ32より後にスキャナ部16に生成された同一バーコードのバーコードイメージを取得してRAM13のバーコードイメージ52に格納し、バーコードイメージ52に対するバーコードイメージ52の変化量が動作閾値データ65〜68の動作条件を満たすか否かが判定され、動作条件を満たす場合に、ハンディターミナル1に規定動作があったと判定し、バーコードの読取を確定する。このため、動作閾値65〜68を用いて、ハンディターミナル1に規定動作があるか否かを容易に判定できる。
また、スキャナ処理のステップS25において、バーコードの読取が確定した旨を表示部14に表示する。このため、ユーザが目視によりバーコードの読取が確定した旨を容易に認識できる。
また、スキャナ処理のステップS17において、読取候補バーコードが確定した旨を表示部14に表示する。このため、ユーザが目視により読取候補バーコードが確定した旨を容易に認識できる。
(変形例)
図14を参照して、上記実施の形態の変形例を説明する。図14(a)に、商品G2のバーコード読取開始の状態を示す。図14(b)に、バーコードB7の読取候補バーコード読取の状態を示す。図14(c)に、バーコードB7の読取確定バーコード読取の状態を示す。
本変形例の装置構成として、上記実施の形態と同様にハンディターミナル1を用いる。上記実施の形態では、スキャナ処理のステップS17において、読取候補バーコードの確定の旨が表示部14に表示され、同じくステップS25において、バーコードの読取の確定の旨が表示部14にメッセージ表示され、その表示により、各バーコード読取の旨をユーザに通知する構成であった。
本変形例では、スキャナ処理のステップS17において、読取候補バーコードの確定の旨を示すブザー音が音出力部19により出力され、同じくステップS25において、バーコードの読取の旨を示すブザー音が音出力部19により出力され、各バーコード読取の旨をユーザに通知する構成とする。
例えば、図14(a)に示すように、商品G2上に印刷されたバーコードB7を読取る例を考える。図14(b)に示すように、バーコードB7にレーザ光が照射されるようにハンディターミナル1が移動され、読取りたいバーコードB7のデコードが完了し、読取候補バーコードの確定の旨を示す「プ」の音が音出力部19により出力される。
そして、図14(c)に示すように、ハンディターミナル1が規定動作(近づけ動作)するよう移動され、バーコードB7のデコードが完了し、バーコードの読取の確定の旨を示す「ピ」の音が音出力部19により出力される。
以上、本変形例によれば、スキャナ処理のステップS25において、バーコードの読取が確定した旨のブザー音を音出力部19により出力する。このため、ユーザが聴覚によりバーコードの読取が確定した旨を容易に認識できる。スキャナ処理のステップS17において、読取候補バーコードが確定した旨のブザー音を音出力部19により出力する。このため、ユーザが聴覚により読取候補バーコードが確定した旨を容易に認識できる。
なお、上記実施の形態及び変形例における記述は、本発明に係るバーコード読取装置及びプログラムの一例であり、これに限定されるものではない。
例えば、上記実施の形態では、読取候補バーコードの設定、読取バーコードの確定の旨を、表示部14によるメッセージ表示、又は音出力部19による音出力により、ユーザに通知する構成としたが、これに限定されるものではない。例えば、読取候補バーコードの確定、バーコードの読取の確定の旨を、LED(Light Emitting Diode)等の点灯部の点灯、点滅、メッセージの音声出力、バイブレータによる振動等、他の通知方式により通知する構成としてもよい。さらに、少なくとも2つの異なる種類の通知方式を組合わせて通知させる構成としてもよい。これらの構成によれば、ユーザが、視覚的、聴覚的及び触覚的に通知を認識できる。また、前記通知を行わない構成としてもよい。
また、上記実施の形態及び変形例では、規定動作として、一度の近づけ(押し込み)動作を行う構成であったが、これに限定されるものではない。例えば、二度の近づけ(押し込み)動作(マウスのダブルクリックと同等)、三度以上の近づけ(押し込み)動作、レーザ光をバーコードに当てたまま距離を離す引離し動作、前記近づけ動作及び引離し動作を組合わせた動作等、他の規定動作としてもよい。
また、上記実施の形態及び変形例では、読取手段として、レーザ光を照射するスキャナ部16を用いる構成としたが、これに限定されるものではない。例えば、LED光を照射するスキャナ部や、リニアイメージャ等、他のバーコードの読取手段を用いる構成としてもよい。
上記実施の形態及び変形例では、バーコード読取装置としてとしてハンディターミナルを用いる構成としたが、これに限定されるものではない。例えば、ECR(Electronic Cash Register)、POS(Point Of Sales System)端末等に接続されるバーコード読取装置等、他のバーコード読取装置としてもよい。
また、上記実施の形態における、バーコード読取装置としてのハンディターミナル1の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。