VerticalPosition.cs 3.1 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace OnlineStore.LoadCSVLibrary
{
    /// <summary>
    /// 松下伺服485控制,单台料仓
    /// </summary>
    public class VerticalPosition : PostionBase
    {
      
        /// <summary>
        /// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
        /// </summary>
        [CSVAttribute("料仓ID")]
        public int StoreId { get; set; }
        /// <summary>
        /// 库位类型  ,1=小料盒,2=大料盒
        /// </summary>
        [CSVAttribute("库位类型")]
        public int PosType { get; set; }

        /// <summary>
        /// 料斗旋转轴位置P2
        /// </summary>
        [CSVAttribute("料斗旋转轴位置P2")]
        public int MiddleAxis_P2 { get; set; }
        /// <summary>
        /// 亮灯索引
        /// </summary>
        [CSVAttribute("亮灯索引")]
        public string LedIndex { get; set; }
        /// <summary>
        /// 亮灯索引
        /// </summary>
        [CSVAttribute("灯区域索引")]
        public int LedDmx { get; set; }

        private List<int> LedList = null;

        public List<int> GetLedList(bool isReload = false )
        {
            if (LedList == null || isReload)
            {
                LedList = new List<int>();
                string[] arrays = LedIndex.Split(';');
                if (arrays.Length > 0)
                {
                    foreach (string str in arrays)
                    {
                        try
                        {
                            int led = Convert.ToInt32(str.Trim());
                            LedList.Add(led);
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                }
            }
            return LedList;
        }

        public static bool CheckPosition(VerticalPosition position, VerticalStoreConfig Config)
        {
            try
            {
                if (Config.Middle_Axis.PositionIsHasLimit())
                {
                    int mMin = Config.Middle_Axis.PositionMin;
                    int mMax = Config.Middle_Axis.PositionMax;
                    if (mMin > position.MiddleAxis_P2 || mMax < position.MiddleAxis_P2)
                    {
                        LogUtil.error(position.PositionNum + " MiddleAxis_Position_P2位置超出" + Config.Middle_Axis.Explain + "上下限(" + mMin + "-" + mMax + ")");
                        return false;
                    }
                }
              
            }
            catch (Exception ex)
            {
                LogUtil.error("验证" + position.PositionNum + "的位置范围出错:" + ex.ToString());
            }
            return true;

        }

        public string PosTypeStr()
        {
            if (PosType.Equals(1))
            {
                return "小料盒";
            }
            else
            {

                return "大料盒";
            }
        }
       

    }
}