/// <summary> /// 转换PG /// </summary> /// <param name="iixServer"></param> /// <returns></returns> public static CmdResultCode TableRotation(IIXServer iixServer) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.TableRotation(); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.SetTableRotation(); Log.GetInstance().NormalWrite(string.Format("[{0}]转换PG成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]转换PG失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]转换PG失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, pgPrimary: iixServer.OutlineState[0].ToString(), pgSecondary: iixServer.OutlineState[1].ToString(), latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 连续指令结束 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode SequenceEnd(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.SequenceEnd(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.SetSequenceEnd(pg); Log.GetInstance().NormalWrite(string.Format("[{0}]连续指令[{1}]结束成功", iixServer.Ip, pg.ToString())); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]连续指令[{1}]结束失败,Error:{2}", iixServer.Ip, pg.ToString(), cmdRes.ToString())); } } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]连续指令结束失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, pgPrimary: OutlineStateCode.Stable.ToString(), latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 设置Panel显示Raster图像 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <param name="color"></param> /// <param name="isFactory"></param> /// <returns></returns> public static CmdResultCode SetRasterImage(IIXServer iixServer, PgSelectCode pg, Color color, bool isFactory) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.SetRasterImage(pg, color.R, color.G, color.B, isFactory); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("设置[{0}]Panel显示Raster图像成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("设置[{0}]Panel显示Raster图像失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("设置[{0}]Panel显示Raster图像失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 获取Capture(获取拍摄数据)处理结果 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode GetCaptureResult(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.GetCaptureResult(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("获取[{0}]Capture(获取拍摄数据)处理结果成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("获取[{0}]Capture(获取拍摄数据)处理结果失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("获取[{0}]Capture(获取拍摄数据)处理结果失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// 向Flash Memory写入文件 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <param name="fileName"></param> /// <returns></returns> public static CmdResultCode WriteFlashMemory(IIXServer iixServer, PgSelectCode pg, string fileName) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.WriteFlashMemory(pg, fileName); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]向Flash Memory写入文件[{1}]成功", iixServer.Ip, fileName)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]向Flash Memory写入文件[{1}]失败,Error:{2}", iixServer.Ip, fileName, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]向Flash Memory写入文件[{1}]失败,Error:{2}", iixServer.Ip, fileName, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// DeMura Check(补正结果确认)开始 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode DeMuraCheckStart(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { //如果上一次的检测结果是正确的才继续执行当前的工作 if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.DeMuraCheckStart(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { Log.GetInstance().NormalWrite(string.Format("[{0}]DeMura Check(补正结果确认)开始成功", iixServer.Ip)); } else { Log.GetInstance().ErrorWrite(string.Format("[{0}]DeMura Check(补正结果确认)开始失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } //修改执行结果 panel.CmdResWork = cmdRes; } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("[{0}]DeMura Check(补正结果确认)开始失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } return(cmdRes); }
/// <summary> /// 点灯 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode PanelOn(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null) { if (panel.CmdResWork == CmdResultCode.Success) { cmdRes = iixServer.DmrSvrApi.PanelOn(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { panel.IsPanelOn = true; iixServer.IsPanelOn = true; Log.GetInstance().NormalWrite(string.Format("屏[{0}]点灯成功", iixServer.AssociatedPanelPos)); } else { iixServer.IsPanelOn = false; Log.GetInstance().ErrorWrite(string.Format("屏[{0}]点灯失败,Error:{1}", iixServer.AssociatedPanelPos, cmdRes.ToString())); } } else { cmdRes = panel.CmdResWork; Log.GetInstance().ErrorWrite(string.Format("屏[{0}]点灯失败,Error:{1}", iixServer.Ip, cmdRes.ToString())); } } Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); return(cmdRes); }
/// <summary> /// VCR扫码 /// </summary> /// <param name="iixServer"></param> /// <returns></returns> public static bool SweepCode(IIXServer iixServer, ref string code) { try { var tasks = new List <Task>(); var fX = false; var fY = false; tasks.Add(Task.Factory.StartNew(() => { var axisInfoX = Global.ListAxis.Where(info => info.AxisName == "VCR-X").FirstOrDefault(); axisInfoX.PosiMode = 1; if (iixServer.AssociatedPanelPos == "#1") { axisInfoX.Dist = (int)axisInfoX.WorkPos1; } else if (iixServer.AssociatedPanelPos == "#2") { axisInfoX.Dist = (int)axisInfoX.WorkPos2; } else if (iixServer.AssociatedPanelPos == "#3") { axisInfoX.Dist = (int)axisInfoX.WorkPos3; } fX = MoveExecute.Pmove(axisInfoX, false); })); tasks.Add(Task.Factory.StartNew(() => { var axisInfoZ = Global.ListAxis.Where(info => info.AxisName == "VCR-Z").FirstOrDefault(); axisInfoZ.PosiMode = 1; if (iixServer.AssociatedPanelPos == "#1") { axisInfoZ.Dist = (int)axisInfoZ.WorkPos1; } else if (iixServer.AssociatedPanelPos == "#2") { axisInfoZ.Dist = (int)axisInfoZ.WorkPos2; } else if (iixServer.AssociatedPanelPos == "#3") { axisInfoZ.Dist = (int)axisInfoZ.WorkPos3; } fY = MoveExecute.Pmove(axisInfoZ, false); })); Task.WaitAll(tasks.ToArray()); if (!fX || !fY) { Log.GetInstance().ErrorWrite("VCR移动到指定位置失败"); return(false); } //发送扫码指令 Global.SocketServer.Send("Trigger"); //休眠500毫秒,等待扫码完成 Thread.Sleep(500); //获取二维码编号 code = Global.SocketServer.Code; Log.GetInstance().NormalWrite(string.Format("")); //清空二维码 Global.SocketServer.Code = ""; //判断二维码的结果 var codeResult = MoveExecute.Result.Successful; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); //存在则删除 if (panel != null) { //操作检测屏幕集合时加锁,防止线程启动过快导致集合修改的异常 lock (Global.ListOLEDPanel) { Global.ListOLEDPanel.Remove(panel); } } lock (Global.ListOLEDPanel) { panel = new OLEDPanel(); panel.PanelNumber = code; panel.PanelPos = iixServer.AssociatedPanelPos; panel.DmrSvrApi = iixServer.DmrSvrApi; panel.PanelWorkPos = "工位#1"; panel.CmdResWork = codeResult == MoveExecute.Result.Successful ? CmdResultCode.Success : CmdResultCode.Other; panel.bRotated = false; panel.IsPanelOn = false; //将屏添加到集合中 Global.ListOLEDPanel.Add(panel); } return(true); } catch (Exception ex) { Log.WriterExceptionLog(ex.ToString()); return(false); } }
/// <summary> /// 关灯 /// </summary> /// <param name="iixServer"></param> /// <param name="pg"></param> /// <returns></returns> public static CmdResultCode PanelOff(IIXServer iixServer, PgSelectCode pg) { CmdResultCode cmdRes = CmdResultCode.Other; //查询当前屏幕是否在集合中存在 OLEDPanel panel = Global.ListOLEDPanel.Where(info => info.PanelPos == iixServer.AssociatedPanelPos).FirstOrDefault(); if (panel != null && panel.IsPanelOn) { cmdRes = iixServer.DmrSvrApi.PanelOff(pg); iixServer.LatestResult = cmdRes.ToString(); if (cmdRes == CmdResultCode.Success) { iixServer.IsPanelOn = false; Log.GetInstance().NormalWrite(string.Format("屏[{0}]关灯成功", iixServer.AssociatedPanelPos)); } else { iixServer.IsPanelOn = true; Log.GetInstance().ErrorWrite(string.Format("屏[{0}]关灯失败,Error:{1}", iixServer.AssociatedPanelPos, cmdRes.ToString())); } //如果上一个工位的检测结果是正确的才继续执行当前工位的工作 if (panel.CmdResWork == CmdResultCode.Success) { Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult); //修改执行结果 panel.CmdResWork = cmdRes; //修改当前的工作位置 panel.PanelWorkPos = "工位1"; } else { cmdRes = panel.CmdResWork; panel.PanelWorkPos = "工位1"; } lock (Global.ListOLEDPanel) { //将屏从集合中移除 Global.ListOLEDPanel.Remove(panel); } //当所有流程执行完后关灯时添加成功/失败数 if (panel.bRotated) { if (cmdRes == CmdResultCode.Success) { Global.PassNumber++; } else { Global.FailNumber++; } } } Global.SetNumber(); return(cmdRes); }