设计模式:采用工厂模式
一:准备工作:
1:准备好不同厂家的RFID读写器及配置天线和馈线,RFID标签若干 2:收集不同厂家读写器及其编程接口API
二:编写一个RFID读写器操作基类
下面是核心代码:
/// <summary>
/// 不同厂家RFID读写器操作基类
/// </summary>
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;
/// <summary>
/// 通知界面层告知标签的读取信息
/// </summary>
public void NoticeEPC()
{
if (NoticeEPCHandler != null)
{
NoticeEPCEventArgs arg = new NoticeEPCEventArgs();
arg.DtEPC = this.mDtEPC;
NoticeEPCHandler(null, arg);
dc资源
}
}
/// <summary>
/// 通知界面层连接读写器成功或失败
/// </summary>
public void NoticeConnected()
{
if (NoticeConnectedHandler != null)
{
EventArgs arg = new EventArgs();
NoticeConnectedHandler(null, arg);
}
}
}
三:编写一个A厂家读写器操作类
internal class SpeedReaderForHSJC : BaseSpeedReader
{
/// <summary>
/// 连接读取器并开始读取标签
/// </summary>
/// <param name="readerName"></param>
/// <returns>连接成功返回true</returns>
public override bool Run(string readerName)
{
try
{
Reader.Logging += new EventHandler<LoggingEventArgs>(LoggingHandler);
Reader.Connected += new EventHandler<ConnectionChangedEventArgs>(ConnectedHandler);
Reader.Started += new EventHandler<StartedEventArgs>(StartedHandler);
Reader.TagsReported += new EventHandler<TagsReportedEventArgs>(TagsReportedHandler);
Reader.Connect(readerName,100); //默认端口为100
//如果读写器连接成功,就通知基类
if (Reader.IsConnected)
{
base.NoticeConnected(); //通知基类
Reader.Start();
}
return Reader.IsConnected;
}
catch (Exception ex)
{
throw ex;
}
return false;
}
/// <summary>
/// 读到标签后的触发事件
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
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 + "'");
if (rows.Length > 0)
{
//读取次数加1智能卡制作
rows[0]["ReadCount"] = System.Convert.ToInt32(rows[0]["ReadCount"]) + 1;
}解子征
else
{
//新增一行
DataRow newRow = mDtEPC.NewRow();
newRow["EPC"] = myEPC;
newRow["ReadCount"] = 1;
mDtEPC.Rows.Add(newRow);
}
}
}//end foreach
base.NoticeEPC(); //通知基类,然后触发回调函数,给界面层调用
}
catch (Exception ex)
{
throw ex;
}
}
}
四:编写一个B厂家读写器操作类