TSAVPosition.cs 3.4 KB
using System;
using System.Collections.Generic; 
using TSA_V.DeviceLibrary;

namespace TSA_V.LoadCSVLibrary
{
    public class TSAVPosition : PostionBase
    {   
        /// <summary>
        ///旋转位置
        /// </summary>
        [CSVAttribute("旋转位置")]
        public int RotatePosition { get; set; }

     
        /// <summary>
        ///灯列表
        /// </summary>
        [CSVAttribute("灯列表")]
        public string  Leds { get; set; }
        /// <summary>
        ///设备IP
        /// </summary>
        [CSVAttribute("设备IP")]
        public string  DeviceIP { get; set; }
        public NodeInfo GetNode(Dictionary<int, Dictionary<int, NodeInfo>> dictionary)
        {
            string[] array = this.PositionName.Split('_');
            if (array.Length == 3)
            {
                int indexi = Convert.ToInt32(array[0]);
                int indexj = Convert.ToInt32(array[1]);

                if (dictionary.ContainsKey(indexi))
                {
                    if (dictionary[indexi].ContainsKey(indexj))
                    {
                        return dictionary[indexi][indexj];
                    }
                }
            } return null;
        }

        private List<int> ledList = null;
        public List<int> getLedList(string text = "")
        {
            if (text == "")
            { 
                if (ledList == null)
                {
                    ledList = TextToIndexs(Leds);
                }
                return ledList;
            }
            else
            {
                return TextToIndexs(text);
            }
        }
        private List<int> TextToIndexs(string text)
        {
            List<int> list = new List<int>();
            if (text.IndexOf('#') >= 0)
            {
                string[] str = text.Split('#');
                foreach (string s in str)
                {
                    try
                    {
                        int value = Convert.ToInt32(s);
                        list.Add(value);
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
            else if (text.IndexOf('-') >= 0)
            {
                string[] str = text.Split('-');

                try
                {
                    int min = Convert.ToInt32(str[0]);
                    int max = Convert.ToInt32(str[str.Length - 1]);
                    for (int i = min; i <= max; i++)
                    {
                        list.Add(i);
                    }
                }
                catch (Exception ex)
                {

                }
            }
            else
            {
                try
                {
                    int value = Convert.ToInt32(text);
                    list.Add(value);
                }
                catch (Exception e)
                {
                }
            }
            return list;
        }

        public bool IsRgbLed()
        {
            return PositionType.Equals(3);
        }

        public bool IsLedLabel()
        {
            return PositionType.Equals(2);
        }
        public bool IsNodePos()
        {
            if(PositionType.Equals(2))
            {
                return false;
            }
            if (PositionType.Equals(3))
            {
                return false;
            }
            return true;
        }
    }
}