不同厂家RFID读写器统一编程接口的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
{
///
///连接读取器并开始读取标签
///
///
///
public override bool Run(string readerName)
{
try
{
Reader.Logging += new
EventHandler
Reader.Connected += new
EventHandler
Reader.Started += new
EventHandler
Reader.TagsReported += new
EventHandler
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 + "'");