NodeManager.cs 3.6 KB
using Agv;
using Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    public class NodeManager
    {

        /// <summary>
        /// 节点信息
        /// </summary>
        public List<Agv.ClientNode> nodeInfo;
        public NodeManager()
        {
            InitNodes();
        }

        /// <summary>
        /// 初始化节点
        /// </summary>
        public void InitNodes()
        {
            nodeInfo = new List<Agv.ClientNode>();
            string path = DeviceLibrary.Context.CONFIG_PATH + SettingString.FileName_AgvProductionLine;
            string[] line = System.IO.File.ReadAllLines(path, Encoding.GetEncoding("gb2312"));
            string[] temp;
            for (int i = 1; i < line.Length; i++)
            {
                temp = line[i].Split(',');
                if (temp.Length != 3) continue;
                bool.TryParse(DeviceLibrary.Context.ReadIni(temp[0], SettingString.IsUse), out bool isUse);
                nodeInfo.Add(new Agv.ClientNode(temp[0], temp[1], temp[2], isUse));
            }
        }
        /// <summary>
        /// 根据alicename获取节点名
        /// </summary>
        /// <param name="aliceName"></param>
        /// <param name="nodeName"></param>
        /// <returns></returns>
        public bool GetNodeNameByAliceName(string aliceName, out string nodeName)
        {
            nodeName = "";
            int id = nodeInfo.FindIndex(s => s.AliceName.Equals(aliceName));
            if (id > -1)
            {
                nodeName = nodeInfo[id].Name;
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 根据节点名获取alicename
        /// </summary>
        /// <param name="nodeName"></param>
        /// <param name="lineName"></param>
        /// <returns></returns>
        public bool GetLineNameByNodeName(string nodeName, out string lineName)
        {
            lineName = "";
            int id = nodeInfo.FindIndex(s => s.Name.Equals(nodeName));
            if (id > -1)
            {
                lineName = nodeInfo[id].LineName;
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 查找节点是否存在以及是否调用
        /// </summary>
        /// <param name="nodeName">节点名称</param>
        /// <returns></returns>
        public bool FindNodeByName(string nodeName,out Agv.ClientNode node)
        {
            node = nodeInfo.Find(s => s.Name.Equals(nodeName) && s.IsUse);
            if (node == null)
                return false;
            else
                return true;
        }
        /// <summary>
        /// 查找节点是否存在以及是否调用
        /// </summary>
        /// <param name="nodeName">节点名称</param>
        /// <returns></returns>
        public bool FindNodeByName(string nodeName)
        {
            Agv.ClientNode node = nodeInfo.Find(s => s.Name.Equals(nodeName) && s.IsUse);
            if (node == null)
                return false;
            else
                return true;
        }
        public bool CheckNodeLevel(string nodeName,Agv.ClientLevel level)
        {
            ClientNode node;
            bool find=FindNodeByName(nodeName,out node);
            if(find)
            {
                if (node.Level.Equals(level))
                    return true;
            }
            return false;
        }
    }
}