以下、添付図面を参照して本発明に係る好適な第1〜第3の実施の形態を順に詳細に説明する。なお、本発明は、図示例に限定されるものではない。
(第1の実施の形態)
図1〜図8を参照して本発明に係る第1の実施の形態を説明する。先ず、図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と、IF(InterFace)部18とを備え、各部がバス19を介して接続される。
CPU11は、ハンディターミナル1の各部を中央制御する。CPU11は、ROM15に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをRAM13に展開し、RAM13に展開されたプログラムとの協働で、各種処理を実行する。
CPU11は、ROM15に記憶された第1のスキャンプログラムとの協働により、スキャナ部16により読み取られたバーコードデータを順方向にキャラクタ解析し、キャラクタ解析がバーコードの途中で失敗した場合に、スキャナ部16によるバーコードへのレーザ光の照射(レーザ照射)により、キャラクタ解析に成功した部分と失敗した部分とを、バーコード上に表示する。
入力部12は、バーコード読取を指示するためのトリガキー、数字・文字入力キー、各種機能キー等の各種キーを含み、操作者から押下入力された各キーのキー入力信号をCPU11に出力する。また、入力部12は、表示部14と一体的にタッチパネルとして構成されることとしてもよい。
RAM13は、情報を一時的に格納する揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納するワークエリアを有する。
表示部14は、LCD(Liquid Crystal Display)、ELD(ElectroLuminescent Display)等で構成され、CPU11からの表示信号に従って各種表示を行う。
ROM15は、各種プログラム、各種データが予め読み出し専用に記憶される記憶部である。ROM15は、第1のスキャンプログラムを記憶する。
スキャナ部16は、CPU11の制御信号に従い、バーコードからバーコードイメージを読取り、そのバーコードデータをCPU11に出力する一次元バーコードのスキャナ部である。図2に示すように、スキャナ部16は、発光制御部160、発光部161、バイブレーションミラー162、受光部163、ゲイン回路164、二値化回路165、レーザ点灯位置レジスタ166、レーザ消灯位置レジスタ167等を備えて構成される。
発光制御部160は、CPU11の制御と、レーザ点灯位置レジスタ166、レーザ消灯位置レジスタ167と、に従って、発光部161の発光を制御する。発光部161は、レーザ光Lを発光する。バイブレーションミラー162は、CPU11の制御信号に従い、図示しないモータ等によりバイブレートされることにより、発光部161から発光されたレーザ光Lを反射して左右に振る(広げる)。受光部163は、バイブレーションミラー162に反射されたレーザ光Lが実際にバーコードに当たった反射光を受光して電気信号に変換するモジュールである。
ゲイン回路164は、受光部163で受光した反射光の電気信号を増幅して波形を最適化する。二値化回路165は、ゲイン回路164で最適化された電気信号をバーデータとしての二値データに変換してCPU11に出力する。CPU11は、二値化回路165から入力されたバーコードデータをデコードすることとなる。バーコードデータは、バーコードの黒バー及び白スペースの幅データ及び左右のマージン幅のデータである。
レーザ点灯位置レジスタ166は、キャラクタ解析に失敗したバーコードにおけるレーザ点灯位置を示す情報を記憶する記憶部である。レーザ消灯位置レジスタ167は、キャラクタ解析に失敗したバーコードにおけるレーザ消灯位置を示す情報を記憶する記憶部である。レーザ点灯位置レジスタ166、レーザ消灯位置レジスタ167に格納される情報は、バーコードの長手方向(黒バー及び白スペースの配列方向)の位置を示すカウント値のデータである。発光部161は、キャラクタ解析に失敗した場合に、レーザ点灯位置レジスタ166に格納されたレーザ点灯位置以上で、レーザ消灯位置レジスタ167に格納されたレーザ点灯位置以下の区間で、レーザ発光するよう、発光制御部160により制御される。
また、発光制御部160は、バイブレーションミラー162により左右に振られるレーザ光Lについて、バーコード上で左→右を順方向とし、右→左を逆方向として、順方向、逆方向のレーザスイング毎にタイミング割込み信号を生成してCPU11に出力する。また、発光制御部160は、CPU11の要求に応じて、レーザスイング方向をCPU11に出力する。
フラッシュメモリ17は、各種データを記憶する記憶部であり、その各種データの読み出し及び書き込みが可能である。フラッシュメモリ17には、バーコードデータのキャラクタ解析が成功したキャラクタ(文字、数値等)のデータ(デコードデータ)等が記憶される。
IF部18は、通信ケーブルを介して外部機器と接続され、当該外部機器との情報の送受信を仲介する回路部である。IF部18は、例えば、USB(Universal Serial Bus)方式の有線通信部である。また、ハンディターミナル1が無線通信機能を有する無線通信部を有する構成としてもよい。
次に、図3を参照して、RAM13に記憶されるデータを説明する。図3に、RAM13に記憶されるデータを示す。
図3に示すように、RAM13には、第1のスキャン処理において、コード種類21、バーコードデータ22、位置情報23、解析状態情報24、デコードデータ25、が記憶される。
コード種類21は、解析対象のバーコードの規格の種類を示すデータ、例えばCode39、NW-7等を識別するデータである。バーコードデータ22は、スキャナ部16から出力されるバーコードの二値化データである。位置情報23は、位置X,Y,Z等の位置情報である。位置Xは、順方向のバーコードの先頭位置である。第1の位置としての位置Yは、順方向のバーコードのキャラクタ解析成功の最終位置である。第2の位置としての位置Zは、順方向のバーコードのキャラクタ解析失敗の最終位置である。
解析状態情報24は、キャラクタ解析の成否を示す情報であり、コード解析失敗の場合は、その失敗原因を示す情報を含む。解析状態情報24は、コード(Code39等)解析成功、キャラクタ解析失敗、先頭マージン検出失敗、エンドマージン検出失敗等である。デコードデータ25は、バーコードデータのキャラクタ解析が成功したキャラクタのデータである。
次に、図4〜図8を参照して、ハンディターミナル1の動作を説明する。図4に、第1のスキャン処理の流れを示す。図5に、第1のスキャン処理のCode39解析処理の流れを示す。図6に、第1のスキャン処理の順方向レーザ照射処理の流れを示す。図7(a)に、バーコードと、バーコードデータにおける各部のカウント値とを示す。図7(b)に、バーコードと、レーザ点灯信号と、レーザ点灯位置レジスタ及びレーザ消灯位置レジスタの範囲と、を示す。図8(a)に、第1のスキャン処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び位置X,Y,Zと、を示す。図8(b)に、第1のスキャン処理における順方向及び逆方向のレーザ照射範囲を示す。図8(c)に、第1のスキャン処理におけるバーコードへのレーザ照射状態を示す。
第1のスキャン処理は、バーコードをスキャンしてバーコードデータを取得し、そのバーコードデータを順方向にキャラクタ解析(デコード)するとともに、キャラクタ解析が失敗した場合に、キャラクタ解析が成功した部分と失敗した部分とが認識可能なように、バーコードへレーザ照射を行う処理である。但し、ユーザのハンディターミナル1把持により、バーコードデータ取得時から、キャラクタ解析に応じたレーザ照射時まで、バーコードに対するハンディターミナル1の位置が固定されているものとする。
予め、入力部12によりユーザからのコード種類の設定入力が受け付けられ、そのコード種類の情報がコード種類21としてRAM13に格納されているものとする。
ハンディターミナル1において、例えば、第1のスキャン処理の実行指示が入力部12に入力されたことをトリガとして、CPU11と、ROM15から読み出されて適宜RAM13に展開された第1のスキャンプログラムとの協働により、第1のスキャン処理が実行される。
先ず、ユーザによりハンディターミナル1が把持されて、スキャナ部16が発光するレーザ照射方向が読取対象のバーコードに向けられる。そして、図4に示すように、スキャナ部16により、バーコードが順方向にスキャンされ、そのバーコードデータが取得されて、バーコードデータ22としてRAM13に格納される(ステップS11)。そして、バーコードデータ22に格納されたバーコードデータから先頭マージンがチェックされる(ステップS12)。
先頭マージンとは、順方向の先頭マージンとする。図7(a)に示すように、先頭マージンは、バーコードの左のマージンである。先頭マージンのチェックでは、例えば、バーコードデータにおいて、バーコードの先頭黒バーの左に、コードの基準となる長さの10倍以上のスペースがあるか否かが判別され、ある場合に、そのスペースが先頭マージンとして検出される。
また、バーコードデータ上の移動距離をカウント値として表す。カウント値は、スキャナ部16のクロック動作に対応するカウント値である。つまり、クロック動作回数の大小により、移動距離の長短を示している。図7(a)に示すように、バーコードデータ全体の幅、左マージン(先頭マージン)の幅、バーコード部分の幅が、カウント値C1,C2,C3のように表される。左マージンの左端をカウントの順方向開始位置とする。カウント値C1,C2,C3は、例えば、それぞれ順に、5000カウント、1500カウント、2000カウントとする。
そして、ステップS12において、先頭マージンが検出されたか否かが判別される(ステップS13)。先頭マージンが検出された場合(ステップS13;YES)、変数としての位置Xに、先頭マージンのカウント値+1が代入され、RAM13の位置情報23に格納されて設定される(ステップS14)。先頭マージンのカウント値+1は、バーコードデータの最初(左端)の黒バーの左端位置を示す。
そして、RAM13のコード種類21が参照され、コード種類21にCode39が含まれて、Code39の解析が有効であるか否かが判別される(ステップS15)。Code39の解析が有効である場合(ステップS15;YES)、表示部14の解析結果表示がクリアされる(ステップS16)。そして、Code39解析処理が実行される(ステップS17)。
ここで、図5を参照して、ステップS17のCode39解析処理を詳細に説明する。先ず、変数としての位置Yに、位置Xの値が代入されて、RAM13の位置情報23に格納されて設定される(ステップS171)。そして、位置Yがバーコードデータの最終黒バー位置(最終黒バーの右端のカウント値)より大きいか(右か)否かが判別される(ステップS172)。位置Yが最終黒バー位置以下である場合(ステップS172;NO)、バーコードデータのエンドマージンがチェックされる(ステップS173)。図3(a)に示すように、エンドマージンは、バーコードの右のマージンである。エンドマージンのチェックでは、例えば、バーコードデータにおいて、バーコードの最終黒バーの右に、コードの基準となる長さの10倍以上のスペースがあるか否かが判別され、ある場合に、そのスペースがエンドマージンとして検出される。
そして、ステップS173において、エンドマージンが検出されたか否かが判別される(ステップS174)。エンドマージンが検出されていない場合(ステップS174;NO)、バーコードデータの全キャラクタ解析が完了しておらず、位置Yを先頭とした1キャラクタ分のバーコードデータが2値化される(ステップS175)。バーコードデータの2値化とは、バーコードデータをさらに、細い又は太い黒バーと、細い又は太い白スペースと、を表す4種類のデータに変換することである。Code39において、1キャラクタは、5本の黒バーと4本の白スペースとからなる。
そして、ステップS175で得られた1キャラクタ分の2値化されたバーコードデータのキャラクタに対応する値(文字、数値等)が、パターンチェックにより取得され、そのキャラクタの値のデータ(デコードデータ)が、デコードデータ25としてRAM13に格納される(ステップS176)。そして、ステップS176でパターンチェックによる値取得が成功したか否かが判別される(ステップS177)。パターンチェックによる値取得が成功した場合(ステップS177;YES)、位置情報23の位置Yが黒バー及び白スペースの+10本分増加され(ステップS178)、ステップS172に移行される。
パターンチェックによる値取得が失敗した場合(ステップS177;NO)、位置Zに位置Yの値が代入され、RAM13の位置情報23に格納されて設定される(ステップS179)。そして、位置情報23に格納された位置Zが黒バー及び白スペースの+10本分増加され(ステップS180)、キャラクタ解析失敗の旨の情報が、解析状態情報24としてRAM13に格納されて設定され(ステップS181)、Code39解析処理が終了する。
エンドマージンが検出された場合(ステップS174;YES)、バーコードデータの全キャラクタ解析が成功し、Code39解析成功の旨の情報が解析状態情報24としてRAM13に格納されて設定され(ステップS182)、Code39解析処理が終了する。
位置Yが最終黒バー位置より大きい場合(ステップS172;YES)、エンドマージンの検出が失敗した旨の情報が、解析状態情報24としてRAM13に格納されて設定され(ステップS183)、Code39解析処理が終了する。ステップS17のCode39解析処理が終了すると、図4のステップS18に移行される。
そして、解析状態情報24が参照され、Code39解析成功の旨の情報が格納され、Code39解析が成功したか否かが判別される(ステップS18)。Code39解析が成功していない場合(ステップS18;NO)、解析状態情報24が参照され、エンドマージン検出失敗の旨の情報が格納され、エンドマージン検出失敗したか否かが判別される(ステップS19)。
エンドマージン検出が失敗していない場合(ステップS19;NO)、解析状態情報24がキャラクタ解析失敗の旨の情報であり、キャラクタ解析失敗の旨の情報が表示部14に表示され、デコードデータ25がフラッシュメモリ17に記憶される(ステップS20)。そして、順方向レーザ照射処理が実行される(ステップS21)。ここで、図6を参照して、順方向レーザ照射処理を詳細に説明する。
順方向レーザ照射処理において、先ず、スキャナ部16によりレーザ照射が開始される(ステップS211)。そして、変数iが0に設定される(ステップS212)。
変数iは、レーザ照射のスイング回数の変数である。そして、スキャナ部16から出力されるレーザスイング方向変換のタイミング割込み信号の待ちがなされる(ステップS213)。ステップS213終了時には、順方向→逆方向、又は逆方向→順方向へのレーザスイング方向の変化が発生している。
そして、変数iが500よりも小さいか否かが判別される(ステップS214)。変数iが500より小さい場合(ステップS214;YES)、変数iに(i+1)が代入される(ステップS215)。そして、スキャナ部16から出力されるレーザスイング方向が取得される(ステップS216)。そして、ステップS216で取得されたレーザスイング方向が順方向であるか否かが判別される(ステップS217)。
レーザスイング方向が順方向である場合(ステップS217;YES)、RAM13の位置情報23の位置Xが参照され、変数Aに、バーコードデータの順方向開始位置から位置X迄のカウント値の合計が代入される(ステップS218)。そして、RAM13の位置情報23の位置Zが参照され、変数Bに、バーコードデータの順方向開始位置から位置Z迄のカウント値の合計が代入される(ステップS219)。そして、レーザ点灯位置レジスタ166に変数Aがセットされる(ステップS220)。そして、レーザ消灯位置レジスタ167に変数Bがセットされ(ステップS221)、ステップS213に移行される。スキャナ部16において、ステップS220,S221でセットされたレーザ点灯位置レジスタ166及びレーザ消灯位置レジスタ167に応じて、発光制御部160により、順方向のレーザ点灯信号が生成され、当該レーザ点灯信号に応じて発光部161からレーザ光が出射される。つまり、レーザ点灯及びレーザ消灯を任意のタイミングで行うことができる。
仮に、バーコード部分のみをレーザ点灯させる場合を考える。例えば、図7(b)に示すように、順方向開始位置からのバーコードの左端位置のカウント値がレーザ点灯位置レジスタ166にセットされ、順方向開始位置からのバーコードの右端位置のカウント値がレーザ消灯位置レジスタ167にセットされる。すると、バーコード部分のみをレーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部16のレーザ照射範囲は、レーザ照射部L1となる。
ステップS218〜S221に対応して、キャラクタ解析に失敗した場合に、図8(a),(b)に示すように、順方向においては、レーザ点灯位置レジスタ166に位置Xのカウント値が設定され、レーザ消灯位置レジスタ167に位置Zのカウント値が設定される。
レーザスイング方向が逆方向である場合(ステップS217;NO)、RAM13の位置情報23の位置Zが参照され、変数Aに、バーコードデータの逆方向開始位置から位置Z迄のカウント値の合計が代入される(ステップS222)。そして、RAM13の位置情報23の位置Yが参照され、変数Bに、バーコードデータの逆方向開始位置から位置Y迄のカウント値の合計が代入される(ステップS223)。
そして、レーザ点灯位置レジスタ166に変数Aがセットされる(ステップS224)。そして、レーザ消灯位置レジスタ167に変数Bがセットされ(ステップS225)、ステップS213に移行される。
ステップS222〜S225に対応して、キャラクタ解析に失敗した場合に、図8(a),(b)に示すように、逆方向においては、レーザ点灯位置レジスタ166に位置Zのカウント値が設定され、レーザ消灯位置レジスタ167に位置Yのカウント値が設定される。
すると、図8(c)に示すように、順方向に位置Xから位置Z迄レーザ点灯させ、逆方向に位置Zから位置Y迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部16のレーザ光照射は、レーザ照射部L2となる。レーザ照射部L2では、位置Yから位置Z迄の部分が、キャラクタ解析が失敗したバーコード部分に対応し、順方向及び逆方向のレーザ照射によるレーザ照射部となる。レーザ照射部L2の位置Xから位置Y迄の部分は、キャラクタ解析が成功したバーコード部分に対応し、順方向スイングのみでの点滅によるレーザ照射部となる。
変数iが500以上である場合(ステップS214;YES)、スキャナ部16によるレーザ照射が終了され(ステップS226)、順方向レーザ照射処理が終了する。順方向レーザ照射処理が終了すると、図4のステップS22に移行される。
そして、その他のコード解析処理が実行され(ステップS22)、第1のスキャン処理が終了する。ステップS22の他のコード種類のキャラクタ解析処理では、NW-7、Cordabar、EAN、Interleaved 2of5等、他のコード種類について、ステップS14〜S21,S23,S24と同様の処理が実行される。
Code39の解析が有効でない場合(ステップS15;NO)、ステップS22に移行される。Code39解析が成功した場合(ステップS18;YES)、Code39解析が成功した旨と、デコードデータ25のデコードデータ(キャラクタ解析に成功した全キャラクタのデータ)と、が表示部14に表示され(ステップS23)、ステップS22に移行される。エンドマージン検出が失敗した場合(ステップS19;YES)、エンドマージン解析失敗の旨の情報が表示部14に表示され(ステップS24)、ステップS22に移行される。
先頭マージンが検出されない場合(ステップS13;NO)、先頭マージン解析失敗の旨の情報が表示部14に表示され(ステップS25)、第1のスキャン処理が終了する。また、バーコード全てについてキャラクタ解析が成功したか否かに関わらず、第1のスキャン処理によりRAM13に格納されたデコードデータ25は、フラッシュメモリ17に記憶される。
以上、本実施の形態によれば、ハンディターミナル1は、スキャナ部16がバーコードをスキャンしてバーコードデータを取得し、前記取得されたバーコードデータを順方向にキャラクタ解析(デコード)する。そして、ハンディターミナル1は、順方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分の位置Yとキャラクタ解析に失敗した部分の位置Zを取得し、スキャナ部16のレーザ照射により、バーコード先頭の位置X及び位置Yの間を点滅した実線とし、位置Y及び位置Z点の間を点滅しない実線として、バーコード上に表示する。
このため、バーコードの読取において、順方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分をユーザに認識させることができる。また、ユーザにキャラクタ解析に失敗した原因を認識させることができる。例えば、ユーザは、バーコードのキャラクタ解析が失敗した部分のバーコードに汚れ、傷等がある場合に、バーコードの品質が不具合の要因であり、バーコードのキャラクタ解析が失敗した部分のバーコードに汚れ、傷等がない場合に、スキャナ装置1(キャラクタ解析のプログラム等)が不具合の要因であると認識できる。
また、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分にスキャナ部16にレーザ照射させる。このため、スキャナ部16を、バーコードスキャンと、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分の表示と、の両方に使用でき、スキャナ部16を有効に活用できる。
なお、第1の実施の形態では、キャラクタ解析が失敗した場合のレーザ光照射の照射時間が、予め定められたスイング回数(変数i=500)により定められていたが、これに限定されるものではない。例えば、入力部12によるユーザの照射時間(スイング回数)の操作入力に応じて、レーザ光照射が行われる構成としてもよい。また、レーザ光照射の照射時間が、入力部12のトリガキー押下入力と連動し、トリガキーを押下している間にレーザ照射し、トリガキーを離したらレーザ照射を終了する構成としてもよい。
また、第1の実施の形態では、バーコードのキャラクタ解析成功部分、キャラクタ解析失敗部分に対し、順に、2スイング間隔で点滅する実線、点滅しない実線とするようバーコード上にレーザ照射を行っているが、これに限定されるものではない。少なくとも、バーコード上のキャラクタ解析成功部分と、キャラクタ解析失敗部分とをユーザが認識できるようなレーザ照射であればよい。例えば、キャラクタ解析成功部分及びキャラクタ解析失敗部分に対し、2スイング間隔で点滅しない実線、点滅する実線とするようバーコード上にレーザ照射を行う構成としてもよい。また、ユーザからの入力部12を介する操作入力等に応じて、レーザ照射の点滅の間隔を変更可能にする構成としてもよい。また、破線、点線等でバーコード上にレーザ照射を行う構成としてもよい。
また、第1の実施の形態では、キャラクタ解析が失敗した時点で即座に、キャラクタ解析失敗部分にレーザ照射を行う構成であるが、これに限定されるものではない。例えば、数スキャン分の解析結果(位置X,Y,Z)をRAM13等にバッファリングし、それらの解析結果が所定回数一致した場合に、その解析結果を用いてレーザ照射を行う構成としてもよい。
また、第1の実施の形態では、先頭マージン検出失敗、キャラクタ解析失敗等の情報を表示部14に表示する構成であるが、これに限定されるものではない。例えば、ハンディターミナル1がスピーカ等を備え、先頭マージン検出失敗等の情報をスピーカから音声出力で通知する構成としてもよい。また、ハンディターミナル1がバイブレータ等を備え、先頭マージン検出失敗等の情報をバイブレータによる振動パターン出力で通知する構成としてもよい。また、ハンディターミナル1がLED(Light Emitting Diode)等の発光部を備え、先頭マージン検出失敗等の情報を発光部による発光パターン出力で通知する構成としてもよい。
また、第1の実施の形態では、先頭マージン又はエンドマージン検出失敗、及びキャラクタ解析失敗の場合に、その失敗要因の種類の情報を表示部14に表示する構成であるが、これに限定されるものではない。例えば、キャラクタ間ギャップ異常検出等、その他のバーコード読取失敗要因発生の際にも、その失敗要因の種類の情報を表示部14に表示する構成としてもよい。
(第2の実施の形態)
図9〜図14を参照して、本発明に係る第2の実施の形態を説明する。第1の実施の形態では、バーコードデータに対し順方向にキャラクタ解析を行い、そのキャラクタ解析に応じてキャラクタ解析失敗部分及びキャラクタ解析成功部分にレーザ照射する構成であった。本実施の形態では、順方向及び逆方向にキャラクタ解析を行い、そのキャラクタ解析に応じてキャラクタ解析失敗部分にレーザ光を照射する構成である。
本実施の形態の装置構成として、第1の実施の形態と同様に、ハンディターミナル1を用いる。但し、RAM13のバーコードデータ22は、順方向及び逆方向のバーコードデータとなる。また、位置情報23は、位置X,Y,Zと、位置X1,Y1,Z1,X2,Y2,Z2とを含む。位置X1は、順方向のバーコードの先頭位置である。位置Y1は、順方向のバーコードのキャラクタ解析成功の最終位置である。位置Z1は、順方向のバーコードのキャラクタ解析失敗の最終位置である。位置X2は、逆方向のバーコードの先頭位置である。位置Y2は、逆方向のバーコードのキャラクタ解析成功の最終位置である。位置Z2は、逆方向のバーコードのキャラクタ解析失敗の最終位置である。
また、RAM13の解析状態情報24には、順方向又は逆方向の解析状態情報が格納される。また、ROM15には、第1のスキャンプログラムに代えて、後述する第2のスキャンプログラムが記憶されている。
次いで、図9〜図13を参照して、本実施の形態のハンディターミナル1の動作を説明する。図9に、第2のスキャン処理の流れを示す。図10に、図9の第2のスキャン処理の続きの流れを示す。図11に、第2のスキャン処理の両方向レーザ照射処理の流れを示す。図12に、第2のスキャン処理の逆方向レーザ照射処理の流れを示す。図13(a)に、第2のスキャン処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び位置X1,Y1,Z1,X2,Y2,Z2と、を示す。図13(b)に、第2のスキャン処理における順方向及び逆方向のレーザ照射範囲を示す。図13(c)に、第2のスキャン処理におけるバーコードへのレーザ照射状態を示す。
第2のスキャン処理は、バーコードをスキャンしてバーコードデータを取得し、そのバーコードデータを順方向及び逆方向からキャラクタ解析(デコード)するとともに、キャラクタ解析が失敗した場合に、キャラクタ解析失敗部分とキャラクタ解析成功部分とが認識可能なように、バーコード上にレーザ照射を行う処理である。但し、ユーザによるハンディターミナル1の把持により、バーコードデータ取得時から、キャラクタ解析に応じたレーザ照射時まで、バーコードに対するハンディターミナル1の位置が固定されているものとする。
予め、入力部12によりユーザからのコード種類の設定入力が受け付けられ、そのコード種類の情報がコード種類21としてRAM13に格納されているものとする。
ハンディターミナル1において、例えば、第2のスキャン処理の実行指示が入力部12に入力されたことをトリガとして、CPU11と、ROM15から読み出されて適宜RAM13に展開された第2のスキャンプログラムとの協働により、第2のスキャン処理が実行される。
先ず、ユーザによりハンディターミナル1が把持されて、スキャナ部16が発光するレーザ照射方向が読み取りたいバーコードに向けられる。そして、図9及び図10に示すように、スキャナ部16により、バーコードが順方向及び逆方向にスキャンされ、そのバーコードデータが取得されて、バーコードデータ22としてRAM13に格納される(ステップS31)。そして、バーコードデータ22に格納された順方向のバーコードデータから先頭マージンがチェックされる(ステップS32)。
ステップS33〜S39は、順に、第1のスキャン処理のステップS13〜S19と同様である。但し、ステップS39に対応するステップS181〜S183において、順に、RAM13の解析状態情報24に、順方向についてのキャラクタ解析失敗、順方向についてのCode39解析成功、順方向についてのエンドマージン解析失敗の旨の情報が格納される。
順方向のエンドマージン検出が失敗していない場合(ステップS39;NO)、RAM13の位置情報23が参照され、変数としての位置X1に位置Xが代入され、変数としての位置Y1に位置Yが代入され、変数としての位置Z1に位置Zが代入され、位置X1,Y1,Z1が位置情報23に格納されて設定される(ステップS40)。
ステップS32〜S40において、図13(a)に示すように、順方向開始位置から順方向にキャラクタ解析がなされ、順方向に位置X1,Y1,Z1が設定される。
そして、バーコードデータ22に格納された逆方向のバーコードデータから先頭マージンがチェックされる(ステップS41)。順方向のエンドマージン検出が失敗した場合(ステップS39;YES)、順方向のエンドマージン検出失敗の旨の情報が表示部14に表示され(ステップS42)、ステップS41に移行される。ステップS43〜S45,S48,S49は、順に、逆方向のバーコードデータに対する第1のスキャン処理のステップS13,S14,S17〜S19と同様である。但し、ステップS45に対応するステップS181〜S183において、順に、RAM13の解析状態情報24に、逆方向についてのキャラクタ解析失敗、逆方向についてのCode39解析成功、逆方向についてのエンドマージン解析失敗の旨の情報が格納される。
逆方向のエンドマージン検出が失敗していない場合(ステップS39;NO)、RAM13の位置情報23が参照され、変数としての位置X2に位置Xが代入され、変数としての位置Y2に位置Yが代入され、変数としての位置Z2に位置Zが代入され、位置X2,Y2,Z2が位置情報23に格納されて設定される(ステップS50)。逆方向のエンドマージン検出が失敗した場合(ステップS49;YES)、逆方向のエンドマージン検出失敗の旨の情報が表示部14に表示され(ステップS52)、ステップS51に移行される。
ステップS41,S43〜S45,S48〜S50において、図13(a)に示すように、逆方向開始位置から逆方向にキャラクタ解析がなされ、逆方向に位置X2,Y2,Z2が設定される。
そして、RAM13の解析状態情報24が参照され、順方向及び逆方向の両方向のキャラクタ解析が失敗したか否かが判別される(ステップS52)。両方向のキャラクタ解析が失敗していない場合(ステップS52;NO)、RAM13の解析状態情報24が参照され、順方向のキャラクタ解析が失敗したか否かが判別される(ステップS53)。順方向のキャラクタ解析が失敗していない場合(ステップS53;NO)、RAM13の解析状態情報24が参照され、逆方向のキャラクタ解析が失敗したか否かが判別される(ステップS54)。
逆方向のキャラクタ解析が失敗していない場合(ステップS54;NO)、その他のコード解析処理が実行され(ステップS61)、第2のスキャン処理が終了する。ステップS54では、他のコード種類のキャラクタ解析処理として、NW-7等について、ステップS34〜S46,S48〜S60と同様の処理が適宜実行される。
Code39の解析が有効でない場合(ステップS35;NO)、ステップS61に移行される。順方向のCode39解析が成功した場合(ステップS38;YES)、順方向のCode39解析が成功した旨と、デコードデータ25のデコードデータ(キャラクタ解析に成功した全キャラクタのデータ)と、が表示部14に表示され(ステップS46)、ステップS61に移行される。
Code39の解析が有効でない場合(ステップS35;NO)、ステップS61に移行される。順方向の先頭マージンが検出されない場合(ステップS33;NO)、順方向の先頭マージン解析失敗の旨の情報が表示部14に表示され(ステップS47)、第2のスキャン処理が終了する。
逆方向のCode39解析が成功した場合(ステップS48;YES)、逆方向のCode39解析が成功した旨と、デコードデータ25に格納された解析成功した全キャラクタコードと、が表示部14に表示され(ステップS55)、ステップS61に移行される。両方向のキャラクタ解析が失敗した場合(ステップS52;YES)、両方向レーザ照射処理が実行され(ステップS56)、ステップS61に移行される。
ここで、図11を参照して、ステップS56の両方向レーザ照射処理を詳細に説明する。先ず、ステップS561〜S567は、順に、順方向レーザ照射処理のステップS211〜S217と同様である。
レーザスイング方向が順方向である場合(ステップS567;YES)、RAM13の位置情報23の位置Y1が参照され、変数Aに、バーコードデータの順方向開始位置から位置Y1迄のカウント値の合計が代入される(ステップS568)。そして、RAM13の位置情報23の位置Z1が参照され、変数Bに、バーコードデータの順方向開始位置から位置Z1迄のカウント値の合計が代入される(ステップS569)。ステップS570,S571は、順に、順方向レーザ照射処理のステップS220,S221と同様である。
ステップS568〜S571に対応して、キャラクタ解析に失敗した場合に、図13(a),(b)に示すように、順方向においては、レーザ点灯位置レジスタ166に位置Y1のカウント値が設定され、レーザ消灯位置レジスタ167に位置Z1のカウント値が設定される。
レーザスイング方向が逆方向である場合(ステップS567;NO)、RAM13の位置情報23の位置Y2が参照され、変数Aに、バーコードデータの逆方向開始位置から位置Y2迄のカウント値の合計が代入される(ステップS572)。そして、RAM13の位置情報23の位置Z2が参照され、変数Bに、バーコードデータの逆方向開始位置から位置Z2迄のカウント値の合計が代入される(ステップS573)。ステップS574,S575は、順に、順方向レーザ照射処理のステップS224,S225と同様である。
ステップS572〜S575に対応して、キャラクタ解析に失敗した場合に、図13(a),(b)に示すように、逆方向においては、レーザ点灯位置レジスタ166に位置Y2のカウント値が設定され、レーザ消灯位置レジスタ167に位置Z2のカウント値が設定される。
すると、図13(c)に示すように、順方向に位置Y1から位置Z1迄レーザ点灯させ、逆方向に位置Y2から位置Z2迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部16のレーザ光照射は、レーザ照射部L3となる。レーザ照射部L3では、位置Y1から位置Z1迄の部分が、順方向のキャラクタ解析が失敗したバーコード部分に対応し、順方向スイングのみでの点滅によるレーザ照射部となる。レーザ照射部L3の位置Y2から位置Z2迄の部分は、逆方向のキャラクタ解析が失敗したバーコード部分に対応し、逆方向スイングのみでの点滅によるレーザ照射部となる。
変数iが500以上である場合(ステップS564;NO)、スキャナ部16によるレーザ照射が終了され(ステップS576)、両方向レーザ照射処理が終了する。両方向レーザ照射処理が終了すると、図10のステップS61に移行される。
順方向のキャラクタ解析が失敗した場合(ステップS52;YES)、RAM13の位置情報23が参照され、位置Xに位置X1が代入され、位置Yに位置Y1が代入され、位置Zに位置Z1が代入され、位置X,Y,Zが位置情報23に格納されて設定される(ステップS57)。そして、図6のステップS21の順方向レーザ照射処理と同様に、順方向レーザ照射処理が実行され(ステップS58)、ステップS61に移行される。
逆方向のキャラクタ解析が失敗した場合(ステップS53;YES)、RAM13の位置情報23が参照され、位置Xに位置X2が代入され、位置Yに位置Y2が代入され、位置Zに位置Z2が代入され、位置X,Y,Zが位置情報23に格納されて設定される(ステップS59)。そして、逆方向レーザ照射処理が実行され(ステップS60)、ステップS61に移行される。
ここで、図12を参照して、逆方向レーザ照射処理を詳細に説明する。先ず、ステップS601〜S606は、順に、順方向レーザ照射処理のステップS211〜S216と同様である。
ステップS606の後に、ステップS606で取得されたレーザスイング方向が逆方向であるか否かが判別される(ステップS607)。レーザスイング方向が逆方向である場合(ステップS607;YES)、RAM13の位置情報23の位置Xが参照され、変数Aに、バーコードデータの逆方向開始位置から位置X迄のカウント値の合計が代入される(ステップS608)。そして、RAM13の位置情報23の位置Zが参照され、変数Bに、バーコードデータの逆方向開始位置から位置Z迄のカウント値の合計が代入される(ステップS609)。ステップS610,S611は、順に、図6の順方向レーザ照射処理のステップS224,S225と同様である。
ステップS608〜S611に対応して、キャラクタ解析に失敗した場合に、図13(a)に示すように、逆方向においては、レーザ点灯位置レジスタ166に位置X=X2のカウント値が設定され、レーザ消灯位置レジスタ167に位置Z=Z2のカウント値が設定される。
レーザスイング方向が順方向である場合(ステップS607;NO)、RAM13の位置情報23の位置Zが参照され、変数Aに、バーコードデータの順方向開始位置から位置Z迄のカウント値の合計が代入される(ステップS612)。そして、RAM13の位置情報23の位置Yが参照され、変数Bに、バーコードデータの順方向開始位置から位置Y迄のカウント値の合計が代入される(ステップS613)。ステップS614,S615は、順に、図6の順方向レーザ照射処理のステップS220,S221と同様である。
ステップS612〜S615に対応して、キャラクタ解析に失敗した場合に、図13(a)に示すように、順方向においては、レーザ点灯位置レジスタ166に位置Z=Z2のカウント値が設定され、レーザ消灯位置レジスタ167に位置Y=Y2のカウント値が設定される。
すると、逆方向に位置X2から位置Y2迄レーザ点灯させ、順方向に位置Z2から位置Y2迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたレーザ照射によるバーコード上のレーザ照射部では、位置Y2から位置Z2迄の部分が、逆方向のキャラクタ解析が失敗したバーコード部分に対応し、順方向及び逆方向のスイングでのレーザ照射部となる。このレーザ照射部の位置X2から位置Y2迄の部分は、逆方向のキャラクタ解析が成功したバーコード部分に対応し、逆方向スイングのみでの点滅によるレーザ照射部となる。
変数iが500以上である場合(ステップS564;NO)、スキャナ部16によるレーザ照射が終了され(ステップS576)、逆方向レーザ照射処理が終了する。逆方向レーザ照射処理が終了すると、図10のステップS54に移行される。また、バーコード全てについてキャラクタ解析が成功したか否かに関わらず、第2のスキャン処理によりRAM13に格納されたデコードデータ25は、フラッシュメモリ17に記憶される。
以上、本実施の形態によれば、ハンディターミナル1は、スキャナ部16がバーコードをスキャンしてバーコードデータを取得し、前記取得されたバーコードデータを順方向及び逆方向にキャラクタ解析(デコード)する。そして、ハンディターミナル1は、両方向のキャラクタ解析に失敗した場合に、順方向のキャラクタ解析に成功した部分の位置Y1とキャラクタ解析に失敗した部分の位置Z1とを取得し、逆方向のキャラクタ解析に成功した部分の位置Y2とキャラクタ解析に失敗した部分の位置Z2とを取得する。そして、ハンディターミナル1は、スキャナ部16のレーザ照射により、位置Y1及び位置Z1の間と、位置Y2及び位置Z2の間とを実線として、バーコード上に表示する。
このため、バーコードの読取において、両方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分をユーザに認識させることができる。また、第1の実施の形態と同様に、キャラクタ解析に失敗した原因をユーザに認識させることができる。また、順方向又は逆方向のキャラクタ解析に失敗した場合にも、バーコード上へのレーザ照射により、キャラクタ解析に失敗した部分及びキャラクタ解析に成功した部分をユーザに認識させることができる。
なお、第2の実施の形態では、両方向のキャラクタ解析が失敗した場合のレーザ照射を、キャラクタ解析が失敗した部分のみに行う構成としたが、これに限定されるものではない。例えば、キャラクタ解析が失敗した部分を繋げ、この繋げた部分にレーザ照射を行う構成としてもよい。
ここで、図14を参照して、第2の実施の形態の変形例を説明する。図14(a)に、第2の実施の形態の変形例における順方向及び逆方向のレーザ照射範囲を示す。図14(b)に、第2の実施の形態の変形例におけるバーコードへのレーザ照射状態を示す。
図13(a)に示すようなバーコードと順方向開始位置、逆方向開始位置及び各位置X1,Y1,Z1,X2,Y2,Z2において、両方向のキャラクタ解析に失敗した場合を考える。図14(a)に示すように、順方向においては、レーザ点灯位置レジスタ166に位置X1のカウント値が設定され、レーザ消灯位置レジスタ167に位置Y2のカウント値が設定される。逆方向においては、レーザ点灯位置レジスタ166に位置X2のカウント値が設定され、レーザ消灯位置レジスタ167に位置Y1のカウント値が設定される。
すると、図14(b)に示すように、順方向に位置X1から位置Y2迄レーザ点灯させ、逆方向に位置X2から位置Y1迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部16のレーザ光照射は、レーザ照射部L4となる。レーザ照射部L4では、位置Y1から位置Y2迄の範囲が、両方向のキャラクタ解析が失敗した部分を繋げたバーコード部分に対応し、順方向及び逆方向のスイングによるレーザ照射部となる。レーザ照射部L4の位置X1から位置Y1迄と、位置X2から位置Y2迄と、の部分は、順方向、逆方向のキャラクタ解析が成功したバーコード部分に対応し、順方向又は逆方向のスイングのみでの点滅によるレーザ照射部となる。
(第3の実施の形態)
図15を参照して、本発明に係る第3の実施の形態を説明する。第1、第2の実施の形態では、バーコード上にレーザ照射を行うことにより、キャラクタ解析失敗部分等をユーザに通知する構成であった。本実施の形態は、色分けしたバーコード画像表示により、キャラクタ解析失敗部分等をユーザに通知する構成である。
本実施の形態の装置構成として、第1の実施の形態と同様に、ハンディターミナル1を用いる。但し、ROM15には、第1のスキャンプログラムに代えて、第3のスキャンプログラムが記憶されている。
次いで、図15及び図16を参照して、本実施の形態のハンディターミナル1の動作を説明する。図15に、バーコード画像表示処理の流れを示す。図16(a)に、バーコード画像表示処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び位置X,Y,Zと、解析成功部O1及び解析失敗部N1と、を示す。図16(b)に、バーコード画面30を示す。
本実施の形態において、第3のスキャン処理が実行される。第3のスキャン処理は、第1のスキャン処理において、ステップS21の順方向レーザ照射処理を、バーコード画像表示処理に置き換えた処理である。バーコード画像表示処理は、バーコードデータのキャラクタ解析結果に応じて、キャラクタ解析失敗部分と、キャラクタ解析成功部分と、を色分けしてバーコード画像を表示する処理である。
ハンディターミナル1において、例えば、入力部12により第3のスキャン処理の実行指示の操作入力を受け付けたことをトリガとして、CPU11と、ROM15から読み出されて適宜RAM13に展開された第3のスキャンプログラムとの協働により、第3のスキャン処理が実行される。
ここでは、第3のスキャン処理中のバーコード画像表示処理についてのみ説明する。図15に示すように、先ず、RAM13のバーコードデータ22が読み出され、そのバーコードデータからバーコード画像データが生成される(ステップS71)。ステップS71で生成されるバーコード画像データは、バーコードデータから復元される読み取ったバーコードの黒バー及び白スペースを有するイメージ画像データである。
そして、位置情報23の位置X,Yが参照され、バーコード画像の位置Xから位置Yまでの範囲の黒バー部分が青色になるように、ステップS71で生成されたバーコード画像データが加工される(ステップS72)。そして、位置情報23の位置Y,Zが参照され、バーコード画像の位置Yから位置Zまでの範囲の黒バー部分が赤色になるように、ステップS72で加工されたバーコード画像データがさらに加工される(ステップS73)。
例えば、図16(a)のバーコードにおいて、位置Xから位置Yまでの部分は、キャラクタ解析が成功した部分に対応し、解析成功部O1とする。同じく位置Yから位置Zまでの部分は、キャラクタ解析が失敗した部分に対応し、解析失敗部N1とする。ステップS72において、バーコード画像の解析成功部O1に対応する部分が青色にされる。ステップS73において、バーコード画像の解析失敗部N1に対応する部分が赤色にされる。加工する色は、青色及び赤色に限定されるものではなく、色分けがなされ、且つそれぞれの部分に、解析失敗及び解析成功が対応付けられていればよい。
そして、ステップS73で加工されたバーコード画像データのバーコード画像を含むバーコード画面の画面データが生成され、この画面データに応じてバーコード画面が表示部14に表示され(ステップS74)、バーコード画像表示処理が終了する。
ステップS74においては、例えば、図16(b)に示すバーコード画面30が表示される。バーコード画面30は、バーコード画像31と、メッセージ部32と、を含む。バーコード画像31は、青色の解析成功部33と、赤色の解析失敗部34と、それ以外の黒バー及び白スペースのイメージと、からなる。解析成功部33は、解析成功部O1に対応する。解析失敗部34は、解析失敗部N1に対応する。
以上、本実施の形態によれば、ハンディターミナル1は、スキャナ部16がバーコードをスキャンしバーコードデータを取得し、前記取得されたバーコードデータを順方向にキャラクタ解析(デコード)する。そして、ハンディターミナル1は、順方向のバーコード先頭の位置Xとキャラクタ解析に成功した部分の位置Yとキャラクタ解析に失敗した部分の位置Zとを取得する。そして、ハンディターミナル1は、位置X及び位置Yの間を青色にし、位置Y及び位置Zの間を赤色にしたバーコード画像31を含むバーコード画面30の画像データを生成し、そのバーコード画像を表示部14に表示する。
このため、バーコードの読取において、順方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分をユーザに容易に認識させることができる。また、バーコードスキャン後に、ユーザがハンディターミナル1を固定する必要が無いので、ユーザの作業負担を低減できる。また、第1の実施の形態と同様に、ユーザにキャラクタ解析に失敗した原因を認識させることができる。
なお、第3の実施の形態では、加工したバーコード画像を表示することにより、キャラクタ解析失敗部分及びキャラクタ解析成功部分をユーザに通知する構成であるが、これに限定されるものではない。例えば、表示画面がないスキャナ装置においては、加工したバーコード画像データをフラッシュメモリに記憶したり、加工したバーコード画像データを外部機器に送信したり、加工したバーコード画像データを添付したメールを外部機器に送信したり、加工したバーコード画像をプリンタ等で用紙に印刷する等により、キャラクタ解析失敗部分及びキャラクタ解析成功部分をユーザに通知する構成としてもよい。
なお、上記各実施の形態における記述は、本発明に係るスキャナ装置及びプログラムの一例であり、これに限定されるものではない。
例えば、上記第1〜第3の実施の形態及びその変形例のうち少なくとも2つとを組み合わせる構成としてもよい。例えば、第1の実施の形態の、キャラクタ解析失敗部分及びキャラクタ解析成功部分へのレーザ照射と、第3の実施の形態の、加工したバーコード画像の表示と、の両方を行う構成としてもよい。また、第2の実施の形態の両方向のキャラクタ解析の失敗部分を、第3の実施の形態のように色分けしてバーコード画像に表示する構成としてもよい。
また、キャラクタ解析に成功した部分と、キャラクタ解析に失敗した部分と、の少なくとも一つに、をレーザ照射又は色分け画像により表示する構成としてもよい。
また、上記第3の実施の形態では、レーザ光を照射するスキャナ部16を用いる構成としたが、これに限定されるものではない。例えば、LED光を照射するスキャナ部等、他のバーコードのスキャン方式のスキャナ部を用いる構成としてもよい。
上記実施の形態では、スキャナ装置としてハンディターミナルを用いる構成としたが、これに限定されるものではない。例えば、ECR(Electronic Cash Register)、POS(Point Of Sales System)端末等に接続されるバーコード読取装置等、他のスキャナ装置としてもよい。
また、上記各実施の形態の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてROM15を使用した例を開示したが、この例に限定されない。
その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ等の不揮発性メモリ、CD-ROM等の可搬型記録媒体を適用することが可能である。
また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
また、上記各実施の形態における、スキャナ装置としてのハンディターミナル1の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。