BizTalk RFID 2010 DSPI 开发经验分享

一、什么是DSPI

设备供应商使用设备服务提供程序接口 (DSPI) 编写设备提供程序,以便与射频标识 (RFID) 平台之间实现接口。提供程序确定一个统一的方法来发现、配置和管理设备,并通过 BizTalk RFID 在设备与业务应用程序之间建立通信。在 RFID 应用程序中,每个设备可能具有不同的规范,响应不同的请求,并使用不同的协议。DSPI 帮助独立硬件供应商 (IHV) 实现设备提供程序,进而规范化 RFID 应用程序中的设备。所有实现 DSPI的各种(RFID、条码、IC 卡等)设备将在Microsoft Windows 上即插即用

1显示RFID中间件的结构图:

1

二、如何使用开发模板实现设备提供程序

本次实验是针对Invengo XCRF860这台设备进行的DSPI开发,开发系统环境为:Windows Server 2008 R2 BizTalk Server  RFID 2010Sqlserver 2008 R2Visual Studio 2010

在安装BizTalk RFID之后,用Visual Studio新建工程时将可以发现DSPI Provider Template这样一个工程类型通过它我们可以新建一个DSPI模板工程该工程中将包含有MyDeviceProvider.csMyPhysicalDeviceProxy.cs两个类文件。

1MyDeviceProvider.cs

该文件中的类将用于封装一些设备的信息以及设备生命周期的管理。其中重要的方法为InitGetProviderMetadata这两个方法在RFID manager加入新设备的时候会调用用于执行初始化配置设备信息以及设置获得元数据的方法。由于笔者是采用网络连接的方式,所以在建立和设备的连接前,程序需要先获得设备的IP和端口号,才能进创建连接。于是我们得在GetProviderMetadata设置元数据加入以下语句:

  

Collection<ProviderCapability> capabilities = new Collection<ProviderCapability>();
capabilities.Add(ProviderCapability.TcpTransport);
ProviderMetadata metadata = new ProviderMetadata(information, capabilities, providerMetadata, null, null);
return metadata;

 

       通过这个语句,Manager在添加设备的时候就会提示用户输入设备的IP和端口(如图1)。从而使设备获得元数据,在创建连接的时候只要通过分析connectionInformation. TransportSettings就可以获得这些数据了。

2

2. MyPhysicalDeviceProxy.cs

该文件中的类将实现获取RFID Manager里面的操作指令配置和执行设备相对应的响应事件起到BizTalk RFID和设备之间的桥梁作用。其中有两个方法起到关键作用下面将进行重点分析

A.      SetupConnection方法

在该方法中首先要建立与设备的连接,通过connectionInformation我们可以知道设备的连接方式和相关元数据,然后通过这些数据配置并建立好连接。

由于RFID设备一般都是采用异步响应的形式来读取标签,所以在SetupConnection中,首先得设置好RFID设备相关事件的回调函数,然后再启动该事件的监听。这样,通过监听,只要有标签被设备天线所识别到,程序就会执行事先配置好的回调函数,从而进行读到标签后的操作。

B.      SendMessage方法:

RFID Manager中,我们可以预览所读到的标签,可以设置设备的一些参数,比如设备读取的天线号,还有读取周期,是否读取标签的用户区数据等。这些操作在我们的DSPI程序里,都将转化成操作指令,传进SendMessage这个方法里,通过这个方法,我们知道操作的类型,从而执行对应的操作并返回响应数据。

MyPhysicalDeviceProxy.cs中可添加配置、修改和保存设备属性的代码,但由于该部分比较繁琐,这里就不做叙述。

关于如何部署编译后的DSPI文件,可参考BizTalk RFID帮助文档:http://msdn.microsoft.com/en-us/library/dd298747(v=BTS.10).aspx

三、开发过程中的一些调试方法

在开发DSPI 接口程序时,调试方法需要特别注意,因为在工程里不可以直接加断点调试。其在调试时,要依赖RFID Manager平台,因此,必须做相关的设置。下面就具体的介绍,在开发DSPI接口程序时的调试方法与技巧。

1.    首先要运行RFID Manager 程序,并把DSPI工程文件编译后的*.dll,配置到RFID Manager这个平台

2.    配置后确保该Provider处于Strated状态然后在系统管理其中找到对应的进程w3wp.exe。由于每一个providerprocess都会产生一个这样的进程,所以调试前请停止所以其他providerprocess的运行,以免混淆。

 

3.    Visual Studio开发环境下,选择Debug菜单,选择 Attach to Processes,这时出现如下的界面,在这里双击w3wp.exe,把其添加到进程中即可,然后关闭对话框

图 3 

4.    在调试程序时,每次编译DSPI接口程序后,都需要停止Provider进程,再重新把*.dll文件配置一遍。为此,我们可以写个批处理文件,来简化调试时的工作。我们假设工程文件名为:XCRF860Demo,而且此工程文件夹名也为XCRF860Demo
   
我们在文本编辑工具里实现如下的内容,并另存为Copy.bat 

"C:\Program Files\Microsoft BizTalk RFID\bin\RfidClientConsole.exe" StopProvider test
Copy "C:\rfidtutorial\XCRF860Demo\XCRF860Demo\obj\debug\XCRF860Demo.dll" "C:\Program Files\Microsoft BizTalk RFID\Providers\test\bin" 
Copy "C:\rfidtutorial\XCRF860Demo\XCRF860Demo\obj\debug\XCRF860Demo.pdb" "C:\Program Files\Microsoft BizTalk RFID\Providers\test\"
"C:\Program Files\Microsoft BizTalk RFID\bin\RfidClientConsole.exe" StartProvider test

           至此,按照上面的方法设置完成后,在DSPI接口工程里设置断点,然后启动Device,就可以看见程序停在了你设置断点的地方了,若重新编译了DSPI接口程序后,只要双击的Copy.bat文件即完成重新配置了

posted @ 2011-01-18 19:35  Will-SharePoint  阅读(926)  评论(0编辑  收藏  举报