Oracle Sensor Edge Server ガイド 10g(10.1.3.1.0) B31872-01 |
|
この章ではOracle Sensor Edge Mobileについて説明します。この章の内容は次のとおりです。
モバイルのOracle Sensor Edge Server(Sensor Edge Mobile)は、バーコードの読取りとRFIDタグの読書きを行うドライバで構成されたクライアント側(Pocket PC専用)アプリケーション(図5-1)です。
アーキテクチャは、アプリケーションと直接通信できるディスパッチャが含まれるという点で、Oracle Sensor Edge Serverのアーキテクチャと共通しています。たとえば、Sensor Edge Mobileには、ActiveXコントロールと対話するディスパッチャが含まれます。このため、JavaScriptを使用してHTMLで記述された管理ページによって、ドライバを制御し、返されたデータを表示または発行することができます。
Sensor Edge Mobileは、センサー・デバイスとアプリケーションの間に位置します。Sensor Edge Mobileは、様々なタイプのセンサーおよびデバイスとのインタフェースとして機能する一方で、フィルタリングされたデータ・イベントをアプリケーションに送信します。通信は双方向です。イベントはプラットフォームを介してデバイスからアプリケーションに渡され、命令はプラットフォームを介してアプリケーションからハードウェア・デバイス・ドライバに渡されます。
Sensor Edge Mobileサービスは、完全に携帯情報端末上で稼働し、他のアプリケーションや外部のサービスと通信できます。また、完全にオフラインで実行して、データを収集し、後から外部アプリケーションと同期化することもできます。イベントは、収集デバイスからドライバに送信されます。イベントは、ディスパッチャにより処理可能になるまで、キューによって収集されます。ディスパッチャは、ActiveXコントロールを介して、文字をキーボード・バッファに送信することにより(または他のほとんどあらゆる通信方法によって)、アプリケーションと通信できます。同時にアクティブにできるディスパッチャは1つのみですが、そのディスパッチャは複数のクライアント・デバイスおよび任意の数のドライバと同時に通信できます。
Sensor Edge Mobileのコード・コンポーネントには、ドライバ・マネージャ、イベント・マネージャおよび構成マネージャが含まれます。これらのコンポーネントが起動されると、メイン・サービスによって構成マネージャが呼び出され、構成ファイルが読み取られます。次に構成済のディスパッチャが起動され、指定されている構成パラメータが渡されます。
ドライバ・マネージャは、ドライバをロードし、そのライフ・サイクルを管理します。ドライバ・マネージャは構成マネージャを呼び出して、ロードする必要のあるドライバと、インスタンス化時にドライバに対して使用可能にするパラメータを判別します。次に、それらのドライバをロードしてインスタンス化します。ドライバ・マネージャは内部でスレッドを保持しませんが、プラットフォームが実行されている間は、コア・インスタンスによりドライバ・マネージャのインスタンスが保持されます。
Sensor Edge Mobileには、イベント・マネージャとドライバ・マネージャが1つずつだけ存在します。ドライバ・マネージャは任意の数のドライバをロードできます。
Sensor Edge Mobileの設計は、アプリケーション・プログラマがデバイスから発信されたイベントに簡単にアクセスし、デバイスに命令を発行できるようになっています。アプリケーションは、直接ディスパッチャと通信することも、(ActiveXコントロールなどの)別のレイヤーを介してディスパッチャと通信することもできます。
アプリケーションは、次のような手段により、Sensor Edge Mobileとのインタフェースとして機能します。
ドライバと現行ディスパッチャは、Oracle Sensor Edge Mobileサービスの起動時に構成情報を取得します。この構成は、名前/値ペアで構成されるパラメータとして表されます。
ドライバと現行ディスパッチャは、Sensor Edge Mobileアプリケーションと同じディレクトリ内にあるEdgeMobileCofig.xml
(例5-1)内で構成します。このファイルでは、<CurrentDispatcher>
パラメータ内のサービスにより使用される1つのディスパッチャと、<DeviceList>
要素内にロードされたドライバが記述されます。これらの要素は異なるパラメータ値を渡します。例5-1では、現行ディスパッチャとしてキーボード・ディスパッチャが設定され、(IP3Driver
という名前の)Intemec IP3ドライバ(このファイル内で定義されている唯一の<device>
要素)が設定され、必要なパラメータが渡されています。
<EdgeMobileConfig> <CurrentDispatcher> <Name>Keyboard Dispatcher</Name> <Version>1.0</Version> <Description>Keyboard Dispatcher</Description> <Library>KeyboardDispatcher.dll</Library> <Parameters> <Param name="DestinationApplication" value="Telnet"/> <Param name="RFIDReadMacro" value="TelnetMultipleRFID"/> <Param name="BarcodeReadMacro" value="TelnetMultipleBarcode"/> <Param name="TelnetSingle" type="KeySequenceMacro"> <tab/><tab/>RFID<tab/> <data name="TagID"/> <tab/> <data name="TagData"/> <cr/> </Param> <Param name="TelnetMultipleRFID" type="KeySequenceMacro"> <tab/><tab/>RFID<tab/> <Repeat> <data name="tag_id"/> <tab/> <data name="data"/> <Separator> <tab/><tab/> </Separator> </Repeat> <Cr/> </Param> <Param name="TelnetMultipleBarcode" type="KeySequenceMacro"> <tab/><tab/>Barcode<tab/> <Repeat> <data name="data"/> <Separator> <tab/><tab/> </Separator> </Repeat> <Cr/> </Param> </Parameters> </CurrentDispatcher> <DeviceList> <Device> <Name>IP3Driver</Name> <Version>1.1</Version> <Description>Intermec RFID IP3 driver</Description> <Library>IP3Driver.dll</Library> <Parameters> </Parameters> </Device> </DeviceList> </EdgeMobileConfig>
キーボード・ディスパッチャは、データを収集し、データをキーボード・バッファに入力し、キーボード・コードをマクロに入力します。このマクロにより、TelnetセッションやWebブラウザなどのアプリケーションの実行中にユーザーの入力がシミュレーションされます。キーボード・ディスパッチャは次の操作を(次の順序で)実行します。
KeySequenceMacro
言語で指定された制御文字を送信します。
ロードするディスパッチャおよびドライバを指定し、これらの拡張機能に構成パラメータを渡すには、EdgeMobileConfig.xml
を変更します。Sensor Edge Mobileでキーボード・ディスパッチャを使用するには、例5-2に示すように、構成ファイルの<CurrentDispatcher>
要素としてキーボード・ディスパッチャを定義する必要があります。
<CurrentDispatcher> <Name>Keyboard Dispatcher</Name> <Version>1.0</Version> <Description>Keyboard Dispatcher</Description> <Library>KeyboardDispatcher.dll</Library> <Parameters> <Param name="DestinationApplication" value="Telnet"/> <Param name="RFIDReadMacro" value="TelnetMultipleRFID"/> <Param name="BarcodeReadMacro" value="TelnetMultipleBarcode"/> <Param name="TelnetSingle" type="KeySequenceMacro"> <tab/><tab/>RFID<tab/> <data name="tag_id"/> <tab/> <data name="data"/> <enter/> </Param> <Param name="TelnetMultipleRFID" type="KeySequenceMacro"> <tab/><tab/>RFID<tab/> <Repeat> <data name="tag_id"/> <tab/> <data name="data"/> <Separator> <tab/><tab/> </Separator> </Repeat> <enter/> </Param> <Param name="TelnetMultipleBarcode" type="KeySequenceMacro"> <tab/><tab/>Barcode<tab/> <Repeat> <data name="data"/> <Separator> <tab/><tab/> </Separator> </Repeat> <enter/> </Param> </Parameters> </CurrentDispatcher>
DestinationApplication
パラメータは、キーボード・バッファによりSensor Edge Mobileサービスからの文字データが送信される前にフォーカスを移すアプリケーションの名前を定義します。このパラメータの構文は次のとおりです。
<Param name="DestinationApplication" value="Telnet"/>
アプリケーションのパスではなく、アプリケーション名そのもの(例5-1では"Telnet"
)を指定します。ほとんどのアプリケーションでは、アプリケーション・ウィンドウの最上部に、ドキュメント名とダッシュに続いてこの名前が表示されます(たとえば、Microsoft Wordアプリケーションの場合は「Doc1.doc - Microsoft Word」)。
このようなアプリケーション・ウィンドウが複数開いている場合は、その中で最も前面にあるウィンドウ("z-order"の最初のウィンドウ)が前面になり、アクティブになります。
RFIDReadMacro
パラメータは、RFID読取りによる測定データに使用する構成ファイル内のキー・シーケンス・マクロを定義します。このパラメータにより、構成ファイル内のキー・シーケンス・マクロを多数定義できます。そのうちの1つを選択するには、このパラメータ内に目的のマクロ名を挿入します。このパラメータの構文は次のとおりです。
<Param name = "RFIDReadMacro" value = "TelnetMultipleRFID"/>
BarcodeReadMacro
パラメータは、バーコード読取りによる測定データに使用する構成ファイル内のキー・シーケンス・マクロを定義します。このパラメータにより、構成ファイル内のキー・シーケンス・マクロを多数定義できます。そのうちの1つを選択するには、このパラメータ内に目的のマクロ名を挿入します。このパラメータの構文は次のとおりです。 <Param name="BarcodeReadMacro" value="TelnetMultipleBarcode"/>
キーボード・ディスパッチャは、Sensor Edge Mobileにより収集されたデータを、ユーザーにより入力されたときと同じように受信側アプリケーションに送信します。既存のアプリケーションに対してこれを設定するには、まず、ブラウザまたはアプリケーション・ウィンドウのフォーカスを、データを受信する特定の入力コントロールに移動します。たとえば、タブ文字を特定の回数送信すると、フォーカスが特定の入力フィールドに移動します。また、データを送信する(またはアクティブにする)ための[Enter]キー入力を生成することもできます。アプリケーションに必要となる特定のキーストローク・シーケンスを指定するには、(例5-3に示すように)キー・シーケンス・マクロを定義する必要があります。
<Param name="TelnetSessionRFID" type="KeySequenceMacro"> <tab/><tab/>RFID<sp/>Data<tab/> <data name="tag_id"/> <tab/> <data name="data"/> <enter/> </Param>
例5-2では、パラメータに一意のユーザー定義名("TelnetSessionRFID"
)が指定されています。また、その属性type
を"KeySequenceMacro"
として指定する必要があります。マクロ本体には、一連の制御文字、指定されたスペース(<sp/>
)、および(ユーザーがキーボードで入力したときと同様に)データ値が送信される先を指定する1つ以上の<data>
タグが含まれます。
たとえば、データ値が"tag id"の場合にSensor Edge Mobileから送信される値が"123456789"で、RFIDタグからの"data"
の値が"0A0B0C0D0E0F"である場合、アプリケーションには次のシーケンスが送信されます。
¥t¥tRFID Data¥t123456789¥t0A0B0C0D0E0F¥r
ここで、¥t
はシーケンス内のタブ文字を表し、¥r
は改行([Enter])文字を表します。これにより、アプリケーション・ウィンドウの最初の入力フィールドにタブ移動し、"RFID Data"
(スペース文字コード<sp/>が必要)が入力されます。次にTagIDフィールドにタブ移動し、タグIDが入力され、TagDataフィールドを使用して同じルーチンが実行されます。最後に、改行([Enter])が送信されます。改行は、ボタンのクリック、データの発行、またはデータの保存に対して使用できます。
XML内の改行、タブおよびスペースはアプリケーションに送信されません。構成ファイル内のマクロのコンテンツは、不要な文字をアプリケーションに送信することなく、タブ移動および整形印刷できます。たとえば、例5-4では、"Macro1"
と"Macro2"
は同じ文字シーケンスを送信します。
<Param name="Macro1" type="KeySequenceMacro"> <data name="tag_id"/> <tab/> <data name="data"/> <enter/> </Param> <Param name="Macro2" type="KeySequenceMacro"><data name="tag_id"/><tab/><data name="data"/><enter/></Param>
キー・シーケンス・マクロを作成するには、送信先アプリケーションの入力フィールドおよびデータ・フィールドの入力場所に移動するために必要なキーストロークを記録します。次に、例5-4に示すように、このシーケンスをキー・シーケンス・マクロとして記述します。最後に、"RFIDReadMacro"
または"BarcodeReadMacro"
パラメータを新しいキー・シーケンス・マクロの名前(例5-5では"MyMacro"
)に設定します。
<Param name="RFIDReadMacro" value="MyMacro"/> <Param name="MyMacro" type="KeySequenceMacro"> <data name="tag_id"/> <tab/> <data name="data"/> <enter/> </Param>
これで、RFID読取りから発生したイベントによって、例5-5に示すキー・シーケンスが生成され、<data>
要素により指定された値が挿入されます。
これまでに示した例では、RFIDタグからの"tag_id"
および"data"
データ要素1セットのみを処理していました。このマクロを連続するこれらのデータ値の組に対しても有効にするには、繰返しの概念を定義する必要があります。<Repeat>
および<Separator>
マクロ要素を使用して、繰り返すキー・シーケンス・マクロ部分を指定し、次の繰返しに入る前にアプリケーションの次の行またはフィールドにフォーカスを移すために送信する文字シーケンスを指定します。
<Param name="TelnetMultipleRFID" type="KeySequenceMacro"> <tab/><tab/>RFID<tab/> <Repeat> <data name="tag_id"/> <tab/> <data name="data"/> <Separator> <tab/><tab/> </Separator> </Repeat> <enter/> </Param>
例5-6には、<Repeat>
および<Separator>
マクロ要素が示されています。これらの要素により、各データ・セットで繰り返すマクロのセクションと、次のデータ・セットに入る前に送信するシーケンスを指定します。
データ測定に3つの組を指定する場合、"Tag_id"と"data"値の組("Tag1"
、"Data1"
)、("Tag2"
、"Data2"
)および("Tag3"
、"Data3"
)を使用します。例5-6に示すマクロから生成されるシーケンスは、¥t¥tRFID¥tTag1¥tData1¥t¥tTag2¥tData2¥t¥tTag3¥tData3¥r
です。
このシーケンスを分解すると、<Repeat>
の前の部分は次のデータを1回送信します。
¥t¥tRFID¥t
繰返し部分<data name="tag_id"/><tab/><data name="data"/>
は次のデータを送信します。
Tag1¥tData1 Tag2¥tData2 Tag3¥tData3
<Separator>シーケンスで区切られた各部分は次のデータを送信します。
¥t¥t ¥t¥t
最後に、改行([Enter])で次のデータを1回送信します。
¥r
<Separator>
シーケンスはそれぞれの繰返しシーケンスを区切りますが、最後の繰返しシーケンスの後には続きません。この例では、最後のデータ値の組(この場合は"Tag3¥tData3"
)の後に"¥t¥t"セパレータ・シーケンスは送信されません。
アプリケーションで必要とされるキーボード・キー入力をシミュレーションするために、キーボード・シーケンス・マクロ内で特殊な制御シーケンスを使用できます(表5-1を参照)。
例5-6に示すように、リテラル文字のシーケンスを送信するには、<sp/>
および<tab/>
のようにスペースまたはタブを明示的に入力する必要があります。これ以外のタブおよびスペースがマクロ内にある場合、XMLの整形印刷フォーマットとして無視されます。これには別の理由もあります。タブおよびスペースを解析するためのXML標準では、要素間のこれらの「空白」すべてが保持されるわけではありません。空白が変更されると、マクロの処理も変更されて予測が困難になるためです。
<control char="x"/>
および<data name="tag_id"/>
マクロ要素(表5-2を参照)は、生成される制御キーまたはデータの入力場所を指定します。
要素 | 説明 |
---|---|
<control char="x"/> |
[Ctrl]+文字 |
<data name="tag_id"/> |
名前付きデータ値 |
特殊な<control>要素を指定すると、ユーザーが[Ctrl]キーを押しながら特定の文字を入力したときと同じように、制御シーケンスが生成されます。たとえば、[Ctrl]+[B]を生成するには、<control char="b"/>
を指定します。
<data>
要素を指定すると、測定イベント内のデータの現在の値がフェッチされて現在の位置に挿入されます。特定の名前とその意味(たとえば、"tag_id"
はRFIDタグのTag-IDを表すなど)は、名前と値の組としてアプリケーションに対して使用可能になります。<data>
要素の定義済の値を表5-3に示します。
(「キー・シーケンス・マクロによる繰返し要素処理の有効化」で説明されているように)<data>
要素を<Repeat>
要素と組み合せると、読取りにより複数のイベントが返された場合にデータ値のシーケンスを反復することができます。"block_index"および"block_count"データ値の詳細は、「測定イベントの処理」を参照してください。
RFID読取りで何もタグが読み取られなかった場合、"tag_id"
および"data"
値が空の文字列(""
)に設定されてイベントが返されます。
デバイス・マネージャは、デバイスにpingを発行して、そのデバイスが動作していて応答可能であるかどうかを判断します。応答していないデバイスは、ユーザー操作なしで再起動されます。
デバイス・マネージャは、デバイスからイベントが返された最後の時刻を記録し、最後のイベントから長時間経過している場合は、ドライバに対してOSイベントに関するpingを発行します。ドライバ・インタフェースの規約では、デバイスがpingからのレスポンスという特殊なイベントに妥当な時間内に応答していることが必要です。デバイスが構成可能な時間内に応答していない場合、デバイス・マネージャはデバイスに停止コマンドを発行します。一定時間が経過しても停止承認イベントによる応答がない場合、デバイス・マネージャはドライバの.dll
をアンロードし、新しいデバイスをロードして初期化します。
この改訂済ActiveX APIでは、多数の主要な新機能および旧ベータ・リリースから変更された機能があります。
Oracle Sensor Edge Mobileクライアント・コントロールのオブジェクト宣言を例5-7に示します。この例では、"event_handler"
パラメータにより、測定イベントが受信されるとコールされるJavaScript関数の名前が登録されています。パラメータを指定しない場合は、デフォルトのイベント・ハンドラ関数"handle_event()"
が試行されます。この関数が存在しない場合、エラーは返されず、イベント・ハンドラなしで処理が続行されます。
<object id="SEMobileControl" name="SEMobileControl" classid="CLSID:049BE519-EE78-4AA5-8FC8-C5AE084CB26C" width="0" height="0"> <param name="event_handler" value="handle_event"/> <table><tr><td bgcolor="#FF0000"> <hr/>Unable to load Sensor Edge Mobile control.<hr/> </td></tr></table> </object>
Activex APIには次のメソッドが含まれます。
rfid_read()
メソッドは、範囲内のすべてのタグに対する読取りを発行します。メソッド・シグネチャは次のとおりです。
var retVal = SEMobileControl.rfid_read( );
タグ読取りは、登録済イベント・ハンドラ・メソッドを0回以上コールバックすることにより返されます。読取りが正常に完了した場合、戻り値は0になります。なんらかの理由で失敗した場合は、0以外の値が返されます。
rfid_write()
メソッドは、範囲内のすべてのタグに対する書込みを発行します。メソッド・シグネチャは次のとおりです。
var retVal = SEMobileControl.rfid_write( srcForm.srcData.value, srcForm.srcPasscode.value );
この例では、パラメータはsrcForm
という形式の非表示変数です。srcData
変数は書き込むデータを表し、16進文字列で表されます。srcPasscode
には書込み用のパスコードが含まれます。書込みが正常に完了した場合、戻り値は0になります。なんらかの理由で失敗した場合は、0以外の値が返されます。
rfid_kill()
メソッドは、範囲内のすべてのタグに対する中断を発行します。メソッド・シグネチャは次のとおりです。
var retVal = SEMobileControl.rfid_kill( srcForm.srcTagId.value, srcForm.srcPasscode.value );
srcTagId
変数は、中断するタグのTagID(16進文字列)を表します。srcPasscode
には中断用のパスコードが含まれます。中断が正常に完了した場合、戻り値は0になります。なんらかの理由で失敗した場合は、0以外の値が返されます。
barcode_read()
メソッドは、デバイスにより指し示されたバーコードの読取りを発行します。メソッド・シグネチャは次のとおりです。
var retVal = SEMobileControl.barcode_read( );
バーコード読取り測定イベントは、登録済イベント・ハンドラ・メソッドをコールバックすることにより返されます。読取りが正常に完了した場合、戻り値は0になります。なんらかの理由で失敗した場合は、0以外の値が返されます。
set_trigger_rfid_read()
メソッドは、ユーザーがデバイスに対してトリガーを引いたときにRFIDデータの読取りを実行する必要があることをSensor Edge Mobileに指示します。メソッド・シグネチャは次のとおりです。
var retVal = SEMobileControl.set_trigger_rfid_read();
トリガーを引く操作に対してRFID読取り操作を登録するためのコールが必要です。このコールが正常に完了した場合、戻り値は0になります。コールが失敗した場合、RFIDデバイス・ドライバはロードされず、0以外の値が戻されます。
set_trigger_barcode_read()
メソッドは、ユーザーがデバイスに対してトリガーを引いたときにバーコード・データの読取りを実行する必要があることをSensor Edge Mobileに指示します。メソッド・シグネチャは次のとおりです。
var retVal = SEMobileControl.set_trigger_barcode_read();
トリガーを引く操作に対してバーコード読取り操作を登録するためのコールが必要です。このコールが正常に完了した場合、戻り値は0になります。コールが失敗した場合、バーコード・デバイス・ドライバはロードされず、0以外の値が戻されます。
process_instructionメソッドは、ドライバによる命令を処理するための下位レベル・インタフェースです。このメソッドは、現在定義されているRFIDおよびバーコードの操作には必要ありませんが、このメソッドを使用可能にすると、カスタム・ドライバの使用時に命令レパートリを簡単に拡張できます。メソッド・シグネチャは次のとおりです。
var retVal=SEMobileControl.process_instruction(instruction, data);
instructionは、定義済定数のリストからの(文字列として表された)整数値です。EdgeMobilehtml_samples
では、SEMobileCore.js
という名前のファイルです。次のようなスクリプト要素を使用して、このファイルの値をHTMLドキュメントに挿入できます。
<script type="text/javascript" src="SEMMobileCore.js"></script>
この場合、これらの定数を使用してRFID読取りを開始するための命令は次のようになります。
var retVal=SEMobileControl.rfid_read();
この命令は、次の操作と同じ操作を実行します。
var retVal=SEMobileControl.rfid_read();
コマンドに使用可能な値は次のとおりです。
RFID_READ START
: RFID読取り。引数の値は無視されます。RFID_WRITE DESCRIPTION
: デバイス生成イベントの文字列。RFID_KILL
: テキスト表示形式のイベント作成のタイムスタンプ。BARCODE_READ
: イベント・ブロック(グループ)内のこのイベントの索引。REGISTER_TRIGGER0
: このイベント・ブロック内のイベントの数。TRIGGER_PULL0 RFID
: 16進文字列のRFIDタグのTagID。データ・ペイロードは"data"内に指定します。
バーコード読取りを開始するための命令は次のようになります。
var retVal = SEMobileControl.process_instruction(BARCODE_DEAD. "");
これは、次のメソッド・コールと同等です。
var retval = SEMobileControl.barcode_read();
これらの定数を使用してRFID書込みを実行するための命令は次のようになります。
var retVal = SEMobileControl.process_instruction(RFID_WRITE, "0102030405060708,123");
書き込む16進値とパスコードとをカンマで区切ります。これは、次の命令と同等です。
var retVal = SEMobileControl.rfid_write("0102030405060708", "123");
RFID中断命令は次のようになります。
var retval = SEMobileControl.process_instruction(RFID_KILL, "0102030405060708,123");
RFID書込みの場合と同じように、書き込む16進値とパスコードとをカンマで区切ります。これは、次の命令と同等です。
var retval = SEMobileControl.rfid_kill("0102030405060708", "123);
最後に、特定の読取り操作に対してトリガーを引く操作を登録するための命令は次のようになります。
var retval = SEMobileControl.process_instruction( REGISTER_TRIGGER0, RFID_READ);
これは、次の命令とまったく同じ操作を実行します。
var retval = SEMobileControl.set_trigger_rfid_read();
is_supported
メソッドは、RFID_WRITEなどの命令コードの1つの引数を持ち、この命令を処理できる構成済ドライバがあるかどうかに基づいてtrueまたはfalseを返します。メソッド・シグネチャは次のとおりです。
if (SEMobileControl.is_supported( RFID_KILL) {//RFID_KILL instruction supported by a configured driver...}
instructionは、SEMobileCore.js
ファイル内の定義済定数のリストからの(文字列として表された)整数値です。
測定イベントが受信されると、ActiveXコントロールにより登録済のJavaScriptイベント・ハンドラ関数がコールされます。イベント・ハンドラ・メソッド内では、イベント・オブジェクトはActiveXコントロール・インスタンス名で参照されます。例5-8および例5-9では、"SEMobileControl"
がコントロール名として使用されています。
イベント・データは、イベント・ハンドラ関数からJavaScriptが返されるまで、ActiveXオブジェクトから使用可能です。すべてのイベント内に存在するデータはプロパティとして使用可能であり、特定のイベント・タイプに固有のその他のデータは検索により使用可能です。イベント・データを表5-4に示します。
イベントのプロパティを使用してイベントに関するレポートを生成するイベント・ハンドラ関数を、例5-8に示します。
function handle_event() { if ( SEMobileControl.is_barcode_read ) { alert ("Barcode data read from " + SEMobileControl.device_name ); } if ( SEMobileControl.is_rfid_read ) { alert ("RFID data read from " + SEMobileControl.device_name ); }
これらのプロパティはすべて、イベント・ハンドラ関数が返されるまでの間のみ使用可能です。イベント・ハンドラ関数が返された時点で、Sensor Edge Managementコントロールは別のイベントを持つハンドラを再びコールできるようになり、最後のイベントに関連付けられているデータは使用できなくなります。
RFIDタグが読み取られると、返されたイベントはブロックの一部としてマークされます(1つのタグの読取りが1つのイベントのブロックとして表されます)。これを反映するため、すべてのイベントはブロック索引と、それに関連付けられたブロック・カウントを持ちます。イベントがシングルトンの場合、ブロック・カウントと索引は"1"に設定されます。これに対し、ブロックに3つのイベントが含まれる場合、そのブロック内の3つのイベントのブロック索引とカウントの値は1と3、2と3、および3と3のようになります。"block_index"プロパティと"block_count"プロパティにより、これらの値へのアクセスが許可されます。
イベントに関連付けられたデバイスのクラスに固有の他のデータが存在する場合もあります。これらのデータは名前と値の組として表され、次のdata()
メソッドを使用して検索可能です。data()
プロパティを使用すると、特定のデバイス・クラスからのイベントに固有のデータ値を検索できます。デバイス・クラスごとに異なるデータ名が定義されています。現在のイベント内にデータ値が存在しない場合は、空の文字列("")が返されます。定義されているデータ名とそれに関連付けられているデバイス・クラスを表5-5に示します。
イベント・ハンドラが最初にデバイス・クラス(RFIDまたはバーコード)を判別してから、data()
を参照してデバイス・クラスに固有のデータ値をフェッチする方法を、例5-9に示します。
function handle_event() { if ( SEMobileControl.is_barcode_read ) { alert ("Barcode data is " + SEMobileControl.data("data") ); } if ( SEMobileControl.is_rfid_read ) { /* Note that "tag_id" is an RFID-specific event value */ alert ("RFID tag ID is " + SEMobileControl.data("tag_id") ); } }
現在のSensor Edge Mobile ActiveXコントロールには、次のようにしてアクセスできます。
このAPIでは、特定のHTMLページから1つのデバイス・クラス(バーコードまたはRFID)へのアクセスが許可されるのみです。
管理HTMLページ(図5-1)で、Oracle Sensor Edge Mobileを管理できます。このページを使用すると、次の操作を実行できます。
ドライバの場合、構成済のドライバとその状態(初期化中、アクティブ、停止または応答なし)がHTMLページに示されます。リリース3(10.1.3)のOracle Sensor Edge Mobileでは、Color 700 Pocket PCを使用するSymbol 9000-GおよびIntermec IP3がサポートされています。
Symbol 9000-Gの場合、Sensor Edge Mobileでは次の操作がサポートされています。
Intermec IP3の場合、Sensor Edge Mobileでは次の操作がサポートされています。
ディスパッチャの場合、構成済のドライバとその現在の状態(初期化中、アクティブまたは停止)がページに表示されます。
Sensor Edge Mobileのサービス・ステータス(初期化中、アクティブまたは停止)がページに示されます。
「Shutdown Service」ボタンがページに表示されます。ドライバの構成、ディスパッチャの変更、またはXML構成ファイル(EdgeMobileConfig.xml
)の編集を完了した後は、このボタンを使用します。
ログ・エントリのリアルタイムの更新内容がページに表示されます。
ロードされたドライバごとに、測定データ・イベントの数と、各ドライバからの最後のイベントのタイムスタンプがページに表示されます。
ページでは、構成XMLファイル(EdgeMobileConfig.xml
)を読み取り、必要に応じてファイルの構成を変更できます。
国際化のために、Sensor Edge Mobile内のすべての文字列リテラルが.dll
の中に入っているため、各国で使用できる実行可能ファイルの出荷が可能です。
|
![]() Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|