KTK_DeviceBase.cs 6.2 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
 

namespace OnlineStore.DeviceLibrary
{
    public abstract class KTK_DeviceBase
    {
        /// <summary>
        /// 料仓单个调试状态(默认不是调试状态)
        /// </summary>
        public bool IsDebug = false;
        public Dictionary<string, ConfigIO> DIList { get; set; }
        public Dictionary<string, ConfigIO> DOList { get; set; }
        /// <summary>
        ///1=设备联机(正常就绪)(入库后,BOX恢复原始状态)(出库后,移载装置恢复原始状态),
        ///2=急停,3=故障,4=警告,5=调试
        ///  6=入库执行中,7=入仓完成,8=入仓失败
        /// 9=出库执行,10=出仓完成,11=出库失败
        /// </summary>
        public StoreStatus storeStatus = StoreStatus.StoreOnline;
        /// <summary>
        /// 提示消息,一般发给服务器后清空(LineBean表示报警提示消息,BoxBean表示出入库失败的原因记录)
        /// </summary>
        public string WarnMsg = "";
        /// <summary>
        /// 日志颜色
        /// </summary>
        protected static Color storeMoveColor = Color.Blue;
        protected static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public string StoreName { get; set; }
        public int StoreID { get; set; }
        /// <summary>
        /// 料仓状态
        /// </summary>
        private StoreRunStatus storerunstatus = StoreRunStatus.Wait;
        /// <summary>
        /// 定时器
        /// </summary>
        protected System.Timers.Timer mainTimer;

        private bool isInit = false;
        /// <summary>
        /// 初始化
        /// </summary>
        protected virtual void Init()
        {
            if (!isInit)
            {
                StoreMove = new StoreMoveInfo(StoreID);

                mainTimer = new System.Timers.Timer();
                mainTimer.Enabled = false;
                mainTimer.Interval = 300;
                mainTimer.Elapsed += timersTimer_Elapsed;
                mainTimer.AutoReset = true;
                isInit = true;
            }
        }
        public StoreRunStatus storeRunStatus
        {
            get
            {
                return storerunstatus;
            }
            set
            {
                StoreRunStatus oldStatus = storerunstatus;
                storerunstatus = value;
            }
        }

        /// <summary>
        /// 移动信息
        /// </summary>
        public StoreMoveInfo StoreMove = null;
        
        /// <summary>
        /// 定时处理,监听信号,监听IO
        /// </summary> 
        protected abstract void timersTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e);
        #region 出库
        /// <summary>
        /// 开始出库运动
        /// </summary> 
        public abstract bool StartOutStoreMove(InOutStoreParam param);
        protected abstract void OutStoreProcess();
        #endregion

        #region 入库
        /// <summary>
        /// 开始入库移动移动
        /// </summary> 
        public abstract void StartInStoreMove(InOutStoreParam param);
        protected abstract void InStoreProcess();
        #endregion

     
         
        public string GetRunStr()
        {
            string sta = "运行中";
            string aa = "";
            switch (storeRunStatus)
            {
                case StoreRunStatus.Busy:
                    sta = "忙碌";
                    break;
                case StoreRunStatus.HomeMoving:
                    sta = "原点返回";
                    break;
                case StoreRunStatus.Reset:
                    sta = "重置";
                    break;
                case StoreRunStatus.Runing:
                    sta = "运行中";
                    break;
                case StoreRunStatus.Wait:
                    sta = "等待启动";
                    break;
            }
            if (storeRunStatus > StoreRunStatus.Wait)
            {
                //"0":"急停中",   "1":"设备联机",   "2":"故障中", "3":"入库执行中",  "4":"出库执行中",   5":"料盘入仓位完成",   "6":"料盘出仓位完成",  7":"设备调试中",
                switch (storeStatus)
                {
                    case StoreStatus.Debugging:
                        aa = "设备调试中";
                        break;
                    case StoreStatus.InStoreEnd:
                        aa = "料盘入仓位完成";
                        break;
                    case StoreStatus.InStoreExecute:
                        aa = "入库执行中";
                        break;
                    case StoreStatus.InTrouble:
                        aa = "故障中";
                        break;
                    case StoreStatus.OutStoreBoxEnd:
                        aa = "料盘出仓位完成";
                        break;
                    case StoreStatus.OutStoreExecute:
                        aa = "出库执行中";
                        break;
                    case StoreStatus.StoreOnline:
                        aa = "设备联机";
                        break;
                    case StoreStatus.SuddenStop:
                        aa = "急停中";
                        break;
                    case StoreStatus.OutMoveExecute:
                        aa = "出库完成";
                        break;
                    case StoreStatus.InStoreFaild:
                        aa = "入库失败(" + WarnMsg + ")";
                        break;
                    case StoreStatus.OutStoreFaild:
                        aa = "出库失败(" + WarnMsg + ")";
                        break;
                }
                if (!aa.Equals(""))
                {
                    return sta + "_" + aa;
                }
                else
                {
                    return sta;
                }
            }
            else
            {
                return sta;
            }
        }
         
    }
}