(57)【要約】【課題】バーコードの読取において、デコードに失敗した部分及び成功した部分の少なくとも一つをユーザに認識させることである。【解決手段】バーコードをスキャンしバーコードデータを取得するスキャナ部１６と、前記取得されたバーコードデータをデコードし、前記スキャンされたバーコード内のデコードに成功した最終の位置である第１の位置と、当該バーコード内のデコードに失敗した最終の位置である第２の位置とを取得し、前記スキャンされたバーコードの先頭位置から前記第１の位置までの前記デコードに成功した部分と、前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力するＣＰＵ１１、スキャナ部１６と、を備える。【選択図】図１
2010049595.tif 000002
【特許請求の範囲】
【請求項１】
バーコードをスキャンしバーコードデータを取得するバーコードスキャン手段と、
前記取得されたバーコードデータをデコードし、前記スキャンされたバーコード内のデコードに成功した最終の位置である第１の位置と、当該バーコード内のデコードに失敗した最終の位置である第２の位置とを取得するデコード手段と、
前記スキャンされたバーコードの先頭位置から前記第１の位置までの前記デコードに成功した部分と、前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力する出力手段と、を備えるスキャナ装置。
【請求項２】
前記バーコードスキャン手段は、バーコードの順方向及び逆方向にバーコードをスキャンし、順方向及び逆方向のバーコードデータを取得し、
前記デコード手段は、前記取得された順方向及び逆方向のバーコードデータをデコードし、順方向及び逆方向の前記第１の位置及び前記第２の位置を取得し、
前記出力手段は、前記スキャンされたバーコードの順方向及び逆方向の先頭位置から前記第１の位置までの前記デコードに成功した部分と、順方向及び逆方向の前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力する請求項１に記載のスキャナ装置。
【請求項３】
前記出力手段は、前記スキャンされたバーコードにレーザ光を照射して、前記デコードに成功した部分と、前記デコードに失敗した部分と、の少なくとも一つを表示するレーザ照射手段である請求項１又は２に記載のスキャナ装置。
【請求項４】
前記出力手段は、前記デコードに成功した部分と、前記デコードに失敗した部分と、の少なくとも一つを、前記読み取られたバーコードに対応付けて、出力する請求項１又は２に記載のスキャナ装置。
【請求項５】
前記出力手段は、画像を表示する画像表示手段であり、前記バーコードデータを用いて、前記デコードに成功した部分と、前記デコードに失敗した部分と、の少なくとも一つが前記読み取られたバーコード上に表される画像を生成して表示する請求項４に記載のスキャナ装置。
【請求項６】
コンピュータを、
バーコードをスキャンしバーコードデータを取得するバーコードスキャン手段、
前記取得されたバーコードデータをデコードし、前記スキャンされたバーコード内のデコードに成功した最終の位置である第１の位置と、当該バーコード内のデコードに失敗した最終の位置である第２の位置とを取得するデコード手段、
前記スキャンされたバーコードの先頭位置から前記第１の位置までの前記デコードに成功した部分と、前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力する出力手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャナ装置及びプログラムに関する。
【背景技術】
【０００２】
従来、商品等に付されたバーコードを読み取るスキャナ装置が知られている。スキャナ装置は、光を読取対象のバーコードに照射し、その反射光を受光して得られるバーコードデータをデコード（キャラクタ解析）することにより、バーコードに含まれるキャラクタのデータを取得する。
【０００３】
また、バーコードにおいて、所定本数の黒バー及び白スペースにより１キャラクタ（数字、文字）が構成される。バーコードには、複数のキャラクタが含まれる。例えば、Code39の規格では、５本の黒バーと、４本の白スペースとにより、１キャラクタが構成される。
【０００４】
スキャナ装置では、バーコードの読取を行う場合、スキャンにより取得したバーコードデータに対し、キャラクタ単位で解析が行われる。そして、１つのキャラクタの解析に成功すると、次のキャラクタ解析が行われる。スキャナ装置は、このような処理を繰り返してバーコードの最終位置まで解析していき、最後まで解析に成功したら、読取完了音の出力等により完了通知を行い、読取結果を表示部に表示する。
【０００５】
しかし、バーコードの解析時に、途中のあるキャラクタにおいて、バーの比率に異常が見つかった場合に、その位置が解析終了位置となり、読取失敗となる。この場合、スキャナ装置の表示部には、何も表示されない。
【０００６】
また、バーコードを読み取り、読取完了時に、読み取ったバーコードにレーザ光を照射して指し示し、使用者に通知するというスキャナ装置があった。これは、複数のバーコードが同じ用紙に印刷されているような場合に、読み取った直後にどのバーコードが読めたのか定かでない場合に、読み取ったバーコードを指し示すことにより、どのバーコードが読めたのかを確実に通知し、読取操作性を向上させることを目的としている。
【０００７】
さらに、読取が成功したバーコードと、読み取れなかったバーコードとを表示部に表示するとともに、読み取れなかったバーコードを枠線で囲んで表示するスキャナ装置が考えられている（例えば、特許文献１参照）。
【特許文献１】特開２００１−２８０３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のスキャナ装置では、あるバーコードデータについてバーコードの途中でキャラクタ解析に失敗した場合に、そこでキャラクタ解析が終了となって、次のスキャンでのバーコードデータのキャラクタ解析処理へと進む。しかし、このとき何の情報も出力されないため、バーコードのどの部分までキャラクタ解析に成功して、どの部分で解析に失敗したのかが分からなかった。
【０００９】
バーコードのどの部分でキャラクタ解析に失敗したのかが分からないと、バーコードの印刷品質に問題があるのか、それともスキャナ装置に問題があるのかの両方の可能性を考慮しながら不具合の解析を実行する必要があった。そのため、原因の特定に時間がかかってしまっていた。
【００１０】
本発明の課題は、バーコードの読取において、デコード（キャラクタ解析）に失敗した部分及び成功した部分の少なくとも一つをユーザに認識させることである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、請求項１に記載の発明のスキャナ装置は、
バーコードをスキャンしバーコードデータを取得するバーコードスキャン手段と、
前記取得されたバーコードデータをデコードし、前記スキャンされたバーコード内のデコードに成功した最終の位置である第１の位置と、当該バーコード内のデコードに失敗した最終の位置である第２の位置とを取得するデコード手段と、
前記スキャンされたバーコードの先頭位置から前記第１の位置までの前記デコードに成功した部分と、前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力する出力手段と、を備える。
【００１２】
請求項２に記載の発明は、請求項１に記載のスキャナ装置において、
前記バーコードスキャン手段は、バーコードの順方向及び逆方向にバーコードをスキャンし、順方向及び逆方向のバーコードデータを取得し、
前記デコード手段は、前記取得された順方向及び逆方向のバーコードデータをデコードし、順方向及び逆方向の前記第１の位置及び前記第２の位置を取得し、
前記出力手段は、前記スキャンされたバーコードの順方向及び逆方向の先頭位置から前記第１の位置までの前記デコードに成功した部分と、順方向及び逆方向の前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力する。
【００１３】
請求項３に記載の発明は、請求項１又は２に記載のスキャナ装置において、
前記出力手段は、前記スキャンされたバーコードにレーザ光を照射して、前記デコードに成功した部分と、前記デコードに失敗した部分と、の少なくとも一つを表示するレーザ照射手段である。
【００１４】
請求項４に記載の発明は、請求項１又は２に記載のスキャナ装置において、
前記出力手段は、前記デコードに成功した部分と、前記デコードに失敗した部分と、の少なくとも一つを、前記読み取られたバーコードに対応付けて、出力する。
【００１５】
請求項５に記載の発明は、請求項４に記載のスキャナ装置において、
前記出力手段は、画像を表示する画像表示手段であり、
前記制御手段は、前記バーコードデータを用いて、前記デコードに成功した部分と、前記デコードに失敗した部分と、の少なくとも一つが前記読み取られたバーコード上に表される画像を生成して前記画像表示手段に表示させる。
【００１６】
請求項６に記載の発明のプログラムは、
コンピュータを、
バーコードをスキャンしバーコードデータを取得するバーコードスキャン手段、
前記取得されたバーコードデータをデコードし、前記スキャンされたバーコード内のデコードに成功した最終の位置である第１の位置と、当該バーコード内のデコードに失敗した最終の位置である第２の位置とを取得するデコード手段、
前記スキャンされたバーコードの先頭位置から前記第１の位置までの前記デコードに成功した部分と、前記第１の位置から前記第２の位置までの前記デコードに失敗した部分と、の少なくとも一つを出力する出力手段、
として機能させる。
【発明の効果】
【００１７】
本発明によれば、バーコードの読取において、デコードに失敗した部分及び成功した部分の少なくとも一つをユーザに認識させることができる。
【発明を実施するための最良の形態】
【００１８】
以下、添付図面を参照して本発明に係る好適な第１〜第３の実施の形態を順に詳細に説明する。なお、本発明は、図示例に限定されるものではない。
【００１９】
（第１の実施の形態）
図１〜図８を参照して本発明に係る第１の実施の形態を説明する。先ず、図１及び図２を参照して本実施の形態の装置構成を説明する。図１に、本実施の形態のハンディターミナル１の回路構成を示す。図２に、スキャナ部１６の内部構成を示す。
【００２０】
本実施の形態のスキャナ装置としてのハンディターミナル１は、バーコード読取、ユーザ操作による情報の入力、情報の記憶、等の機能を有する携帯端末である。ハンディターミナル１は、バーコード読取のトリガキーを操作する毎に、バーコード読取用のレーザ光をバーコードに発光しその反射光を受光してバーコード読取を行うバーコード読取機能を有する。
【００２１】
図１に示すように、ハンディターミナル１は、デコード手段、出力手段としてのＣＰＵ（Central Processing Unit）１１と、入力部１２と、ＲＡＭ（Random Access Memory）１３と、出力手段、画像表示手段としての表示部１４と、ＲＯＭ（Read Only Memory）１５と、バーコードスキャン手段、出力手段、レーザ照射手段としてのスキャナ部１６と、フラッシュメモリ１７と、ＩＦ（InterFace）部１８とを備え、各部がバス１９を介して接続される。
【００２２】
ＣＰＵ１１は、ハンディターミナル１の各部を中央制御する。ＣＰＵ１１は、ＲＯＭ１５に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをＲＡＭ１３に展開し、ＲＡＭ１３に展開されたプログラムとの協働で、各種処理を実行する。
【００２３】
ＣＰＵ１１は、ＲＯＭ１５に記憶された第１のスキャンプログラムとの協働により、スキャナ部１６により読み取られたバーコードデータを順方向にキャラクタ解析し、キャラクタ解析がバーコードの途中で失敗した場合に、スキャナ部１６によるバーコードへのレーザ光の照射（レーザ照射）により、キャラクタ解析に成功した部分と失敗した部分とを、バーコード上に表示する。
【００２４】
入力部１２は、バーコード読取を指示するためのトリガキー、数字・文字入力キー、各種機能キー等の各種キーを含み、操作者から押下入力された各キーのキー入力信号をＣＰＵ１１に出力する。また、入力部１２は、表示部１４と一体的にタッチパネルとして構成されることとしてもよい。
【００２５】
ＲＡＭ１３は、情報を一時的に格納する揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納するワークエリアを有する。
【００２６】
表示部１４は、ＬＣＤ（Liquid Crystal Display）、ＥＬＤ（ElectroLuminescent Display）等で構成され、ＣＰＵ１１からの表示信号に従って各種表示を行う。
【００２７】
ＲＯＭ１５は、各種プログラム、各種データが予め読み出し専用に記憶される記憶部である。ＲＯＭ１５は、第１のスキャンプログラムを記憶する。
【００２８】
スキャナ部１６は、ＣＰＵ１１の制御信号に従い、バーコードからバーコードイメージを読取り、そのバーコードデータをＣＰＵ１１に出力する一次元バーコードのスキャナ部である。図２に示すように、スキャナ部１６は、発光制御部１６０、発光部１６１、バイブレーションミラー１６２、受光部１６３、ゲイン回路１６４、二値化回路１６５、レーザ点灯位置レジスタ１６６、レーザ消灯位置レジスタ１６７等を備えて構成される。
【００２９】
発光制御部１６０は、ＣＰＵ１１の制御と、レーザ点灯位置レジスタ１６６、レーザ消灯位置レジスタ１６７と、に従って、発光部１６１の発光を制御する。発光部１６１は、レーザ光Ｌを発光する。バイブレーションミラー１６２は、ＣＰＵ１１の制御信号に従い、図示しないモータ等によりバイブレートされることにより、発光部１６１から発光されたレーザ光Ｌを反射して左右に振る（広げる）。受光部１６３は、バイブレーションミラー１６２に反射されたレーザ光Ｌが実際にバーコードに当たった反射光を受光して電気信号に変換するモジュールである。
【００３０】
ゲイン回路１６４は、受光部１６３で受光した反射光の電気信号を増幅して波形を最適化する。二値化回路１６５は、ゲイン回路１６４で最適化された電気信号をバーデータとしての二値データに変換してＣＰＵ１１に出力する。ＣＰＵ１１は、二値化回路１６５から入力されたバーコードデータをデコードすることとなる。バーコードデータは、バーコードの黒バー及び白スペースの幅データ及び左右のマージン幅のデータである。
【００３１】
レーザ点灯位置レジスタ１６６は、キャラクタ解析に失敗したバーコードにおけるレーザ点灯位置を示す情報を記憶する記憶部である。レーザ消灯位置レジスタ１６７は、キャラクタ解析に失敗したバーコードにおけるレーザ消灯位置を示す情報を記憶する記憶部である。レーザ点灯位置レジスタ１６６、レーザ消灯位置レジスタ１６７に格納される情報は、バーコードの長手方向（黒バー及び白スペースの配列方向）の位置を示すカウント値のデータである。発光部１６１は、キャラクタ解析に失敗した場合に、レーザ点灯位置レジスタ１６６に格納されたレーザ点灯位置以上で、レーザ消灯位置レジスタ１６７に格納されたレーザ点灯位置以下の区間で、レーザ発光するよう、発光制御部１６０により制御される。
【００３２】
また、発光制御部１６０は、バイブレーションミラー１６２により左右に振られるレーザ光Ｌについて、バーコード上で左→右を順方向とし、右→左を逆方向として、順方向、逆方向のレーザスイング毎にタイミング割込み信号を生成してＣＰＵ１１に出力する。また、発光制御部１６０は、ＣＰＵ１１の要求に応じて、レーザスイング方向をＣＰＵ１１に出力する。
【００３３】
フラッシュメモリ１７は、各種データを記憶する記憶部であり、その各種データの読み出し及び書き込みが可能である。フラッシュメモリ１７には、バーコードデータのキャラクタ解析が成功したキャラクタ（文字、数値等）のデータ（デコードデータ）等が記憶される。
【００３４】
ＩＦ部１８は、通信ケーブルを介して外部機器と接続され、当該外部機器との情報の送受信を仲介する回路部である。ＩＦ部１８は、例えば、ＵＳＢ（Universal Serial Bus）方式の有線通信部である。また、ハンディターミナル１が無線通信機能を有する無線通信部を有する構成としてもよい。
【００３５】
次に、図３を参照して、ＲＡＭ１３に記憶されるデータを説明する。図３に、ＲＡＭ１３に記憶されるデータを示す。
【００３６】
図３に示すように、ＲＡＭ１３には、第１のスキャン処理において、コード種類２１、バーコードデータ２２、位置情報２３、解析状態情報２４、デコードデータ２５、が記憶される。
【００３７】
コード種類２１は、解析対象のバーコードの規格の種類を示すデータ、例えばCode39、NW-7等を識別するデータである。バーコードデータ２２は、スキャナ部１６から出力されるバーコードの二値化データである。位置情報２３は、位置Ｘ，Ｙ，Ｚ等の位置情報である。位置Ｘは、順方向のバーコードの先頭位置である。第１の位置としての位置Ｙは、順方向のバーコードのキャラクタ解析成功の最終位置である。第２の位置としての位置Ｚは、順方向のバーコードのキャラクタ解析失敗の最終位置である。
【００３８】
解析状態情報２４は、キャラクタ解析の成否を示す情報であり、コード解析失敗の場合は、その失敗原因を示す情報を含む。解析状態情報２４は、コード（Code39等）解析成功、キャラクタ解析失敗、先頭マージン検出失敗、エンドマージン検出失敗等である。デコードデータ２５は、バーコードデータのキャラクタ解析が成功したキャラクタのデータである。
【００３９】
次に、図４〜図８を参照して、ハンディターミナル１の動作を説明する。図４に、第１のスキャン処理の流れを示す。図５に、第１のスキャン処理のCode39解析処理の流れを示す。図６に、第１のスキャン処理の順方向レーザ照射処理の流れを示す。図７（ａ）に、バーコードと、バーコードデータにおける各部のカウント値とを示す。図７（ｂ）に、バーコードと、レーザ点灯信号と、レーザ点灯位置レジスタ及びレーザ消灯位置レジスタの範囲と、を示す。図８（ａ）に、第１のスキャン処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び位置Ｘ，Ｙ，Ｚと、を示す。図８（ｂ）に、第１のスキャン処理における順方向及び逆方向のレーザ照射範囲を示す。図８（ｃ）に、第１のスキャン処理におけるバーコードへのレーザ照射状態を示す。
【００４０】
第１のスキャン処理は、バーコードをスキャンしてバーコードデータを取得し、そのバーコードデータを順方向にキャラクタ解析（デコード）するとともに、キャラクタ解析が失敗した場合に、キャラクタ解析が成功した部分と失敗した部分とが認識可能なように、バーコードへレーザ照射を行う処理である。但し、ユーザのハンディターミナル１把持により、バーコードデータ取得時から、キャラクタ解析に応じたレーザ照射時まで、バーコードに対するハンディターミナル１の位置が固定されているものとする。
【００４１】
予め、入力部１２によりユーザからのコード種類の設定入力が受け付けられ、そのコード種類の情報がコード種類２１としてＲＡＭ１３に格納されているものとする。
【００４２】
ハンディターミナル１において、例えば、第１のスキャン処理の実行指示が入力部１２に入力されたことをトリガとして、ＣＰＵ１１と、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開された第１のスキャンプログラムとの協働により、第１のスキャン処理が実行される。
【００４３】
先ず、ユーザによりハンディターミナル１が把持されて、スキャナ部１６が発光するレーザ照射方向が読取対象のバーコードに向けられる。そして、図４に示すように、スキャナ部１６により、バーコードが順方向にスキャンされ、そのバーコードデータが取得されて、バーコードデータ２２としてＲＡＭ１３に格納される（ステップＳ１１）。そして、バーコードデータ２２に格納されたバーコードデータから先頭マージンがチェックされる（ステップＳ１２）。
【００４４】
先頭マージンとは、順方向の先頭マージンとする。図７（ａ）に示すように、先頭マージンは、バーコードの左のマージンである。先頭マージンのチェックでは、例えば、バーコードデータにおいて、バーコードの先頭黒バーの左に、コードの基準となる長さの１０倍以上のスペースがあるか否かが判別され、ある場合に、そのスペースが先頭マージンとして検出される。
【００４５】
また、バーコードデータ上の移動距離をカウント値として表す。カウント値は、スキャナ部１６のクロック動作に対応するカウント値である。つまり、クロック動作回数の大小により、移動距離の長短を示している。図７（ａ）に示すように、バーコードデータ全体の幅、左マージン（先頭マージン）の幅、バーコード部分の幅が、カウント値Ｃ１，Ｃ２，Ｃ３のように表される。左マージンの左端をカウントの順方向開始位置とする。カウント値Ｃ１，Ｃ２，Ｃ３は、例えば、それぞれ順に、５０００カウント、１５００カウント、２０００カウントとする。
【００４６】
そして、ステップＳ１２において、先頭マージンが検出されたか否かが判別される（ステップＳ１３）。先頭マージンが検出された場合（ステップＳ１３；ＹＥＳ）、変数としての位置Ｘに、先頭マージンのカウント値＋１が代入され、ＲＡＭ１３の位置情報２３に格納されて設定される（ステップＳ１４）。先頭マージンのカウント値＋１は、バーコードデータの最初（左端）の黒バーの左端位置を示す。
【００４７】
そして、ＲＡＭ１３のコード種類２１が参照され、コード種類２１にCode39が含まれて、Code39の解析が有効であるか否かが判別される（ステップＳ１５）。Code39の解析が有効である場合（ステップＳ１５；ＹＥＳ）、表示部１４の解析結果表示がクリアされる（ステップＳ１６）。そして、Code39解析処理が実行される（ステップＳ１７）。
【００４８】
ここで、図５を参照して、ステップＳ１７のCode39解析処理を詳細に説明する。先ず、変数としての位置Ｙに、位置Ｘの値が代入されて、ＲＡＭ１３の位置情報２３に格納されて設定される（ステップＳ１７１）。そして、位置Ｙがバーコードデータの最終黒バー位置（最終黒バーの右端のカウント値）より大きいか（右か）否かが判別される（ステップＳ１７２）。位置Ｙが最終黒バー位置以下である場合（ステップＳ１７２；ＮＯ）、バーコードデータのエンドマージンがチェックされる（ステップＳ１７３）。図３（ａ）に示すように、エンドマージンは、バーコードの右のマージンである。エンドマージンのチェックでは、例えば、バーコードデータにおいて、バーコードの最終黒バーの右に、コードの基準となる長さの１０倍以上のスペースがあるか否かが判別され、ある場合に、そのスペースがエンドマージンとして検出される。
【００４９】
そして、ステップＳ１７３において、エンドマージンが検出されたか否かが判別される（ステップＳ１７４）。エンドマージンが検出されていない場合（ステップＳ１７４；ＮＯ）、バーコードデータの全キャラクタ解析が完了しておらず、位置Ｙを先頭とした１キャラクタ分のバーコードデータが２値化される（ステップＳ１７５）。バーコードデータの２値化とは、バーコードデータをさらに、細い又は太い黒バーと、細い又は太い白スペースと、を表す４種類のデータに変換することである。Code39において、１キャラクタは、５本の黒バーと４本の白スペースとからなる。
【００５０】
そして、ステップＳ１７５で得られた１キャラクタ分の２値化されたバーコードデータのキャラクタに対応する値（文字、数値等）が、パターンチェックにより取得され、そのキャラクタの値のデータ（デコードデータ）が、デコードデータ２５としてＲＡＭ１３に格納される（ステップＳ１７６）。そして、ステップＳ１７６でパターンチェックによる値取得が成功したか否かが判別される（ステップＳ１７７）。パターンチェックによる値取得が成功した場合（ステップＳ１７７；ＹＥＳ）、位置情報２３の位置Ｙが黒バー及び白スペースの＋１０本分増加され（ステップＳ１７８）、ステップＳ１７２に移行される。
【００５１】
パターンチェックによる値取得が失敗した場合（ステップＳ１７７；ＮＯ）、位置Ｚに位置Ｙの値が代入され、ＲＡＭ１３の位置情報２３に格納されて設定される（ステップＳ１７９）。そして、位置情報２３に格納された位置Ｚが黒バー及び白スペースの＋１０本分増加され（ステップＳ１８０）、キャラクタ解析失敗の旨の情報が、解析状態情報２４としてＲＡＭ１３に格納されて設定され（ステップＳ１８１）、Code39解析処理が終了する。
【００５２】
エンドマージンが検出された場合（ステップＳ１７４；ＹＥＳ）、バーコードデータの全キャラクタ解析が成功し、Code39解析成功の旨の情報が解析状態情報２４としてＲＡＭ１３に格納されて設定され（ステップＳ１８２）、Code39解析処理が終了する。
【００５３】
位置Ｙが最終黒バー位置より大きい場合（ステップＳ１７２；ＹＥＳ）、エンドマージンの検出が失敗した旨の情報が、解析状態情報２４としてＲＡＭ１３に格納されて設定され（ステップＳ１８３）、Code39解析処理が終了する。ステップＳ１７のCode39解析処理が終了すると、図４のステップＳ１８に移行される。
【００５４】
そして、解析状態情報２４が参照され、Code39解析成功の旨の情報が格納され、Code39解析が成功したか否かが判別される（ステップＳ１８）。Code39解析が成功していない場合（ステップＳ１８；ＮＯ）、解析状態情報２４が参照され、エンドマージン検出失敗の旨の情報が格納され、エンドマージン検出失敗したか否かが判別される（ステップＳ１９）。
【００５５】
エンドマージン検出が失敗していない場合（ステップＳ１９；ＮＯ）、解析状態情報２４がキャラクタ解析失敗の旨の情報であり、キャラクタ解析失敗の旨の情報が表示部１４に表示され、デコードデータ２５がフラッシュメモリ１７に記憶される（ステップＳ２０）。そして、順方向レーザ照射処理が実行される（ステップＳ２１）。ここで、図６を参照して、順方向レーザ照射処理を詳細に説明する。
【００５６】
順方向レーザ照射処理において、先ず、スキャナ部１６によりレーザ照射が開始される（ステップＳ２１１）。そして、変数ｉが０に設定される（ステップＳ２１２）。
変数ｉは、レーザ照射のスイング回数の変数である。そして、スキャナ部１６から出力されるレーザスイング方向変換のタイミング割込み信号の待ちがなされる（ステップＳ２１３）。ステップＳ２１３終了時には、順方向→逆方向、又は逆方向→順方向へのレーザスイング方向の変化が発生している。
【００５７】
そして、変数ｉが５００よりも小さいか否かが判別される（ステップＳ２１４）。変数ｉが５００より小さい場合（ステップＳ２１４；ＹＥＳ）、変数ｉに（ｉ＋１）が代入される（ステップＳ２１５）。そして、スキャナ部１６から出力されるレーザスイング方向が取得される（ステップＳ２１６）。そして、ステップＳ２１６で取得されたレーザスイング方向が順方向であるか否かが判別される（ステップＳ２１７）。
【００５８】
レーザスイング方向が順方向である場合（ステップＳ２１７；ＹＥＳ）、ＲＡＭ１３の位置情報２３の位置Ｘが参照され、変数Ａに、バーコードデータの順方向開始位置から位置Ｘ迄のカウント値の合計が代入される（ステップＳ２１８）。そして、ＲＡＭ１３の位置情報２３の位置Ｚが参照され、変数Ｂに、バーコードデータの順方向開始位置から位置Ｚ迄のカウント値の合計が代入される（ステップＳ２１９）。そして、レーザ点灯位置レジスタ１６６に変数Ａがセットされる（ステップＳ２２０）。そして、レーザ消灯位置レジスタ１６７に変数Ｂがセットされ（ステップＳ２２１）、ステップＳ２１３に移行される。スキャナ部１６において、ステップＳ２２０，Ｓ２２１でセットされたレーザ点灯位置レジスタ１６６及びレーザ消灯位置レジスタ１６７に応じて、発光制御部１６０により、順方向のレーザ点灯信号が生成され、当該レーザ点灯信号に応じて発光部１６１からレーザ光が出射される。つまり、レーザ点灯及びレーザ消灯を任意のタイミングで行うことができる。
【００５９】
仮に、バーコード部分のみをレーザ点灯させる場合を考える。例えば、図７（ｂ）に示すように、順方向開始位置からのバーコードの左端位置のカウント値がレーザ点灯位置レジスタ１６６にセットされ、順方向開始位置からのバーコードの右端位置のカウント値がレーザ消灯位置レジスタ１６７にセットされる。すると、バーコード部分のみをレーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部１６のレーザ照射範囲は、レーザ照射部Ｌ１となる。
【００６０】
ステップＳ２１８〜Ｓ２２１に対応して、キャラクタ解析に失敗した場合に、図８（ａ），（ｂ）に示すように、順方向においては、レーザ点灯位置レジスタ１６６に位置Ｘのカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｚのカウント値が設定される。
【００６１】
レーザスイング方向が逆方向である場合（ステップＳ２１７；ＮＯ）、ＲＡＭ１３の位置情報２３の位置Ｚが参照され、変数Ａに、バーコードデータの逆方向開始位置から位置Ｚ迄のカウント値の合計が代入される（ステップＳ２２２）。そして、ＲＡＭ１３の位置情報２３の位置Ｙが参照され、変数Ｂに、バーコードデータの逆方向開始位置から位置Ｙ迄のカウント値の合計が代入される（ステップＳ２２３）。
【００６２】
そして、レーザ点灯位置レジスタ１６６に変数Ａがセットされる（ステップＳ２２４）。そして、レーザ消灯位置レジスタ１６７に変数Ｂがセットされ（ステップＳ２２５）、ステップＳ２１３に移行される。
【００６３】
ステップＳ２２２〜Ｓ２２５に対応して、キャラクタ解析に失敗した場合に、図８（ａ），（ｂ）に示すように、逆方向においては、レーザ点灯位置レジスタ１６６に位置Ｚのカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｙのカウント値が設定される。
【００６４】
すると、図８（ｃ）に示すように、順方向に位置Ｘから位置Ｚ迄レーザ点灯させ、逆方向に位置Ｚから位置Ｙ迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部１６のレーザ光照射は、レーザ照射部Ｌ２となる。レーザ照射部Ｌ２では、位置Ｙから位置Ｚ迄の部分が、キャラクタ解析が失敗したバーコード部分に対応し、順方向及び逆方向のレーザ照射によるレーザ照射部となる。レーザ照射部Ｌ２の位置Ｘから位置Ｙ迄の部分は、キャラクタ解析が成功したバーコード部分に対応し、順方向スイングのみでの点滅によるレーザ照射部となる。
【００６５】
変数ｉが５００以上である場合（ステップＳ２１４；ＹＥＳ）、スキャナ部１６によるレーザ照射が終了され（ステップＳ２２６）、順方向レーザ照射処理が終了する。順方向レーザ照射処理が終了すると、図４のステップＳ２２に移行される。
【００６６】
そして、その他のコード解析処理が実行され（ステップＳ２２）、第１のスキャン処理が終了する。ステップＳ２２の他のコード種類のキャラクタ解析処理では、NW-7、Cordabar、ＥＡＮ、Interleaved 2of5等、他のコード種類について、ステップＳ１４〜Ｓ２１，Ｓ２３，Ｓ２４と同様の処理が実行される。
【００６７】
Code39の解析が有効でない場合（ステップＳ１５；ＮＯ）、ステップＳ２２に移行される。Code39解析が成功した場合（ステップＳ１８；ＹＥＳ）、Code39解析が成功した旨と、デコードデータ２５のデコードデータ（キャラクタ解析に成功した全キャラクタのデータ）と、が表示部１４に表示され（ステップＳ２３）、ステップＳ２２に移行される。エンドマージン検出が失敗した場合（ステップＳ１９；ＹＥＳ）、エンドマージン解析失敗の旨の情報が表示部１４に表示され（ステップＳ２４）、ステップＳ２２に移行される。
【００６８】
先頭マージンが検出されない場合（ステップＳ１３；ＮＯ）、先頭マージン解析失敗の旨の情報が表示部１４に表示され（ステップＳ２５）、第１のスキャン処理が終了する。また、バーコード全てについてキャラクタ解析が成功したか否かに関わらず、第１のスキャン処理によりＲＡＭ１３に格納されたデコードデータ２５は、フラッシュメモリ１７に記憶される。
【００６９】
以上、本実施の形態によれば、ハンディターミナル１は、スキャナ部１６がバーコードをスキャンしてバーコードデータを取得し、前記取得されたバーコードデータを順方向にキャラクタ解析（デコード）する。そして、ハンディターミナル１は、順方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分の位置Ｙとキャラクタ解析に失敗した部分の位置Ｚを取得し、スキャナ部１６のレーザ照射により、バーコード先頭の位置Ｘ及び位置Ｙの間を点滅した実線とし、位置Ｙ及び位置Ｚ点の間を点滅しない実線として、バーコード上に表示する。
【００７０】
このため、バーコードの読取において、順方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分をユーザに認識させることができる。また、ユーザにキャラクタ解析に失敗した原因を認識させることができる。例えば、ユーザは、バーコードのキャラクタ解析が失敗した部分のバーコードに汚れ、傷等がある場合に、バーコードの品質が不具合の要因であり、バーコードのキャラクタ解析が失敗した部分のバーコードに汚れ、傷等がない場合に、スキャナ装置１（キャラクタ解析のプログラム等）が不具合の要因であると認識できる。
【００７１】
また、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分にスキャナ部１６にレーザ照射させる。このため、スキャナ部１６を、バーコードスキャンと、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分の表示と、の両方に使用でき、スキャナ部１６を有効に活用できる。
【００７２】
なお、第１の実施の形態では、キャラクタ解析が失敗した場合のレーザ光照射の照射時間が、予め定められたスイング回数（変数ｉ＝５００）により定められていたが、これに限定されるものではない。例えば、入力部１２によるユーザの照射時間（スイング回数）の操作入力に応じて、レーザ光照射が行われる構成としてもよい。また、レーザ光照射の照射時間が、入力部１２のトリガキー押下入力と連動し、トリガキーを押下している間にレーザ照射し、トリガキーを離したらレーザ照射を終了する構成としてもよい。
【００７３】
また、第１の実施の形態では、バーコードのキャラクタ解析成功部分、キャラクタ解析失敗部分に対し、順に、２スイング間隔で点滅する実線、点滅しない実線とするようバーコード上にレーザ照射を行っているが、これに限定されるものではない。少なくとも、バーコード上のキャラクタ解析成功部分と、キャラクタ解析失敗部分とをユーザが認識できるようなレーザ照射であればよい。例えば、キャラクタ解析成功部分及びキャラクタ解析失敗部分に対し、２スイング間隔で点滅しない実線、点滅する実線とするようバーコード上にレーザ照射を行う構成としてもよい。また、ユーザからの入力部１２を介する操作入力等に応じて、レーザ照射の点滅の間隔を変更可能にする構成としてもよい。また、破線、点線等でバーコード上にレーザ照射を行う構成としてもよい。
【００７４】
また、第１の実施の形態では、キャラクタ解析が失敗した時点で即座に、キャラクタ解析失敗部分にレーザ照射を行う構成であるが、これに限定されるものではない。例えば、数スキャン分の解析結果（位置Ｘ，Ｙ，Ｚ）をＲＡＭ１３等にバッファリングし、それらの解析結果が所定回数一致した場合に、その解析結果を用いてレーザ照射を行う構成としてもよい。
【００７５】
また、第１の実施の形態では、先頭マージン検出失敗、キャラクタ解析失敗等の情報を表示部１４に表示する構成であるが、これに限定されるものではない。例えば、ハンディターミナル１がスピーカ等を備え、先頭マージン検出失敗等の情報をスピーカから音声出力で通知する構成としてもよい。また、ハンディターミナル１がバイブレータ等を備え、先頭マージン検出失敗等の情報をバイブレータによる振動パターン出力で通知する構成としてもよい。また、ハンディターミナル１がＬＥＤ（Light Emitting Diode）等の発光部を備え、先頭マージン検出失敗等の情報を発光部による発光パターン出力で通知する構成としてもよい。
【００７６】
また、第１の実施の形態では、先頭マージン又はエンドマージン検出失敗、及びキャラクタ解析失敗の場合に、その失敗要因の種類の情報を表示部１４に表示する構成であるが、これに限定されるものではない。例えば、キャラクタ間ギャップ異常検出等、その他のバーコード読取失敗要因発生の際にも、その失敗要因の種類の情報を表示部１４に表示する構成としてもよい。
【００７７】
（第２の実施の形態）
図９〜図１４を参照して、本発明に係る第２の実施の形態を説明する。第１の実施の形態では、バーコードデータに対し順方向にキャラクタ解析を行い、そのキャラクタ解析に応じてキャラクタ解析失敗部分及びキャラクタ解析成功部分にレーザ照射する構成であった。本実施の形態では、順方向及び逆方向にキャラクタ解析を行い、そのキャラクタ解析に応じてキャラクタ解析失敗部分にレーザ光を照射する構成である。
【００７８】
本実施の形態の装置構成として、第１の実施の形態と同様に、ハンディターミナル１を用いる。但し、ＲＡＭ１３のバーコードデータ２２は、順方向及び逆方向のバーコードデータとなる。また、位置情報２３は、位置Ｘ，Ｙ，Ｚと、位置Ｘ１，Ｙ１，Ｚ１，Ｘ２，Ｙ２，Ｚ２とを含む。位置Ｘ１は、順方向のバーコードの先頭位置である。位置Ｙ１は、順方向のバーコードのキャラクタ解析成功の最終位置である。位置Ｚ１は、順方向のバーコードのキャラクタ解析失敗の最終位置である。位置Ｘ２は、逆方向のバーコードの先頭位置である。位置Ｙ２は、逆方向のバーコードのキャラクタ解析成功の最終位置である。位置Ｚ２は、逆方向のバーコードのキャラクタ解析失敗の最終位置である。
【００７９】
また、ＲＡＭ１３の解析状態情報２４には、順方向又は逆方向の解析状態情報が格納される。また、ＲＯＭ１５には、第１のスキャンプログラムに代えて、後述する第２のスキャンプログラムが記憶されている。
【００８０】
次いで、図９〜図１３を参照して、本実施の形態のハンディターミナル１の動作を説明する。図９に、第２のスキャン処理の流れを示す。図１０に、図９の第２のスキャン処理の続きの流れを示す。図１１に、第２のスキャン処理の両方向レーザ照射処理の流れを示す。図１２に、第２のスキャン処理の逆方向レーザ照射処理の流れを示す。図１３（ａ）に、第２のスキャン処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び位置Ｘ１，Ｙ１，Ｚ１，Ｘ２，Ｙ２，Ｚ２と、を示す。図１３（ｂ）に、第２のスキャン処理における順方向及び逆方向のレーザ照射範囲を示す。図１３（ｃ）に、第２のスキャン処理におけるバーコードへのレーザ照射状態を示す。
【００８１】
第２のスキャン処理は、バーコードをスキャンしてバーコードデータを取得し、そのバーコードデータを順方向及び逆方向からキャラクタ解析（デコード）するとともに、キャラクタ解析が失敗した場合に、キャラクタ解析失敗部分とキャラクタ解析成功部分とが認識可能なように、バーコード上にレーザ照射を行う処理である。但し、ユーザによるハンディターミナル１の把持により、バーコードデータ取得時から、キャラクタ解析に応じたレーザ照射時まで、バーコードに対するハンディターミナル１の位置が固定されているものとする。
【００８２】
予め、入力部１２によりユーザからのコード種類の設定入力が受け付けられ、そのコード種類の情報がコード種類２１としてＲＡＭ１３に格納されているものとする。
【００８３】
ハンディターミナル１において、例えば、第２のスキャン処理の実行指示が入力部１２に入力されたことをトリガとして、ＣＰＵ１１と、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開された第２のスキャンプログラムとの協働により、第２のスキャン処理が実行される。
【００８４】
先ず、ユーザによりハンディターミナル１が把持されて、スキャナ部１６が発光するレーザ照射方向が読み取りたいバーコードに向けられる。そして、図９及び図１０に示すように、スキャナ部１６により、バーコードが順方向及び逆方向にスキャンされ、そのバーコードデータが取得されて、バーコードデータ２２としてＲＡＭ１３に格納される（ステップＳ３１）。そして、バーコードデータ２２に格納された順方向のバーコードデータから先頭マージンがチェックされる（ステップＳ３２）。
【００８５】
ステップＳ３３〜Ｓ３９は、順に、第１のスキャン処理のステップＳ１３〜Ｓ１９と同様である。但し、ステップＳ３９に対応するステップＳ１８１〜Ｓ１８３において、順に、ＲＡＭ１３の解析状態情報２４に、順方向についてのキャラクタ解析失敗、順方向についてのCode39解析成功、順方向についてのエンドマージン解析失敗の旨の情報が格納される。
【００８６】
順方向のエンドマージン検出が失敗していない場合（ステップＳ３９；ＮＯ）、ＲＡＭ１３の位置情報２３が参照され、変数としての位置Ｘ１に位置Ｘが代入され、変数としての位置Ｙ１に位置Ｙが代入され、変数としての位置Ｚ１に位置Ｚが代入され、位置Ｘ１，Ｙ１，Ｚ１が位置情報２３に格納されて設定される（ステップＳ４０）。
【００８７】
ステップＳ３２〜Ｓ４０において、図１３（ａ）に示すように、順方向開始位置から順方向にキャラクタ解析がなされ、順方向に位置Ｘ１，Ｙ１，Ｚ１が設定される。
【００８８】
そして、バーコードデータ２２に格納された逆方向のバーコードデータから先頭マージンがチェックされる（ステップＳ４１）。順方向のエンドマージン検出が失敗した場合（ステップＳ３９；ＹＥＳ）、順方向のエンドマージン検出失敗の旨の情報が表示部１４に表示され（ステップＳ４２）、ステップＳ４１に移行される。ステップＳ４３〜Ｓ４５，Ｓ４８，Ｓ４９は、順に、逆方向のバーコードデータに対する第１のスキャン処理のステップＳ１３，Ｓ１４，Ｓ１７〜Ｓ１９と同様である。但し、ステップＳ４５に対応するステップＳ１８１〜Ｓ１８３において、順に、ＲＡＭ１３の解析状態情報２４に、逆方向についてのキャラクタ解析失敗、逆方向についてのCode39解析成功、逆方向についてのエンドマージン解析失敗の旨の情報が格納される。
【００８９】
逆方向のエンドマージン検出が失敗していない場合（ステップＳ３９；ＮＯ）、ＲＡＭ１３の位置情報２３が参照され、変数としての位置Ｘ２に位置Ｘが代入され、変数としての位置Ｙ２に位置Ｙが代入され、変数としての位置Ｚ２に位置Ｚが代入され、位置Ｘ２，Ｙ２，Ｚ２が位置情報２３に格納されて設定される（ステップＳ５０）。逆方向のエンドマージン検出が失敗した場合（ステップＳ４９；ＹＥＳ）、逆方向のエンドマージン検出失敗の旨の情報が表示部１４に表示され（ステップＳ５２）、ステップＳ５１に移行される。
【００９０】
ステップＳ４１，Ｓ４３〜Ｓ４５，Ｓ４８〜Ｓ５０において、図１３（ａ）に示すように、逆方向開始位置から逆方向にキャラクタ解析がなされ、逆方向に位置Ｘ２，Ｙ２，Ｚ２が設定される。
【００９１】
そして、ＲＡＭ１３の解析状態情報２４が参照され、順方向及び逆方向の両方向のキャラクタ解析が失敗したか否かが判別される（ステップＳ５２）。両方向のキャラクタ解析が失敗していない場合（ステップＳ５２；ＮＯ）、ＲＡＭ１３の解析状態情報２４が参照され、順方向のキャラクタ解析が失敗したか否かが判別される（ステップＳ５３）。順方向のキャラクタ解析が失敗していない場合（ステップＳ５３；ＮＯ）、ＲＡＭ１３の解析状態情報２４が参照され、逆方向のキャラクタ解析が失敗したか否かが判別される（ステップＳ５４）。
【００９２】
逆方向のキャラクタ解析が失敗していない場合（ステップＳ５４；ＮＯ）、その他のコード解析処理が実行され（ステップＳ６１）、第２のスキャン処理が終了する。ステップＳ５４では、他のコード種類のキャラクタ解析処理として、NW-7等について、ステップＳ３４〜Ｓ４６，Ｓ４８〜Ｓ６０と同様の処理が適宜実行される。
【００９３】
Code39の解析が有効でない場合（ステップＳ３５；ＮＯ）、ステップＳ６１に移行される。順方向のCode39解析が成功した場合（ステップＳ３８；ＹＥＳ）、順方向のCode39解析が成功した旨と、デコードデータ２５のデコードデータ（キャラクタ解析に成功した全キャラクタのデータ）と、が表示部１４に表示され（ステップＳ４６）、ステップＳ６１に移行される。
【００９４】
Code39の解析が有効でない場合（ステップＳ３５；ＮＯ）、ステップＳ６１に移行される。順方向の先頭マージンが検出されない場合（ステップＳ３３；ＮＯ）、順方向の先頭マージン解析失敗の旨の情報が表示部１４に表示され（ステップＳ４７）、第２のスキャン処理が終了する。
【００９５】
逆方向のCode39解析が成功した場合（ステップＳ４８；ＹＥＳ）、逆方向のCode39解析が成功した旨と、デコードデータ２５に格納された解析成功した全キャラクタコードと、が表示部１４に表示され（ステップＳ５５）、ステップＳ６１に移行される。両方向のキャラクタ解析が失敗した場合（ステップＳ５２；ＹＥＳ）、両方向レーザ照射処理が実行され（ステップＳ５６）、ステップＳ６１に移行される。
【００９６】
ここで、図１１を参照して、ステップＳ５６の両方向レーザ照射処理を詳細に説明する。先ず、ステップＳ５６１〜Ｓ５６７は、順に、順方向レーザ照射処理のステップＳ２１１〜Ｓ２１７と同様である。
【００９７】
レーザスイング方向が順方向である場合（ステップＳ５６７；ＹＥＳ）、ＲＡＭ１３の位置情報２３の位置Ｙ１が参照され、変数Ａに、バーコードデータの順方向開始位置から位置Ｙ１迄のカウント値の合計が代入される（ステップＳ５６８）。そして、ＲＡＭ１３の位置情報２３の位置Ｚ１が参照され、変数Ｂに、バーコードデータの順方向開始位置から位置Ｚ１迄のカウント値の合計が代入される（ステップＳ５６９）。ステップＳ５７０，Ｓ５７１は、順に、順方向レーザ照射処理のステップＳ２２０，Ｓ２２１と同様である。
【００９８】
ステップＳ５６８〜Ｓ５７１に対応して、キャラクタ解析に失敗した場合に、図１３（ａ），（ｂ）に示すように、順方向においては、レーザ点灯位置レジスタ１６６に位置Ｙ１のカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｚ１のカウント値が設定される。
【００９９】
レーザスイング方向が逆方向である場合（ステップＳ５６７；ＮＯ）、ＲＡＭ１３の位置情報２３の位置Ｙ２が参照され、変数Ａに、バーコードデータの逆方向開始位置から位置Ｙ２迄のカウント値の合計が代入される（ステップＳ５７２）。そして、ＲＡＭ１３の位置情報２３の位置Ｚ２が参照され、変数Ｂに、バーコードデータの逆方向開始位置から位置Ｚ２迄のカウント値の合計が代入される（ステップＳ５７３）。ステップＳ５７４，Ｓ５７５は、順に、順方向レーザ照射処理のステップＳ２２４，Ｓ２２５と同様である。
【０１００】
ステップＳ５７２〜Ｓ５７５に対応して、キャラクタ解析に失敗した場合に、図１３（ａ），（ｂ）に示すように、逆方向においては、レーザ点灯位置レジスタ１６６に位置Ｙ２のカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｚ２のカウント値が設定される。
【０１０１】
すると、図１３（ｃ）に示すように、順方向に位置Ｙ１から位置Ｚ１迄レーザ点灯させ、逆方向に位置Ｙ２から位置Ｚ２迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部１６のレーザ光照射は、レーザ照射部Ｌ３となる。レーザ照射部Ｌ３では、位置Ｙ１から位置Ｚ１迄の部分が、順方向のキャラクタ解析が失敗したバーコード部分に対応し、順方向スイングのみでの点滅によるレーザ照射部となる。レーザ照射部Ｌ３の位置Ｙ２から位置Ｚ２迄の部分は、逆方向のキャラクタ解析が失敗したバーコード部分に対応し、逆方向スイングのみでの点滅によるレーザ照射部となる。
【０１０２】
変数ｉが５００以上である場合（ステップＳ５６４；ＮＯ）、スキャナ部１６によるレーザ照射が終了され（ステップＳ５７６）、両方向レーザ照射処理が終了する。両方向レーザ照射処理が終了すると、図１０のステップＳ６１に移行される。
【０１０３】
順方向のキャラクタ解析が失敗した場合（ステップＳ５２；ＹＥＳ）、ＲＡＭ１３の位置情報２３が参照され、位置Ｘに位置Ｘ１が代入され、位置Ｙに位置Ｙ１が代入され、位置Ｚに位置Ｚ１が代入され、位置Ｘ，Ｙ，Ｚが位置情報２３に格納されて設定される（ステップＳ５７）。そして、図６のステップＳ２１の順方向レーザ照射処理と同様に、順方向レーザ照射処理が実行され（ステップＳ５８）、ステップＳ６１に移行される。
【０１０４】
逆方向のキャラクタ解析が失敗した場合（ステップＳ５３；ＹＥＳ）、ＲＡＭ１３の位置情報２３が参照され、位置Ｘに位置Ｘ２が代入され、位置Ｙに位置Ｙ２が代入され、位置Ｚに位置Ｚ２が代入され、位置Ｘ，Ｙ，Ｚが位置情報２３に格納されて設定される（ステップＳ５９）。そして、逆方向レーザ照射処理が実行され（ステップＳ６０）、ステップＳ６１に移行される。
【０１０５】
ここで、図１２を参照して、逆方向レーザ照射処理を詳細に説明する。先ず、ステップＳ６０１〜Ｓ６０６は、順に、順方向レーザ照射処理のステップＳ２１１〜Ｓ２１６と同様である。
【０１０６】
ステップＳ６０６の後に、ステップＳ６０６で取得されたレーザスイング方向が逆方向であるか否かが判別される（ステップＳ６０７）。レーザスイング方向が逆方向である場合（ステップＳ６０７；ＹＥＳ）、ＲＡＭ１３の位置情報２３の位置Ｘが参照され、変数Ａに、バーコードデータの逆方向開始位置から位置Ｘ迄のカウント値の合計が代入される（ステップＳ６０８）。そして、ＲＡＭ１３の位置情報２３の位置Ｚが参照され、変数Ｂに、バーコードデータの逆方向開始位置から位置Ｚ迄のカウント値の合計が代入される（ステップＳ６０９）。ステップＳ６１０，Ｓ６１１は、順に、図６の順方向レーザ照射処理のステップＳ２２４，Ｓ２２５と同様である。
【０１０７】
ステップＳ６０８〜Ｓ６１１に対応して、キャラクタ解析に失敗した場合に、図１３（ａ）に示すように、逆方向においては、レーザ点灯位置レジスタ１６６に位置Ｘ＝Ｘ２のカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｚ＝Ｚ２のカウント値が設定される。
【０１０８】
レーザスイング方向が順方向である場合（ステップＳ６０７；ＮＯ）、ＲＡＭ１３の位置情報２３の位置Ｚが参照され、変数Ａに、バーコードデータの順方向開始位置から位置Ｚ迄のカウント値の合計が代入される（ステップＳ６１２）。そして、ＲＡＭ１３の位置情報２３の位置Ｙが参照され、変数Ｂに、バーコードデータの順方向開始位置から位置Ｙ迄のカウント値の合計が代入される（ステップＳ６１３）。ステップＳ６１４，Ｓ６１５は、順に、図６の順方向レーザ照射処理のステップＳ２２０，Ｓ２２１と同様である。
【０１０９】
ステップＳ６１２〜Ｓ６１５に対応して、キャラクタ解析に失敗した場合に、図１３（ａ）に示すように、順方向においては、レーザ点灯位置レジスタ１６６に位置Ｚ＝Ｚ２のカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｙ＝Ｙ２のカウント値が設定される。
【０１１０】
すると、逆方向に位置Ｘ２から位置Ｙ２迄レーザ点灯させ、順方向に位置Ｚ２から位置Ｙ２迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたレーザ照射によるバーコード上のレーザ照射部では、位置Ｙ２から位置Ｚ２迄の部分が、逆方向のキャラクタ解析が失敗したバーコード部分に対応し、順方向及び逆方向のスイングでのレーザ照射部となる。このレーザ照射部の位置Ｘ２から位置Ｙ２迄の部分は、逆方向のキャラクタ解析が成功したバーコード部分に対応し、逆方向スイングのみでの点滅によるレーザ照射部となる。
【０１１１】
変数ｉが５００以上である場合（ステップＳ５６４；ＮＯ）、スキャナ部１６によるレーザ照射が終了され（ステップＳ５７６）、逆方向レーザ照射処理が終了する。逆方向レーザ照射処理が終了すると、図１０のステップＳ５４に移行される。また、バーコード全てについてキャラクタ解析が成功したか否かに関わらず、第２のスキャン処理によりＲＡＭ１３に格納されたデコードデータ２５は、フラッシュメモリ１７に記憶される。
【０１１２】
以上、本実施の形態によれば、ハンディターミナル１は、スキャナ部１６がバーコードをスキャンしてバーコードデータを取得し、前記取得されたバーコードデータを順方向及び逆方向にキャラクタ解析（デコード）する。そして、ハンディターミナル１は、両方向のキャラクタ解析に失敗した場合に、順方向のキャラクタ解析に成功した部分の位置Ｙ１とキャラクタ解析に失敗した部分の位置Ｚ１とを取得し、逆方向のキャラクタ解析に成功した部分の位置Ｙ２とキャラクタ解析に失敗した部分の位置Ｚ２とを取得する。そして、ハンディターミナル１は、スキャナ部１６のレーザ照射により、位置Ｙ１及び位置Ｚ１の間と、位置Ｙ２及び位置Ｚ２の間とを実線として、バーコード上に表示する。
【０１１３】
このため、バーコードの読取において、両方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分をユーザに認識させることができる。また、第１の実施の形態と同様に、キャラクタ解析に失敗した原因をユーザに認識させることができる。また、順方向又は逆方向のキャラクタ解析に失敗した場合にも、バーコード上へのレーザ照射により、キャラクタ解析に失敗した部分及びキャラクタ解析に成功した部分をユーザに認識させることができる。
【０１１４】
なお、第２の実施の形態では、両方向のキャラクタ解析が失敗した場合のレーザ照射を、キャラクタ解析が失敗した部分のみに行う構成としたが、これに限定されるものではない。例えば、キャラクタ解析が失敗した部分を繋げ、この繋げた部分にレーザ照射を行う構成としてもよい。
【０１１５】
ここで、図１４を参照して、第２の実施の形態の変形例を説明する。図１４（ａ）に、第２の実施の形態の変形例における順方向及び逆方向のレーザ照射範囲を示す。図１４（ｂ）に、第２の実施の形態の変形例におけるバーコードへのレーザ照射状態を示す。
【０１１６】
図１３（ａ）に示すようなバーコードと順方向開始位置、逆方向開始位置及び各位置Ｘ１，Ｙ１，Ｚ１，Ｘ２，Ｙ２，Ｚ２において、両方向のキャラクタ解析に失敗した場合を考える。図１４（ａ）に示すように、順方向においては、レーザ点灯位置レジスタ１６６に位置Ｘ１のカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｙ２のカウント値が設定される。逆方向においては、レーザ点灯位置レジスタ１６６に位置Ｘ２のカウント値が設定され、レーザ消灯位置レジスタ１６７に位置Ｙ１のカウント値が設定される。
【０１１７】
すると、図１４（ｂ）に示すように、順方向に位置Ｘ１から位置Ｙ２迄レーザ点灯させ、逆方向に位置Ｘ２から位置Ｙ１迄レーザ点灯させるレーザ点灯信号が生成される。このレーザ点灯信号に応じたスキャナ部１６のレーザ光照射は、レーザ照射部Ｌ４となる。レーザ照射部Ｌ４では、位置Ｙ１から位置Ｙ２迄の範囲が、両方向のキャラクタ解析が失敗した部分を繋げたバーコード部分に対応し、順方向及び逆方向のスイングによるレーザ照射部となる。レーザ照射部Ｌ４の位置Ｘ１から位置Ｙ１迄と、位置Ｘ２から位置Ｙ２迄と、の部分は、順方向、逆方向のキャラクタ解析が成功したバーコード部分に対応し、順方向又は逆方向のスイングのみでの点滅によるレーザ照射部となる。
【０１１８】
（第３の実施の形態）
図１５を参照して、本発明に係る第３の実施の形態を説明する。第１、第２の実施の形態では、バーコード上にレーザ照射を行うことにより、キャラクタ解析失敗部分等をユーザに通知する構成であった。本実施の形態は、色分けしたバーコード画像表示により、キャラクタ解析失敗部分等をユーザに通知する構成である。
【０１１９】
本実施の形態の装置構成として、第１の実施の形態と同様に、ハンディターミナル１を用いる。但し、ＲＯＭ１５には、第１のスキャンプログラムに代えて、第３のスキャンプログラムが記憶されている。
【０１２０】
次いで、図１５及び図１６を参照して、本実施の形態のハンディターミナル１の動作を説明する。図１５に、バーコード画像表示処理の流れを示す。図１６（ａ）に、バーコード画像表示処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び位置Ｘ，Ｙ，Ｚと、解析成功部Ｏ１及び解析失敗部Ｎ１と、を示す。図１６（ｂ）に、バーコード画面３０を示す。
【０１２１】
本実施の形態において、第３のスキャン処理が実行される。第３のスキャン処理は、第１のスキャン処理において、ステップＳ２１の順方向レーザ照射処理を、バーコード画像表示処理に置き換えた処理である。バーコード画像表示処理は、バーコードデータのキャラクタ解析結果に応じて、キャラクタ解析失敗部分と、キャラクタ解析成功部分と、を色分けしてバーコード画像を表示する処理である。
【０１２２】
ハンディターミナル１において、例えば、入力部１２により第３のスキャン処理の実行指示の操作入力を受け付けたことをトリガとして、ＣＰＵ１１と、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開された第３のスキャンプログラムとの協働により、第３のスキャン処理が実行される。
【０１２３】
ここでは、第３のスキャン処理中のバーコード画像表示処理についてのみ説明する。図１５に示すように、先ず、ＲＡＭ１３のバーコードデータ２２が読み出され、そのバーコードデータからバーコード画像データが生成される（ステップＳ７１）。ステップＳ７１で生成されるバーコード画像データは、バーコードデータから復元される読み取ったバーコードの黒バー及び白スペースを有するイメージ画像データである。
【０１２４】
そして、位置情報２３の位置Ｘ，Ｙが参照され、バーコード画像の位置Ｘから位置Ｙまでの範囲の黒バー部分が青色になるように、ステップＳ７１で生成されたバーコード画像データが加工される（ステップＳ７２）。そして、位置情報２３の位置Ｙ，Ｚが参照され、バーコード画像の位置Ｙから位置Ｚまでの範囲の黒バー部分が赤色になるように、ステップＳ７２で加工されたバーコード画像データがさらに加工される（ステップＳ７３）。
【０１２５】
例えば、図１６（ａ）のバーコードにおいて、位置Ｘから位置Ｙまでの部分は、キャラクタ解析が成功した部分に対応し、解析成功部Ｏ１とする。同じく位置Ｙから位置Ｚまでの部分は、キャラクタ解析が失敗した部分に対応し、解析失敗部Ｎ１とする。ステップＳ７２において、バーコード画像の解析成功部Ｏ１に対応する部分が青色にされる。ステップＳ７３において、バーコード画像の解析失敗部Ｎ１に対応する部分が赤色にされる。加工する色は、青色及び赤色に限定されるものではなく、色分けがなされ、且つそれぞれの部分に、解析失敗及び解析成功が対応付けられていればよい。
【０１２６】
そして、ステップＳ７３で加工されたバーコード画像データのバーコード画像を含むバーコード画面の画面データが生成され、この画面データに応じてバーコード画面が表示部１４に表示され（ステップＳ７４）、バーコード画像表示処理が終了する。
【０１２７】
ステップＳ７４においては、例えば、図１６（ｂ）に示すバーコード画面３０が表示される。バーコード画面３０は、バーコード画像３１と、メッセージ部３２と、を含む。バーコード画像３１は、青色の解析成功部３３と、赤色の解析失敗部３４と、それ以外の黒バー及び白スペースのイメージと、からなる。解析成功部３３は、解析成功部Ｏ１に対応する。解析失敗部３４は、解析失敗部Ｎ１に対応する。
【０１２８】
以上、本実施の形態によれば、ハンディターミナル１は、スキャナ部１６がバーコードをスキャンしバーコードデータを取得し、前記取得されたバーコードデータを順方向にキャラクタ解析（デコード）する。そして、ハンディターミナル１は、順方向のバーコード先頭の位置Ｘとキャラクタ解析に成功した部分の位置Ｙとキャラクタ解析に失敗した部分の位置Ｚとを取得する。そして、ハンディターミナル１は、位置Ｘ及び位置Ｙの間を青色にし、位置Ｙ及び位置Ｚの間を赤色にしたバーコード画像３１を含むバーコード画面３０の画像データを生成し、そのバーコード画像を表示部１４に表示する。
【０１２９】
このため、バーコードの読取において、順方向のキャラクタ解析に失敗した場合に、キャラクタ解析に成功した部分及びキャラクタ解析に失敗した部分をユーザに容易に認識させることができる。また、バーコードスキャン後に、ユーザがハンディターミナル１を固定する必要が無いので、ユーザの作業負担を低減できる。また、第１の実施の形態と同様に、ユーザにキャラクタ解析に失敗した原因を認識させることができる。
【０１３０】
なお、第３の実施の形態では、加工したバーコード画像を表示することにより、キャラクタ解析失敗部分及びキャラクタ解析成功部分をユーザに通知する構成であるが、これに限定されるものではない。例えば、表示画面がないスキャナ装置においては、加工したバーコード画像データをフラッシュメモリに記憶したり、加工したバーコード画像データを外部機器に送信したり、加工したバーコード画像データを添付したメールを外部機器に送信したり、加工したバーコード画像をプリンタ等で用紙に印刷する等により、キャラクタ解析失敗部分及びキャラクタ解析成功部分をユーザに通知する構成としてもよい。
【０１３１】
なお、上記各実施の形態における記述は、本発明に係るスキャナ装置及びプログラムの一例であり、これに限定されるものではない。
【０１３２】
例えば、上記第１〜第３の実施の形態及びその変形例のうち少なくとも２つとを組み合わせる構成としてもよい。例えば、第１の実施の形態の、キャラクタ解析失敗部分及びキャラクタ解析成功部分へのレーザ照射と、第３の実施の形態の、加工したバーコード画像の表示と、の両方を行う構成としてもよい。また、第２の実施の形態の両方向のキャラクタ解析の失敗部分を、第３の実施の形態のように色分けしてバーコード画像に表示する構成としてもよい。
【０１３３】
また、キャラクタ解析に成功した部分と、キャラクタ解析に失敗した部分と、の少なくとも一つに、をレーザ照射又は色分け画像により表示する構成としてもよい。
【０１３４】
また、上記第３の実施の形態では、レーザ光を照射するスキャナ部１６を用いる構成としたが、これに限定されるものではない。例えば、ＬＥＤ光を照射するスキャナ部等、他のバーコードのスキャン方式のスキャナ部を用いる構成としてもよい。
【０１３５】
上記実施の形態では、スキャナ装置としてハンディターミナルを用いる構成としたが、これに限定されるものではない。例えば、ＥＣＲ（Electronic Cash Register）、ＰＯＳ（Point Of Sales System）端末等に接続されるバーコード読取装置等、他のスキャナ装置としてもよい。
【０１３６】
また、上記各実施の形態の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてＲＯＭ１５を使用した例を開示したが、この例に限定されない。
その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ等の不揮発性メモリ、ＣＤ-ＲＯＭ等の可搬型記録媒体を適用することが可能である。
また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ（搬送波）も本発明に適用される。
【０１３７】
また、上記各実施の形態における、スキャナ装置としてのハンディターミナル１の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。
【図面の簡単な説明】
【０１３８】
【図１】本発明に係る第１の実施の形態のハンディターミナルの回路構成を示すブロック図である。
【図２】スキャナ部の内部構成を示す図である。
【図３】ＲＡＭに記憶されるデータを示す図である。
【図４】第１のスキャン処理を示すフローチャートである。
【図５】第１のスキャン処理のCode39解析処理を示すフローチャートである。
【図６】第１のスキャン処理の順方向レーザ照射処理を示すフローチャートである。
【図７】（ａ）は、バーコードと、バーコードデータにおける各部のカウント値と、を示す図である。（ｂ）は、バーコードと、レーザ点灯信号と、レーザ点灯位置レジスタ及びレーザ消灯位置レジスタの範囲と、を示す図である。
【図８】（ａ）は、第１のスキャン処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び各位置と、を示す図である。（ｂ）は、第１のスキャン処理における順方向及び逆方向のレーザ照射範囲を示す図である。（ｃ）は、第１のスキャン処理におけるバーコードへのレーザ照射状態を示す図である。
【図９】第２のスキャン処理を示すフローチャートである。
【図１０】図９の第２のスキャン処理の続きを示すフローチャートである。
【図１１】第２のスキャン処理の両方向レーザ照射処理を示すフローチャートである。
【図１２】第２のスキャン処理の逆方向レーザ照射処理を示すフローチャートである。
【図１３】（ａ）は、第２のスキャン処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び各位置と、を示す図である。（ｂ）は、第２のスキャン処理における順方向及び逆方向のレーザ照射範囲を示す図である。（ｃ）は、第２のスキャン処理におけるバーコードへのレーザ照射状態を示す図である。
【図１４】（ａ）は、第２の実施の形態の変形例における順方向及び逆方向のレーザ照射範囲を示す図である。（ｂ）は、第２の実施の形態の変形例におけるバーコードへのレーザ照射状態を示す図である。
【図１５】バーコード画像表示処理を示すフローチャートである。
【図１６】（ａ）は、バーコード画像表示処理におけるバーコードと、バーコードデータにおける順方向開始位置、逆方向開始位置及び各位置と、解析成功部及び解析失敗部と、を示す図である。（ｂ）は、バーコード画面を示す図である。
【符号の説明】
【０１３９】
１  ハンディターミナル
１１  ＣＰＵ
１２  入力部
１３  ＲＡＭ
１４  表示部
１５  ＲＯＭ
１６  スキャナ部
１６０  発光制御部
１６１  発光部
１６２  バイブレーションミラー
１６３  受光部
１６４  ゲイン回路
１６５  二値化回路
１６６  レーザ点灯位置レジスタ
１６７  レーザ消灯位置レジスタ
１７  フラッシュメモリ
１８  ＩＦ部
１９  バス
【図１】
2010049595.tif 000003
【図２】
2010049595.tif 000004
【図３】
2010049595.tif 000005
【図４】
2010049595.tif 000006
【図５】
2010049595.tif 000007
【図６】
2010049595.tif 000008
【図７】
2010049595.tif 000009
【図８】
2010049595.tif 000010
【図９】
2010049595.tif 000011
【図１０】
2010049595.tif 000012
【図１１】
2010049595.tif 000013
【図１２】
2010049595.tif 000014
【図１３】
2010049595.tif 000015
【図１４】
2010049595.tif 000016
【図１５】
2010049595.tif 000017
【図１６】
2010049595.tif 000018