RFIDManager.cs 3.5 KB

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

namespace OnlineStore.DeviceLibrary
{
    public class RFIDManager
    {
        public static RFID RfidReader = new RFID();
        // private static int DefaultTrayNum = ConfigAppSettings.GetIntValue(Setting_Init.DefaultTrayNum);
        ///// <summary>
        ///// 获取托盘编码
        ///// </summary> 
        //public static int GetTrayNum(int subType, bool isClear = false)
        //{
        //    if (DefaultTrayNum > 0)
        //    {
        //        return DefaultTrayNum;
        //    }
        //    //  return 9;
        //    if (subType.Equals(104))
        //    {
        //        return LineManager.Line.Sw23TrayNum;
        //    }
        //    else if (subType.Equals(101))
        //    {
        //        return LineManager.Line.Sw41TrayNum;
        //    }

        //    string ip = GetRFIP(subType);
        //    //获取盘号
        //    RFIDData data = ReadRFID(ip, isClear);
        //    if (data != null)
        //    {
        //        if (data.RFType.Equals((byte)'E'))
        //        {
        //            return data.Num;
        //        }
        //        return 0;
        //    }

        //    return 0;
        //} 


        public static RFIDData ReadData(string ip, bool isClear = false)
        {
            try
            {
                //     if (String.IsNullOrEmpty(ip).Equals(false) && LineManager.Line.rfidList.Contains(ip))
                {
                    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 string GetRFIP(int subType, int rtType = 0)
        //{
        //    string ip = "";
        //    string rtName = DeviceConfig.RFIP_Str + "_" + subType.ToString().PadLeft(3, '0');
        //    if (rtType > 0)
        //    {
        //        rtName += "-" + rtType.ToString();
        //    }
        //    if (DeviceConfig.ProRFIpMap.ContainsKey(rtName))
        //    {
        //        ip = DeviceConfig.ProRFIpMap[rtName];
        //    }
        //    return ip;
        //}
    }
    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 + "] ";
        }

    }

}