(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] したがって、構成されるポータブルデータ端末の必要性が、一つ以上のデバイス・ドライバおよび／または他のソフトウェア・アプリケーション・プログラムの携帯性の必要をそれによって減らしている能率的に、そして、便利に支持少なくとも2つのプラットフォームにある。
【図面の簡単な説明】
【０００９】
【図１Ａ】印刷証印（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を参照すると、本発明のPDT 200aから一緒に成る基本的構造のブロック略図が示される。PDT 200aは、ターゲット214a（例えばターゲット214aのイメージを受信して、その中で光学的にコード化されるピクセルデータを表す電気的な出力信号を生成するためのバーコードおよびイメージング・アセンブリ202a）を照らすための照明アセンブリ208aを含む。照明アセンブリ208aは、ターゲット214aの方向に光源212から光を導くための照明光学系210（例えば一つ以上の反射器）と共に、少なくとも一つの光源212を含む。光源212は、例えば、近赤外線範囲の光および／または、可視範囲の光を発するように構成される少なくとも一つのＬＥＤを発するように構成される少なくとも一つのＬＥＤを含む。イメージング・アセンブリ202aは、2Dセンサ206（例えば、センサ206上のターゲット214aのイメージを受信し、焦点合わせさせるためのイメージング光学素子204に加えて、CCD、CMOS、NMOS、ＰＭＯＳ、CIDまたは、CMD半導体イメージ・センサ）を含む。
【００１２】
[0018]  依然として図２ａを参照すると、PDT 200aは、プロセッサ216a（例えば、マイクロプロセッサ、VLSI、ASIC、および／または、当業者に周知の命令セット・アーキテクチャを有する他の集積回路マイクロプロセッサ）を更に含む。プロセッサ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]  PDT 200aも一つ以上の電力供給228a（例えば交流を受信するための一つ以上の電池および／または回路）を含み、ユーザはユーザー入力装置（例えばキーボード、キーパッド108、トリガー/スキャンボタン106および／またはタッチスクリーン104）から、データを受け取るためのインタフェース230aを入力する。図2aに示されるPDT 200aシステムコンポーネントは、好ましくは一つ以上のプリント回路基板（図示せず）でサポートされる。
【００１４】
[0020]  図2bを参照すると、本発明によるPDT 200bから一緒に成る基本的構造のブロック略図が示される。PDT 200bは少なくとも一つのミラー240（例えばフォールドミラーおよび／または発振および／または回転スキャンミラー）上へ導かれる少なくとも一つのレーザー光線を生成するために少なくとも一つのレーザー発生器242のための少なくとも一つのレーザー・コントローラ244を含んでいる照明アセンブリ208bを含み、それはそれからターゲット214b上へ光線を導く。レーザー光線/スキャン・パターンは、ターゲット214bから離れて反映され、例えば、一つ以上のレーザー光パス・フィルタ246、一つ以上のフォトダイオード248、アンプ250およびデジタイザ252を含むイメージング・アセンブリ202bに、少なくとも一つのミラー240によってリダイレクトされる。追加的なレーザー発生器およびレーザー・コントローラは、例えば、形状、高さ、幅、角度および／または距離において異なっているレーザー光を出力するために提供されることができる。フォトダイオード248は、入射光エネルギーをデジタイザ（Digitizer）252がターゲット214bの中で反射される照明のデジタル信号の代表に、フォトダイオード248によってアナログ信号出力を変換するターゲット214bを離れて反射される光の出力信号代表である電荷に変換する。
【００１５】
[0021]  依然として図2bを参照すると、PDT 200bはプロセッサ216b（例えばマイクロプロセッサ、VLSI、ASICおよび／または当業者に周知の命令セット・アーキテクチャを有する他の集積回路マイクロプロセッサ）を更に含む。プロセッサ216bは、イメージ/ピクセルデータを含むデータを受信し、出力し、処理するように構成されることができ、照明208bおよびイメージング202bアセンブリを作動することができ、他の動作中で、システムバス238bと通信することができる。更に、プロセッサ216bはネットワークインターフェース234b（例えば、RS-232、RS-485、USB、イーサネット、Wi-Fi、Bluetooth（登録商標）、IrDAまたはZigbeeインターフェース）を介して、PDT 200bまで外部のリモート・コンピュータまたはホスト計算機サーバ236bのプロセッサへ／から、データの送受信を制御するように構成されることができ、スキャン/トリガー・ボタン106および／またはキーパッド108でユーザ相互作用を管理するためにユーザ入力インタフェース230bを制御し、下で詳細に説明するように、他の機能中、表示インタフェース232bによる出力デバイス104（例えばLCDまたはOLEDディスプレイ）を制御するように構成される。プロセッサ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]  依然として図3を参照すると、システムリソース200および特にプロセッサ216のオペレーティングシステム223a-d制御のユーザ管理を直接提供するために、本発明の一実施形態では、バーチャル・マシン224aは、イベントを表している電気信号を受けると、オペレーティングシステム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]  別の実施形態では、PDT 200はバーコードスキャン試みイベントを示している電気信号を生じているトリガー106プレスに基づいて、2つ以上のオペレーティングシステム223a-dのいずれかの間で切り替えをするように構成される。したがって、本実施形態では、トリガー106を有するユーザ相互作用では、例えば、スキャンドライバ・アプリケーション・プログラム225は、インスタンスが生成される。スキャンドライバ・アプリケーション・プログラム225は、オペレーティングシステム223a-dのうちの1つと通信するように構成されることができ、したがって、トリガー106のプレスに、バーチャル・マシン224aは、上記の通りに、オペレーティングシステム223a-dをスキャンドライバ・アプリケーション・プログラム225が通信するように構成されるそのオペレーティングシステム223a-dに切り替えるように構成される。スキャンドライバ・アプリケーション・プログラム225は、更にスキャン試みの前におよび／または他のいかなるオペレーティングシステム223a-dにも制御を有したオペレーティングシステム223a-dへ、オペレーティングシステム223a-dを切替えるように構成されることができるバーチャル・マシン224aのバーコードスキャン試みの完成を伝達するように構成されることができる。
【００２３】
[0030]  さらに別の態様では、バーチャル・マシン224aは、オペレーティングシステム223a-d制御を切替えるように構成され、または、成功したバーコードに基づくより多くのシステムリソース200は試みイベントを復号化する。本実施形態におけ、ドライバ・アプリケーション・プログラム225が別々のソフトウェア・アプリケーションプログラムを含み、または、自動的にインスタンスを生成するために更に設定されるスキャンが構成される指示がセンサ206から取り出されるピクセルデータにおいてコード化されるいかなるバーコード・データも復号化するようにプログラムすることを含む。したがって、スキャンドライバ・アプリケーション・プログラム225は、バーコードの成功および／または失敗がバーチャル・マシン224aの試みを復号化することを通信するように構成される。バーチャル・マシン224aは、一つ以上のシステムリソース200の制御を切替えるように構成され、プロセッサ216のような、上記の通りに、成功したバーコードの他のオペレーティングシステム223a-dに対して動作を復号化する。
【００２４】
[0031]  さらに別の態様では、バーチャル・マシン224aは、センサ206によって伝達されるピクセルデータに含まれるいかなるバーコードにもおいてコード化されるデータに基づいて、一つ以上のシステムリソース200のオペレーティングシステム223a-d制御を切替えるように構成される。本実施形態では、ドライバ・アプリケーション・プログラム225が、別々のソフトウェア・アプリケーションプログラムを含み、または、自動的にインスタンスを生成するために更に設定されるスキャンが構成される指示がセンサ206から取り出されるピクセルデータにおいてコード化されるいかなるバーコード・データも復号化するようにプログラムすることを含む。したがって、イメージングスキャンドライバ・アプリケーション・プログラム225は情報および／または値を伝達するように構成され、データが、値が予め設定されたスイッチにオペレーティングシステム223a-dスイッチを示している情報値に合うものを見つけるかどうか決定するために情報を解釈するバーチャル・マシン224aに対して、スキャンされたバーコードにおいてコード化されることを表す。予め設定された値は製造業者によるデータ格納手段222に保存されることができ、または、キーパッド108で相互作用によって例えばユーザによって始めることができ、翻訳される際に、ユーザはインタフェースで入力して、データ格納手段に保存する。
【００２５】
[0032] ホスト・オペレーティングシステムとゲストオペレーティングシステムと間の仮想マシン
[0033]  図４を参照すると、バーチャル・マシン224b-dは、アプリケーション226b-dによって通信する際に、ゲストオペレーティングシステム223b-dからの命令を受けるように構成されるように示され、かかるオペレーティングシステムは、例えば、Linuxオペレーティングシステム223b、アンドロイド・オペレーティングシステム223cまたは他のいかなるオペレーティングシステム223dであってよく、必要に応じて、PDTハードウェア・システムリソース200と通信するためにホスト・オペレーティングシステム223a（例えばWindows Mobile）に翻訳される際に、指示を伝達する。ホスト・オペレーティングシステム223aにバーチャル・マシン224bによって伝達される指示は、PDTハードウェア200およびプロセッサ216の命令セット構造と一致する。この実装では、各々のバーチャル・マシン224b-dは、一つ以上のゲストオペレーティングシステム223b-dおよび関連するアプリケーション226b-dのためのコンテナとしてのホスト・オペレーティングシステム223aの上で作動する。
【００２６】
[0034]  依然として図４を参照すると、本発明のある実施形態では、システムリソース200および特にプロセッサ216のオペレーティングシステム223a-d制御の直接のユーザ管理にシステムリソース200へのバーチャル・マシン224b-dアクセスを提供するために、ホストWindowsオペレーティングシステム223aとの通信で、例えば、ボタン、キーパッド108および／またはタッチスクリーン104のうちの1つ以上のようなユーザ・インタフェースデバイスとユーザ相互作用を表している電気信号を受け取ることにより判断された。ユーザ・インタフェース装置を有するユーザ相互作用は、PDT 200に示されたバーチャル・マシン224b-dがすでに動作していない場合、示されたバーチャル・マシン224b-dのインスタンスを生成させる。バーチャル・マシンは同じインターフェイス装置を有する連続した相互作用の予め定められた命令によって示されることができ、または、別々のインターフェイス装置はそれぞれのオペレーティングシステム223b-dに、スイッチを示して提供されることができる。いったん、バーチャル・マシン224bdの関連するオペレーティングシステム223b-dが動作し、または、示されたバーチャル・マシン224b-dがすでに動作している場合、指示を翻訳するそれぞれのバーチャル・マシン224b-dに、指示を伝え、それからその命令セット・アーキテクチャに基づいてプロセッサ216と通信するホストWindowsオペレーティングシステム223aに、翻訳された指示を通信するオペレーティングシステム223b-dによって、PDT 200を有する次のユーザ相互作用は解釈される。バーチャル・マシン224b-dが、ホストWindowsオペレーティングシステム223a上で動作するプログラムであるとき、コンテキストは切替えられることができ、および／または、ユーザ・インタフェース装置を有するユーザの相互作用によって示されるように、他のいかなるアプリケーション・プログラムも切替えられることができるちょうどその時、Windowsオペレーティングシステムで作用するとき、スレッドまたはプロセスは優先順位を決定される。ある実施形態では、例示および／またはバーチャル・マシン224bへの切り替えの即座に、Windowsオペレーティングシステム223aは、バーチャル・マシン224b-d/オペレーティングシステム223b-dが、Windowsオペレーティングシステム223と現在通信しているかについて指し示すようにディスプレイ104に一つ以上のシステムリソース200を制御させるために表示インターフェース232に知らせるように構成される。
【００２７】
[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を有するユーザ相互作用に応じて、コンパイルされるスキャンドライバ・アプリケーション・プログラム225のインスタンスを自動的に生成するように構成されるバーチャル・マシン224eのインスタンスを生成しなさいという命令として解釈されるホストLinuxオペレーティングシステム223bと、結果として生じる電気信号を通信するように構成され、ウインドウズフォーマット出力は、バーチャル・マシン224eによって解釈され、翻訳され、PDTハードウェア200のイメージング・アセンブリをそれによって作動するLinuxホスト・オペレーティングシステム223bと通信する。例えば、上記の通りに、指示、プロセスおよび／またはアプリケーション226bに関するスレッドを優先させることによって、またはさもなければ、バーチャル・マシン224eをアイドリング/サスペンディングすること、バーコード復号化の試みの完了、バーコード復号化の成功によって、および／または、スキャンされたバーコードに復号化された情報／値に基づいて、キーパッド108のボタンおよび／またはトリガー106を有する次のユーザ相互作用に応じて、システムリソース200の制御は、バーチャル・マシン224eから切替えられることができる。
【００３０】
[0039]  本発明の原則が本願明細書において記載されると共に、それはこの説明が例示として作られるだけであり、当業者によって、本発明の範囲に関する限定とさないと理解される。他の実施形態は、本願明細書において図と共に記載される典型的な実施形態に加えて、本発明の範囲内で企図される。当業者による修正および変更は、本願発明の範囲を逸脱することなく考慮され、以下の特許請求の範囲に限定されない。
【図１Ａ】
0005896709.tif 000002
【図１Ｂ】
0005896709.tif 000003
【図２ａ】
0005896709.tif 000004
【図２ｂ】
0005896709.tif 000005
【図３】
0005896709.tif 000006
【図４】
0005896709.tif 000007
【図５】
0005896709.tif 000008