(57)【特許請求の範囲】
【請求項１】
共通のデータバスを介して、共有メモリにアクセスする第１及び第２プロセッサと、
シンボルコードの光学読取を行って、読取画像を生成する光学読取素子と、
外部機器から読取開始の指示を受け付ける送受信回路と、
上記データバスを介して、上記読取画像を上記光学読取素子から上記共有メモリへ転送するＤＭＡコントローラと、
上記読取画像をデコードするためのデコードパラメータを保持するメモリ領域からなる複数の設定バンクと、
上記共有メモリ内に設けられ、上記読取画像を保持するための画像記憶領域、及び、上記設定バンクを指定するバンク番号を保持するためのバンク番号記憶領域を含む複数の画像バッファとを備え、
第１プロセッサは、第２プロセッサの指示に基づいて、上記画像バッファ内の上記読取画像をデコードし、そのデコード結果を上記共有メモリへ書き込むデコード手段からなり、
第２プロセッサは、上記読取開始の指示に基づいて、上記光学読取素子による光学読取を制御する撮像制御タスク、上記ＤＭＡコントローラによる読取画像の転送終了に基づいて、上記読取画像が保持された上記画像バッファ内の上記バンク番号によって指定された上記設定バンクから上記デコードパラメータを取得するとともに、取得した上記デコードパラメータに基づく上記読取画像のデコードを第１プロセッサに指示するデコード制御タスク、及び、上記送受信回路から外部機器への上記デコード結果の送信を制御するデコード結果送信タスクのいずれか１つを選択的に実行し、
上記撮像制御タスクは、上記デコード制御タスクよりも優先され、上記デコード制御タスクは、上記デコード結果送信タスクよりも優先されることを特徴とするコード読取装置。
【請求項２】
上記撮像制御タスクは、未使用の上記画像バッファを上記読取画像の転送先として選択するとともに、上記バンク番号を上記画像バッファに書き込み、
上記デコード制御タスクは、上記画像バッファ内に転送された読取画像データの先頭アドレス、データサイズ、及び、上記バンク番号によって指定された上記設定バンクから取得した上記デコードパラメータを上記共有メモリに書き込み、上記第１プロセッサに割込要求を通知し、
上記第１プロセッサは、上記割込要求に基づいて、上記読取画像のデコード処理を行うことを特徴とする請求項１に記載のコード読取装置。
【請求項３】
第２プロセッサは、上記送受信回路から外部機器への上記読取画像の送信を制御する画像データ送信タスク、上記撮像制御タスク、上記デコード制御タスク及び上記デコード結果送信タスクのいずれか１つを選択的に実行し、
上記デコード結果送信タスクは、上記画像データ送信タスクよりも優先されることを特徴とする請求項１又は２に記載のコード読取装置。
【請求項４】
上記共有メモリは、揮発性メモリからなり、
第２プロセッサは、上記共有メモリ内の上記読取画像を不揮発性メモリへ書き込む画像保存タスク、上記撮像制御タスク、上記デコード制御タスク、上記デコード結果送信タスク及び上記画像データ送信タスクのいずれか１つを選択的に実行し、
上記画像データ送信タスクは、上記画像保存タスクよりも優先されることを特徴とする請求項３に記載のコード読取装置。
【請求項５】
上記共有メモリは、上記読取画像に関連付けて、上記読取画像の参照タスク数を保持し、
第２プロセッサは、上記参照タスク数に基づいて、上記共有メモリへの上書きによる転送を上記ＤＭＡコントローラに指示するとともに、上記撮像制御タスク及び上記デコード制御タスクのいずれか１つを実行する際に上記参照タスク数をそれぞれインクリメントし、上記画像データ送信タスク及び上記画像保存タスクのいずれか１つを実行する際に上記参照タスク数をそれぞれデクリメントすることを特徴とする請求項４に記載のコード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード読取装置に係り、さらに詳しくは、バーコードや２次元コードなどのシンボルコードの光学読取を行って得られた読取画像をデコードし、そのデコード結果を外部機器へ送信するコード読取装置の改良に関する。
【背景技術】
【０００２】
ワーク上にマーキングされたバーコードや２次元コードを光学的に読み取って読取画像を生成し、読取画像をデコードしてそのデコード結果を出力するコード読取装置は、コードリーダと呼ばれている。通常、コードリーダは、コードを光学的に読み取る光学読取素子と、読取画像を保持するメモリと、読取画像をデコードするプロセッサと、デコード結果を外部機器へ送信する送受信回路により構成される。また、デコード結果は、例えば、イーサネット（Ethernet、登録商標）などのＬＡＮ（ローカルエリアネットワーク）又はＲＳ−２３２Ｃなどのシリアル通信インターフェースを介して、ＰＣ（パーソナルコンピュータ）などの端末装置又はＰＬＣ（プログラマブルロジックコントローラ）などの制御装置に送信される。
【０００３】
近年、ワークから読み取った画像データをフレーム単位で解析して復号するイメージセンシング方式の読取装置の場合、製造コストや消費電力を低減させるために、ＣＭＯＳ（Complementary Metal Oxide Semiconductor：相補型金属酸化膜半導体）イメージセンサが光学読取素子として用いられる。最近では、読取画像における高解像度化の要求により、情報量の大容量化が求められており、画像処理を高速化することが課題であった。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記事情に鑑みてなされたものであり、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができるコード読取装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
第１の本発明によるコード読取装置は、共通のデータバスを介して、共有メモリにアクセスする第１及び第２プロセッサと、シンボルコードの光学読取を行って、読取画像を生成する光学読取素子と、外部機器から読取開始の指示を受け付ける送受信回路と、上記データバスを介して、上記読取画像を上記光学読取素子から上記共有メモリへ転送するＤＭＡコントローラと、上記読取画像をデコードするためのデコードパラメータを保持するメモリ領域からなる複数の設定バンクと、上記共有メモリ内に設けられ、上記読取画像を保持するための画像記憶領域、及び、上記設定バンクを指定するバンク番号を保持するためのバンク番号記憶領域を含む複数の画像バッファとを備えて構成される。第１プロセッサは、第２プロセッサの指示に基づいて、上記画像バッファ内の上記読取画像をデコードし、そのデコード結果を上記共有メモリへ書き込むデコード手段からなり、第２プロセッサは、上記読取開始の指示に基づいて、上記光学読取素子による光学読取を制御する撮像制御タスク、上記ＤＭＡコントローラによる読取画像の転送終了に基づいて、上記読取画像が保持された上記画像バッファ内の上記バンク番号によって指定された上記設定バンクから上記デコードパラメータを取得するとともに、取得した上記デコードパラメータに基づく上記読取画像のデコードを第１プロセッサに指示するデコード制御タスク、及び、上記送受信回路から外部機器への上記デコード結果の送信を制御するデコード結果送信タスクのいずれか１つを選択的に実行し、上記撮像制御タスクが、上記デコード制御タスクよりも優先され、上記デコード制御タスクが、上記デコード結果送信タスクよりも優先されるように構成される。
第２の本発明によるコード読取装置は、上記構成に加え、上記撮像制御タスクが、未使用の上記画像バッファを上記読取画像の転送先として選択するとともに、上記バンク番号を上記画像バッファに書き込み、上記デコード制御タスクが、上記画像バッファ内に転送された読取画像データの先頭アドレス、データサイズ、及び、上記バンク番号によって指定された上記設定バンクから取得した上記デコードパラメータを上記共有メモリに書き込み、上記第１プロセッサに割込要求を通知し、上記第１プロセッサが、上記割込要求に基づいて、上記読取画像のデコード処理を行うように構成される。
【０００６】
このコード読取装置では、読取画像をデコードする第１プロセッサと、光学読取素子による光学読取を制御し、送受信回路から外部機器へのデコード結果の送信を制御する第２プロセッサとが共通のデータバスを介して共有メモリにアクセスする。その際、第２プロセッサでは、光学読取素子による光学読取を制御する撮像制御タスク、読取画像のデコードを第１プロセッサに指示するデコード制御タスク、及び、デコード結果の送信を制御するデコード結果送信タスクに対し、この順に優先順位を割り付けてこれらのタスクのいずれか１つが選択的に実行される。この様な構成によれば、第１プロセッサに読取画像をデコードさせながら、第２プロセッサに撮像制御タスク、デコード制御タスク及びデコード結果送信タスクを効率良く実行させるので、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができる。
【０００７】
第３の本発明によるコード読取装置は、上記構成に加え、第２プロセッサが、上記送受信回路から外部機器への上記読取画像の送信を制御する画像データ送信タスク、上記撮像制御タスク、上記デコード制御タスク及び上記デコード結果送信タスクのいずれか１つを選択的に実行し、上記デコード結果送信タスクが、上記画像データ送信タスクよりも優先されるように構成される。
【０００８】
この様な構成によれば、第２プロセッサが、撮像制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクに対し、この順に優先順位を割り付けてこれらのタスクのいずれか１つを選択的に実行するので、第１プロセッサに読取画像をデコードさせながら、第２プロセッサに撮像制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクを効率良く実行させることができる。従って、シンボルコードの読取開始から、読取画像が外部機器へ送信されるまでに要する時間を短縮することができる。
【０００９】
第４の本発明によるコード読取装置は、上記構成に加え、上記共有メモリが、揮発性メモリからなり、第２プロセッサが、上記共有メモリ内の上記読取画像を不揮発性メモリへ書き込む画像保存タスク、上記撮像制御タスク、上記デコード制御タスク、上記デコード結果送信タスク及び上記画像データ送信タスクのいずれか１つを選択的に実行し、上記画像データ送信タスクが、上記画像保存タスクよりも優先されるように構成される。
【００１０】
この様な構成によれば、第２プロセッサが、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及び画像保存タスクに対し、この順に優先順位を割り付けてこれらのタスクのいずれか１つを選択的に実行するので、第１プロセッサに読取画像をデコードさせながら、第２プロセッサに撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及び画像保存タスクを効率良く実行させることができる。従って、シンボルコードの読取開始から、読取画像が不揮発性メモリ内に格納されるまでに要する時間を短縮することができる。
【００１１】
第５の本発明によるコード読取装置は、上記構成に加え、上記共有メモリが、上記読取画像に関連付けて、上記読取画像の参照タスク数を保持し、第２プロセッサが、上記参照タスク数に基づいて、上記共有メモリへの上書きによる転送を上記ＤＭＡコントローラに指示するとともに、上記撮像制御タスク及び上記デコード制御タスクのいずれか１つを実行する際に上記参照タスク数をそれぞれインクリメントし、上記画像データ送信タスク及び上記画像保存タスクのいずれか１つを実行する際に上記参照タスク数をそれぞれデクリメントするように構成される。
【００１２】
この様な構成によれば、読取画像に関連付けて保持される参照タスク数に基づいて、共有メモリへの上書きによる転送がＤＭＡコントローラに指示されるので、光学読取素子により生成された読取画像を共有メモリ内に効率良く格納させることができる。
【発明の効果】
【００１３】
本発明によるコード読取装置によれば、第１プロセッサに読取画像をデコードさせながら、第２プロセッサに撮像制御タスク、デコード制御タスク及びデコード結果送信タスクを効率良く実行させるので、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態によるコード読取装置を含む読取システム１００の一構成例を示したシステム図である。
【図２】図１の読取システム１００におけるコードリーダ２０の一構成例を示したブロック図であり、コードリーダ２０内の機能構成の一例が示されている。
【図３】図２のコードリーダ２０におけるＣＰＵ２２の構成例を示したブロック図である。
【図４】図２のコードリーダ２０の動作の一例を模式的に示した説明図であり、画像バッファ５０及び設定バンク５４が示されている。
【図５】図２のコードリーダ２０によるコード読取時の動作の一例を示したタイミングチャートである。
【発明を実施するための形態】
【００１５】
＜読取システム＞
図１は、本発明の実施の形態によるコード読取装置を含む読取システム１００の一構成例を示したシステム図であり、コード読取装置の一例としてコードリーダ２０が示されている。この読取システム１００は、ワークＷ上にマーキングされたシンボルコードＳを光学的に読み取り、読取画像をデコードするコードリーダ２０と、ＬＡＮ１１を介してコードリーダ２０と通信する外部機器と、シリアル通信インターフェース１２を介してコードリーダ２０と通信する外部機器とからなる。読取システム１００では、コードリーダ２０により読み取られた読取画像や読取画像のデコード結果が外部機器へ送信される。
【００１６】
ＬＡＮ１１は、イーサネットなどの通信ネットワークであり、ＬＡＮ１１を介してコードリーダ２０に接続される外部機器としては、表示装置１、ＰＣ２、ＰＬＣ３、ＦＴＰサーバ４、ＦＴＰクライアント５などがある。表示装置１は、タッチパネル式のディスプレイを備え、表示画面を操作することにより、コードリーダ２０に対し、コードを読み取る際の撮像パラメータ、読取画像をデコードする際のパラメータを設定することができる。表示装置１では、コードリーダ２０から転送された読取画像やデコード結果が表示画面に表示される。
【００１７】
ＰＣ２は、表示部及び操作部を備えた端末装置であり、コードリーダ２０に対して撮像パラメータやデコードパラメータを設定することができる。ＰＬＣ３は、書き換え可能なラダープログラムに基づいて動作し、センサーや駆動装置などの入出力装置を制御する制御装置である。ＰＬＣ３では、コードリーダ２０に対して読取開始を指示し、或いは、コードリーダ２０からデコード結果を取得する動作が行われる。
【００１８】
ＦＴＰ（File Transfer Protocol：ファイル転送プロトコル）サーバ４は、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に基づいて、通信ネットワークＮ上の他の通信機器と通信を行う情報処理装置であり、通信ネットワークＮ上の通信機器からのファイル転送要求に基づいて、データファイルを通信機器へ送信する。ＦＴＰクライアント５は、ＴＣＰ／ＩＰに基づいて通信を行う情報処理装置であり、ＦＴＰに基づいてＦＴＰサーバ４からデータファイルを取得する。
【００１９】
コードリーダ２０は、デコードに使用した読取画像を画像ファイルとして保持し、デコード終了後に画像ファイルをＦＴＰサーバ４に対して送信する。また、コードリーダ２０は、ＦＴＰクライアント５からのファイル転送要求に基づいて、画像ファイルをＦＴＰクライアント５に対して送信する。
【００２０】
シリアル通信インターフェース１２は、ＲＳ−２３２Ｃなどの通信規格において規定された所定のプロトコルに基づいてシリアル通信を行うインターフェースである。このシリアル通信インターフェース１２を介してコードリーダ２０に接続される外部機器としては、ＰＣ２、ＰＬＣ３などがある。
【００２１】
コードリーダ２０により読み取られた読取画像は、ＬＡＮ１１上の表示装置１又はＰＣ「ＰＣホスト１」へ送信される。一方、読取画像のデコード結果は、ＬＡＮ１１上の表示装置１、ＰＣ「ＰＣホスト１」、ＰＬＣ「ＰＬＣ１」、シリアル通信インターフェース１２を介したＰＣ「ＰＣホスト２」又はＰＬＣ「ＰＬＣ２」のいずれか少なくとも１つに送信される。
【００２２】
このコードリーダ２０は、シンボルコードＳを光学的に読み取る読取ユニットが、ワークＷの搬送ライン付近に配置される固定式のコードリーダであり、次々に搬送されるワークＷからシンボルコードＳが読み取られる。読取対象のシンボルコードＳとしては、バーコードや２次元コードがある。
【００２３】
＜コードリーダ＞
図２は、図１の読取システム１００におけるコードリーダ２０の一構成例を示したブロック図であり、コードリーダ２０内の機能構成の一例が示されている。このコードリーダ２０は、ＣＰＵ２１，２２、デコード用メモリ２１ａ、共有バス２３、共有メモリ２４、撮像素子２５ａ、撮像制御回路２５ｂ、ネットワークコントローラ２６、シリアル通信コントローラ２７、フラッシュメモリ２８ａ、入出力コントローラ２８ｂ及びＤＭＡＣ２９により構成される。以下では、ＣＰＵ２１を「ＣＰＵ１」と呼び、ＣＰＵ２２を「ＣＰＵ２」と呼ぶ場合がある。
【００２４】
ＣＰＵ２１及び２２は、共有バス２３を介して、共有メモリ２４にアクセスするプロセッサであり、所定の演算処理回路からなる。共有バス２３は、ＣＰＵ２１及び２２に共通のデータバスである。共有メモリ２４は、撮像パラメータやデコードパラメータ、読取画像、デコード結果を保持するための揮発性の半導体記憶素子からなり、例えば、ＲＡＭ（ランダムアクセスメモリ）である。
【００２５】
撮像素子２５ａは、ワークＷからの反射光を受光し、読取画像を生成する光学読取素子であり、例えば、ＣＭＯＳイメージセンサが用いられる。撮像制御回路２５ｂは、撮像素子２５ａからの画像信号を増幅する増幅器、増幅後の画像信号をデジタル信号に変換するＡ／Ｄ変換器などからなり、共有メモリ２４内の撮像パラメータ、例えば、露光時間、ゲイン、フィルタ処理の有無に基づいて撮像素子２５ａを制御する。
【００２６】
ＤＭＡＣ（Direct Memory Access Controller：ＤＭＡコントローラ）２９は、撮像素子２５ａにより生成された読取画像を撮像制御回路２５ｂから共有バス２３を介して共有メモリ２４へ転送する。
【００２７】
ネットワークコントローラ２６は、ＬＡＮ１１を介して外部機器と通信する通信回路であり、例えば、ＥＭＡＣ（Ethernet Media Access Controller）からなる。シリアル通信コントローラ２７は、シリアル通信インターフェース１２を介して外部機器と通信する通信回路であり、例えば、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）からなる。
【００２８】
フラッシュメモリ２８ａは、画像ファイルを保持するための不揮発性の半導体記憶素子からなり、例えば、ＳＤ（Secure Digital、登録商標）カードなどの着脱可能なメモリカードが用いられる。入出力コントローラ２８ｂは、フラッシュメモリ２８ａに対する画像ファイルの書き込み及び読み出しを制御する。
【００２９】
ＣＰＵ２１は、ＣＰＵ２２の指示に基づいて、共有メモリ２４内からデコード用メモリ２１ａに読取画像を読み出してデコード処理するデコード手段からなり、デコード処理終了後にデコード結果を共有メモリ２４内に書き込む。
【００３０】
一方、ＣＰＵ２２は、ネットワークコントローラ２６又はシリアル通信コントローラ２７がコマンドを受信した場合に、当該コマンドが読み取りを開始させるための読取開始コマンドであれば、撮像制御回路２５ｂに対して読取開始を指示する。
【００３１】
また、ＣＰＵ２２は、ＤＭＡＣ２９による読取画像の転送終了に基づいて、転送が終了した読取画像のデコードをＣＰＵ２１に対して指示する。さらに、ＣＰＵ２２は、ネットワークコントローラ２６及びシリアル通信コントローラに対して読取画像のデコード結果の送信を指示する。
【００３２】
このＣＰＵ２２では、デコードに使用された読取画像を共有メモリ２４内から読み出し、画像ファイルとしてフラッシュメモリ２８ａ内に書き込み、或いは、共有メモリ２４内に書き込む動作が行われる。この画像ファイルは、デコード終了時に書き込まれる。
【００３３】
また、ＣＰＵ２２では、デコード終了後、共有メモリ２４内の画像ファイルをＦＴＰサーバ４へ送信する送信制御、及び、ＦＴＰクライアント５からのファイル転送要求に基づいて、共有メモリ２４内の画像ファイルをＦＴＰクライアント５へ送信する送信制御も行われる。ＣＰＵ２１，２２及びＤＭＡＣ２９は、バスマスタとして共有バス２３を占有することができるデバイスであり、互いに割込要求を通知し、或いは、割込要求を検出する。
【００３４】
図３は、図２のコードリーダ２０におけるＣＰＵ２２の構成例を示したブロック図である。このＣＰＵ２２は、割込コントローラ３１、タスク優先順位記憶部３２、タスク管理フラグ記憶部３３、プログラム実行部３４及びプログラム記憶部３５により構成される。プログラム記憶部３５には、撮像制御プログラム４１、システム制御プログラム４２、デコード制御プログラム４３、デコード結果送信プログラム４４、画像データ送信プログラム４５、ＦＴＰサーバプログラム４６、ＦＴＰクライアントプログラム４７及び画像保存プログラム４８が保持されている。
【００３５】
ＣＰＵ２２では、ＣＰＵ２１による読取画像のデコード処理と、撮像制御、デコード結果の送信制御、読取画像の送信制御、ＦＴＰサーバ４への画像ファイルの送信制御、及び、ＦＴＰクライアント５からのファイル転送要求に基づく画像ファイルの送信制御とを並列処理させるために、優先度スケジューリングが行われる。
【００３６】
優先度スケジューリングとは、ＣＰＵ２２において実行されるタスク、すなわち、プログラムにより実行される処理に優先順位を割り付け、実行待ちの状態のタスクが複数存在する場合に、実行待ち状態のタスクのうち、優先順位の最も高いタスクにＣＰＵ資源を割り当てることである。ここでは、実行待ち状態を実行可能状態と呼び、休止状態及び実行状態と区別する。
【００３７】
具体的には、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、ＦＴＰサーバタスク、ＦＴＰクライアントタスク及び画像保存タスクの８つのタスクについて、優先度スケジューリングが行われる。
【００３８】
ここでは、一例として、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、ＦＴＰサーバタスク、ＦＴＰクライアントタスク、画像保存タスクの順に優先順位が割り付けられる。具体的には、撮像制御タスクが最も優先度が高く、システム制御タスクが２番目に優先度が高く、デコード制御タスクが３番目に優先度が高く、そして、デコード結果送信タスクが４番目に優先度が高くなっている。また、画像保存タスクが最も優先度が低くなっている。
【００３９】
つまり、撮像制御タスクは、デコード制御タスクよりも優先され、デコード制御タスクは、デコード結果送信タスクよりも優先される。また、デコード結果送信タスクは、画像データ送信タスクよりも優先され、画像データ送信タスクは、画像保存タスクよりも優先される。
【００４０】
割込コントローラ３１は、共有バス２３を介して通知された割込要求を検出し、その検出結果をプログラム実行部３４へ出力し、プログラム実行部３４からの指示に基づいて、割込要求を生成する。
【００４１】
プログラム実行部３４は、優先度スケジューリングに基づいて、撮像制御プログラム４１、システム制御プログラム４２、デコード制御プログラム４３、デコード結果送信プログラム４４、画像データ送信プログラム４５、ＦＴＰサーバプログラム４６、ＦＴＰクライアントプログラム４７及び画像保存プログラム４８のいずれか１つを選択的に実行する。
【００４２】
タスク優先順位記憶部３２には、優先度スケジューリングに必要なタスクの優先順位情報が保持される。また、タスク管理フラグ記憶部３３には、タスクが休止状態であるか、或いは、実行可能状態であるかを判別するための識別情報として、タスク管理フラグが保持される。
【００４３】
ネットワークコントローラ２６及びシリアル通信コントローラ２７は、コマンドを受信した場合に、割込コントローラ３１にコマンド受信を通知する。プログラム実行部３４は、コマンド受信が通知されれば、当該コマンドを解析し、その解析結果に応じて動作する。
【００４４】
例えば、コマンドが、読み取りを開始させるための読取開始コマンドであり、かつ、撮像制御タスクが休止状態である場合に、撮像制御プログラム４１を実行し、撮像制御回路２５ｂに読取開始が指示される。一方、コマンドが、読み取りを終了させるための読取終了コマンドであり、かつ、撮像制御タスクが実行状態である場合には、撮像制御プログラム４１の実行を停止し、撮像制御回路２５ｂ及びＣＰＵ２１に停止要求が通知される。
【００４５】
撮像制御プログラム４１は、読取開始コマンドに基づいて、撮像制御回路２５ｂに対して読取開始を指示し、光学読取を制御する撮像制御タスク用のプログラムである。システム制御プログラム４２は、タスク優先順位情報及びタスク管理フラグに基づいて、実行対象のプログラムを切り替えるための割込ハンドラである。デコード制御プログラム４３は、ＤＭＡＣ２９による読取画像の転送終了に基づいて、転送が終了した読取画像のデコードをＣＰＵ２１に対して指示するデコード制御タスク用のプログラムである。
【００４６】
デコード結果送信プログラム４４は、デコード結果の送信をネットワークコントローラ２６及びシリアル通信コントローラ２７に対して指示するデコード結果送信タスク用のプログラムである。デコード制御プログラム４３は、ＤＭＡＣ２９による読取画像の転送終了時点で、撮像制御プログラム４１が実行状態であれば、撮像制御プログラム４１が休止状態に移行するのを待って実行状態に移行する。また、デコード制御プログラム４３は、所定のデコード終了条件が成立した場合に、デコード結果送信プログラム４４を実行可能状態に移行させる。
【００４７】
デコード終了条件とは、デコード処理を終了させるか否かを判断するための判定基準のことであり、デコード終了条件が満たされれば、デコード処理が終了し、撮像処理も終了する。例えば、デコード終了条件は、順次に生成される読取画像に対し、一定回数以上、連続して同一のデコード結果が得られることとして規定される。
【００４８】
デコード結果送信プログラム４４は、実行可能状態に移行した時点で、撮像制御プログラム４１及びデコード制御プログラム４３のいずれかが実行状態であれば、撮像制御プログラム４１及びデコード制御プログラム４３が休止状態に移行するのを待って実行状態に移行する。
【００４９】
画像データ送信プログラム４５は、共有メモリ２４内の読取画像の送信をネットワークコントローラ２６及びシリアル通信コントローラ２７に対して指示する画像データ送信タスク用のプログラムである。この画像データ送信プログラム４５は、実行可能状態に移行した時点で、撮像制御プログラム４１、デコード制御プログラム４３及びデコード結果送信プログラム４４のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。
【００５０】
ＦＴＰサーバプログラム４６は、ＦＴＰクライアント５からのファイル転送要求に基づいて、共有メモリ２４又はフラッシュメモリ２８ａ内の画像ファイルをＦＴＰクライアント５へ送信するＦＴＰサーバタスク用のプログラムである。このＦＴＰサーバプログラム４６は、一定時間ごとに実行可能状態に移行するプログラムである。
【００５１】
ＦＴＰサーバプログラム４６は、実行可能状態に移行した時点で、撮像制御プログラム４１、デコード制御プログラム４３、デコード結果送信プログラム４４及び画像データ送信プログラム４５のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。そして、ＦＴＰサーバプログラム４６は、実行状態に移行すれば、ＦＴＰクライアント５からのファイル転送要求の有無をチェックし、ファイル転送要求があれば、画像ファイルを転送して休止状態に移行する。一方、ＦＴＰサーバプログラム４６は、ファイル転送要求がなければ、直ちに休止状態に移行する。
【００５２】
ＦＴＰクライアントプログラム４７は、共有メモリ２４又はフラッシュメモリ２８ａ内の画像ファイルをＦＴＰサーバ４へ送信するＦＴＰクライアントタスク用のプログラムである。このＦＴＰクライアントプログラム４７は、実行可能状態に移行した時点で、撮像制御プログラム４１、デコード制御プログラム４３、デコード結果送信プログラム４４、画像データ送信プログラム４５及びＦＴＰサーバプログラム４６のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。
【００５３】
画像保存プログラム４８は、共有メモリ２４内の読取画像をファイル化し、共有メモリ２４又はフラッシュメモリ２８ａ内に書き込む画像保存タスク用のプログラムである。この画像保存プログラム４８は、デコード終了条件の成立により実行可能状態に移行するプログラムであり、実行可能状態に移行した時点で、撮像制御プログラム４１、デコード制御プログラム４３、デコード結果送信プログラム４４、画像データ送信プログラム４５、ＦＴＰサーバプログラム４６及びＦＴＰクライアントプログラム４７のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。
【００５４】
読取開始コマンドを受信した場合における各タスクの動作を以下に説明する。
＜処理１＞
まず、撮像制御タスクは、読取開始コマンドに基づいて、休止状態から実行可能状態に移行する。このとき、撮像制御タスクは、最も優先度の高いタスクであるので、直ちに実行状態となり、撮像制御回路２５ｂに撮像開始を指示し、その後、休止状態に移行する。
【００５５】
＜処理２＞
ＤＭＡＣ２９により全ての読取画像データが共有メモリ２４に転送されれば、デコード制御タスクが休止状態から実行可能状態に移行する。このとき、より優先度の高い撮像制御タスクは休止状態であるので、デコード制御タスクは、直ちに実行状態となり、ＤＭＡＣ２９により転送された読取画像データの先頭アドレスやデータサイズなどのデコードパラメータを共有メモリ２４内の所定位置に書き込み、ＣＰＵ２１に割込要求を通知する。
【００５６】
ＣＰＵ２１は、ＣＰＵ２２からの上記割込要求に基づいて、共有メモリ２４からデコードパラメータを読み出し、当該デコードパラメータに基づいて読取画像のデコード処理を行う。なお、デコード制御タスクは、ＣＰＵ２１が既にデコード処理中であった場合、ＣＰＵ２１に割込要求を通知しない。また、デコード制御タスクは、ＣＰＵ２１に割込要求を通知した後、デコード終了条件が成立するまで、一定時間が経過するごとに、撮像制御タスクを実行可能状態に移行させる。
【００５７】
＜処理３＞
ＣＰＵ２１は、読取画像のデコード処理が終了すれば、ＣＰＵ２２に割込要求を通知する。デコード制御タスクは、ＣＰＵ２１からの上記割込要求に基づいて、実行可能状態に移行する。このとき、デコード制御タスクは、撮像制御タスクが休止状態であれば、直ちに実行状態となるが、撮像制御タスクが実行状態であれば、撮像制御タスクが休止状態に移行してから実行状態となる。
【００５８】
実行状態となったデコード制御タスクは、画像データ送信タスクを実行可能状態に移行させる。また、デコード終了条件が成立した場合には、デコード結果送信タスクも実行可能状態に移行させる。一方、デコード終了条件が未成立であり、かつ、＜処理２＞においてＣＰＵ２１に割込要求を通知していなかった場合には、ＣＰＵ２１に割込要求が通知される。
【００５９】
＜処理４＞
実行可能状態に移行したデコード結果送信タスクは、撮像制御タスク及びデコード制御タスクがいずれも休止状態に移行すれば、実行状態となり、デコード結果を外部機器に送信する。デコード結果送信タスクは、デコード結果の送信後、休止状態に移行する。
【００６０】
＜処理５＞
実行可能状態に移行した画像データ送信タスクは、撮像制御タスク、デコード制御タスク及びデコード結果送信タスクがいずれも休止状態に移行すれば、実行状態となり、読取画像を外部機器に送信する。
【００６１】
＜処理６＞
画像保存タスクは、デコード終了条件が成立し、或いは、読取終了コマンドを受信した場合に、実行可能状態に移行する。実行可能状態に移行した画像保存タスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、ＦＴＰサーバタスク、ＦＴＰクライアントタスクがいずれも休止状態に移行すれば、実行状態となり、共有メモリ２４内の読取画像から画像ファイルを作成して共有メモリ２４又はフラッシュメモリ２８ａに書き込む。そして、画像保存タスクは、画像ファイルの書き込み終了後、ＦＴＰクライアントタスクを実行可能状態に移行させる。
【００６２】
＜処理７＞
実行可能状態に移行したＦＴＰクライアントタスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及びＦＴＰサーバタスクがいずれも休止状態に移行すれば、実行状態となり、ＦＴＰサーバ４に画像ファイルを転送する。
【００６３】
＜処理８＞
実行可能状態に移行したＦＴＰサーバタスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクがいずれも休止状態に移行すれば、実行状態となる。
【００６４】
実行状態となったＦＴＰサーバタスクは、ＦＴＰクライアント５からのファイル転送要求の有無をチェックし、ファイル転送要求があれば、ＦＴＰクライアント５に画像ファイルを転送し、その後、休止状態に移行する。一方、ＦＴＰサーバタスクは、ＦＴＰクライアント５からのファイル転送要求がなかった場合、直ちに休止状態に移行する。
【００６５】
＜画像バッファ＞
図４は、図２のコードリーダ２０の動作の一例を模式的に示した説明図であり、画像バッファ５０及び設定バンク５４が示されている。ＤＭＡＣ２９により共有メモリ２４内に転送された読取画像は、画像バッファ５０として保持される。
【００６６】
この画像バッファ５０は、読取画像を保持するための画像記憶領域５１と、読取画像の参照タスク数を保持するためのタスク数記憶領域５２と、設定バンク５４を指定するバンク番号を保持するためのバンク番号記憶領域５３からなる。
【００６７】
画像記憶領域５１には、１枚の読取画像が格納される。設定バンク５４は、撮像パラメータやデコードパラメータなどの各種設定を保持するためのメモリ領域であり、共有メモリ２４又はフラッシュメモリ２８ａ内に作成される。撮像パラメータとしては、露光時間、ゲイン、フィルタの有無などが保持される。共有メモリ２４内には、この様な複数の画像バッファ５０が予め形成される。
【００６８】
撮像制御タスクは、読取開始時に、未使用の画像バッファ５０、すなわち、参照タスク数がゼロの画像バッファ５０を読取画像の転送先として選択し、上書きによる転送をＤＭＡＣ２９に指示し、当該画像バッファ５０の参照タスク数をインクリメントする。また、撮像制御タスクは、バンク番号などを画像バッファ５０内に書き込む。
【００６９】
デコード制御タスクは、画像バッファ５０内に転送された読取画像データの先頭アドレス及びデータサイズと、画像バッファ５０内のバンク番号に基づいて設定バンク５４から取得したデコードパラメータとを共有メモリ２４内に書き込み、ＣＰＵ２１に割込要求を通知する。
【００７０】
ＣＰＵ２１から割込要求が通知されたデコード制御タスクは、ＣＰＵ２１によるデコード開始時に、デコード対象の読取画像を保持する画像バッファ５０の参照タスク数をインクリメントし、画像データ送信タスクを実行可能状態に移行させる。
【００７１】
画像データ送信タスクは、送信が終了した読取画像を保持する画像バッファ５０の参照タスク数をデクリメントする。また、画像保存タスクは、書き込みの終了した画像ファイルについて、対応する読取画像を保持する画像バッファ５０の参照タスク数をデクリメントする。
【００７２】
＜コード読取動作＞
図５は、図２のコードリーダ２０によるコード読取時の動作の一例を示したタイミングチャートである。コードリーダ２０では、コード読取時に、ＣＰＵ２１によるデコード処理と、ＣＰＵ２２の撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、ＦＴＰサーバタスク、ＦＴＰクライアントタスク及び画像保存タスクとが、システム制御タスクの割込ハンドラ動作により、優先度スケジューリングされる。
【００７３】
この図では、１回目の読取開始コマンド６１の受信後、３枚の読取画像が生成され、２枚目の読取画像のデコード結果が得られた時点で、デコード終了条件が成立し、一連の読取処理が終了している。また、１枚目の読取画像のデコード結果が得られる直前に、ＦＴＰクライアント５からのファイル転送要求６４が受信し、ＦＴＰサーバタスクが実行状態に移行している。そして、このＦＴＰサーバタスクが休止状態に移行した後、画像保存タスクが実行状態に移行し、その後、２回目の読取開始コマンド６１が受信し、光学読取が再開されている。
【００７４】
まず、撮像制御タスクは、読取開始コマンド６１に基づいて、休止状態から実行可能状態に移行する。このとき、撮像制御タスクは、最も優先度の高いタスクであるので、直ちに実行状態となり、撮像制御回路２５ｂに撮像開始を指示し、その後、休止状態に移行する。
【００７５】
次に、システム制御タスクは、ＤＭＡＣ２９による読取画像の転送が終了すれば、デコード制御タスクを休止状態から実行可能状態に移行させる。このとき、より優先度の高い撮像制御タスクは休止状態であるので、デコード制御タスクは、直ちに実行状態となり、ＣＰＵ２１に割込要求６２を通知する。
【００７６】
ＣＰＵ２１は、ＣＰＵ２２からの割込要求に基づいて、読取画像のデコード処理を行う。デコード制御タスクは、ＣＰＵ２１に割込要求を通知した後、デコード終了条件が成立するまで、一定時間が経過するごとに、撮像制御タスクを実行可能状態に移行させる。デコード制御タスクは、その実行中に、撮像制御タスクが実行状態に移行すれば、プリエンプション６３が発生して実行権を奪われ、実行可能状態に移行する。
【００７７】
ＦＴＰサーバタスクは、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクがいずれも休止状態に移行すれば、実行状態となる。
【００７８】
実行状態となったＦＴＰサーバタスクは、ＦＴＰクライアント５からのファイル転送要求６４の有無をチェックし、ファイル転送要求６４があれば、ＦＴＰクライアント５に画像ファイルを転送し、その後、休止状態に移行する。
【００７９】
ＣＰＵ２１は、読取画像のデコード処理が終了すれば、ＣＰＵ２２に割込要求６５を通知する。デコード制御タスクは、ＣＰＵ２１からの割込要求に基づいて、実行可能状態に移行する。このとき、デコード制御タスクは、撮像制御タスクが休止状態であれば、直ちに実行状態となる。
【００８０】
実行状態となったデコード制御タスクは、画像データ送信タスクを実行可能状態に移行させる。また、デコード終了条件が成立した場合には、デコード結果送信タスクも実行可能状態に移行させる。
【００８１】
実行可能状態に移行したデコード結果送信タスクは、撮像制御タスク及びデコード制御タスクがいずれも休止状態に移行すれば、実行状態となり、デコード結果を外部機器に送信する。デコード結果送信タスクは、デコード結果の送信後、休止状態に移行する。
【００８２】
実行可能状態に移行した画像データ送信タスクは、撮像制御タスク、デコード制御タスク及びデコード結果送信タスクがいずれも休止状態に移行すれば、実行状態となり、読取画像を外部機器に送信する。
【００８３】
画像保存タスクは、デコード終了条件が成立した場合に、実行可能状態に移行する。実行可能状態に移行した画像保存タスクは、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、ＦＴＰサーバタスク、ＦＴＰクライアントタスクがいずれも休止状態に移行すれば、実行状態となり、共有メモリ２４内の読取画像から画像ファイルを作成して共有メモリ２４又はフラッシュメモリ２８ａに書き込む。そして、画像保存タスクは、画像ファイルの書き込み終了後、ＦＴＰクライアントタスクを実行可能状態に移行させる。
【００８４】
実行可能状態に移行したＦＴＰクライアントタスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及びＦＴＰサーバタスクがいずれも休止状態に移行すれば、実行状態となり、ＦＴＰサーバ４に画像ファイルを転送する。
【００８５】
本実施の形態によれば、ＣＰＵ２１に読取画像をデコードさせながら、ＣＰＵ２２に撮像制御タスク、デコード制御タスク及びデコード結果送信タスクを効率良く実行させるので、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができる。
【００８６】
また、読取画像に関連付けて保持される参照タスク数に基づいて、共有メモリ２４への上書きによる転送がＤＭＡＣ２９に指示されるので、撮像素子２５ａにより生成された読取画像を共有メモリ２４内に効率良く格納させることができる。
【００８７】
なお、本実施の形態では、ＬＡＮ１１やシリアル通信インターフェース１２を介して外部機器から読取開始コマンドを受信すれば、読み取りを開始する場合の例について説明したが、読み取りを開始させるためのトリガはこれに限られるものではない。すなわち、外部機器から読取開始の指示を受け付け、当該読取開始の指示に基づいて読み取りを開始するものであれば他の構成であっても良い。例えば、外部機器接続用の入力端子における電圧変化を検出し、その検出結果に基づいて読み取りを開始するようなものも本発明には含まれる。
【符号の説明】
【００８８】
１  表示装置
２  ＰＣ
３  ＰＬＣ
４  ＦＴＰサーバ
５  ＦＴＰクライアント
１１  ＬＡＮ
１２  シリアル通信ネットワーク
２０  コードリーダ
２１，２２  ＣＰＵ
２１ａ  デコード用メモリ
２３  共有バス
２４  共有メモリ
２５ａ  撮像素子
２５ｂ  撮像制御回路
２６  ネットワークコントローラ
２７  シリアル通信コントローラ
２８ａ  フラッシュメモリ
２８ｂ  入出力コントローラ
２９  ＤＭＡＣ
３１  割込コントローラ
３２  タスク優先順位記憶部
３３  タスク管理フラグ記憶部
３４  プログラム実行部
３５  プログラム記憶部
４１  撮像制御プログラム
４２  システム制御プログラム
４３  デコード制御プログラム
４４  デコード結果送信プログラム
４５  画像データ送信プログラム
４６  ＦＴＰサーバプログラム
４７  ＦＴＰクライアントプログラム
４８  画像保存プログラム
５０  画像バッファ
５１  画像記憶領域
５２  タスク数記憶領域
５３  バンク番号記憶領域
５４  設定バンク
Ｎ  通信ネットワーク
Ｓ  シンボルコード
Ｗ  ワーク
【図１】
0005606808.tif 000002
【図２】
0005606808.tif 000003
【図３】
0005606808.tif 000004
【図４】
0005606808.tif 000005
【図５】
0005606808.tif 000006