标签芯片 | 读写器 | 天线 | 中间件 | 智能卡 | 生物识别 | 条码 | 制造设备 | 物流 | 零售 | 防伪 | 交通 | 停车 | 资产管理 | 动物 | 身份识别 | 军事 | 航空 | 门禁 | 一卡通
供求商机 资讯中心 产品中心 企业资料 人才招聘
 
 首页 >> 技术中心>> 正文
RFID开发介绍—Edge Server(1)
来源:RFID射频快报   2006-9-1 9:38:10
关键词: Edge Server  开发  读卡器  RFID中间件  标准  ALE  BEA  Weblogic  


提要RFID开发介绍—Edge Server(1)

 

本文章介绍如何安装、配置和部署BEA的RFID产品,包括BEA Edge Server, BEA Enterprise Server和 BEA Compliance Express。默认的,每个步骤都是接下来步骤的基础。并且该配置是基于WebLogic Server 9.1的,本篇首先介绍BEA Edge Server。

一. 安装及使用

1. 产品安装(以windows为例)

  • 从以下网址下载或者拷贝rfid_edge210_win32.exe http://commerce.bea.com/showproduct.jsp?family=RFIDEDGE&major=2.1&minor=0
  • 双击该文件,运行安装程序
  • 看到介绍面板后,点击“下一步”
  • 看到许可面板后,接受许可,点击“下一步”
  • 看到安装目录选择面板,选择路径或者默认,点击“下一步”
  • 看到安装类型面板,选择“快速”,点击“下一步”
  • 接下来的配置都按照默认值,点击“下一步”
  • 浏览安装信息摘要,点击“安装”
  • 选择“完成”结束安装

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来进行配置,配置过程如下:

  4. 从windows菜单选择运行Configuration Wizard 或者直接运行<edge_home>/common/bin/config.cmd命令:

    图124

  5. Configuration Wizard打开后,首先进入欢迎页面,选择其中的下一步。
  6. 在出现的页面中配置各参数如下 :

    图126

  7. 选择下一步,在确认页面中选择“创建”,最后确认。
  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来验证操作

安装BEA Edge Server是相对比较容易的,但是需要验证它的工作是否正确就需要我们进一步学习了。使用管理控制台和阅读器模拟器,我们可以快速的配置一个“事件周期”(“Event Cycle Specification”, or “ECSpec”)来模拟读取标签。下面就是创建一个简单的ECSpec并且使用管理控制台的测试特性。

  在开始配置前,首先需要理解的一点是RFID应用程序其实就是BEA Edge Server的一个客户端。BEA Edge Server实现了ALE(Application Level Events)规范,ALE客户端需要定义一个ECSpec,然后提交给ALE接口(即Edge Server)。Edge Server使用ECSpec的内容来控制阅读器的限制条件、使用哪个逻辑阅读器、报告返回等等。其中限制条件可能是例如何时开始读卡、何时停止读卡;一个逻辑阅读器是一个任意的RFID阅读点,通常是具有统一命名的一组天线;报告指Edge Server返回给应用程序的信息。

  具体操作如下:

  1. 在管理控制台里面左边的设备浏览器中,选中ECSpecs

    图131

  2. 在右边选择“NEW”,这样会打开ECSpec Editor

    图132

  3. 使用“>>”按钮将ConnecTerra1 和ConnecTerra2两个逻辑阅读器到选择窗口。
  4. 在“Stop”区,选中“Duration”,输入5000,这个域以毫秒为单位。配置好地ECSpec如下:

    图134

  5. 在左边选择“Reports”
  6. 在右边选择“New Report”,就按默认设置创建名为“Report_0”的报告,配置后的窗口如下:

    图136

  7. 在菜单中选择ToolsàTest,看到如下窗口:

    图137

  8. 在管理控制台可以通过选择设备浏览器中的RFID Devices下面的SimReadr来查看设备统计信息。有两组图,每个逻辑阅读器或者天线,每个逻辑阅读器都可以看到如下信息:
  9. 读周期时间—一个完整的读周期所用的时间,一个读周期是Edge Server和阅读器之间的最小交易单位,它被三个因素影响:(1) Edge Server和阅读器之间协议交互所用的时间,这和驱动设计和实现有关;(2)网络延迟;(3)阅读器内部读卡机制、设计等等。
  10. 读周期数-- Edge Server执行的总读周期数
  11. 标签数:Edge Server所能读到的标签数

4. 配置多个阅读器模拟器

在本节配置完成后,我们从逻辑上将实现如下的部署图:

图14

  首先,创建第二个阅读器,并且配置Edge Server来使用它

  1. Make a copy of, and put the copy in the bin directory.
    1. 复制RunReaderSim.bat,放在bin目录下,重命名为RunReaderSim2.bat
    2. 打开RunReaderSim2.bat,将READER_PORT修改为5051,保存,关闭文件
    3. 运行新的模拟器(RunReaderSim2.bat).
    4. 在管理控制台配置Edge Server使用新的阅读器:选择设备管理器里面的RFID设备,在右边窗口选择SimReadr,并且Clone

      图1414

    5. 将新阅读器的名字改为“SimReadr2”,Reader Port 改为5051.两个逻辑天线的名字修改为“ConnecTerra3” 和“ConnecTerra4”.

      图1415

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

      图1416

    6. 为了测试,需要在ECSpec中添加新的逻辑阅读器,首先导出已经存在的ECSpec,然后再导入并且添加新的逻辑阅读器。

二. 读取标签信息

1. 运行Immediate示例

 Immediate示例使用ALE“Immediate”方式来演示同步报告发布。

  1. 打开阅读器模拟器、Edge Sever和管理控制台
  2. 打开资源管理器,浏览目录 <edge_home>samplesImmediateSample.
  3. 修改run.bat

      set EDGEHOST=localhost

      set EDGEPORT=6060

  4. 点击run.bat,观察输出,注意报告有7个标签

    图214

  5. 使用管理控制台ECSpec editor导入示例的ECSpec,ECSpec文件也在该目录中

    图215

      测试导入的ECSpec:

    图215

2. 程序分析

/**
 * ImmediateSample 是使用ALE api  从指定的逻辑读卡器读取一个EPC 列表的小
 * 程序
 * ECSpec 将从一个XML文件中读取,周期报告也将以XML格式打印出来
*/
public class ImmediateSample
{
//程序的使用说明,其中的命令行参数ecSpecFilename 应该是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" );
       
        //分析命名行参数			
        if ( args.length != 2 ) 
            usage();
 
        String aleServiceURL = args[0];
        String ecSpecFilename = args[1];
		
        try 
        {
            // 创建一个ALE客户端实例
            ALE aleClient = new SOAPALEClient(new URL(aleServiceURL));
			
            // 从XML文件读取ECSpec (Event Cycle Specification) 
            // ECSpec 包括定义事件周期的所有参数,也可以在程序中指定
            ECSpec myECSpec = readECSpec(ecSpecFilename);
						
            // 使用 ALE.immediate()方法,发出事件请求
            // immediate() 在一个事件周期完成后会阻塞,并且返回报告
            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等对象可以转换为XML 表现形式
        // XMLSerializationFactory是一个单态的工厂,从中可以通过转换完成XML
        // 的序列化和反序列化      
        // 下面,使用XML反序列化将XML 中的内容转换为一个ECSpec 对象实例
        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是一个单态的工厂,获取实例	
        XMLSerializationFactory factory =
            XMLSerializationFactory.getInstance(
                XMLSerializationSyntax.EPCGLOBAL_ALE_1_0);
        XMLSerializer serializer = factory.createSerializer();

          //使用XML序列化将ecReports对象实例转化为XML形式,并输出.
        Writer w = new OutputStreamWriter(System.out);
        serializer.serialize(ecReports, w, true);
        w.flush();
    }
}

三. 写入标签信息

1. 运行 ImmediateProgram 示例

  1. 确保只打开一个阅读器模拟器,并且只选中其中一个天线的一个标签:

    图311

  2. 打开命令行窗口,浏览到<edge_home>samplesImmediateProgramSample
  3. 执行如下命令:

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

  4. 运行结果应该是XML格式的PCWriteReport,表示写入TAG程序运行的结果,如下:
      	  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>元素相应的也设置为SUCCESSFUL ;如果写入出现问题,<status> 将会提供诊断用的信息,例如CACHE_EMPTY, READER_ERROR等等
    • <physicalReaders> 元素表示那个物理阅读器参与了标签写操作,我们的操作中可以看到是SimReadr
    • <failedLogicalReaders> 为空,表示写操作周期中没有失败的阅读器
    • <cacheSize> 被设置为零,可以在程序中设置该值,该值也与ECSpec中的设置相关。
    • <epc> 显示写入标签的值: 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值写入标
 * 签的一个简单程序 
 */
public class ImmediateProgramSample
{
//程序使用说明		
    private static void usage()
    {        
        System.out.println("usage: ImmediateProgramSample <EPCVAL>");
        System.exit(1);
    }
	
    public static void main(String[] args)  
    {
        System.out.println( "Immediate Program Sample, XML-based" );

        //分析命名行参数			
        if ( args.length != 3 ) 
            usage();
 //程序的使用说明,其中的命令行参数pcSpecFilename 应该是PCSpec.xml,//aleServiceURL 形如:http://localhost:6060/axis/services/EPCglobalALEService。
// epcVal是EPC值
        String aleServiceURL = args[0];
        String pcSpecFilename = args[1];
        String epcVal = args[2];
		
        try 
        {
            // 创建一个ALEPC客户端实例.
            ALEPC aleClient = new AxisALEPCClient(new URL(aleServiceURL));
	
	// 从XML文件读取PCSpec (Programming Cycle Specification) 
            // PCSpec包括定义写入周期的所有参数,也可以在程序中指定           
            PCSpec pcSpec = readPCSpec(pcSpecFilename);					
            
            // 使用ALEPC.immediate()方法,发出事件请求
            // immediate() 在一个事件周期完成后会阻塞,并且返回报告
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等对象可以转换为XML 表现形式
        // PCXMLSerializationFactory是单态工厂类,从中可以通过转换完成XML
        // 的序列化和反序列化      
        // 下面,使用XML反序列化将XML 中的内容转换为一个PCSpec对象实例        
        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的实例,序列化PCWriteReport
        PCXMLSerializationFactory factory = PCXMLSerializationFactory.getInstance();
        PCXMLSerializer serializer = factory.createSerializer();
       
         //使用XML序列化将writeReport对象实例转化为XML形式,并输出
        Writer w = new OutputStreamWriter(System.out);
        serializer.serialize(writeReport, w, true); 
        w.flush();
    }
}

本篇我们简单介绍了BEA Edge Server的安装、使用和简单的标签读、写过程,大家可以根据实际情况,在此基础上开发自己的应用。后面我们还会介绍Edge Server中的一些其他读写方式和工作流模块。

作者:BEA中国 孟和


      
推荐 】【 打印 】【 发表评论 】【 加入收藏

 相关文章
· RFID中间件系统关键模块的设计与实现
· 基于射频IC卡的应用系统研究与设计
· 复杂的无线标准为仪器行业带来挑战
· 基于射频识别技术的联机型门禁系统设计
· 无线标准的共存性和互操作性
· 使用Agents和XML消息的RFID中间件实现
· 基于MFRC500型读卡器的无源RFID系统设计
· AT88RF020型射频识别卡及其应用
· 无线联网协议RuBee简介
· ISO14443、15693、18000体系分析
 最新供求
·江西会员积分机/江西会员储值积分系统
·江西商超购物卡系统/会员储值积分消费系统
·人体活动监测器YTEWS
·ATM监控,ATM硬盘录像机,独家五路ATM监控系
·微波探测器,传感器人体接近传感器YTMW8630
·振动传感器,振动探测器,震动探测器YT-JB3
·明华HD-998读卡器
·明华HD-998读卡器
·明华URF-35LT读卡器
·明华EKEY
 相关关键词搜索
·资讯中心Edge Server  开发  读卡器  RFID中间件  标准  ALE  BEA  Weblogic  
·技术中心Edge Server  开发  读卡器  RFID中间件  标准  ALE  BEA  Weblogic  
 
 
 
业界资讯 纵深报道 技术学院
国际资讯 | 国内资讯 | 国内企业 | 国外企业 | Global News
  重点专题
· 自动识别协会射频工作组 · RFID圈内企业动态
· RFID行业高层访谈 · 智能卡与一卡通
· RFID与食品安全 · Scan China展会专题
· 远望谷IPO之路 · RFID与医疗卫生
· NFC手机与支付 · RFID联盟产业园建设介绍
· RFID与智能交通 · 各国RFID频段标准与政策
  相关产品

nRF9e5无线模块
CC1020无线模块
nRF905_SMA无线模块
CC2500无线模块
nRF2402无线模块
nRF905_PCB无线模块
cc1100无线模块
2.4G无线模块
nRF24L01PA无线模块
  推荐文章
· 美国社区居民利用RFID技术回收垃圾
· 美国港口运用RFID技术减少空气污染
· 拉美零售巨头使用RFID改善服装库存管理
· 沙特珠宝商利用RFID改善库存管理
· 基于RFID技术的运输车辆及汽车衡称重防作弊
· 加拿大宠物用品公司采用RFID系统快速满足沃
· 美诊所采用无源RFID系统减少标本瓶贴标错误
· 印度银行采用RFID技术提供个性化服务
· 美加州体育馆用RFID技术提升应急处理水平
· 德消防部门采用RFID技术管理防护服装及装置
  相关案例和方案
· RFID远距离人员识别系统解决方案
· Victory Land集团RFID应用案例
· 百尔盛RFID车辆管理解决方案
· 百尔盛人员设备智能定位监控系统
  相关资讯文章
· EPCglobal TLS3 试点项目即将开展,采用多项
· Sirit超高频RFID读写器获ETSI标准认证
· 美富国银行使用RFID标签跟踪电子资产
· WINMEC为医疗设备提供RFID等干扰测试服务
· 《城市互联互通卡通用技术要求》等标准参编说
· 2008第三届中国无线射频识别(RFID)技术发展
快 报 论 坛
· [求助]关于RC500寻址问题,想不明白,请教高
· 荣睿科技RFID高频天线
· 荣睿科技高频无障碍通道设备
· 荣睿科技科技台面式、移动式读写器
· 荣睿科技高频中距离读写器
· 荣睿科技高频远距离读写器
快 报 问 吧
· 请教门禁卡有哪几部分组成?
· private string RFID_CM的意思是什么?
· 解析服务、目录服务及信息发布技术研究
· 资产管理一般用什么频率的?
· 鸽子脚环芯片用什么固定的
· RC500和FM1702和程序有没有差别啊
快 报 博 客
· 自行车盗窃?RFID技术来杜绝
· RFID智能机器人终端现身日本
· 北京时代TT100超声波测厚仪特价促销
· 高频远距离多通道读写器
· Perytons推出符合ZigBee协议通版监控附加模
· 沃尔玛引领RFID革命是一相情愿还是众望所归

关于我们 | 广告服务 | 帮助中心 | 联系我们 | 友情链接 | 版权申明
客服电话:0531-82679069   编辑部电话:0531-82679328   节假日电话:0531-89180705   客服QQ:651127860 QQ群:41109672  47658979  MSN:RFIDinfo@126.com
版权所有©2003-2008  RFID射频快报 鲁ICP备05021498号 增值电信业务经营许可证鲁B2-20050166号