(57)【特許請求の範囲】
【請求項１】
端末であって、
命令セットアーキテクチャを備えたプロセッサと、
イメージングアセンブリと、
複数のオペレーティングシステムと、
各オペレーティングシステムから少なくとも１つの命令を受信し、命令セットアーキテクチャによってプロセッサと通信し、イベントを表す電気信号の受信の際に、プロセッサにオペレーティングシステムがアクセスするように切り替えるように構成されるバーチャルマシンアプリケーションプログラムと、
デコーダアプリケーションプログラムと、
イメージングアセンブリ、照明アセンブリ、バーチャルマシンアプリケーションプログラム、および、デコーダアプリケーションプログラムと通信するように構成されたスキャンドライバアプリケーションプログラムと、
をストアするように構成されたデータストレージ手段と、
を有し、
前記イベントが、イメージングアセンブリによってキャプチャされたイメージからバーチャルマシンアプリケーションプログラムにデコーダアプリケーションプログラムによって復号化されたバーコードにエンコードされたデータを表す電気信号を伝達するスキャンドライバアプリケーションを有することを特徴とする端末。
【請求項２】
前記バーチャルマシンアプリケーションプログラムは、値がオペレーティングシステムスイッチを示すプリセットスイッチ情報値と一致するかどうかを判断するようにバーコードでエンコードされたデータを表す電気信号を解釈するように構成されることを特徴とする請求項１に記載の端末。
【請求項３】
前記データストレージ手段が、プリセットスイッチ情報値をストアするように構成されることを特徴とする請求項２に記載の端末。
【請求項４】
前記イメージングアセンブリが、イメージング光学素子およびイメージングセンサを有することを特徴とする請求項１に記載の端末。
【請求項５】
イメージング光学素子および光源を有する照明アセンブリを有することを特徴とする請求項１に記載の端末。
【請求項６】
ミラーと、
レーザジェネレータ及びレーザコントローラを有する照明アセンブリと、
を有し、
前記イメージングアセンブリが、フィルタと、フォトダイオードと、アンプと、デジタイザとを有することを特徴とする請求項１に記載の端末。
【請求項７】
前記イベントが、スキャンドライバアプリケーションプログラムによって成功したデコードオペレーションを有することを特徴とする請求項１に記載の端末。
【請求項８】
バーチャルマシンアプリケーションプログラムが、プロセスに優先順位を割り当てるように構成されたスケジューラを包含することを特徴とする請求項１に記載の端末。
【請求項９】
ポータブルデータ端末であって、
ユーザインタフェースデバイスと、
命令セットアーキテクチャを備えたプロセッサと、
前記命令セットアーキテクチャによってプロセッサと通信するように構成された第１のオペレーティングシステムと、
前記第１のオペレーティングシステムと通信するように構成された第１のアプリケーションプログラムと、
第２のオペレーティングシステムと、
前記第２のオペレーティングシステムと通信するように構成された第２のアプリケーションプログラムと、
前記第２のオペレーティングシステムからの命令を受け、前記命令に基いて第１のオペレーティングシステムと通信するように構成されたバーチャルマシンアプリケーションプログラムと、
をストアするように構成されたデータストレージ手段と、
を有し、
前記ポータブルデータ端末が、前記ポータブルデータ端末によってデコードされたバーコードにエンコードされたデータに応答して、オペレーティングシステムを切り替えるように構成されることを特徴とするポータブルデータ端末。
【請求項１０】
イメージングアセンブリと、
照明アセンブリと、
を有し、
前記第１のアプリケーションプログラムが、包含されたバーコードを復号化するようにイメージングアセンブリによって送信されたピクセルデータを解釈するように構成されたデコーダアプリケーションプログラムと、イメージングアセンブリと、照明アセンブリと通信するように構成されたスキャンドライバアプリケーションプログラムからなることを特徴とする請求項９に記載のポータブルデータ端末。
【請求項１１】
イメージング光学素子およびイメージングセンサを有するイメージングアセンブリと、
照明光学素子と光源とを有する照明アセンブリと
を有することを特徴とする請求項９に記載のポータブルデータ端末。
【請求項１２】
ミラーと、
フィルタと、フォトダイオードとを備えるイメージングアセンブリと、
レーザジェネレータ及びレーザコントローラを備える照明アセンブリと、
を有することを特徴とする請求項９に記載の端末。
【請求項１３】
ユーザインターフェースデバイスが、スキャンボタンからなり、
データストレージ手段が、スイッチ情報をストアするように構成され、
ポータブルデータ端末が、
スキャンボタンとのユーザ相互作用に応答してバーコードを復号化させるのを試み、
復号化されたバーコードのエンコードされたデータが、ストアされたスイッチ情報と一致するかどうかを判断し、
復号化されたバーコードのエンコードされたデータが、ストアされたスイッチ情報と一致するならば、オペレーティングシステムを切り替える
ように構成される
ことを特徴とする請求項９に記載のポータブルデータ端末。
【請求項１４】
イメージングアセンブリと、
照明アセンブリと、
を有し、
前記第１のアプリケーションプログラムが、包含されたバーコードを復号化するようにイメージングアセンブリによって送信されたピクセルデータを解釈するように構成されたデコーダアプリケーションプログラムと、イメージングアセンブリと、照明アセンブリと通信するように構成されたスキャンドライバアプリケーションプログラムからなることを特徴とし、
前記第１のオペレーティングシステムが、デコーダアプリケーションプログラムまたはデコーダ・アプリケーションプログラムの成功したバーコードのデコード動作のバーコードデコード試行操作の際に、バーチャルマシンアプリケーションプログラムをサスペンドするように構成されることを特徴とする請求項９に記載のポータブルデータ端末。
【請求項１５】
ユーザインタフェースデバイスと、
命令セットアーキテクチャを備えたプロセッサと、
命令セットアーキテクチャによってプロセッサと通信するように構成された第１のオペレーティングシステムと、
前記第１のオペレーティングシステムと通信するように構成された第１のアプリケーションプログラムと、
第２のアプリケーションプログラムと、
前記第２のアプリケーションプログラムからの命令を受けるように構成され、前記命令に基づいて第１のオペレーティングシステムと通信するように構成されるバーチャルマシンアプリケーションプログラムと
をストアするように構成されたデータストレージ手段と、
を有し、
ポータブルデータ端末が、ポータブルデータ端末によって復号化されたバーコードのエンコードされたデータに応答して、バーチャルマシンアプリケーションプログラムを呼び出すように構成される
ことを特徴とするポータブルデータ端末。
【請求項１６】
イメージングアセンブリと、
照明アセンブリと、
を有し、
前記第１のアプリケーションプログラムが、包含されたバーコードを復号化するようにイメージングアセンブリによって送信されたピクセルデータを解釈するように構成されたデコーダアプリケーションプログラムと、イメージングアセンブリと、照明アセンブリと通信するように構成されたスキャンドライバアプリケーションプログラムからなることを特徴とする請求項１５に記載のポータブルデータ端末。
【請求項１７】
イメージング光学素子およびイメージングセンサを有するイメージングアセンブリと、
照明光学素子と光源とを有する照明アセンブリと
を有することを特徴とする請求項１５に記載のポータブルデータ端末。
【請求項１８】
ミラーと、
フィルタと、フォトダイオードと備えたイメージングアセンブリと、
レーザジェネレータ及びレーザコントローラを備えた照明アセンブリと、
を有することを特徴とする請求項１５に記載のポータブルデータ端末。
【請求項１９】
ユーザインターフェースデバイスが、スキャンボタンからなり、
データストレージ手段が、スイッチ情報をストアするように構成され、
ポータブルデータ端末が、
スキャンボタンとのユーザ相互作用に応答してバーコードを復号化するのを試み、
復号化されたバーコードのエンコードされたデータが、ストアされたスイッチ情報と一致するかどうかを判断し、
復号化されたバーコードのエンコードされたデータが、ストアされたスイッチ情報と一致する場合、オペレーティングシステムを切り替える
ように構成される
ことを特徴とする請求項１５に記載のポータブルデータ端末。
【請求項２０】
イメージングアセンブリと、
照明アセンブリと、
を有し、
前記第１のアプリケーションプログラムが、包含されたバーコードを復号化するようにイメージングアセンブリによって送信されたピクセルデータを解釈するように構成されたデコーダアプリケーションプログラムと、イメージングアセンブリと、照明アセンブリと通信するように構成されたスキャンドライバアプリケーションプログラムからなることを特徴とし、
前記第１のオペレーティングシステムが、デコーダアプリケーションプログラムまたはデコーダ・アプリケーションプログラムの成功したバーコードのデコード動作のバーコードデコード試行操作の際に、バーチャルマシンアプリケーションプログラムをサスペンドするように構成されることを特徴とする請求項１５に記載のポータブルデータ端末。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本発明は、携帯型データ端末に関し、より詳しくは多数のプラットフォームをサポートすることができる携帯型データ端末に関する。
【背景技術】
【０００２】
[0002]  携帯型データ端末、光学およびレーザー証印リーダ、バーコードスキャナおよび、例えば、他のモバイル・コンピュータのようなリモートデバイスは、概して例えば印刷証印（例えばシンボル、象徴（symbology）およびバーコード）によって表されるデータを読み込む。あるタイプのシンボルは、機械可読形式でデータの要素を表すために特定の方法で配列された矩形のバーおよびスペースのアレイである。概して、光学証印読取デバイスは、シンボルの上に光を送信して、バーコード・シンボルまたは証印から戻った散乱したおよび／または反映された光を受ける。受け取られる光は、シンボルによって表されるデータを抽出するために画像プロセッサによって解釈される。概して、レーザー証印読取デバイスは、送信されたレーザー光を利用する。一次元（１Ｄ）光学バーコードリーダは、棒およびスペースの幅で、単一の軸に沿ってコード化されるデータを読み込むことによって特徴づけられ、その結果、シンボルが十分に高い決定によって撮像されると仮定するならば、この種のシンボルはその軸に沿って単一のスキャンから読み込まれることができる。
【０００３】
[0003]  単一のバーコード・シンボルのデータのより多くの量の符号化を許すために、コード化されたデータを多数の行に分割する多くの積み重ねられた１Ｄのバーコードシンボルが呈され、各々のそれぞれの１Ｄのバーコードパターン（いずれがスキャンされなければならなく、それから復号化されなければならないか全てまたはほとんどの全て）を含むことは完全なメッセージを形成するために結びつけられる。スキャンニングは依然として一次元で比較的高い解像度を必要とするが、シンボル全体を読み取るには複数の線形スキャンが必要である。
【０００４】
[0004]  二次元（２Ｄ）マトリックスシンボルとして知られるバーコードシンボルのクラスが、１Ｄのシンボルより方位のないスキャンでより大きなデータ密度および容量を提供するように開発されてきた。２Ｄマトリックス・コードは、規則的な多角形のマトリックスの範囲内で暗いか明るいデータ・エレメントとしてデータをコード化し、グラフィック・ファインダ、オリエンテーションおよびリファレンス構造が付いてくる。
【０００５】
[0005]  バーコードシンボルおよび／または証印の多くの他の種類は公知で、例えば、PDF417、MicroPDF417、MaxiCode、データ・マトリックス、ＱＲコード、Aztec、Aztec Mesas、Code 49, EAN-UCC Composite, Snowflake, Dataglyphs, Code 39, Code 128, Codabar, UPC, EAN, Interleaved 2 of 5, Reduced Space Symbology, Code 93, Codablock F,
and BC412, Postnet, Planet Code, British Post, Canadian Post, Japanese Post, OCR-A, OCR-B, Code 11, UPC, EAN, MSIおよびCode 16Kを含んで広く使われている。更に、証印は印刷証印、シンボル証印、バイオジェニック/バイオメトリクス証印、または、キ
ャプチャされたイメージから引き出されるいかなる情報によっても表されることができる。
【０００６】
[0006]  従来は、携帯用であるかそうでないかにせよ、バーコードリーダは直接リーダの範囲内で収納されるさまざまな電気部品の動作を制御する中央処理装置を含む。例えば、中央処理装置はキーパッド・エントリ、表示機能、無線ネットワーク通信機能、トリガー検出の検出を制御し、バーコード機能を読み込んで、復号化する。より具体的には、中央処理装置は概して、ターゲット（例えばターゲットのイメージを受信して、その中で光
学的にコード化されるデータを表す電気的な出力信号を生成するように構成されるバーコードおよびイメージング・アセンブリ）を照らすように構成される照明アセンブリと通信する。出力信号は、それからアナログディジタル変換器によって変わり、キャプチャされたイメージに含まれるいかなるバーコードも復号化するためにメモリに格納されるアルゴリズムによって分析される。更に、中央処理装置はしばしば構成されるネットワークインターフェースをホスト・サーバと無線または有線のネットワークを通じて通信するために制御する。
【０００７】
[0007]  例えば、Linuxのような伝統的により少ない支配的なオペレーティングシステムは、電力消費/管理、相対的な使いやすさおよびソフトウェア・アプリケーション・プログラム提供品を含むさまざまな理由のためにますます人気を得た。しかし、デバイス製造業者、特にポータブルのデバイス製造業者、モバイルおよび組み込みデバイスはしばしば、例えば、Windowsモバイルのような伝統的により支配的なオペレーティングシステムで動作するように構成されるデバイス・ドライバ（ハードウエア装置を有するコンピュータ・システム連通を容易にするソフトウェア）を作成した。例えば、バーコードスキャナは一般にスキャナ通信およびイメージングの制御を容易にするためのドライバおよび／または復号化されるときに、値がバーコードにおいてコード化されることを表すピクセルデータを得るための照明アセンブリを埋め込んだ。それぞれのオペレーティングシステム上で動作するように構成された複数のデバイス・ドライバを作成するには、開発するためのコストおよび時間、ならびに様々なドライバの継続的な製造元のサポートおよびメンテナンスに関して相当なリソースが必要となる。
【０００８】
[0008]  したがって、少なくとも２つのプラットフォームを効率的かつ便利にサポートするように構成されたポータブルデータ端末が必要であり、それによって、１つまたは複数のデバイス・ドライバおよび／または他のソフトウェアアプリケーション・プログラムの移植性の必要性が低減される。
【図面の簡単な説明】
【０００９】
【図１Ａ】印刷証印（printed indicia）を読取/スキャンするための２つの典型的な携帯型データ端末（PDT）100を示す。
【図１Ｂ】印刷証印（printed indicia）を読取/スキャンするための２つの典型的な携帯型データ端末（PDT）100を示す。
【図２ａ】本発明のPDT 200aから成る基本的構造のブロック略図を示す。
【図２ｂ】本発明によるPDT 200bから一緒に成る基本的構造のブロック略図を示す。
【図３】本発明の一実施形態による、バーチャル・マシン224aを含むことを示す。
【図４】バーチャル・マシン224b-dが、アプリケーション226b-dによって通信する際に、ゲストオペレーティングシステム223b-dからの命令を受けるように構成されるように示される。
【図５】本発明によるPDTの実施形態を示す。
【発明を実施するための形態】
【００１０】
[0016]  図1Aおよび1Bを参照すると、印刷証印（printed indicia）を読取/スキャンするための２つの典型的な携帯型データ端末（PDT）100が示される。本発明がPDTに関して
記載されているにもかかわらず、本発明は、例えば、いかなるバーコードスキャナ、モバイル電子デバイス、モバイル・コンピュータまたはパーソナルデータアシスタントで利用されることができる。PDTハウジング102は、ハンドル部分107を使用している人間の手に
適合するように形づくられることができ、データおよび命令を入力するためのキーパッド108、電源ボタンおよび、例えば、ローカルであるかリモートなホストプロセッサとの通
信を容易にするためのアンテナと同様に指作動可能なスキャン/捕獲またはトリガー・ボ
タン106のようなユーザ・インタフェースデバイスを含むことができる。情報をユーザに
表示するために、PDT 100はまた、例えばディスプレイ104（例えばLCDまたはOLED表示）
を含む。ディスプレイ104が、タッチスクリーンである場合、スタイラス（図示せず）は
また、タッチスクリーンと相互作用を容易にするために含まれることができる。照明およびイメージング光学素子がターゲットにアクセスをするのに実質的に妨害されないように、ハウジング102の開口は含まれる。PDT 100はまた、電力供給を受信するためのパワーポート、ネットワークインターフェースと有線または無線通信を容易にするための一つ以上の通信ポートを含み、および／または、両方の機能が同じポート110によって提供される
ことができる。
【００１１】
[0017]  図2aを参照すると、一緒になって本発明によるPDT200aを構成する基本構造の概略ブロック図が示されている。PDT 200aは、ターゲット214a（例えばターゲット214aのイメージを受信して、その中で光学的にコード化されるピクセルデータを表す電気的な出力信号を生成するためのバーコードおよびイメージング・アセンブリ202a）を照らすための照明アセンブリ208aを含む。照明アセンブリ208aは、ターゲット214aの方向に光源212から光を導くための照明光学系210（例えば一つ以上の反射器）と共に、少なくとも一つの光源212を含む。光源212は、例えば、近赤外線範囲の光および／または、可視範囲の光を発するように構成される少なくとも一つのＬＥＤを発するように構成される少なくとも一つのＬＥＤを含む。イメージング・アセンブリ202aは、2Dセンサ206（例えば、センサ206上のターゲット214aのイメージを受信し、焦点合わせさせるためのイメージング光学素子204に加えて、CCD、CMOS、NMOS、ＰＭＯＳ、CIDまたは、CMD半導体イメージ・センサ）を含む。
【００１２】
[0018]  さらに図2aを参照すると、PDT200aは、マイクロプロセッサ、VLSI、ASIC、および／または当技術分野で知られている命令セット・アーキテクチャを有する他の集積回路マイクロプロセッサなどのプロセッサ216aをさらに含む。プロセッサ216aは、イメージ/ピクセルデータを含むデータを受信し、出力し、処理するように構成されることができ、イメージング202aおよび照明208aアセンブリを作動することができ、他の動作中、システムバス238aと通信することができる。更に、プロセッサ216aは、光源212、センサ206のタイミング、アナログ‐ディジタル変換、ネットワークインターフェース234a（例えばRS-232、RS-485、USB、イーサネット、Wi-Fi、BluetoothTM、IrDAまたはZigbeeインターフェース）を介してPDT 200aまで外部のリモート・コンピュータまたはホスト・サーバ236aのプロセッサへの、および、プロセッサからの、データの送受信を制御し、スキャン/トリガー・ボタン106および／またはキーパッド108を有するユーザ相互作用を管理するためにユーザ入力インタフェース230aを制御し、並びに、下で詳細に説明するように、他の機能の中で、表示インタフェース232aを介して出力デバイス104（例えばLCDまたはOLEDディスプレイ）を制御するように構成される。プロセッサ216aは、ハードウェアを制御し、および／または、例えばデータ格納手段222a（例えば、イメージングスキャンドライバ・アプリケーション・プログラム225a）に保存される指示を実行することによって先ほど確認した機能を実行するように構成され、オペレーティングシステム223、および／または、バーチャル・マシンモニタ、および／または、バーチャル・マシン224によって通信される。データ格納手段222aは、ローカルで、ネットワークアクセス可能で、取り外し可能、および／または、取り外し不可能なメモリ（例えばRAM、ROMおよび／またはフラッシュ）を含むことができ、更にバーコードのような226aがセンサからピクセルデータを受け取って、その中でコード化されるいかなるバーコード・データも復号化するように構成されるソフトウェア・アプリケーション・プログラムを復号化するプログラムが例示する他のソフトウェア・アプリケーションを格納するように構成されることができる。イメージングスキャンドライバ・アプリケーション・プログラム225aは、ソフトウェアにメモリ・レジスタをセットすることによって例えば装置を制御し、イメージング・アセンブリ202aを制御するために用いるピンおよび照明アセンブリ208aに電圧にハードウェアを供給している呼び出し可能ルーチンを提供するように構成される。例えば、イメージングスキャンドライバ・アプリケーション・プログラム225aは、例えば、点灯消灯させ、イメージ捕獲を初期化させ、イメージを取り出し、センサを自動検出し、センサを初期化し、ステート管理を実行し、露出制御を実行するルーチンを提供するように構成される。
【００１３】
[0019]  PDT200aはまた、１つまたは複数のバッテリおよび／または交流電流を受信する回路などの１つまたは複数の電源228aと、キーボード、キーパッド108、トリガー／スキャンボタン106および／またはタッチスクリーン104のようなユーザ入力装置からデータを受信するためのユーザ入力インタフェース230aとを含む。図2aに示されるPDT 200aシステムコンポーネントは、好ましくは一つ以上のプリント回路基板（図示せず）でサポートされる。
【００１４】
[0020]  図2bを参照すると、本発明によるPDT200bを一緒に構成する基本構造の概略ブロック図が示されている。PDT200bは、折り畳みミラー（フォールドミラー）及び／又は振動及び／又は回転スキャンミラーのような少なくとも１つのミラー240に向けられた少なくとも１つのレーザー光線を生成するための少なくとも１つのレーザー発生器242を制御するための少なくとも１つのレーザー・コントローラ244を含む照明アセンブリ208bを含み、次いで、ビームはターゲット214bに向けられる。レーザー光線/スキャン・パターンは、ターゲット214bから離れて反映され、例えば、一つ以上のレーザー光パス・フィルタ246、一つ以上のフォトダイオード248、アンプ250およびデジタイザ252を含むイメージング・アセンブリ202bに、少なくとも一つのミラー240によってリダイレクトされる。追加的なレーザー発生器およびレーザー・コントローラは、例えば、形状、高さ、幅、角度および／または距離において異なるレーザー光を出力するのに提供されることができる。フォトダイオード248は、入射光エネルギーを、ターゲット214bから反射された光を表す出力信号である電荷に変換する。デジタイザ252は、フォトダイオード248によって出力されたアナログ信号を、ターゲット214bから反射された光を表すデジタル信号に変換する。
【００１５】
[0021]  さらに図2bを参照すると、PDT200bは、マイクロプロセッサ、VLSI、ASIC、および／または当技術分野で知られている命令セット・アーキテクチャを有する他の集積回路マイクロプロセッサなどのプロセッサ216bをさらに含む。プロセッサ216bは、イメージ/ピクセルデータを含むデータを受信し、出力し、処理するように構成されることができ、照明208bおよびイメージング202bアセンブリを作動することができ、他の動作中で、システムバス238bと通信することができる。更に、プロセッサ216bは、RS-232、RS-485、USB、イーサネット、Wi-Fi、Bluetooth（登録商標）、IrDAまたはZigbee（登録商標）インターフェースのようなネットワークインターフェース234bを介してPDT200bの外部にあるリモート・コンピュータまたはホスト計算機サーバ236bのプロセッサとの間でのデータの送受信を制御し、スキャン／トリガ−・ボタン106および／またはキーパッド108でユーザ相互作用を管理するようにユーザ入力インターフェース230bを制御し、以下に詳細に説明される他の機能のうち、表示インターフェース232bを介してLCDまたはOLEDディスプレイのような出力デバイス104を制御する。プロセッサ216bは、ハードウェアを制御し、および／または、例えばデータ格納手段222b（例えばレーザースキャンドライバ・アプリケーション・プログラム225b）に保存される指示を実行することによって先ほど確認した機能を実行するように構成され、オペレーティングシステム223および／またはバーチャル・マシンモニタおよび／またはバーチャル・マシン224によって通信される。データ格納手段222bは、ローカルで、ネットワークアクセス可能で、取り外し可能なおよび／または取り外し不可能なメモリ（例えばRAM、ROMおよび／またはフラッシュ）を含むことができ、更にバーコードのような226bがピクセルデータを受信し、その中でコード化されるいかなるバーコード・データも復号化するように構成されるソフトウェア・アプリケーション・プログラムを復号化するプログラムが例示する他のソフトウェア・アプリケーションを格納するように構成されることができる。レーザースキャンドライバ・アプリケーション・プログラム225bは、メモリ・レジスタを設定し、イメージング・アセンブリ202bハードウェアを制御するために使用されるピンに電圧を供給することなどによって、デバイスを制御するソフトウェア呼び出し可能ルーチンを提供するように構成される。
【００１６】
[0022]  PDT 200bも一つ以上の電力供給228b（例えば交流を受信するための一つ以上の電池および／または回路）を含み、ユーザはユーザー入力装置（例えばキーボード、キーパッド108、トリガー/スキャンボタン106および／またはタッチスクリーン104）から、データを受け取るためのインタフェース230bを入力する。図2bに示されるPDT 200bシステムコンポーネントは、好ましくは一つ以上のプリント回路基板（図示せず）でサポートされる。
【００１７】
[0023]  多数のプラットフォームPDTを提供するために、2つ以上のオペレーティングシステムは、別々のハードディスクドライブ、NANDおよび／またはNORフラッシュのような
フラッシュドライブ、または他のデータストレージ手段、および／または、データ記憶手段のパーティションにインストールされることができ、ブート時間でオペレーティングシステムをユーザが選択することができ、切り替えをすることは、現在のオペレーティングシステムのシャットダウンおよび他のオペレーティングシステムのスタートアップを必要とする。いくつかのこの種の実施の限定は、切り替えをすることを必要とする時間およびスイッチの時間からレジューム機能を提供するコンテキスト記憶の不足である。シャットダウンおよびスタートアップ・ルーチンのない多数のプラットフォームおよびコンテキスト切り換えを提供するために、ハードウェア（特にプロセッサ）がより強くなるにつれて、PDTおよび埋め込みシステムを含むバーチャル・マシンが従来技術において利用されて
きた。我々は、本発明の一つ以上の改良された仮想化技術を利用する多数のプラットフォームPDTシステムの3つの実施形態を以下に説明する。
【００１８】
[0024]  PDTハードウェアと複数のプラットフォームとの間のバーチャル・マシン
[0025]  図３を参照すると、本発明の一実施形態は、バーチャル・マシン（仮想マシン）224aを含むように示され、マイクロソフトのWindows CEおよび／またはWindows Mobile 223a、Google社のアンドロイド223c、オラクル社のSolaris、Unix、GNU, LiMO, Symbian, Red Hat IncのLinux 223bまたは、アップル社および／またはResearch In Motion Limitedから入手可能なそれら、および／または、他のオペレーティングシステムのような複数のプラットフォーム、オペレーティングシステム、および／または、カーネル223a-dと、PDTハードウェア200との間の通信を容易にするように構成されるバーチャル・マシンモニタまたはハイパーバイザーを含むことができる。典型的なバーチャル・マシンは、VMware社から入手可能なMobile Virtualization Platform、VirtualLogixから入手可能なVLX、および、OKL4 Microvisor、並びに、Open Kernal Labsから入手可能な、OK：Windows、OK：LinuxおよびOK：Android製品である。図3に図示した実施形態では、バーチャル・マシン224aは、例えばデータ格納手段（例えばデータ格納手段222）に含まれるアプリケーション・プログラムであり、複数のオペレーティングシステム223a-dから、指示を受け、プロセッサ216の命令セット構造によるプロセッサ216に、指示を通信するように構成される。典型的なプロセッサ216の命令セット・アーキテクチャは、ARM v5（ARM9およびXScale）およびv6（ARM11）、MIPS（MIPS32およびMIPS64）、および、インテル（x86-32およびx86-64）を含む。バーチャル・マシン224aは、オペレーティングシステム223a-dに対してリソース200（例えばプロセッサ216）を割り当てることによって、モニタ、ハイパーバイザーおよび／または、スケジューラのようなシステムリソース200を共有する。リソース制御は、例えば、バーチャル・マシン・モニタのスケジューリングポリシーまたはオペレーティングシステム223a-dのスケジューリングポリシーによって管理される。
【００１９】
[0026]  さらに図３を参照すると、本発明の一実施形態では、仮想マシン224aは、システムリソース（複数可）200、具体的にはプロセッサ216のオペレーティングシステム223a-dの直接的なユーザ管理を提供するために、 オペレーティングシステム223a-dは、イベントを表す電気信号を受信するとアクセスする。例えば、電気信号はトリガー106、ボタン、キーパッド108および／またはタッチスクリーン104のうちの1つ以上を有するユーザ相互作用に基づいて伝達されることができる。バーチャル・マシン224aは、1つのオペレーティングシステム223a-dを優先させることにより、または、指示を優先させることによりオペレーティングシステム223a-dアクセス、プロセス、および／または、一つ以上の他のオペレーティングシステム223a-dの上の1つのオペレーティングシステム223a-d発行のスレッドを切替えるように構成されることができる。この種のスケジューラ（フレキシブルオペレーティングシステム優先権を提供するように構成される）の１つの典型的な実施形態は「Fine Grain OS Scheduling」と名付けられた米国特許出願番号第12/376,822号に開示され、リファレンスとしてここにて組み込まれる。好ましい実施形態では、仮想マシン224aは、割り込みルーチンやスリープ、アイドル、ハイバーネイトなどのインスタンス化など、現在のオペレーティングシステムを一時停止することによってオペレーティングシステム223a-dのアクセスをシステムリソース200に切り替え、オペレーティングシステム・アーキテクチャによって提供されるような一時停止ユーティリティを実行し、ユーザ入力、所定の順序に基づいて、または好ましくはプロセッサ216または他のシステムリソース200の制御を復活させることによって、最後のオペレーティングシステムに、スイッチの前に制御が与えられるように、別のオペレーティングシステムを起動させるるように構成される。サスペンドユーティリティオペレーションの典型的な実装は、「Computer System Capable of Fast Switching Between Multiple Operating Systems and Applications」と名付けられた米国特許第7,356,677号に記載され、リファレンスとしてここに組み入れられる。オペレーティングシステムがネイティブサスペンドユーティリティを有しない実施形態では、仮想マシン224aは、プログラム・カウンタ、プロセス制御ブロック、および／または、メモリ/レジスタ、メモリマップ、テーブル、および/またはリスト値を含むデータ記憶手段にコンテキストを保存するように構成され、オペレーティングシステムが制御を失うことにより、コンテキスト・スイッチを逆にすることによって、ユーザの指示に従って制御を再開することができる。
【００２０】
[0027]  依然として図３を参照すると、本発明によるPDT 200の一例では、ウィンドウ
ズアプリケーション226aは、ターゲット214（例えばバーコード）のイメージを獲得し、
任意に復号化するように、イメージング202および照明208のアセンブリを制御するためにWindows Mobileオペレーティングシステム223aと通信するように構成される少なくともスキャンドライバ・アプリケーション・プログラム225を含む。具体的には、呼び出される
とき、スキャンドライバ・アプリケーション・プログラム225は、Windows特有のフォーマットのバイナリの情報を含んでいるファイルを生成してコンパイルされ、次いで、Windows Mobileオペレーティングシステム223aによって解釈され、それぞれの命令を決定するのに用いられる。Windowsフォーマットのスキャンドライバ・アプリケーション・プログラ
ム225に関して記載されているにもかかわらず、他の実施形態では、Linuxアプリケーション226b、Android アプリケーション226cまたは他のいかなるアプリケーション226dの一つ以上が、それぞれのオペレーティングシステムと通信するように構成されるスキャンドライバ・アプリケーション・プログラム225を含む。
【００２１】
[0028]  したがって、PDT 200は、上記の通り、オペレーティングシステム223a-dのうちの2つ以上の間で切り替え、例えばキーパッド108ボタン、スイッチ、および／または、タッチスクリーン104のボタンとユーザ相互作用するとき、バイナリ・ファイルを生成するために任意にハイレベルコードをコンパイルすることによりスキャンドライバ・アプリケーション・プログラム225を初期化するように構成され、バイナリ・ファイルに含まれる情報に基づいてバーチャル・マシン224aに命令を伝え、バーチャル・マシン224aにより命令を翻訳させ、必用であればまたはさもなければ、プロセッサ216の命令セットアーキテクチャによりプロセッサ216に命令を通信させる。その後、ある実施形態では、バーチャル・マシン224aは、スキャンドライバ・アプリケーション・プログラム225が、例えば、キーパッド108のボタンを有するユーザ相互作用またはトリガー106を有する次の相互作用のような他のイベントまで通信するように構成されるオペレーティングシステム223a-dを有するプロセッサ216の制御を維持するように構成される。
【００２２】
[0029]  別の実施形態では、PDT200は、バーコードスキャン試行イベントを示す電気信号を生成するトリガー106のプレスに基づいて、２つ以上のオペレーティングシステム223a-dのいずれかを切り替えるように構成される。したがって、本実施形態では、トリガー106を有するユーザ相互作用では、例えば、スキャンドライバ・アプリケーション・プログラム225は、インスタンスが生成される。スキャンドライバ・アプリケーション・プログラム225は、オペレーティングシステム223a-dのうちの１つと通信するように構成されることができ、したがって、トリガー106のプレスに、バーチャル・マシン224aは、上記の通りに、オペレーティングシステム223a-dをスキャンドライバ・アプリケーション・プログラム225が通信するように構成されるそのオペレーティングシステム223a-dに切り替えるように構成される。スキャンドライバ・アプリケーション・プログラム225は、バーコードスキャン試行の完了を仮想マシン224aに通信するようにさらに構成することができ、仮想マシン224aは、オペレーティングシステム223a-dを、スキャン試行の前に制御を有するオペレーティングシステム223a-dおよび／または他のオペレーティングシステム223a-dに戻すように切り替えるように構成することができる。
【００２３】
[0030]  さらに別の実施形態では、バーチャル・マシン224aは、成功したバーコードデコード試行イベントに基づいて、１つまたは複数のシステムリソース200のオペレーティングシステム223a-d制御を切り替えるように構成される。この実施形態では、スキャンドライバ・アプリケーション・プログラム225は、センサ206から取り出されたピクセルデータに符号化されたバーコード・データを復号するように構成されたプログラム命令を含む別個のソフトウェア・アプリケーションプログラムを含むか、または自動的にインスタンス化するようにさらに構成される。したがって、スキャンドライバ・アプリケーション・プログラム225は、バーコードデコード試行の成功および/または失敗をバーチャル・マシン224aに伝達するように構成されている。バーチャル・マシン224aは、バーコードデコード動作が成功すると、上記のようなプロセッサ216などの一つ以上のシステムリソース200の制御を別のオペレーティングシステム223a-dに切り替えるように構成される。
【００２４】
[0031]  さらに別の実施形態では、仮想マシン224aは、センサ206によって通信されるピクセルデータに含まれる任意のバーコードに符号化されたデータに基づいて、オペレーティングシステム223a-dを一つ以上のシステムリソース200の制御に切り替えるように構成される。本実施形態では、ドライバ・アプリケーション・プログラム225が、別々のソフトウェア・アプリケーションプログラムを含み、または、自動的にインスタンスを生成するために更に設定されるスキャンが構成される指示がセンサ206から取り出されるピクセルデータにおいてコード化されるいかなるバーコード・データも復号化するようにプログラムすることを含む。したがって、イメージングスキャンドライバ・アプリケーション・プログラム225は、スキャンされたバーコードでコード化されたデータを表す情報および/または値を仮想マシン224aに通信するように構成され、仮想マシン224aは、この情報を解釈して、その値が、オペレーティングシステム223a-dスイッチを示す予め設定されたスイッチ情報値と一致するかどうかを判断する。予め設定された値は、製造者によってデータ格納手段222に記憶することができ、または、キーパッド108とのやりとりや、ユーザ入力インターフェースによって解釈され、データ格納手段に記憶されるなど、ユーザによって入力されてもよい。
【００２５】
[0032] ホスト・オペレーティングシステムとゲストオペレーティングシステムと間の仮想マシン
[0033]  図４を参照すると、バーチャル・マシン224b-dは、アプリケーション226b-dによって通信されるゲストオペレーティングシステム223b-d（例えば、Linuxオペレーティングシステム223b、Androidオペレーティングシステム223c、または任意の他のオペレーティングシステム223d）から命令を受信し、PDTハードウェア・システムリソース200と通信するために、Windows Mobileなどのホスト・オペレーティングシステム223aに必要に応じて変換された命令を通信するように構成される。バーチャル・マシン224bによってホスト・オペレーティングシステム223aに伝達される命令は、PDTハードウェア200およびプロセッサ216の命令セットアーキテクチャに対応する。この実装では、各々のバーチャル・マシン224b-dは、一つ以上のゲストオペレーティングシステム223b-dおよび関連するアプリケーション226b-dのためのコンテナとしてのホスト・オペレーティングシステム223aの上で作動する。
【００２６】
[0034]  さらに図４を参照すると、本発明のある実施形態では、システムリソース200、特にプロセッサ216のオペレーティングシステム223a-dの制御を直接ユーザ管理するために、ホストWindowsオペレーティングシステム223aとの通信を介して、システムリソース200への仮想マシン224b-dアクセスは、例えば、ボタン、キーパッド108、および／またはタッチスクリーン104のうちの１つ以上のようなユーザ・インターフェースデバイスとのユーザ相互作用を表す電気信号の受信によって決定される。指示された仮想マシン224b-dがまだ実行されていない場合、ユーザ・インターフェースデバイスとのユーザ相互作用により、PDT200は示された仮想マシン224b-dをインスタンス化する。バーチャル・マシンは、同じインタフェースデバイスとの連続的な相互作用の所定の順序によって指示することができ、あるいは、それぞれのオペレーティングシステム223b-dへのスイッチを示す別個のインタフェース装置を提供することができる。バーチャル・マシン224b-dおよび関連するオペレーティングシステム223b-dが実行されるか、または指示されたバーチャル・マシン224b-dが既に実行されている場合、PDT200とのその後のユーザ相互作用は、命令をそれぞれのバーチャル・マシン224b-dに通信するオペレーティングシステム223b-dによって解釈され、それぞれのバーチャル・マシン224b-dは、命令を変換し、翻訳された命令をホストWindowsオペレーティングシステム223aに通信し、その後ホストは命令セットアーキテクチャに基づいてプロセッサ216と通信する。バーチャル・マシン224b-dは、ホストのWindowsオペレーティングシステム223a上で動作するプログラムであるため、ユーザ・インタフェースデバイスとのユーザ相互作用によって示されるように、コンテキストを切り替え、および/またはスレッドまたはプロセスを優先させることができ、Windowsオペレーティングシステムで動作している場合、他のアプリケーションプログラムと同様に切り替えることができる。ある実施形態では、インスタンス化および／またはバーチャル・マシン224bへの切り替えの際に、Windowsオペレーティングシステム223aは、ディスプレイインタフェース232と通信して、ディスプレイ104に、このバーチャル・マシン224b-d／オペレーティングシステム223b-dが現在、一つまたは複数のシステムリソース200を制御するためにWindowsオペレーティングシステム223と通信していることを指示させるように構成することができる。
【００２７】
[0035]  図4に示す本発明の典型的な他の実施形態において、Windowsアプリケーション226aは、スキャンドライバ・アプリケーション・プログラム225を含む。Linux 223b、Android 223cまたは他のいかなるオペレーティングシステム223dと通信するように構成され
るスキャンドライバ・アプリケーション・プログラムがまた、企図される。本実施形態では、システムリソース200の制御は、バーコード復号化の試みを示すトリガー/スキャンボタン106とのユーザ相互作用の際に、仮想マシン224b-dからホストWindowsオペレーティングシステム223aにスイッチされ、その結果、例えば、スキャンドライバ・アプリケーション・プログラム225はインスタンス生成される。他の実施形態では、システムリソース200
の制御は、バーコード復号化を試み、バーコード復号化が成功し、および／または、キャプチャされたピクセルデータに包含されたバーコードにエンコードされた情報／値に基づいて、仮想マシン(2)からホストWindowsオペレーティングシステム223aまで切替えられることができる。オペレーティングシステム制御は、上述した一つ以上のいかなる方法によって、ホストWindowsオペレーティングシステム223a、または、他のバーチャル・マシン224b-dへの切り替えの前に作動しているバーチャル・マシン224b-dに返される。この典型
的な実施形態が、ホストWindowsオペレーティングシステムに関して記載されていて、ス
キャンドライバ・アプリケーション・プログラム225と関連しているけれども、いかなる
オペレーティングシステムもホスト・オペレーティングシステム、バーチャル・マシンの全ての順列および関連するオペレーティングシステムであってよく、スキャンドライバ・アプリケーション・プログラム225は、ホスト・オペレーティングシステムと通信するよ
うに構成されることができる、または、スキャンドライバ・アプリケーション・プログラム225は一つ以上のアプリケーション226b-dであってよい。
【００２８】
[0036]  ホスト・オペレーティングシステムとゲストアプリケーションと間の仮想マシン
[0037]  図５を参照すると、本発明の典型的な実施形態は、例えば、オペレーティングシステム223bがスキャンドライバ・アプリケーション・プログラム225のようなARM命令セット・アーキテクチャ（例えばWindowsアプリケーション・プログラム226aのような第1のアプリケーション・プログラム）を有するプロセッサ216と通信するように構成したLinuxホスト計算機のような、第１のオペレーティングシステムを格納するように構成されるデータ格納手段222を含むとき、例えば、第２のオペレーティングシステム（インストール
されていない）（例えば指示を受け入れて、ターゲット214のイメージを表しているピク
セルデータを得るために指示によればイメージング・アセンブリ202および照明アセンブ
リ208と通信するように構成されるWindowsプラットフォーム223aおよびバーチャル・マシン・アプリケーション224e）によって、理解できるフォーマットの指示を伝達するように構成されることを示す。本実施形態では、Linuxアプリケーション・プログラム226bは、Linuxオペレーティングシステム223bと直接通信するが、しかし、Windowsアプリケーショ
ン・プログラム225、226aはバーチャル・マシン224eによるLinuxオペレーティングシステム223bと通信する。他のおよび／または追加的なホスト・オペレーティングシステム223
、バーチャル・マシン224およびアプリケーション・プログラム226を含む他のPDT 200の
実施形態が企図される。
【００２９】
[0038]  したがって、図５の例示的PDT200は、ユーザがキーパッド108のボタンおよび／またはトリガ106と相互作用すると、得られた電気信号をホストLinuxオペレーティングシステム223bに通信するように構成され、コンパイルされたスキャンドライバ・アプリケーション・プログラム225を自動的にインスタンス化するように構成されたバーチャル・マシン224eをインスタンス化するコマンドとして解釈され、Windowsフォーマットの出力は、バーチャル・マシン224eによって解釈され、Linuxホスト・オペレーティングシステム223bに変換されて伝達され、それによって、PDTハードウェア200のイメージング・アセンブリが動作する。例えば、上記の通りに、指示、プロセスおよび／またはアプリケーション226bに関するスレッドを優先させることによって、またはさもなければ、バーチャル・マシン224eをアイドリング/サスペンディングすること、バーコード復号化の試行の完了、バーコード復号化の成功によって、および／または、スキャンされたバーコードに復号化された情報／値に基づいて、キーパッド108のボタンおよび／またはトリガー106との次のユーザ相互作用に応じて、システムリソース200の制御は、バーチャル・マシン224eから切替えられることができる。
【００３０】
[0039]  本発明の原理を本明細書に記載してきたが、当業者には、この説明は単なる例示であり、本発明の範囲を限定するものではないことを理解する。本明細書に示し説明した例示的な実施形態に加えて、他の実施形態も本発明の範囲内であると考えられる。当業者による修正および変更は、本発明の範囲内にあると考えられ、以下の特許請求の範囲の記載を除いて限定されるものではない。
【図１Ａ】
0006266673.tif 000002
【図１Ｂ】
0006266673.tif 000003
【図２ａ】
0006266673.tif 000004
【図２ｂ】
0006266673.tif 000005
【図３】
0006266673.tif 000006
【図４】
0006266673.tif 000007
【図５】
0006266673.tif 000008