(57)【要約】【課題】ハードウェアを追加することなく単純な構成で高いスキャンレートを維持する。【解決手段】二値化信号における立ち上がりエッジのタイミングのみで割り込みを発生させる。例えば、立ち上がりエッジＥｇ３ａのタイミングで割り込みを発生させ、立ち上がりエッジＥｇ１ａ,Ｅｇ３ａのカウント値から二値化信号のエッジ間隔Ｌ１ａを求め、立ち下がりエッジＥｇ２ａのカウント値と立ち上がりエッジＥｇ３ａのカウント値から二値化信号のエッジ間隔Ｌ２ａを求める。そして、エッジ間隔Ｌ１ａとエッジ間隔Ｌ２ａからエッジ間隔Ｌ３ａを求める。これにより、二値化信号を読み取るキャプチャ処理の割り込み回数を従来例に比べて半減させることができる。従って、割り込みによるオーバーヘッドを削減できると共に高いスキャンレートを維持できる。【選択図】図３
2011048653.tif 000002
【特許請求の範囲】
【請求項１】
光反射率の異なる部分で構成されるコード記号に向けて光を照射するレーザ光源と、
前記コード記号から反射された反射光を受光して電気信号に変換する光電変換器と、
前記電気信号を微分して二値化信号を求める二値化処理部と、
前記二値化信号のエッジから所定のエッジを選択し、選択されたエッジのタイミングで割り込みを発生して前記コード記号の幅長を求める制御部と、
を備えることを特徴とする光学的情報読取装置。
【請求項２】
前記制御部は、
前記二値化信号における立ち上がりエッジのタイミングで割り込みを発生することを特徴とする請求項１に記載の光学的情報読取装置。
【請求項３】
前記制御部は、
前記割り込み発生時に前記二値化信号の立ち上がりエッジ及び立ち下がりエッジからエッジ間隔を求め、前記エッジ間隔から前記コード記号の幅長を求めることを特徴とする請求項１に記載の光学的情報読取装置。
【請求項４】
前記制御部は、割り込み処理において、少なくとも、割り込み準備処理の前に前記二値化信号のエッジの入力を示すレーザ割り込みであるか否かを判定することを特徴とする請求項１に記載の光学的情報読取装置。
【請求項５】
前記制御部は、割り込み処理において、
前記割り込みが前記レーザ割り込みであるか否かを判定し、
前記レーザ割り込みであると判定した場合にはレーザ割り込みを実施し、前記レーザ割り込みではないと判定した場合には割り込み準備を実施し、
さらに、前記割り込み準備後にレーザ割り込みを受け付けたか否かを判定し、
前記割り込み準備後に前記レーザ割り込みを受け付けたと判定した場合には、レーザ割り込みを実施し、前記レーザ割り込みを受け付けていないと判定した場合には、レーザ割り込み以外の割り込みを許可することを特徴とする請求項４に記載の光学的情報読取装置。
【請求項６】
前記制御部は、タスクの実行権を切り替えるディスパッチ処理中において、前記二値化信号のエッジの入力を示すレーザ割り込みを有効にすることを特徴とする請求項１に記載の光学的情報読取装置。
【請求項７】
光反射率の異なる部分で構成されるコード記号に向けて光を照射するステップと、
前記コード記号から反射された反射光を受光して電気信号に変換するステップと、
前記電気信号を微分して二値化信号を求めるステップと、
前記二値化信号のエッジから所定のエッジを選択するステップと、
前記選択されたエッジのタイミングで割り込みを発生するステップと、
前記割り込み発生時に前記コード記号の幅長を求めるステップと、
を有することを特徴とする光学的情報読取方法。
【請求項８】
割り込み処理において、少なくとも、割り込み準備処理の前に前記二値化信号のエッジの入力を示すレーザ割り込みであるか否かを判定するステップを有することを特徴とする請求項７に記載の光学的情報読取方法。
【請求項９】
タスクの実行権を切り替えるディスパッチ処理中において、前記二値化信号のエッジの入力を示すレーザ割り込みを有効にするステップを有することを特徴とする請求項７に記載の光学的情報読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード記号のような光反射率の異なる部分で構成される読取対象の情報を読み取る光学的情報読取装置および光学的情報読取方法に関する。
【背景技術】
【０００２】
従来から、バーコードなどのコード記号を読み取る場合に、レーザ光線を対象物（コード記号）に当ててその反射光を光電変換して適宜な信号処理を施して二値化し、情報を読み取る装置が用いられている（例えば特許文献１）。
【０００３】
このような光学的情報読取装置、例えばコードスキャナには、ハンディスキャナとハンディターミナルがある（また別に定置式もあるが、ここでは言及しない）。ハンディスキャナは、使用者が操作し、物品のコード記号を読み取って、ＰＣ（パーソナルコンピュータ）に転送するタイプのものである。ハンディターミナルは、キーボードなどの入力装置、入力データや蓄積情報を表示するディスプレイ、各種業務用のアプリケーションプログラムなどを備えている。ハンディターミナルは、ハンディスキャナのように、データをＰＣやホストコンピュータに転送ができるが、単体でも入荷情報、売上げ計算表示、商品情報などの管理が可能である。
【０００４】
このようなタイプのスキャナは、把持部、操作部、キーボード及びディスプレイなど、筐体内部を多く占有する部材が存在するので、スキャンエンジンは配置しやすいように、なるべく小型した方がのぞましい。これらのスキャナのＯＳ（Operating System）には、リアルタイムＯＳ（例えばμＩＴｒｏｎ）が使用される場合が多い。
【０００５】
特許文献２には、バーコードを高速に読み取る光学情報読取装置が開示されている。この光学情報読取装置によれば、バーコードを２回読み取って夫々のバーコードの二値化信号をデコードして２つのデコードデータを比較して一致度合を判断するのではなく、バーコードを２回読み取って夫々の二値化信号における明暗パターンの総数を比較し、この比較結果が所定の安定条件を満たしている場合に初めてデコード処理を実施するものである。これにより、バーコードを高速に読み取ることができるようになる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−３１５２４５号公報
【特許文献２】特開平１１−２５０１６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、このようなスキャナは、レーザ光源から照射された光を反射するミラーを振動させて多数の走査線が生じるように構成されている場合が多い。その際、ＣＰＵ（Central Processing Unit）は、リアルタイムＯＳの機能に基づいて二値化した信号をキャプチャしてデコードする。通常、キャプチャ信号の立ち上がりエッジ及び立ち下がりエッジごとに割込信号が入り、ＣＰＵはキャプチャ処理を実行する。
【０００８】
割込信号の発生時には、ＣＰＵによるレジスタの退避や復帰処理など、少なからずオーバーヘッドが生ずる。このため割り込みの発生頻度が高いと、この処理に圧迫され本来の処理の応答性や処理速度に影響を与える場合がある。
【０００９】
このように割り込み処理が頻発するとキャプチャ信号処理が間に合わない場合があり、結果的に、コード記号を走査する割合を示すスキャンレートが標準仕様９５％を割ってしまう問題があった。この標準仕様に満たないとユーザが迅速に作業できずストレスがかかってしまう。また、多重割込が何回も行われると、それだけキャプチャ処理に時間がかかってしまい、同様にスキャンレートが下がってしまう。
【００１０】
ここで、ＤＭＡ（Direct Memory Access）を搭載してＣＰＵを介さずに処理を実施することも考えられるが、そのようなＣＰＵは全体的に高価であり、コードスキャナの大量生産には向かない。
【００１１】
そこで、本発明はこのような従来例に係る課題を解決したものであって、ハードウェアを追加することなく単純な構成で高いスキャンレートを維持する光学情報処理装置および光学的情報読取方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決するために、本発明に係る光学的情報読取装置は、光反射率の異なる部分で構成されるコード記号に向けて光を照射するレーザ光源と、前記コード記号から反射された反射光を受光して電気信号に変換する光電変換器と、前記電気信号を微分して二値化信号を求める二値化処理部と、前記二値化信号のエッジから所定のエッジを選択し、選択されたエッジのタイミングで割り込みを発生して前記コード記号の幅長を求める制御部とを備えるものである。
【００１３】
また、上述した課題を解決するために、本発明に係る光学的情報読取方法は、光反射率の異なる部分で構成されるコード記号に向けて光を照射するステップと、前記コード記号から反射された反射光を受光して電気信号に変換するステップと、前記電気信号を微分して二値化信号を求めるステップと、前記二値化信号のエッジから所定のエッジを選択するステップと、前記選択されたエッジのタイミングで割り込みを発生するステップと、前記割り込み発生時に前記コード記号の幅長を求めるステップとを有するものである。
【００１４】
本発明において、前記制御部は、前記二値化信号における立ち上がりエッジのタイミングで割り込みを発生する。これにより、二値化信号を読み取るキャプチャ処理の割り込みを減少させることができるので、割り込みによるオーバーヘッドを削減できる。前記制御部は、前記割り込み発生時に前記二値化信号の立ち上がりエッジ及び立ち下がりエッジからエッジ間隔を求め、前記エッジ間隔から前記コード記号の幅長を求める。
【発明の効果】
【００１５】
本発明によれば、二値化信号のエッジから所定のエッジを選択し、選択されたエッジのタイミングで割り込みを発生してコード記号の幅長を求めるものである。これにより、二値化信号を読み取るキャプチャ処理の割り込みを減少させることができるので、割り込みによるオーバーヘッドを削減できる。従って、ハードウェアを追加することなく単純な構成で高いスキャンレートを維持できる。
【図面の簡単な説明】
【００１６】
【図１】バーコードスキャナ１００の構成例を示すブロック図である。
【図２】タイマ６の構成例を示すブロック図である。
【図３】Ａは従来例に係る二値化信号のキャプチャ処理例を示す図であり、Ｂは本発明に係る二値化信号のキャプチャ処理例を示す図である。
【図４】従来例に係る割り込み処理を示すフローチャートである。
【図５】本発明に係る割り込み処理を示すフローチャートである。
【図６】従来例に係るディスパッチ処理を示す図である。
【図７】本発明に係るディスパッチ処理を示す図である。
【発明を実施するための形態】
【実施例１】
【００１７】
続いて、図面を参照しながら本発明に係る光学的情報読取装置および光学的情報読取方法を実施するための形態について説明する。本発明によれば、二値化信号のエッジから立ち上がりエッジを選択し、この立ち上がりエッジのタイミングで割り込みを発生してコード記号の幅長を求めることで、二値化信号を読み取るキャプチャ処理の割り込みを減少できるようにすると共に、割り込みによるオーバーヘッドを削減できるようにするものである。
【００１８】
図１に示すバーコードスキャナ１００は光学的情報読取装置の一例であり、レーザ光源１、光学部２、信号処理回路３、ＣＰＵ４、ＲＡＭ（Random Access Memory）８、ＲＯＭ（Read Only Member）９、キーボード１０及びディスプレイ１１を備えている。レーザ光源１は、光反射率の異なる部分で構成されるコード記号の一例であるバーコードに向けて光を照射する。例えばレーザ光源１は、その発光点からレーザ光線を光学部２の集光レンズ２ａに向けて発光する。集光レンズ２ａは、レーザ光源１から発光されたレーザ光線を集光する。集光レンズ２ａの後段にはスキャンミラー２ｂが配置されている。スキャンミラー２ｂは、集光レンズ２ａにより集光されたレーザ光線を偏向する。
【００１９】
バーコードスキャナ１００がバーコードに向けられた状態で、スキャンミラー２ｂにより偏向されたレーザ光線はバーコードに照射されて当該バーコードを走査する。結像レンズ２ｃは、バーコードから反射された反射光を入射して信号処理回路３の光電変換器３ａ上に反射光を結像させる。光電変換器３ａは、反射光を受光して強度に応じた電気信号に変換して二値化処理部３ｂに出力する。二値化処理部３ｂは、この電気信号を微分して二値化信号を求める。例えば、二値化処理部３ｂは電気信号の増幅ゲイン調整やノイズ処理などを行い、当該電気信号を微分して微分信号を求める。二値化処理部３ｂは、この微分信号からバーコードの黒バーと白バーの境界を示す変曲点を求め、この変曲点から二値化信号を求めてＣＰＵ４に出力する。
【００２０】
ＣＰＵ４は制御部の一例であり、二値化信号のエッジから所定のエッジを選択し、選択されたエッジのタイミングで割り込みを発生してバーコードの幅長を求める。例えば、ＣＰＵ４は、二値化信号における立ち上がりエッジのタイミングで割り込みを発生し、割り込み発生時に二値化信号の立ち上がりエッジ及び立ち下がりエッジからエッジ間隔を求め、エッジ間隔からバーコードの幅長を求める。ＣＰＵ４は、求めたバーコードの幅長と閾値とを比較して太いバー／細いバーなどを判別してバーコードキャラクタへ変換する。
【００２１】
この例でＣＰＵ４は、割込コントローラ５及びタイマ６を備えている。割込コントローラ５は、二値化信号における立ち上がりエッジのタイミングで割り込みをタイマ６に対して発生する。タイマ６は、割り込み発生時に二値化信号のエッジ間隔（時間間隔）を求め、このエッジ間隔からバーコードの幅長を求める。
【００２２】
ＲＯＭ９は、バーコードスキャナ１００のリアルタイムＯＳであるμＩＴｒｏｎなどが格納され、ＣＰＵ４により参照される。リアルタイム処理の実行単位は、タスクとハンドラに大別される。タスクは、リアルタイムＯＳにより起動、中断、再開、終了が行われる。一方、ハンドラは、ＣＰＵ４内外で発生する各種イベントによりＯＳを介さずに起動されるプログラム単位である。ＣＰＵ４は、割り込み発生を検出すると実行状態を割り込み処理実行状態に切り換え、ＣＰＵ４に登録されている割り込みハンドラを実行する。ＯＳは割り込みハンドラの実行制御が不可能であるから、ＣＰＵ４の通常実行状態が適用されるタスクよりも割り込みハンドラの優先順位が高い。
【００２３】
ＲＡＭ８はＣＰＵ４のワークメモリとして使用される。キーボード１０には、操作者から様々な指示が入力される。ディスプレイ１１は、バーコードスキャナ１００の動作状態や操作者の指示などを写し出す。
【００２４】
続いて、バーコードスキャナ１００の動作例について説明する。操作者によりバーコードスキャナ１００をバーコードに向けてトリガが引かれると、バーコードスキャナ１００のレーザ光源１の発光点からレーザ光線が発光される。このレーザ光線は光学部２の集光レンズ２ａにより集光される。集光されたレーザ光線は、スキャンミラー２ｂにより偏向されてバーコードに照射されて当該バーコードを走査する。
【００２５】
バーコードから光が反射され、反射された反射光は結像レンズ２ｃにより光電変換器３ａ上に結像される。光電変換器３ａ上に結像された反射光は、光電変換器３ａにより強度に応じた電気信号に変換される。この電気信号が二値化処理部３ｂにより微分されて二値化信号が求められる。割込コントローラ５は、この二値化信号における立ち上がりエッジのタイミングでタイマ６にレーザ割り込みを発生する。タイマ６は、レーザ割り込み発生時に二値化信号のエッジ間隔（時間間隔）を求め、このエッジ間隔からバーコードの幅長を求める。
【００２６】
このように、立ち上がりエッジのみのタイミングで割り込みを発生するので、二値化信号を読み取るキャプチャ処理の割り込みを半減させることができる。従って、割り込みによるオーバーヘッドを削減できる。さらに、ハードウェアを追加することなく単純な構成で高いスキャンレートを維持できる。
【００２７】
続いて図２を参照してタイマ６の構成例について説明する。図２に示すタイマ６はパルス幅変調入力（ＰＷＭＩ：Pulse Width Modulation Input）モードを有し、コントロールレジスタ６０、エッジ検出回路６１Ａ,６１Ｂ、入力キャプチャレジスタ６２Ａ,６２Ｂ、演算部６３及びカウンタ６４を備えている。タイマ６をＰＷＭＩモードに設定するために、タイマ６内のコントロールレジスタ６０には所定の値が設定される。
【００２８】
エッジ検出回路６１Ａは、二値化処理部３ｂから出力された二値化信号の立ち上がりエッジを検出してエッジ検出信号を入力キャプチャレジスタ６２Ａに出力する。エッジ検出回路６１Ｂは、二値化処理部３ｂから出力された二値化信号の立ち下がりエッジを検出してエッジ検出信号を入力キャプチャレジスタ６２Ｂに出力する。入力キャプチャレジスタ６２Ａ,６２Ｂには、カウンタ６４からカウント値が出力される。
【００２９】
入力キャプチャレジスタ６２Ａは、エッジ検出回路６１Ａから入力した立ち上がりのエッジ検出信号のタイミングで、カウンタ６４から入力したカウント値を記憶する。同様に、入力キャプチャレジスタ６２Ｂは、エッジ検出回路６１Ｂから入力した立ち下りのエッジ検出信号のタイミングで、カウンタ６４から入力したカウント値を記憶する。
【００３０】
演算部６３は、図１に示した割込コントローラ５が発生した割り込みのタイミングで、入力キャプチャレジスタ６２Ａを参照して立ち上がりエッジを示すカウント値を取得すると共に、入力キャプチャレジスタ６２Ｂを参照して立ち下がりエッジを示すカウント値を取得する。上述したように、割込コントローラ５は、二値化信号における立ち上がりエッジのタイミングのみで割り込みを発生するので、二値化信号を読み取るキャプチャ処理の割り込みを半減させることができる。演算部６３は、立ち上がりエッジを示すカウント値および立ち下がりエッジを示すカウント値から二値化信号のエッジ間隔を求め、このエッジ間隔からバーコードの幅長を求める。
【００３１】
また、タイマ６はステイタスレジスタ６５及びオーバーフロー検出回路６６を備えている。ステイタスレジスタ６５は、エッジ検出回路６１Ａ,６１Ｂから入力した二値化信号のエッジ間隔を記憶する。オーバーフロー検出回路６６は、ステイタスレジスタ６５を参照して二値化信号のエッジ間隔における桁あふれを検出する。
【００３２】
続いて、図３を参照してタイマ６におけるキャプチャ処理について説明する。図３Ａは、従来例に係る二値化信号のキャプチャ処理の一例を示す図である。図３Ａに示すキャプチャ処理では、二値化信号の立ち上がりエッジおよび立ち下がりエッジの両方で割り込みを発生させていた。例えば、図３Ａに示す二値化信号の立ち上がりエッジＥｇ１のタイミングで割り込みを発生させ、次に二値化信号の立ち下がりエッジＥｇ２のタイミングで割り込みを発生させていた。そして、この立ち上がりエッジＥｇ１のカウント値と立ち下がりエッジＥｇ２のカウント値から二値化信号のエッジ間隔Ｌ１を求めていた。次に、立ち上がりエッジＥｇ３のタイミングで割り込みを発生させ、この立ち上がりエッジＥｇ３のカウント値と立ち下がりエッジＥｇ２のカウント値から二値化信号のエッジ間隔Ｌ２を求めていた。同様にして、二値化信号のエッジ間隔Ｌ３〜Ｌ５を求めていた。このように、従来例に係るキャプチャ処理では、二値化信号の立ち上がりエッジおよび立ち下がりエッジの両方で割り込みを発生させてエッジ間隔を求めていた。
【００３３】
これに対して、図３Ｂに示す本発明に係るキャプチャ処理では、図１に示した割込コントローラ５は、二値化処理部３ｂから出力された二値化信号の立ち上がりエッジのみで割り込みを発生させる。例えば、割込コントローラ５は、図３Ｂに示す二値化信号の立ち上がりエッジＥｇ３ａのタイミングで割り込みを発生させる。
【００３４】
図２に示した演算部６３は、割込コントローラ５が発生した立ち上がりエッジＥｇ３ａの割り込みタイミングで、入力キャプチャレジスタ６２Ａを参照して立ち上がりエッジＥｇ１ａ,Ｅｇ３ａの夫々のカウント値を取得すると共に、入力キャプチャレジスタ６２Ｂを参照して立ち下がりエッジＥｇ２ａを示すカウント値を取得する。演算部６３は、立ち上がりエッジＥｇ１ａ,Ｅｇ３ａのカウント値から二値化信号のエッジ間隔Ｌ１ａを求める。また、演算部６３は、立ち下がりエッジＥｇ２ａのカウント値と立ち上がりエッジＥｇ３ａのカウント値から二値化信号のエッジ間隔Ｌ２ａを求める。そして、演算部６３は、このエッジ間隔Ｌ１ａとエッジ間隔Ｌ２ａからエッジ間隔Ｌ３ａを求める。
【００３５】
このように、本発明に係る割込コントローラ５は、二値化信号における立ち上がりエッジのタイミングのみで割り込みを発生するので、二値化信号を読み取るキャプチャ処理の割り込み回数を従来例に比べて半減させることができる。これにより、割り込みによるオーバーヘッドを削減でき、ハードウェアを追加することなく単純な構成で高いスキャンレートを維持できる。
【実施例２】
【００３６】
続いて、図４及び図５を参照して割り込み処理を高速化する例について説明する。図４は、従来例に係る割り込み処理を示すフローチャートである。図４に示すステップＳＴ１で、ＣＰＵ４は、割込コントローラ５が割り込みを発生すると割り込み処理の準備をする。例えば、ＣＰＵ４は、割り込み処理の準備としてレジスタを退避させたり、所定の動作モード（例えば特権モード）に切り替えたりしてステップＳＴ２に移行する。
【００３７】
ステップＳＴ２でＣＰＵ４は、多重割り込みの準備を行う。例えばＣＰＵ４は、割り込みの優先度をレジスタに設定して、この割り込みの優先度より高い割り込みしか受け付けないように設定する。続いてステップＳＴ３に移行する。
【００３８】
ステップＳＴ３,ＳＴ４でＣＰＵ４は、割り込みを許可して所定の割り込みハンドラを起動し、割り込み処理を実施してステップＳＴ５に移行する。ステップＳＴ５でＣＰＵ４は、割り込みハンドラによる割り込み処理が終了するまで割り込みを禁止する。割り込み処理が終了後、処理を終了するかディスパッチ（dispatch）を起動させてタスクの実行権を切り替える。従来では、このように割り込み処理を実施していた。
【００３９】
これに対して本発明では、ＣＰＵ４は割り込み処理において、少なくとも、割り込み準備処理の前に二値化信号のエッジの入力を示すレーザ割り込みであるか否かを判定する。例えば、ＣＰＵ４は、この割り込み処理において、先ず、割り込みがレーザ割り込みであるか否かを判定し、レーザ割り込みであると判定した場合にはレーザ割り込みを実施し、レーザ割り込みではないと判定した場合には割り込み準備を実施する。さらに、割り込み準備後にレーザ割り込みを受け付けたか否かを判定し、割り込み準備後にレーザ割り込みを受け付けたと判定した場合には、レーザ割り込みを実施し、レーザ割り込みを受け付けていないと判定した場合には多重割り込みを準備してレーザ割り込み以外の割り込みを許可する。
【００４０】
本発明に係る割り込み処理によれば、図５に示すステップＳＴ１０で、ＣＰＵ４は、二値化信号のエッジの入力を示すレーザ割り込みであるか否かを判定する。レーザ割り込みであると判定した場合、ステップＳＴ１１に移行する。
【００４１】
ステップＳＴ１１でＣＰＵ４は、現在実行中の処理に使用しているレジスタのデータを退避させてステップＳＴ１２に移行する。ステップＳＴ１２でＣＰＵ４は、レーザ割り込みを起動して二値化信号のエッジ間隔を求め、このエッジ間隔からバーコードの幅長を求めて終了となる。
【００４２】
また、上述のステップＳＴ１０でＣＰＵ４がレーザ割り込みでないと判定した場合、ステップＳＴ１３に移行する。ステップＳＴ１３でＣＰＵ４は、割り込み処理の準備をする。例えば、ＣＰＵ４は、割り込み処理の準備としてレジスタを退避させたり、所定の動作モード（例えば特権モード）に切り替えたりしてステップＳＴ１４に移行する。
【００４３】
ステップＳＴ１４で、ＣＰＵ４は、再びレーザ割り込みであるか否かを判定する。レーザ割り込みであると判定した場合にはステップＳＴ１５に移行し、レーザ割り込みでないと判定した場合にはステップＳＴ１６に移行する。ステップＳＴ１５でＣＰＵ４は、レーザ割り込みを起動して二値化信号のエッジ間隔を求め、このエッジ間隔からバーコードの幅長を求めてステップＳＴ１６に移行する。
【００４４】
ステップＳＴ１６でＣＰＵ４は、多重割り込みの準備を行う。例えばＣＰＵ４は、割り込みの優先度をレジスタに設定して、この割り込みの優先度より高い割り込みしか受け付けないように設定する。原則、レーザ割り込み以外の割り込みが設定される。続いてステップＳＴ１７に移行する。
【００４５】
ステップＳＴ１７,ＳＴ１８でＣＰＵ４は、割り込みを許可して所定の割り込みハンドラを起動し、割り込み処理を実施してステップＳＴ１９に移行する。ステップＳＴ１９でＣＰＵ４は、割り込みハンドラによる割り込み処理が終了するまで割り込みを禁止する。割り込み処理が終了後、処理を終了するかディスパッチを起動させてタスクの実行権を切り替える。
【００４６】
このように、本発明に係るバーコードスキャナ１００によれば、割り込み処理において、二値化信号のエッジの入力を示すレーザ割り込みを優先し、レーザ割り込みの場合には多重割り込みも禁止する。これにより、レーザ割り込みを最優先できるので、ハードウェアを追加することなく単純な構成で高いスキャンレートを維持できる。
【００４７】
なお、実施例２では、二値化信号のエッジの入力を示すレーザ割り込みは、立ち上がりエッジおよび立ち下がりエッジの両方で発生するようにしても良いし、立ち上がりエッジのみで発生するようにしても良い。
【実施例３】
【００４８】
続いて、図６及び図７を参照してμＩＴＲＯＮのディスパッチ（dispatch）処理を最適化する例について説明する。図６は、従来例に係るディスパッチ処理例を示す図である。図６に示すμＩＴＲＯＮのdispatch部３０は、例えばタスク（task）３０ａ〜３０ｄの実行権を優先度に基づいて切り替える。dispatch部３０は、これらのタスク３０ａ〜３０ｄの実行権を切り替えるディスパッチ処理中は割り込みが禁止されている。この場合、例えばタスク３０ａからタスク３０ｂへディスパッチするとき、１０μsec以上の割り込み禁止時間が発生するため、この間はレーザの割り込みを受け付けることができずレーザのキャプチャに失敗する問題がある。なお、μＩＴＲＯＮは、dispatch部３０の他に、資源管理部３０ｅ、イベントフラグ（event flag）管理部３０ｆ、セマフォ管理部３０ｇ、タイマ管理部３０ｈ、タスク管理部３０ｉ及びメッセージ（message）管理部３０ｊを備えている。
【００４９】
この例で、図６に示すステップ４０ａでタスク３０ｂによる割り込みを開始し、ステップ４０ｂで多重割り込みの準備を行い、ステップ４０ｃで割り込み処理の終了となる。ステップ４０ｃで割り込み処理が終了すると、割り込み直前の処理に戻るかディスパッチ処理に進む。ディスパッチ処理の間は割り込みを禁止している。なお、ステップ４０ｂの多重割り込み準備では、レーザ割り込み処理４０ｄやキー（key）割り込み処理４０ｅ、バッテリー（battery）割り込み処理４０ｆなどを受け付け、優先度の高い割り込み処理から実施される。
【００５０】
これに対して、本発明に係るディスパッチ処理では、ＣＰＵ４が、タスクの実行権を切り替えるディスパッチ処理中において、二値化信号のエッジの入力を示すレーザ割り込みを有効にする。例えば、図７に示すdispatch部３１がタスク３１ａ〜３１ｄの実行権を切り替えるディスパッチ中であっても、レーザ割り込みだけを許可する。
【００５１】
この例で、ディスパッチ中の割り込みのレベルを「0x0E」に設定し、レーザの割り込みのレベルを「0x0F」に設定し、その他の割り込みレベルを「0x0E」より小さいレベル値に設定する。これにより、レーザの割り込みのレベル「0x0F」が、ディスパッチ中の割り込みのレベル「0x0E」よりも高くなるので、レーザの割り込みは、ディスパッチ中に割り込みを実行できるようになる。したがって、例えば、タスク３１ａからタスク３１ｂへディスパッチするときに１０μsec以上の時間が発生しても、この間においてレーザの割り込みを受け付けるのでレーザのキャプチャに失敗することがない。なお、ディスパッチ中に割り込みを発生しても、割り込みはμＩＴｒｏｎの管理外で実施されるため、μＩＴｒｏｎには影響しない。
【００５２】
図７に示すステップ４１ａでタスク３０ｂによる割り込みを開始して、ステップ４１ｂで多重割り込みの準備を行い、ステップ４１ｃで割り込み処理の終了となる。ステップ４１ｃで割り込み処理が終了すると、レーザ割り込み以外の場合は割り込み直前の処理に戻るかディスパッチ処理に進み、レーザ割り込みの場合はディスパッチ処理中でも割り込みが可能なので、割り込み直前の処理に戻る。ステップ４１ｂの多重割り込み準備では、レーザ割り込み処理４１ｄやキー（key）割り込み処理４１ｅ、バッテリー（battery）割り込み処理４１ｆなどを受け付け、優先度の高い割り込み処理から実施されるが、レーザ割り込みの場合は多重割り込みを禁止する。
【００５３】
このように、本発明に係るバーコードスキャナ１００によれば、タスクの実行権を切り替えるディスパッチ処理中において、二値化信号のエッジの入力を示すレーザ割り込みを有効にする。これにより、ディスパッチ中においてレーザ割り込みを受け付けるのでレーザのキャプチャに失敗することがない。従って、ハードウェアを追加することなく単純な構成で高いスキャンレートを維持できる。
【００５４】
なお、実施例では、μＩＴｒｏｎの仕様に基づいて説明したが、適用するリアルタイムＯＳはμＩＴｒｏｎに限定されるものではない。
【産業上の利用可能性】
【００５５】
本発明は、コード記号のような光反射率の異なる部分で構成される読取対象の情報を読み取るバーコードスキャナに適用して極めて好適である。
【符号の説明】
【００５６】
１・・・レーザ光源、３ａ・・・光電変換器、３ｂ・・・二値化処理部、４・・・ＣＰＵ（制御部）、５・・・割込コントローラ、６・・・タイマ、１００・・・バーコードスキャナ（光学的情報読取装置）
【図１】
2011048653.tif 000003
【図２】
2011048653.tif 000004
【図３】
2011048653.tif 000005
【図４】
2011048653.tif 000006
【図５】
2011048653.tif 000007
【図６】
2011048653.tif 000008
【図７】
2011048653.tif 000009