TrayManager.cs 3.8 KB
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    public partial class TrayManager
    {
        public static Dictionary<string,TrayInfo> Traylist = new Dictionary<string,TrayInfo>();
        /// <summary>
        /// 处理更新托盘信息
        /// </summary>
        /// <param name="rfid"></param>
        /// <param name="addr"></param>
        /// <param name="trayInfo"></param>
        /// <returns>是否放行 放行true, 拦截false</returns>
        public static bool Process(string rfid, int addr, out TrayInfo trayInfo) {
            if (!Traylist.ContainsKey(rfid)) {
                Traylist.Add(rfid, new TrayInfo());
                Traylist[rfid].RFID = rfid;
            }
            Traylist[rfid].LastUpdateTime = DateTime.Now;
            Traylist[rfid].LastAddr = addr;

            trayInfo = Traylist[rfid];
            return true;
        }
    }

    public class TrayInfo {
        string _rfid;
        public string RFID { get => _rfid; set {
                try
                {
                    var ss = Enum.GetNames(typeof(TrayTypeE));
                    TrayType = (TrayTypeE)Enum.Parse(typeof(TrayTypeE), ss.ToList().Find(s => value.StartsWith(s)));
                    _rfid = value;
                }
                catch (Exception ex) {
                    LogUtil.error($"获取RFID的类型时出错:{value}");
                }
            }
        }
        public string Destination;
        public int DestinationAddr;
        public int LastAddr;
        public bool HasLoad;
        public LoadTypeE LoadType;
        public TrayTypeE TrayType;
        public DateTime LastUpdateTime;
        public ReelParam ReelParam;
    }
    public enum LoadTypeE {
        None,
        MTP2,    //流水线治具托盘
        MTP1,    //流水线料盘托盘
        S007,    //料串
        M03,    //Tray料格
        M02,    //PCB料格
        M01,    //PizzaBOX料格
        M04,    //ShoeBOX料格
    }
    public enum TrayTypeE
    {
        C01,    //PCB治具
        C02,    //Pizza治具
        C03,    //Tray治具
        C04,    //ShoeBOX治具
    }
    public partial class TrayManager
    {
        public static Dictionary<LoadTypeE, string> LoadTypeDesc = new Dictionary<LoadTypeE, string>();
        public static Dictionary<TrayTypeE, string> TrayTypeDesc = new Dictionary<TrayTypeE, string>();
        public static Dictionary<int, string> AddrDesc = new Dictionary<int, string>();
        static TrayManager() {
            LoadTypeDesc.Add(LoadTypeE.None, "空");
            LoadTypeDesc.Add(LoadTypeE.MTP2, "流水线治具托盘");
            LoadTypeDesc.Add(LoadTypeE.MTP1, "流水线料盘托盘");
            LoadTypeDesc.Add(LoadTypeE.S007, "料串");
            LoadTypeDesc.Add(LoadTypeE.M03, "Tray料格");
            LoadTypeDesc.Add(LoadTypeE.M02, "PCB料格");
            LoadTypeDesc.Add(LoadTypeE.M01, "PizzaBOX料格");
            LoadTypeDesc.Add(LoadTypeE.M04, "ShoeBOX料格");
            TrayTypeDesc.Add(TrayTypeE.C01, "PCB治具");
            TrayTypeDesc.Add(TrayTypeE.C02, "Pizza治具");
            TrayTypeDesc.Add(TrayTypeE.C03, "Tray治具");
            TrayTypeDesc.Add(TrayTypeE.C04, "ShoeBOX治具");

        }
        public static void Init(Dictionary<string, DeviceGroup> deviceGroup) {
            foreach (var dg in deviceGroup) {
                if (dg.Value.addr_2 >= 0)
                {
                    AddrDesc.Add(dg.Value.addr_1, dg.Value.GroupName + "-1");
                    AddrDesc.Add(dg.Value.addr_2, dg.Value.GroupName + "-2");
                }
                else {
                    AddrDesc.Add(dg.Value.addr_1, dg.Value.GroupName);
                }
            }
        }
    }
}