AgvInfo.cs 5.3 KB
using System;
using AGVControl_Steel;

namespace Model
{
    /// <summary>
    /// 小车信息
    /// </summary>
    public class AgvInfo
    {
        private int currSteelCount = 0;
        private const int STEEL_MAX = 5;

        /// <summary>
        /// 小车名称
        /// </summary>
        public string Name { set; get; } = "";
        /// <summary>
        /// 在Fleet中的ID
        /// </summary>
        public string FleetID { set; get; } = "";
        /// <summary>
        /// 小车IP地址
        /// </summary>
        public string IP { set; get; } = "";
        /// <summary>
        /// 带IP的完整名称
        /// </summary>
        public string FullName
        {
            get
            {
                return string.Format("{0}[{1}] ", Name, IP);
            }
        }
        /// <summary>
        /// 授权码
        /// </summary>
        public string Authorization { set; get; } = "";
        /// <summary>
        /// 当前位置
        /// </summary>
        public string Place { set; get; } = "";

        public string SteelFrom { set; get; } = "";
        /// <summary>
        /// 车间
        /// </summary>
        public string Workshop { set; get; } = "";
        /// <summary>
        /// 是否自动使用
        /// </summary>
        public bool IsAuto { set; get; } = false;
        /// <summary>
        /// 是否在线
        /// </summary>
        public bool IsOnline { set; get; } = false;
        /// <summary>
        /// 电量百分比
        /// </summary>
        public int Battery { set; get; } = 0;
        /// <summary>
        /// AGV最大充电电量
        /// </summary>
        public int BatteryMax { set; get; } = 0;
        /// <summary>
        /// AGV最低电量,小于此值必须充电
        /// </summary>
        public int BatteryMin { set; get; } = 0;
        /// <summary>
        /// 小车坐标位置
        /// </summary>
        public System.Drawing.PointF Position { set; get; }
        /// <summary>
        /// 任务发送
        /// </summary>
        public string TaskSend { set; get; } = "";
        /// <summary>
        /// 状态ID号
        /// </summary>
        public int StateID { set; get; } = -1;
        /// <summary>
        /// 状态文本
        /// </summary>
        public string StateText { set; get; } = "";
        /// <summary>
        /// 任务文本
        /// </summary>
        public string MissionText { set; get; } = "";
        /// <summary>
        /// IO模块的guid
        /// </summary>
        public string IOGuid { set; get; } = "";
        /// <summary>
        /// 是否正在被调用
        /// </summary>
        public bool IsCall { set; get; } = false;
        /// <summary>
        /// 当前的工作
        /// </summary>
        public Job CurrentJob { set; get; } = null;

        /// <summary>
        /// 表格行显示
        /// </summary>
        /// <returns></returns>
        public string[] ToRow()
        {
            string[] arr = new string[] { Name, Place, StateText, Battery.ToString(), IsOnline.ToString(), IsAuto.ToString(), "清除" };
            return arr;
        }

        public string ToMissionState()
        {
            string s = FullName + "\r\n\r\n" + MissionText;
            return s;
        }

        /// <summary>
        /// 是否在自己的车间里面
        /// </summary>
        /// <returns></returns>
        public bool IsSelfWorkshop()
        {
            if (Position.Y < 55)
            {
                if (Workshop.IndexOf('D') > 0)
                    return true;
                else if (Workshop.IndexOf('C') > 0)
                    return false;
            }
            else if (Position.Y > 62)
            {
                if (Workshop.IndexOf('D') > 0)
                    return false;
                else if (Workshop.IndexOf('C') > 0)
                    return true;
            }

            return false;
        }

        /// <summary>
        /// 是否在4D车间
        /// </summary>
        /// <returns></returns>
        public bool Is4DWorkshop()
        {
            if (Position.Y < 55)
                return true;
            else if (Position.Y > 62)
                return false;
            else
                return false;
        }

        /// <summary>
        /// 钢板是否已放满
        /// </summary>
        /// <returns></returns>
        public bool IsSteelFull()
        {
            if (currSteelCount >= STEEL_MAX)
                return true;
            else
                return false;
        }

        /// <summary>
        /// 钢板是否取空
        /// </summary>
        /// <returns></returns>
        public bool IsSteelEmpty()
        {
            if (currSteelCount <= 0)
                return true;
            else
                return false;
        }

        /// <summary>
        /// 钢板数量增加
        /// </summary>
        public void SteelCountAdd()
        {
            currSteelCount++;
        }

        /// <summary>
        /// 钢板数量清零
        /// </summary>
        public void ClearSteelCount()
        {
            currSteelCount = 0;
        }

        /// <summary>
        /// 钢板数量放满
        /// </summary>
        public void FillSteelCount()
        {
            currSteelCount = STEEL_MAX;
        }

    }
}