EquipManager.cs 7.0 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text; 
using System.Windows.Forms;

namespace OnlineStore.DeviceLibrary
{
    public class EquipManager
    { 
        public static int CurrInOutType = 0;
        public static bool UseBuzzer = true;
        public static EquipBean Equip = null;
        public static EquipConfig Config = null;
        private static bool isInit = false;
        public static bool IsConnectServer = !ConfigAppSettings.GetValue(Setting_Init.http_server).Equals("");

        public static List<int> DisStationList = new List<int>();

        public EquipManager()
        {
        }
        #region 配置文件加载更新
        public static void CheckEnum(Type type)
        {
            if (type.IsEnum)
            {
                List<int> valueList = new List<int>();
                foreach (int item in Enum.GetValues(type))
                {
                    if (valueList.Contains(item))
                    {
                        LogUtil.error(type.Name + "枚举值:" + item + "重复存在,请检查代码,即将 退出程序!");
                        MessageBox.Show(type.Name + "枚举值:" + item + "重复存在,请检查代码,即将 退出程序!");
                        Application.Exit();
                        break;
                    }
                    valueList.Add(item);
                }
            }
        }
        public static EquipBean InitStore()
        {
            try
            { 
                BaseConfig.SubDIList = new Dictionary<int, Dictionary<string, ConfigIO>>();
                BaseConfig.SubDOList = new Dictionary<int, Dictionary<string, ConfigIO>>();
                BaseConfig.ProIOIpMap = new Dictionary<string, string>();
                if (!isInit)
                {
                    string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
                    if (server.Equals(""))
                    {
                        IsConnectServer = false;
                    }
                    CheckEnum(typeof(MoveStep));
                    CheckEnum(typeof(StoreStatus));
                    CheckEnum(typeof(StoreRunStatus));

                    isInit = true;
                    LogUtil.info("开始加载配置");
                    string appPath = Application.StartupPath;
                    string CID = ConfigAppSettings.GetValue(Setting_Init.Store_CID);


                    string linefilePath = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_ConfigPath);
                    Config = CSVConfigReader.LoadStoreConfig(0, CID, "Line", linefilePath);


                    string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.Box_ConfigPath);
                   
                    string positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config);

                    CSVPositionReader<ShelfPosition>.AddCSVFile(positionConfigFile);

                    LogUtil.info("加载料仓完成!");
                    Equip = new EquipBean(Config);
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("出错:" + ex.ToString());
                MessageBox.Show(ex.ToString(), "加载配置错误(请检查配置)");
                Application.Exit();
            }
            return Equip;
        }
       

        #endregion

       
        public static string GetLocationPosId(int deviceID, int width)
        {
            if (deviceID <= 0)
            {
                string config = ConfigAppSettings.GetValue(Setting_Init.Location_PosID_ + width);
                return config;
            }
            else
            {
                string config = ConfigAppSettings.GetValue(Setting_Init.Location_PosID_ +deviceID+"_"+ width);
                return config;
            }
        }
 
        public static void UpdateStoreConfig(EquipConfig storeConfig)
        {
            try
            {
                //位置配置到文件中
                string appPath = Application.StartupPath;

                string configFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_ConfigPath);
                bool result = CSVConfigReader.SaveBoxPosition(configFile, storeConfig);
                if (!result)
                {
                    LogUtil.error("保存配置文件失败:" + configFile);
                }
                Equip.Config = storeConfig;
                Config = storeConfig;
            }
            catch (Exception ex)
            {
                LogUtil.error("出错:", ex);
            }
        }
      
        //private static string api_communication = "service/store/communication";    //流水线状态通信接口
        //private static string api_nextFeeder = "service/store/nextFeeder";  // 出库站位列表切换接口
        //public static string GetPostApi(string host)
        //{
        //    if (host == "")
        //    {
        //        host = ConfigAppSettings.GetValue(Setting_Init.http_server);
        //    }
        //    if (!host.StartsWith("http://"))
        //    {
        //        host = "http://" + host;
        //    }
        //    if (!host.EndsWith("/"))
        //    {
        //        host = host + "/";
        //    }
        //    return host + api_communication;
        //}
        //public static string GetNextFeederApi(string host)
        //{
        //    if (host == "")
        //    {
        //        host = ConfigAppSettings.GetValue(Setting_Init.http_server);
        //    }
        //    if (!host.StartsWith("http://"))
        //    {
        //        host = "http://" + host;
        //    }
        //    if (!host.EndsWith("/"))
        //    {
        //        host = host + "/";
        //    }
        //    return host + api_nextFeeder;
        //}

        //public static string Addr_posReelCheck = "/rest/api/qisda/device/posReelCheck";
        //public static string GetPosReelCheckApi(string host)
        //{
        //    if (host == "")
        //    {
        //        host = ConfigAppSettings.GetValue(Setting_Init.http_server);
        //    }
        //    if (!host.StartsWith("http://"))
        //    {
        //        host = "http://" + host;
        //    }
        //    if (!host.EndsWith("/"))
        //    {
        //        host = host + "/";
        //    }
        //    return host + Addr_posReelCheck;
        //}

     
        public static bool checkWatch(Stopwatch watch, int targetMs, bool isStop = false)
        {
            if (!watch.IsRunning)
            {
                watch.Restart();
                return false;
            }
            else if (watch.ElapsedMilliseconds >= targetMs)
            {
                if (isStop)
                {
                    watch.Stop();
                }
                return true;
            }
            return false;
        }

      
    }
  
}