using HighWayIot.Log4net; using HighWayIot.Plc; using HighWayIot.Plc.PlcHelper; using HighWayIot.Repository.domain; using HighWayIot.Repository.service; using Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Schema; using Timer = System.Threading.Timer; namespace HighWayIot.Winform.Business { public class RecipeSendBusiness { Timer GetSchedulingTimer; RecipeSignal recipeSignal = new RecipeSignal(); ZxSchedulingService zxSchedulingService = ZxSchedulingService.Instance; ZxRecipeParaService zxRecipeParaService = ZxRecipeParaService.Instance; ZxRecipePositionParaService zxRecipePositionParaService = ZxRecipePositionParaService.Instance; RecipeParaHelper recipeParaHelper = new RecipeParaHelper(); public RecipeSendBusiness() { GetSchedulingTimer = new Timer(new System.Threading.TimerCallback(ReadSignal), null, 0, 1000); } /// /// 重复读取 /// /// public void ReadSignal(object o) { Dictionary a = recipeSignal.ReadSchedulingSignal(); if(a == null) { return; } if (a == null) { LogHelper.Instance.Error("排程信号读取失败"); } foreach (var item in a) { if (item.Value) { var schedulingInfo = zxSchedulingService.GetSchedulingInfo(); if ((item.Key + 1) < 63) { string recipeNo = schedulingInfo.Single(x => x.Id == item.Key + 1).RecipeNo1; ZxRecipeParaEntity recipeParaInfo = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(recipeNo).FirstOrDefault(); List zxRecipePositionParaEntities = zxRecipePositionParaService.GetRecipePositionParaInfos(x => x.RecipeCode == recipeNo); if (recipeParaInfo == null) { LogHelper.Instance.Error("配方信息获取失败"); return; } if (recipeParaHelper.UploadToPLC(recipeParaInfo, zxRecipePositionParaEntities)) { PlcConnect.PlcWrite2($"B{(item.Key + 0x901).ToString("X")}", false, DataTypeEnum.Bool); } } else { string recipeNo = schedulingInfo.Single(x => x.Id == item.Key + 1).RecipeNo2; ZxRecipeParaEntity recipeParaInfo = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(recipeNo).FirstOrDefault(); List zxRecipePositionParaEntities = zxRecipePositionParaService.GetRecipePositionParaInfos(x => x.RecipeCode == recipeNo); if (recipeParaInfo == null) { LogHelper.Instance.Error("配方信息获取失败"); return; } if (recipeParaHelper.UploadToPLC(recipeParaInfo, zxRecipePositionParaEntities)) { PlcConnect.PlcWrite2($"B{(item.Key + 0x941).ToString("X")}", false, DataTypeEnum.Bool); } } return; } } } } }