影音先锋熟女少妇av资源,国产精品52页,2021精品国产自在现线看,亚洲高清中文字幕在线

物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

RFID開發(fā)介紹—Edge Server(1)

作者:BEA中國 孟和
來源:RFID世界網(wǎng)
日期:2006-09-07 10:18:28
摘要:本文章介紹如何安裝、配置和部署B(yǎng)EA的RFID產(chǎn)品,包括BEA Edge Server, BEA Enterprise Server和 BEA Compliance Express。默認(rèn)的,每個(gè)步驟都是接下來步驟的基礎(chǔ)。并且該配置是基于WebLogic Server 9.1的,本篇首先介紹BEA Edge Server。
關(guān)鍵詞:RFID開發(fā)EdgeServerBEA

本文章介紹如何安裝、配置和部署B(yǎng)EA的RFID產(chǎn)品,包括BEA Edge Server, BEA Enterprise Server和 BEA Compliance Express。默認(rèn)的,每個(gè)步驟都是接下來步驟的基礎(chǔ)。并且該配置是基于WebLogic Server 9.1的,本篇首先介紹BEA Edge Server。

一. 安裝及使用

1. 產(chǎn)品安裝(以windows為例)

  • 從以下網(wǎng)址下載或者拷貝rfid_edge210_win32.exe http://commerce.bea.com/showproduct.jsp?family=RFIDEDGE&major=2.1&minor=0
  • 雙擊該文件,運(yùn)行安裝程序
  • 看到介紹面板后,點(diǎn)擊“下一步”
  • 看到許可面板后,接受許可,點(diǎn)擊“下一步”
  • 看到安裝目錄選擇面板,選擇路徑或者默認(rèn),點(diǎn)擊“下一步”
  • 看到安裝類型面板,選擇“快速”,點(diǎn)擊“下一步”
  • 接下來的配置都按照默認(rèn)值,點(diǎn)擊“下一步”
  • 瀏覽安裝信息摘要,點(diǎn)擊“安裝”
  • 選擇“完成”結(jié)束安裝

2. 打開閱讀器模擬器、Edge Server和管理控制臺

  1. 打開資源管理器,瀏覽到<edge_home>in 目錄
  2. 打開閱讀器模擬器:雙擊RunReaderSim.bat.

    圖122

  3. 修改<edge_home>/etc/edge.props文件,修改后如下:

      com.connecterra.ale.servicePort = 6060

      com.connecterra.ale.savantID = SAVANT_ID

      com.connecterra.ale.siteID = SITE_ID

      com.connecterra.ale.telemetryPeriod = 5000

      或者可以使用Edge Server Configuration Wizard來進(jìn)行配置,配置過程如下:

  4. 從windows菜單選擇運(yùn)行Configuration Wizard 或者直接運(yùn)行<edge_home>/common/bin/config.cmd命令:

    圖124

  5. Configuration Wizard打開后,首先進(jìn)入歡迎頁面,選擇其中的下一步。
  6. 在出現(xiàn)的頁面中配置各參數(shù)如下 :

    圖126

  7. 選擇下一步,在確認(rèn)頁面中選擇“創(chuàng)建”,最后確認(rèn)。
  8. 打開Edge Server:瀏覽到<edge_home>in 目錄,雙擊 RunEdgeServer.bat.

    圖128

  9. 修改<edge_home>/etc/admin-console.props,修改后如下:

      com.connecterra.ualegui.edgeServerURLs=http://localhost:6060

  10. 打開管理控制臺: 瀏覽到<edge_home>in 目錄,雙擊 RunAdminConsole.bat.

圖1210

3. 使用管理控制臺和ECSpecs來驗(yàn)證操作

安裝BEA Edge Server是相對比較容易的,但是需要驗(yàn)證它的工作是否正確就需要我們進(jìn)一步學(xué)習(xí)了。使用管理控制臺和閱讀器模擬器,我們可以快速的配置一個(gè)“事件周期”(“Event Cycle Specification”, or “ECSpec”)來模擬讀取標(biāo)簽。下面就是創(chuàng)建一個(gè)簡單的ECSpec并且使用管理控制臺的測試特性。

  在開始配置前,首先需要理解的一點(diǎn)是RFID應(yīng)用程序其實(shí)就是BEA Edge Server的一個(gè)客戶端。BEA Edge Server實(shí)現(xiàn)了ALE(Application Level Events)規(guī)范,ALE客戶端需要定義一個(gè)ECSpec,然后提交給ALE接口(即Edge Server)。Edge Server使用ECSpec的內(nèi)容來控制閱讀器的限制條件、使用哪個(gè)邏輯閱讀器、報(bào)告返回等等。其中限制條件可能是例如何時(shí)開始讀卡、何時(shí)停止讀卡;一個(gè)邏輯閱讀器是一個(gè)任意的RFID閱讀點(diǎn),通常是具有統(tǒng)一命名的一組天線;報(bào)告指Edge Server返回給應(yīng)用程序的信息。

  具體操作如下:

  1. 在管理控制臺里面左邊的設(shè)備瀏覽器中,選中ECSpecs

    圖131

  2. 在右邊選擇“NEW”,這樣會打開ECSpec Editor

    圖132

  3. 使用“>>”按鈕將ConnecTerra1 和ConnecTerra2兩個(gè)邏輯閱讀器到選擇窗口。
  4. 在“Stop”區(qū),選中“Duration”,輸入5000,這個(gè)域以毫秒為單位。配置好地ECSpec如下:

    圖134

  5. 在左邊選擇“Reports”
  6. 在右邊選擇“New Report”,就按默認(rèn)設(shè)置創(chuàng)建名為“Report_0”的報(bào)告,配置后的窗口如下:

    圖136

  7. 在菜單中選擇ToolsàTest,看到如下窗口:

    圖137

  8. 在管理控制臺可以通過選擇設(shè)備瀏覽器中的RFID Devices下面的SimReadr來查看設(shè)備統(tǒng)計(jì)信息。有兩組圖,每個(gè)邏輯閱讀器或者天線,每個(gè)邏輯閱讀器都可以看到如下信息:
  9. 讀周期時(shí)間—一個(gè)完整的讀周期所用的時(shí)間,一個(gè)讀周期是Edge Server和閱讀器之間的最小交易單位,它被三個(gè)因素影響:(1) Edge Server和閱讀器之間協(xié)議交互所用的時(shí)間,這和驅(qū)動設(shè)計(jì)和實(shí)現(xiàn)有關(guān);(2)網(wǎng)絡(luò)延遲;(3)閱讀器內(nèi)部讀卡機(jī)制、設(shè)計(jì)等等。
  10. 讀周期數(shù)-- Edge Server執(zhí)行的總讀周期數(shù)
  11. 標(biāo)簽數(shù):Edge Server所能讀到的標(biāo)簽數(shù)

4. 配置多個(gè)閱讀器模擬器

在本節(jié)配置完成后,我們從邏輯上將實(shí)現(xiàn)如下的部署圖:

圖14

  首先,創(chuàng)建第二個(gè)閱讀器,并且配置Edge Server來使用它

  1. Make a copy of, and put the copy in the bin directory.
    1. 復(fù)制RunReaderSim.bat,放在bin目錄下,重命名為RunReaderSim2.bat
    2. 打開RunReaderSim2.bat,將READER_PORT修改為5051,保存,關(guān)閉文件
    3. 運(yùn)行新的模擬器(RunReaderSim2.bat).
    4. 在管理控制臺配置Edge Server使用新的閱讀器:選擇設(shè)備管理器里面的RFID設(shè)備,在右邊窗口選擇SimReadr,并且Clone

      圖1414

    5. 將新閱讀器的名字改為“SimReadr2”,Reader Port 改為5051.兩個(gè)邏輯天線的名字修改為“ConnecTerra3” 和“ConnecTerra4”.

      圖1415

      • 確定后,新的配置如下:

      圖1416

    6. 為了測試,需要在ECSpec中添加新的邏輯閱讀器,首先導(dǎo)出已經(jīng)存在的ECSpec,然后再導(dǎo)入并且添加新的邏輯閱讀器。

二. 讀取標(biāo)簽信息

1. 運(yùn)行Immediate示例

 Immediate示例使用ALE“Immediate”方式來演示同步報(bào)告發(fā)布。

  1. 打開閱讀器模擬器、Edge Sever和管理控制臺
  2. 打開資源管理器,瀏覽目錄 <edge_home>samplesImmediateSample.
  3. 修改run.bat

      set EDGEHOST=localhost

      set EDGEPORT=6060

  4. 點(diǎn)擊run.bat,觀察輸出,注意報(bào)告有7個(gè)標(biāo)簽

    圖214

  5. 使用管理控制臺ECSpec editor導(dǎo)入示例的ECSpec,ECSpec文件也在該目錄中

    圖215

      測試導(dǎo)入的ECSpec:

    圖215

2. 程序分析

/**
 * ImmediateSample 是使用ALE api  從指定的邏輯讀卡器讀取一個(gè)EPC 列表的小
 * 程序
 * ECSpec 將從一個(gè)XML文件中讀取,周期報(bào)告也將以XML格式打印出來
*/
public class ImmediateSample
{
//程序的使用說明,其中的命令行參數(shù)ecSpecFilename 應(yīng)該是ECSpec.xml,//aleServiceURL 形如:http://localhost:6060/axis/services/EPCglobalALEService。	
    private static void usage()
    {
        System.out.println(
            "usage: ImmediateSample  ");
        System.exit(1);
    }
	
    public static void main(String[] args)  
    {
        System.out.println( "Immediate Sample, XML-based" );
       
        //分析命名行參數(shù)			
        if ( args.length != 2 ) 
            usage();
 
        String aleServiceURL = args[0];
        String ecSpecFilename = args[1];
		
        try 
        {
            // 創(chuàng)建一個(gè)ALE客戶端實(shí)例
            ALE aleClient = new SOAPALEClient(new URL(aleServiceURL));
			
            // 從XML文件讀取ECSpec (Event Cycle Specification) 
            // ECSpec 包括定義事件周期的所有參數(shù),也可以在程序中指定
            ECSpec myECSpec = readECSpec(ecSpecFilename);
						
            // 使用 ALE.immediate()方法,發(fā)出事件請求
            // immediate() 在一個(gè)事件周期完成后會阻塞,并且返回報(bào)告
            System.out.println( "  sending request to Edge Server...");
            ECReports myECReports = aleClient.immediate(myECSpec);
            System.out.println( "  ...received response.
");

            printECReports(myECReports);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
	
    /**
     * 從XML文件讀取ECSpec的輔助方法
     */
    private static ECSpec readECSpec(String ecSpecFilename) 
        throws IOException, 
               XMLDeserializerException 
    {
        // ECSpec 和ECReports等對象可以轉(zhuǎn)換為XML 表現(xiàn)形式
        // XMLSerializationFactory是一個(gè)單態(tài)的工廠,從中可以通過轉(zhuǎn)換完成XML
        // 的序列化和反序列化      
        // 下面,使用XML反序列化將XML 中的內(nèi)容轉(zhuǎn)換為一個(gè)ECSpec 對象實(shí)例
        XMLSerializationFactory factory =
            XMLSerializationFactory.getInstance(
                XMLSerializationSyntax.EPCGLOBAL_ALE_1_0);
        XMLDeserializer deserializer = factory.createDeserializer();

        FileReader fileReader = new FileReader(ecSpecFilename);

        ECSpec ecSpec = deserializer.deserializeECSpec(fileReader);
        return ecSpec;
    }

    /**
     * 將XML形式的ECReports輸出到控制臺
     */
    private static void printECReports(ECReports ecReports) 
        throws XMLSerializerException,
               IOException
    {
        System.out.println("Received the following ECReports:
");
	// XMLSerializationFactory是一個(gè)單態(tài)的工廠,獲取實(shí)例	
        XMLSerializationFactory factory =
            XMLSerializationFactory.getInstance(
                XMLSerializationSyntax.EPCGLOBAL_ALE_1_0);
        XMLSerializer serializer = factory.createSerializer();

          //使用XML序列化將ecReports對象實(shí)例轉(zhuǎn)化為XML形式,并輸出.
        Writer w = new OutputStreamWriter(System.out);
        serializer.serialize(ecReports, w, true);
        w.flush();
    }
}

三. 寫入標(biāo)簽信息

1. 運(yùn)行 ImmediateProgram 示例

  1. 確保只打開一個(gè)閱讀器模擬器,并且只選中其中一個(gè)天線的一個(gè)標(biāo)簽:

    圖311

  2. 打開命令行窗口,瀏覽到<edge_home>samplesImmediateProgramSample
  3. 執(zhí)行如下命令:

      >run.bat urn:epc:tag:gid-64-i:1.4.10

  4. 運(yùn)行結(jié)果應(yīng)該是XML格式的PCWriteReport,表示寫入TAG程序運(yùn)行的結(jié)果,如下:
      	  Received the following PCWriteReport:
      
      <PCWriteReport date="2005-12-16T16:10:44.265Z" savantID="EdgeServerID" specName=
      "=0" totalMilliseconds="531" totalTrials="1" xmlns="http://schemas.con
      necterra.com/alepc">
       <applicationData>application specific data can go here</applicationData>
       <wasSuccessful>true</wasSuccessful>
       <status>SUCCESSFUL</status>
       <physicalReaders>
        <physicalReader>SimReadr</physicalReader>
       </physicalReaders>
       <failedLogicalReaders/>
       <cacheSize>0</cacheSize>
       <epc>urn:epc:tag:gid-64-i:1.4.10</epc>
       <successfulLogicalReader>ConnecTerra1</successfulLogicalReader>
      </PCWriteReport>Press any key to continue . . .
    • <wasSuccessful> 元素表示寫入程序成功,<status>元素相應(yīng)的也設(shè)置為SUCCESSFUL ;如果寫入出現(xiàn)問題,<status> 將會提供診斷用的信息,例如CACHE_EMPTY, READER_ERROR等等
    • <physicalReaders> 元素表示那個(gè)物理閱讀器參與了標(biāo)簽寫操作,我們的操作中可以看到是SimReadr
    • <failedLogicalReaders> 為空,表示寫操作周期中沒有失敗的閱讀器
    • <cacheSize> 被設(shè)置為零,可以在程序中設(shè)置該值,該值也與ECSpec中的設(shè)置相關(guān)。
    • <epc> 顯示寫入標(biāo)簽的值: urn:epc:tag:gid-64-i:1.4.10
    • Finally, <successfulLogicalReader> indicates that the logical reader ConnecTerra1 was the logical reader that wrote this tag.

程序分析

/**
 * ImmediateProgramSample 是使用ALEPC api來通過邏輯讀卡器將EPC值寫入標(biāo)
 * 簽的一個(gè)簡單程序 
 */
public class ImmediateProgramSample
{
//程序使用說明		
    private static void usage()
    {        
        System.out.println("usage: ImmediateProgramSample ");
        System.exit(1);
    }
	
    public static void main(String[] args)  
    {
        System.out.println( "Immediate Program Sample, XML-based" );

        //分析命名行參數(shù)			
        if ( args.length != 3 ) 
            usage();
 //程序的使用說明,其中的命令行參數(shù)pcSpecFilename 應(yīng)該是PCSpec.xml,//aleServiceURL 形如:http://localhost:6060/axis/services/EPCglobalALEService。
// epcVal是EPC值
        String aleServiceURL = args[0];
        String pcSpecFilename = args[1];
        String epcVal = args[2];
		
        try 
        {
            // 創(chuàng)建一個(gè)ALEPC客戶端實(shí)例.
            ALEPC aleClient = new AxisALEPCClient(new URL(aleServiceURL));
	
	// 從XML文件讀取PCSpec (Programming Cycle Specification) 
            // PCSpec包括定義寫入周期的所有參數(shù),也可以在程序中指定           
            PCSpec pcSpec = readPCSpec(pcSpecFilename);					
            
            // 使用ALEPC.immediate()方法,發(fā)出事件請求
            // immediate() 在一個(gè)事件周期完成后會阻塞,并且返回報(bào)告
System.out.println( "  sending request to Edge Server...");
            PCWriteReport writeReport = aleClient.immediate(pcSpec, new URI(epcVal));
            System.out.println( "  ...received response.
");

            printWriteReport(writeReport);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
	
    /**
     *從XML文件讀取PCSpec的輔助方法
     */
    private static PCSpec readPCSpec(String pcSpecFilename) 
        throws IOException, 
               PCXMLDeserializerException 
    {        
        // PCSpec和PCWriteReport等對象可以轉(zhuǎn)換為XML 表現(xiàn)形式
        // PCXMLSerializationFactory是單態(tài)工廠類,從中可以通過轉(zhuǎn)換完成XML
        // 的序列化和反序列化      
        // 下面,使用XML反序列化將XML 中的內(nèi)容轉(zhuǎn)換為一個(gè)PCSpec對象實(shí)例        
        PCXMLSerializationFactory factory = PCXMLSerializationFactory.getInstance();
        PCXMLDeserializer deserializer = factory.createDeserializer();

        FileReader fileReader = new FileReader(pcSpecFilename);

        PCSpec pcSpec = deserializer.deserializePCSpec(fileReader);
        return pcSpec;
    }

    /**
     * 將XML形式的PCWriteReport輸出到控制臺
     */
    private static void printWriteReport(PCWriteReport writeReport) 
        throws PCXMLSerializerException,
               IOException
    {
        System.out.println("Received the following PCWriteReport:
");		
        
        //獲取PCXMLSerializationFactory的實(shí)例,序列化PCWriteReport
        PCXMLSerializationFactory factory = PCXMLSerializationFactory.getInstance();
        PCXMLSerializer serializer = factory.createSerializer();
       
         //使用XML序列化將writeReport對象實(shí)例轉(zhuǎn)化為XML形式,并輸出
        Writer w = new OutputStreamWriter(System.out);
        serializer.serialize(writeReport, w, true); 
        w.flush();
    }
}

本篇我們簡單介紹了BEA Edge Server的安裝、使用和簡單的標(biāo)簽讀、寫過程,大家可以根據(jù)實(shí)際情況,在此基礎(chǔ)上開發(fā)自己的應(yīng)用。后面我們還會介紹Edge Server中的一些其他讀寫方式和工作流模塊。

推薦新聞