不同厂家RFID读写器统一编程接口的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

不同厂家RFID读写器类做成统一编程接口的实现设计模式:采用工厂模式

一:准备工作:

1:准备好不同厂家的RFID读写器及配置天线和馈线,RFID标签若干

2:收集不同厂家读写器及其编程接口API

二:编写一个RFID读写器操作基类

下面是核心代码:

///

/// 不同厂家RFID读写器操作基类

///

public class BaseSpeedReader

{

protected Form mFrmScan = null;

protected DataTable mDtEPC = null;

public delegate void MethodInvoke();

public delegate void NoticeEPC_EventHandler(object sender, Common.Args.NoticeEPCEventArgs e);

[Category("DMZ"), Description("通知界面层处理标签"), DefaultValue((true))]

public event NoticeEPC_EventHandler NoticeEPCHandler;

//EventHandler

[Category("DMZ"), Description("通知界面层已连接读写器"), DefaultValue((true))]

public event EventHandler NoticeConnectedHandler;

///

/// 通知界面层告知标签的读取信息

///

public void NoticeEPC()

{

if (NoticeEPCHandler != null)

{

NoticeEPCEventArgs arg = new NoticeEPCEventArgs();

arg.DtEPC = this.mDtEPC;

NoticeEPCHandler(null, arg);

}

}

///

/// 通知界面层连接读写器成功或失败

///

public void NoticeConnected()

{

if (NoticeConnectedHandler != null)

{

EventArgs arg = new EventArgs();

NoticeConnectedHandler(null, arg);

}

}

}

三:编写一个A厂家读写器操作类

internal class SpeedReaderForHSJC : BaseSpeedReader

{

///

///连接读取器并开始读取标签

///

///

///连接成功返回true

public override bool Run(string readerName)

{

try

{

Reader.Logging += new

EventHandler(LoggingHandler);

Reader.Connected += new

EventHandler(ConnectedHandler);

Reader.Started += new

EventHandler(StartedHandler);

Reader.TagsReported += new

EventHandler(TagsReportedHandler);

Reader.Connect(readerName,100); //默认端口为100

//如果读写器连接成功,就通知基类

if (Reader.IsConnected)

{

base.NoticeConnected(); //通知基类

Reader.Start();

}

return Reader.IsConnected;

}

catch (Exception ex)

{

throw ex;

}

return false;

}

///

///读到标签后的触发事件

///

///

///

public void TagsReportedHandler(object sender, TagsReportedEventArgs args)

{

try

{

foreach (Tag tag in args.TagReport.Tags)

{

if (tag.Epc.Length > 17)

{

string myEPC = tag.Epc.Substring(0, 12);//从第5位开始读取

DataRow[] rows = mDtEPC.Select("EPC='"+ myEPC + "'");

相关文档
最新文档