Пример #1
0
        public void Setup()
        {
            openSaveDialogService = new Mock <IOpenSaveDialogService>();

            sut     = new XlsService(openSaveDialogService.Object);
            sutReal = new XlsService(new OpenSaveDialogService());
        }
Пример #2
0
        /// <summary>
        /// 获取所有 Hmi信息,名字:IP
        /// </summary>
        /// <param name="xlsPath"></param>
        /// <param name="sheetName"></param>
        /// <returns></returns>
        static IDictionary <string, string> loadHmi(string xlsPath, string sheetName)
        {
            var dict = new Dictionary <string, string>();

            using (var xlsOp = new XlsService(xlsPath)) {
                var speedDt = xlsOp.ExcelToDataTable(sheetName, true);
                foreach (DataRow row in speedDt.Rows)
                {
                    dict[row["Hmi"].ToString()] = row["Ip"].ToString();
                }
            }
            return(dict);
        }
Пример #3
0
 /// <summary>
 /// 用xls文件初始化排产任务中的工艺Bom汉化字典
 /// </summary>
 /// <param name="xlsPath"></param>
 public static void InitCraftBomZhsDict(string xlsPath)
 {
     using (var xlsOp = new XlsService(xlsPath)) {
         var dt = xlsOp.ExcelToDataTable("bom", true);
         foreach (DataRow row in dt.Rows)
         {
             if (!string.IsNullOrEmpty(row["comment"].ToString()))
             {
                 CraftBomZhsDict[row["column"].ToString()] = row["comment"].ToString();
             }
         }
     }
 }
Пример #4
0
        /// <summary>
        /// 加载 Globa.xls 配置文件
        /// </summary>
        /// <param name="path"></param>
        public static void Load(string path)
        {
            path = YUtil.GetAbsolutePath(path);
            MachineSettingDict = new Dictionary <string, MachineSetting>();
            IpToHmiDict        = new Dictionary <string, string>();
            using (var xlsOp = new XlsService(path)) {
                var speedDt = xlsOp.ExcelToDataTable("逻辑配置", true);
                foreach (DataRow row in speedDt.Rows)
                {
                    MachineSetting setting = new MachineSetting();
                    setting.Code = row["Code"].ToString();
                    if (string.IsNullOrEmpty(setting.Code))
                    {
                        continue;
                    }
                    setting.OeeSpeed = row["OeeSpeed"].ToString();
                    var oeeSpeedMax = row["OeeSpeedMax"].ToString();
                    if (!string.IsNullOrEmpty(oeeSpeedMax) && !string.IsNullOrEmpty(setting.OeeSpeed))
                    {
                        //从Mq接受最大速度
                        if (oeeSpeedMax.ToUpper().StartsWith("MQ_"))
                        {
                            setting.OeeSpeedMax  = oeeSpeedMax.Split('_')[1];
                            setting.OeeSpeedType = OeeActions.CalcOeeSpeedType.MaxSpeedMq;
                            //从Plc中读取最大速度
                        }
                        else if (oeeSpeedMax.ToUpper().StartsWith("PLC_"))
                        {
                            setting.OeeSpeedMax  = oeeSpeedMax.Split('_')[1];
                            setting.OeeSpeedType = OeeActions.CalcOeeSpeedType.MaxSpeedPlc;
                            //最大速度为设定值
                        }
                        else if (float.TryParse(row["OeeSpeedMax"].ToString(), out var maxSettingVal))
                        {
                            if (maxSettingVal == 0)
                            {
                                throw new Exception($"机台{setting.Code} 的 OeeSpeedMax1Setting 为0,请检查");
                            }
                            setting.OeeSpeedMax  = maxSettingVal;
                            setting.OeeSpeedType = OeeActions.CalcOeeSpeedType.MaxSpeedSetting;
                        }
                    }
                    setting.MqNeedSpeed  = row["MqNeedSpeed"].ToString();
                    setting.StateSpeed   = row["StateSpeed"].ToString();
                    setting.NoteMeter    = row["NoteMeter"].ToString();
                    setting.Spark        = row["Spark"].ToString();
                    setting.Od           = row["Od"].ToString();
                    setting.CpmModuleIps = row["CpmModuleIps"].ToString().Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    setting.DPms         = row["Dpms"].ToString().Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    setting.ProcessName  = row["Process"]?.ToString();
                    //setting.StartTrayNum = int.Parse(row["StartTrayNum"].ToString());
                    MachineSettingDict[setting.Code] = setting;
                }

                var ipDt = xlsOp.ExcelToDataTable("Ip配置", true);
                foreach (DataRow row in ipDt.Rows)
                {
                    IpToHmiDict[row["Ip"].ToString()] = row["Hmi"].ToString();
                    var hmi = row["hmi"].ToString().Split('_');
                    //保证后续逻辑不会出现空指针
                    foreach (var s in hmi)
                    {
                        if (!MachineSettingDict.ContainsKey(s))
                        {
                            MachineSettingDict[s] = new MachineSetting();
                        }
                    }
                }

                var otherDt = xlsOp.ExcelToDataTable("其它配置", true);
                foreach (DataRow row in otherDt.Rows)
                {
                    var name  = row["Name"].ToString().ToUpper();
                    var value = row["Value"].ToString().ToUpper();
                    //RC、RF这种收线盘不贴卡,放栈板上面的
                    //即它们的收线盘的 Rfid 就是栈板的 Rfid,多个收线盘共用一个 Rfid
                    if (name == "栈板机台")
                    {
                        PalletMachineCodes = value.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    }
                    else if (name == "重启机台")
                    {
                        UpdateMustReartHmiNames = value.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    }
                }
            }
        }