Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <summary>
        /// 打开服务端完成报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void api_OpenFinished(object sender, EventArgs e)
        {
            IIXServer iixServer = (IIXServer)sender;

            iixServer.IsOpenFinish = true;

            Log.GetInstance().NormalWrite(string.Format("打开[{0}]服务端完成", iixServer.Ip));
        }
Esempio n. 4
0
        /// <summary>
        /// DeMura拍摄完成报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void api_CaptureFinished(object sender, FinishedSequenceEventArgs e)
        {
            IIXServer iixServer = (IIXServer)sender;

            iixServer.IsCaptureFinish = true;

            Log.GetInstance().NormalWrite(string.Format("[{0}]DeMura拍摄完成", iixServer.Ip));
        }
Esempio n. 5
0
        /// <summary>
        /// Flash保存完成报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void api_SaveFinished(object sender, SaveFinishedEventArgs e)
        {
            IIXServer iixServer = (IIXServer)sender;

            iixServer.IsSaveFinish = true;

            Log.GetInstance().NormalWrite(string.Format("[{0}]Flash保存完成", iixServer.Ip));
        }
Esempio n. 6
0
        /// <summary>
        /// Focus自动调整完成报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void api_FocusFinished(object sender, FinishedSequenceEventArgs e)
        {
            IIXServer iixServer = (IIXServer)sender;

            iixServer.IsFocusFinish = true;

            Log.GetInstance().NormalWrite(string.Format("[{0}]Focus自动调整完成", iixServer.Ip));
        }
Esempio n. 7
0
        /// <summary>
        /// Device的检测异常完成报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void api_AbnormalDetected(object sender, AbnormalDetectedEventArgs e)
        {
            IIXServer iixServer = (IIXServer)sender;

            iixServer.IsAbnormalDetect = true;

            Log.GetInstance().NormalWrite(string.Format("[{0}]Device的检测异常完成", iixServer.Ip));
        }
Esempio n. 8
0
        /// <summary>
        /// 获取SlavePC管理Device的状态
        /// </summary>
        /// <param name="iixServer"></param>
        public static void GetDeviceState(IIXServer iixServer)
        {
            List <DevStatCode> listState = iixServer.DmrSvrApi.GetDeviceStatus();

            if (listState[0].ToString() == "AllOK")
            {
                iixServer.LatestResult = listState[0].ToString();
                Log.GetInstance().NormalWrite(string.Format("获取[{0}]管理Device的状态成功", iixServer.Ip));
            }
            else
            {
                iixServer.LatestResult = listState[0].ToString();
                Log.GetInstance().ErrorWrite(string.Format("获取[{0}]管理Device的状态失败,Error:{1}", iixServer.Ip, iixServer.LatestResult));
            }

            Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult);
        }
Esempio n. 9
0
        /// <summary>
        /// 修改时间
        /// </summary>
        /// <param name="iixServer"></param>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static CmdResultCode AdjustPCTime(IIXServer iixServer, DateTimeInfo dateTime)
        {
            CmdResultCode cmdRes = CmdResultCode.Other;

            cmdRes = iixServer.DmrSvrApi.AdjustPCTime(dateTime);
            iixServer.LatestResult = cmdRes.ToString();

            if (cmdRes == CmdResultCode.Success)
            {
                Log.GetInstance().NormalWrite(string.Format("[{0}]修改时间成功", iixServer.Ip));
            }
            else
            {
                Log.GetInstance().ErrorWrite(string.Format("[{0}]修改时间失败,Error:{1}", iixServer.Ip, cmdRes.ToString()));
            }

            return(cmdRes);
        }
Esempio n. 10
0
        /// <summary>
        /// 更新License
        /// </summary>
        /// <param name="iixServer"></param>
        /// <param name="licenseFile"></param>
        /// <returns></returns>
        public static CmdResultCode UpdateLicense(IIXServer iixServer, string licenseFile)
        {
            CmdResultCode cmdRes = CmdResultCode.Other;

            cmdRes = iixServer.DmrSvrApi.UpdateLicense(licenseFile);
            iixServer.LatestResult = cmdRes.ToString();

            if (cmdRes == CmdResultCode.Success)
            {
                Log.GetInstance().NormalWrite(string.Format("[{0}]更新License成功", iixServer.Ip));
            }
            else
            {
                Log.GetInstance().ErrorWrite(string.Format("[{0}]更新License失败,Error:{1}", iixServer.Ip, cmdRes.ToString()));
            }

            return(cmdRes);
        }
Esempio n. 11
0
 /// <summary>
 /// 注册事件
 /// </summary>
 /// <param name="api"></param>
 private void SetEventHandlers(IIXServer iixServer)
 {
     //SlavePC 管理 Device 初始化完了的报告
     iixServer.DmrSvrApi.OpenFinished += api_OpenFinished;
     //DeMura 拍摄完了的报告
     iixServer.DmrSvrApi.CaptureFinished += api_CaptureFinished;
     //Flash保存报告
     iixServer.DmrSvrApi.SaveFinished += api_SaveFinished;
     //Flash 写入完成报告
     iixServer.DmrSvrApi.WriteFinished += api_WriteFinished;
     //补正结果确认处理完了的报告
     iixServer.DmrSvrApi.CheckFinished += api_CheckFinished;
     //Focus 自动调整完了報告
     iixServer.DmrSvrApi.FocusFinished += api_FocusFinished;
     //报告Device的检测异常
     iixServer.DmrSvrApi.AbnormalDetected += api_AbnormalDetected;
     //Flash 擦除完成报告
     iixServer.DmrSvrApi.EraseFinished += api_EraseFinished;
 }
Esempio n. 12
0
        /// <summary>
        /// 切断和 SlavePC 的连接
        /// </summary>
        /// <param name="iixServer"></param>
        /// <returns></returns>
        public static CmdResultCode Disconnect(IIXServer iixServer)
        {
            CmdResultCode cmdRes = CmdResultCode.Other;

            cmdRes = iixServer.DmrSvrApi.Disconnect();
            iixServer.LatestResult = cmdRes.ToString();

            if (cmdRes == CmdResultCode.Success)
            {
                iixServer.ConnState = ConnectionCode.Disconnect;
                Log.GetInstance().NormalWrite(string.Format("关闭[{0}]服务端成功", iixServer.Ip));
            }
            else
            {
                Log.GetInstance().ErrorWrite(string.Format("关闭[{0}]服务端成功,Error:{1}", iixServer.Ip, cmdRes.ToString()));
            }

            Global.UpdateDgv(ip: iixServer.Ip, connOpen: iixServer.ConnState.ToString(), latestResult: iixServer.LatestResult);

            return(cmdRes);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 14
0
        /// <summary>
        /// 关闭 SlavePC 所管理的 Device
        /// </summary>
        /// <param name="iixServer"></param>
        /// <returns></returns>
        public static CmdResultCode Close(IIXServer iixServer)
        {
            CmdResultCode cmdRes = CmdResultCode.Other;

            cmdRes = iixServer.DmrSvrApi.Close();
            iixServer.LatestResult = cmdRes.ToString();

            if (cmdRes == CmdResultCode.Success)
            {
                iixServer.ConnState = ConnectionCode.Close;
                iixServer.SetCloseFinished();
                Log.GetInstance().NormalWrite(string.Format("关闭[{0}]所管理的Device成功", iixServer.Ip));
            }
            else
            {
                Log.GetInstance().ErrorWrite(string.Format("关闭[{0}]所管理的Device失败,Error:{1}", iixServer.Ip, cmdRes.ToString()));
            }

            Global.UpdateDgv(ip: iixServer.Ip, connOpen: iixServer.ConnState.ToString(), pgPrimary: iixServer.OutlineState[0].ToString(), pgSecondary: iixServer.OutlineState[1].ToString(), latestResult: iixServer.LatestResult);

            return(cmdRes);
        }
Esempio n. 15
0
        /// <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);
        }
Esempio n. 16
0
        /// <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);
        }
Esempio n. 17
0
        /// <summary>
        /// 获取License剩余次数的请求
        /// </summary>
        /// <param name="iixServer"></param>
        /// <returns></returns>
        public static int GetLicenseRemainingCount(IIXServer iixServer)
        {
            CmdResultCode cmdRes = CmdResultCode.Other;

            TransferCounterInfo tci = iixServer.DmrSvrApi.GetRemainingCount();

            cmdRes = tci.CmdResult;
            iixServer.LatestResult = cmdRes.ToString();

            if (cmdRes == CmdResultCode.Success)
            {
                Log.GetInstance().NormalWrite(string.Format("获取[{0}]License剩余次数[{1}]成功 ", iixServer.Ip, tci.Count));
            }
            else
            {
                Log.GetInstance().ErrorWrite(string.Format("获取[{0}]License剩余次数失败,Error:{1}", iixServer.Ip, cmdRes.ToString()));
            }

            Global.UpdateDgv(ip: iixServer.Ip, latestResult: iixServer.LatestResult);

            return(tci.Count);
        }
Esempio n. 18
0
        /// <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);
        }
Esempio n. 19
0
        /// <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);
        }
Esempio n. 20
0
        /// <summary>
        /// 获取Recipe
        /// </summary>
        /// <param name="iixServer"></param>
        /// <param name="recipePath"></param>
        /// <returns></returns>
        public static CmdResultCode GetRecipe(IIXServer iixServer, string recipePath)
        {
            TransferFileInfo tfi = iixServer.DmrSvrApi.GetRecipe();

            CmdResultCode cmdRes = (tfi.IsValid) ? CmdResultCode.Success : CmdResultCode.Other;

            if (tfi.IsValid)
            {
                tfi.Save(recipePath);
            }

            iixServer.LatestResult = cmdRes.ToString();

            if (cmdRes == CmdResultCode.Success)
            {
                Log.GetInstance().NormalWrite(string.Format("[{0}]获取Recipe成功", iixServer.Ip));
            }
            else
            {
                Log.GetInstance().ErrorWrite(string.Format("[{0}]获取Recipe失败,Error:{1}", iixServer.Ip, cmdRes.ToString()));
            }

            return(cmdRes);
        }
Esempio n. 21
0
        /// <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);
            }
        }
Esempio n. 22
0
        /// <summary>
        /// 设置屏幕真空/破真空,并检测是否成功
        /// </summary>
        /// <param name="iixServer"></param>
        /// <param name="isVacuum">true = 真空,false = 破真空</param>
        /// <returns></returns>
        public static bool SetVacuum(IIXServer iixServer, bool isVacuum)
        {
            bool f = false;

            try
            {
                int waitTime = 0;

                while (true)
                {
                    if (waitTime == Global.CardWaitTime)
                    {
                        //报警提示
                        Global.ControlCard.WriteOutbit(28, 1);
                        //亮红灯
                        Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("红灯"), 1);

                        Log.GetInstance().WarningWrite(string.Format("屏[{0}]{1}超时", iixServer.AssociatedPanelPos, isVacuum == true ? "真空" : "破真空"));

                        Log.GetInstance().WarningWrite(string.Format("请重新{0},如还不成功,可能是部件损坏,需检查设备", isVacuum == true ? "点灯" : "关灯"));

                        return(false);
                    }

                    //当前工位是#1
                    if (Global.WorkPos == 1)
                    {
                        //IIX服务端关联的屏幕#1
                        if (iixServer.AssociatedPanelPos == "#1")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(1, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(4, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(12) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#2")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(2, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(5, 1);
                                }
                            }
                            //检测动作完成
                            if (Global.IoCard.ReadInBit(13) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#3")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(3, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(6, 1);
                                }
                            }
                            //检测动作完成
                            if (Global.IoCard.ReadInBit(14) == 1)
                            {
                                return(true);
                            }
                        }
                    }
                    else if (Global.WorkPos == 2)
                    {
                        //IIX服务端关联的屏幕#1
                        if (iixServer.AssociatedPanelPos == "#1")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(7, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(10, 1);
                                }
                            }
                            //检测动作完成
                            if (Global.IoCard.ReadInBit(15) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#2")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(8, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(11, 1);
                                }
                            }
                            //检测动作完成
                            if (Global.IoCard.ReadInBit(16) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#3")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(9, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(12, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(17) == 1)
                            {
                                return(true);
                            }
                        }
                    }
                    else if (Global.WorkPos == 3)
                    {
                        //IIX服务端关联的屏幕#1
                        if (iixServer.AssociatedPanelPos == "#1")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(13, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(16, 1);
                                }
                            }

                            //检测动作完成
                            while (Global.IoCard.ReadInBit(18) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#2")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(14, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(17, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(19) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#3")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(15, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(18, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(20) == 1)
                            {
                                return(true);
                            }
                        }
                    }
                    else if (Global.WorkPos == 4)
                    {
                        //IIX服务端关联的屏幕#1
                        if (iixServer.AssociatedPanelPos == "#1")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(19, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(22, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(21) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#2")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(20, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(23, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(22) == 1)
                            {
                                return(true);
                            }
                        }
                        else if (iixServer.AssociatedPanelPos == "#3")
                        {
                            if (waitTime == 0)
                            {
                                //真空
                                if (isVacuum)
                                {
                                    Global.IoCard.WriteOutBit(21, 1);
                                }
                                //破真空
                                else
                                {
                                    Global.IoCard.WriteOutBit(24, 1);
                                }
                            }

                            //检测动作完成
                            if (Global.IoCard.ReadInBit(23) == 1)
                            {
                                return(true);
                            }
                        }
                    }

                    waitTime++;
                    Thread.Sleep(1000);
                }
            }
            catch (Exception ex)
            {
                f = false;
                Log.WriterExceptionLog(ex.ToString());
            }

            //Log.GetInstance().NormalWrite(string.Format("屏[{0}]{1}{2}", iixServer.AssociatedPanelPos, isVacuum == true ? "真空" : "破真空", f == true ? "成功" : "失败"));

            return(f);
        }
Esempio n. 23
0
        /// <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);
        }
Esempio n. 24
0
 /// <summary>
 /// 设置屏幕锁住与否,点灯锁住,关灯解锁
 /// </summary>
 /// <param name="iixServer"></param>
 /// <param name="isPanelOn"></param>
 /// <returns></returns>
 public static void SetPanelLock(IIXServer iixServer, bool isPanelOn)
 {
     try
     {
         //当前工位是#1
         if (Global.WorkPos == 1)
         {
             //IIX服务端关联的屏幕#1
             if (iixServer.AssociatedPanelPos == "#1")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("红灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(25, 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#2")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("红灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("黄灯"), 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#3")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     //Global.ControlCard.WriteOutbit(27, 1);
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("绿灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(27, 0);
                 }
             }
         }
         else if (Global.WorkPos == 2)
         {
             //IIX服务端关联的屏幕#1
             if (iixServer.AssociatedPanelPos == "#1")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit(28, 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("报警"), 1);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#2")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("启动按钮1灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(29, 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#3")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("启动按钮2灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(30, 0);
                 }
             }
         }
         else if (Global.WorkPos == 3)
         {
             //IIX服务端关联的屏幕#1
             if (iixServer.AssociatedPanelPos == "#1")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("按钮1灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(31, 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#2")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("按钮2灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(32, 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#3")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit((ushort)Global.GetIOPortNoByName("按钮3灯"), 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(59, 0);
                 }
             }
         }
         else if (Global.WorkPos == 4)
         {
             //IIX服务端关联的屏幕#1
             if (iixServer.AssociatedPanelPos == "#1")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit(60, 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(60, 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#2")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit(61, 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(61, 0);
                 }
             }
             else if (iixServer.AssociatedPanelPos == "#3")
             {
                 //点灯
                 if (isPanelOn)
                 {
                     Global.ControlCard.WriteOutbit(62, 1);
                 }
                 //关灯
                 else
                 {
                     Global.ControlCard.WriteOutbit(62, 0);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Log.WriterExceptionLog(ex.ToString());
     }
 }
Esempio n. 25
0
        /// <summary>
        /// 初始化IIX服务端
        /// </summary>
        /// <returns></returns>
        private bool InitIIXServer()
        {
            bool f = false;

            try
            {
                IIXServer     iixServer = null;
                CmdResultCode cmdRes    = CmdResultCode.Other;

                #region Ted modified 20180522
                foreach (SlaveGroup slaveGroup in stationConfig.SlaveGroups)
                {
                    foreach (Slave slave in slaveGroup.Slaves)
                    {
                        int index = this.dgvServer.Rows.Add();
                        iixServer = new IIXServer();

                        iixServer.DmrSvrApi          = new IixDmrSvrApi();
                        iixServer.Ip                 = slave.ip;
                        iixServer.IsEnable           = slave.enable;
                        iixServer.AssociatedPanelPos = slave.description;
                        //iixServer.SvrType = SvrType.Left;

                        this.SetEventHandlers(iixServer);

                        DataGridViewRow row = this.dgvServer.Rows[index];
                        row.Cells["Enable"].Value       = slave.enable;
                        row.Cells["ServerIP"].Value     = slave.ip;
                        row.Cells["ServerPort"].Value   = iixServer.Port;
                        row.Cells["Open"].Value         = iixServer.ConnState.ToString();
                        row.Cells["PgPrimary"].Value    = iixServer.OutlineState[0].ToString();
                        row.Cells["PgSecondary"].Value  = iixServer.OutlineState[1].ToString();;
                        row.Cells["Status"].Value       = iixServer.ResultState.ToString();
                        row.Cells["LatestResult"].Value = iixServer.LatestResult;

                        Global.ListIIXSerevr.Add(iixServer);
                    }
                }

                //for (int i = 1; i <= 3; i++)
                //{
                //    int index = this.dgvServer.Rows.Add();

                //    iixServer = new IIXServer();

                //    string ip = IniFile.IniReadValue(string.Format("ServerLeft#" + i), "IP", Global.ConfigPath);
                //    bool isEnable = IniFile.IniReadValue(string.Format("ServerLeft#" + i), "IsEnable", Global.ConfigPath) == "1" ? true : false;

                //    iixServer.DmrSvrApi = new IixDmrSvrApi();
                //    iixServer.Ip = ip;
                //    iixServer.IsEnable = isEnable;
                //    iixServer.AssociatedPanelPos = "#" + i;
                //    iixServer.SvrType = SvrType.Left;

                //    this.SetEventHandlers(iixServer);

                //    this.dgvServer.Rows[index].Cells["Enable"].Value = isEnable;
                //    this.dgvServer.Rows[index].Cells["ServerIP"].Value = ip;
                //    this.dgvServer.Rows[index].Cells["ServerPort"].Value = iixServer.Port;
                //    this.dgvServer.Rows[index].Cells["Open"].Value = iixServer.ConnState.ToString();
                //    this.dgvServer.Rows[index].Cells["PgPrimary"].Value = iixServer.OutlineState[0].ToString();
                //    this.dgvServer.Rows[index].Cells["PgSecondary"].Value = iixServer.OutlineState[1].ToString(); ;
                //    this.dgvServer.Rows[index].Cells["Status"].Value = iixServer.ResultState.ToString();
                //    this.dgvServer.Rows[index].Cells["LatestResult"].Value = iixServer.LatestResult;

                //    Global.ListIIXSerevr.Add(iixServer);
                //}

                //for (int i = 1; i <= 3; i++)
                //{
                //    int index = this.dgvServer.Rows.Add();

                //    iixServer = new IIXServer();

                //    string ip = IniFile.IniReadValue(string.Format("ServerRight#" + i), "IP", Global.ConfigPath);
                //    bool isEnable = IniFile.IniReadValue(string.Format("ServerRight#" + i), "IsEnable", Global.ConfigPath) == "1" ? true : false;

                //    iixServer.DmrSvrApi = new IixDmrSvrApi();
                //    iixServer.Ip = ip;
                //    iixServer.IsEnable = isEnable;
                //    iixServer.AssociatedPanelPos = "#" + i;
                //    iixServer.SvrType = SvrType.Right;

                //    this.SetEventHandlers(iixServer);

                //    this.dgvServer.Rows[index].Cells["Enable"].Value = isEnable;
                //    this.dgvServer.Rows[index].Cells["ServerIP"].Value = ip;
                //    this.dgvServer.Rows[index].Cells["ServerPort"].Value = iixServer.Port;
                //    this.dgvServer.Rows[index].Cells["Open"].Value = iixServer.ConnState.ToString();
                //    this.dgvServer.Rows[index].Cells["PgPrimary"].Value = iixServer.OutlineState[0].ToString();
                //    this.dgvServer.Rows[index].Cells["PgSecondary"].Value = iixServer.OutlineState[1].ToString(); ;
                //    this.dgvServer.Rows[index].Cells["Status"].Value = iixServer.ResultState.ToString();
                //    this.dgvServer.Rows[index].Cells["LatestResult"].Value = iixServer.LatestResult;
                //    Global.ListIIXSerevr.Add(iixServer);
                //}

                #endregion

                var tasks = new List <Task>();

                foreach (var _iixServer in Global.ListIIXSerevr)
                {
                    tasks.Add(Task.Factory.StartNew(() =>
                    {
                        //连接
                        cmdRes = IIXExecute.ConnectToSlave(_iixServer);

                        //连接成功后就打开
                        if (cmdRes == CmdResultCode.Success)
                        {
                            Log.WriterActionLog(string.Format("Slave {0}:{1} connected SUCCESS!", _iixServer.Ip, _iixServer.Port));
                            cmdRes = IIXExecute.Open(_iixServer);
                            if (cmdRes == CmdResultCode.Success)
                            {
                                Log.WriterActionLog(string.Format("Slave {0}:{1} open SUCCESS!", _iixServer.Ip, _iixServer.Port));
                            }
                            else
                            {
                                Log.WriterExceptionLog(string.Format("Slave {0}:{1} open FAIL!", _iixServer.Ip, _iixServer.Port));
                            }
                        }
                        else
                        {
                            Log.WriterExceptionLog(string.Format("Slave {0}:{1} connected FAIL!", _iixServer.Ip, _iixServer.Port));
                        }
                    }));
                }

                Task.WaitAll(tasks.ToArray());

                f = true;
            }
            catch (Exception ex)
            {
                f = false;
                Log.WriterExceptionLog(ex.ToString());
            }

            return(f);
        }