RFIDManager.cs 2.8 KB

using Asa.RFID;
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace OnlineStore.DeviceLibrary
{
    public class RFIDManager
    { 
        public static ReaderAll RfidReader = new Asa.RFID.ReaderAll(); 

        public static void Open(string[] iparray)
        {
            string path = Application.StartupPath + @"\logs\rfid\";
            RFIDManager.RfidReader.LogPath = path;
            //   string[] rfidArray = rfidList.ToArray();
            //连接rfip 
            RFIDManager.RfidReader.Open(iparray);
            RfidReader.GetValue += RfidReader_GetValue;
        }

        private static void RfidReader_GetValue(string s)
        {
            LogUtil.info("RfidReader_GetValue:" + s);
        }
        public static RFIDData ReadRFID(string ip, bool isClear = false)
        {
            try
            {
                if (String.IsNullOrEmpty(ip).Equals(false) )
                {
                    RFIDData data = new RFIDData(RfidReader.Read(ip));
                    if (isClear)
                    {
                        RfidReader.Clear(ip);
                    }
                    return data;
                }
            }
            catch (Exception ex)
            {
                //LogUtil.error("ReadRFID["+ip+"]出错:" + ex.ToString());
            }
            return new RFIDData(-1, -1);
        }

      
        public static void Close()
        {
            try
            {
                RfidReader.Close();
            }
            catch (Exception ex)
            {
                LogUtil.error("关闭RFID出错:" + ex.ToString());
            }
        }
        
    }
    public class RFIDData
    {
        /// <summary>
        /// RFID类型,区分是料架还是托盘,托盘E=69,A=65
        /// </summary>
        public int RFType = 0;
        /// <summary>
        /// 托盘编号,从1-32
        /// </summary>
        public int Num = 0;

        public RFIDData(int num, int t)
        {
            this.RFType = t;
            this.Num = num;
        }

        public RFIDData(byte[] data)
        {
            try
            {
                if (data != null && data.Length > 2)
                {
                    RFType = data[1];
                    Num = Convert.ToInt32(data[2]);
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("RFIP 数据【" + data + "】 获取编码失败");
            }
        }
        public byte[] ToData()
        {
            return new byte[] { (byte)RFType, (byte)Num };
        }
        public string ToStr()
        {
            return "  [" + RFType + "],[" + Num + "] ";
        }

    }

}