using CentralControl.BaseData; using CommonFunc; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace CentralControl.App_Code { public class LogicLineSiteOff { Thread UpMaterialThread; PlcHelper plcHelper; Dictionary OffLineRFIDDic = new Dictionary(); public LogicLineSiteOff(PlcHelper plc) { plcHelper = plc; } public LogicLineSiteOff() { plcHelper = new PlcHelper(); plcHelper.Connection("127.0.0.1"); } /// /// 启动上件扫描监听 /// public void StartUpMateril(string lineNo) { OffLineRFIDDic.Add(lineNo, ""); //添加下件件区 队列 List list = StaticData.OffMaterialAreaList.Where(t => (t.LineNo).ToString() == lineNo.ToString()).ToList(); StaticData.OffMaterialsDic.Add(lineNo, list); ////创建物料上车线程集合 Thread carthread = new Thread(new ParameterizedThreadStart(MaterialOffTeamMethod)); carthread.IsBackground = true; carthread.Start(lineNo); } private void MaterialOffTeamMethod(object lineno) { Logger logger = new Logger(); while (true) { //根据总装线的 读取RFID 获取 箱体成品编码 object productno = plcHelper.Read(StaticData.getPlcInfoByCode("inlinematerial_" + lineno)); ///测试数据 if (productno == null) { productno = "123"; } ///预留 pcl地址位读取订单号,或者总装物料编码, 或者 bom的版本号 MesViewData datames = MESDBService.GetOffLineMaterialyRFid(productno.ToString()); if (OffLineRFIDDic[lineno.ToString()] != productno.ToString()) { logger.Log("当前扫描RFID:" + productno.ToString()); //获取外筒物料半成品编码 string currmaterialno = datames.BackNumber.Substring(0, 9); List list = StaticData.OffMaterialsDic[lineno.ToString()]; //插入数据库 上料队列 OffLineMaterialList product = new OffLineMaterialList(); product.MaterialNo = currmaterialno; //product.MaterialInfo = material; product.MaterDetailList = new List(); product.ProductBarNo = productno.ToString(); product.LineNo = lineno.ToString(); product.Id = DBService.AddOffLineMaterialList(product); list.Add(product); } Thread.Sleep(100000); } } } }