RFIDReader.cs 2.0 KB
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Asa.RFID.RFID;

namespace Asa.RFID
{
    public class RFIDReader
    {
        public static readonly ILog LOGGER = LogManager.GetLogger("RollingLogFileAppender");

        private static Dictionary<string, RFID> rfidMap = new Dictionary<string, RFID>();

        /// <summary>
        /// 打开所有
        /// </summary>
        /// <param name="ipArr"></param>
        /// <param name="OnReceive"></param>
        /// <param name="ip"></param>
        public static  void Open(Received_Event OnReceive, params string[] ipArr)
        {
            foreach(var ip in ipArr)
            {
                if (rfidMap.ContainsKey(ip))
                {
                    rfidMap[ip].StartAutoScan(OnReceive);
                }
                else
                {
                    RFID rfid = new RFID(ip);
                    rfid.StartAutoScan(OnReceive);
                    rfidMap.Add(ip, rfid);
                }
            }
        }

        /// <summary>
        /// 获取最后读到的标签并清理
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        public static byte[] ReadAndClear(string ip)
        {
            if (rfidMap.ContainsKey(ip))
            {
                return rfidMap[ip].ReadAndClear();
            }
            return null;
        }

        /// <summary>
        /// 获取最后读到的标签
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        public static byte[] Read(string ip)
        {
            if (rfidMap.ContainsKey(ip))
            {
                return rfidMap[ip].Read();
            }
            return null;
        }


        /// <summary>
        /// 关闭所有
        /// </summary>
        public static void CloseAll()
        {
            foreach(var rfid in rfidMap.Values)
            {
                rfid.StopAutoScan();
            }
        }
    }
}