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

不同厂家RFID读写器类做成统一编程接口的实现
设计模式:采用工厂模式
一:准备工作:
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厂家读写器操作类

本文发布于:2024-09-23 09:24:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/318901.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:读写器   通知   界面   标签   厂家   连接   读取   基类
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议