示例#1
0
        private object[] GetErrorInfor(AOIData aoiData)
        {
            string[]  errorList  = aoiData.ERRORCODES.Split('|');
            ArrayList ecg2ecList = new ArrayList();
            string    defaultECG = "DefaultECGCode";
            string    defaultEC  = "DefaultECCode";

            /*
             * for (int i=0 ; i<errorList.Length; i++)
             * {
             *      TSErrorCode2Location tsinfo = new TSErrorCode2Location();
             *      if(errorList[i].Split(',')[0].Trim() == string.Empty)continue;
             *      tsinfo.ErrorLocation = errorList[i].Split(',')[0];
             *      object[] ecg2ec = this.QueryECG2EC(errorList[i].Split(',')[2]);
             *      if(ecg2ec != null && ecg2ec.Length>0)
             *      {
             *              tsinfo.ErrorCode = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCode;
             *              tsinfo.ErrorCodeGroup = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCodeGroup;
             *      }
             *      else
             *      {
             *              tsinfo.ErrorCode = defaultEC;
             *              tsinfo.ErrorCodeGroup = defaultECG;
             *      }
             *      tsinfo.ErrorLocation = string.Empty;
             *      tsinfo.AB = "A";
             *
             *      ecg2ecList.Add(tsinfo);
             * }
             *
             * return (TSErrorCode2Location[])ecg2ecList.ToArray(typeof(TSErrorCode2Location));
             */
            for (int i = 0; i < errorList.Length; i++)
            {
                ErrorCodeGroup2ErrorCode tsinfo = new ErrorCodeGroup2ErrorCode();
                object[] ecg2ec = this.QueryECG2EC(errorList[i]);
                if (ecg2ec != null && ecg2ec.Length > 0)
                {
                    tsinfo.ErrorCode      = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCode;
                    tsinfo.ErrorCodeGroup = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCodeGroup;
                }
                else
                {
                    tsinfo.ErrorCode      = defaultEC;
                    tsinfo.ErrorCodeGroup = defaultECG;
                }

                ecg2ecList.Add(tsinfo);
            }

            return((ErrorCodeGroup2ErrorCode[])ecg2ecList.ToArray(typeof(ErrorCodeGroup2ErrorCode)));
        }
示例#2
0
        /// <summary>
        ///   This method generates <see cref="AOIData" /> from each
        ///   row of the import file, which has coordinates of simple rectangles in it.
        /// </summary>
        private static void GenerateAOIFromRectangles()
        {
            // Clear existing values
            AOIDataList.Clear();

            // Use the decimal separator specified.
            NumberFormatInfo nfi = CultureInfo.GetCultureInfo("en-US").NumberFormat;

            if (asciiSettings.DecimalSeparatorCharacter == ',')
            {
                nfi = CultureInfo.GetCultureInfo("de-DE").NumberFormat;
            }

            // Enumerate the columns in the import file and assign their title.
            var columnsImportNum = new Dictionary <string, int>();

            for (int i = 0; i < asciiSettings.ColumnHeaders.Count; i++)
            {
                columnsImportNum.Add(asciiSettings.ColumnHeaders[i], i);
            }

            // Get the assigned titles of the import columns for Ogamas columns
            string importColumnTitleForTrialID            = asciiSettings.ColumnAssignments["TrialID"];
            string importColumnTitleForSlideNr            = asciiSettings.ColumnAssignments["SlideNr"];
            string importColumnTitleForShapeName          = asciiSettings.ColumnAssignments["NameOfShape"];
            string importColumnTitleForTopLeftCornerX     = asciiSettings.ColumnAssignments["Left top corner X"];
            string importColumnTitleForTopLeftCornerY     = asciiSettings.ColumnAssignments["Left top corner Y"];
            string importColumnTitleForBottomRightCornerX = asciiSettings.ColumnAssignments["Right bottom corner X"];
            string importColumnTitleForBottomRightCornerY = asciiSettings.ColumnAssignments["Right bottom corner Y"];
            string importColumnTitleForShapeGroup         = asciiSettings.ColumnAssignments["ShapeGroup"];

            // Convert the names into column counters.
            int numTrialIDImportColumn = importColumnTitleForTrialID == string.Empty
                                     ? -1
                                     : columnsImportNum[importColumnTitleForTrialID];
            int numSlideNrImportColumn = importColumnTitleForSlideNr == string.Empty
                                     ? -1
                                     : columnsImportNum[importColumnTitleForSlideNr];
            int numShapeNameImportColumn = importColumnTitleForShapeName == string.Empty
                                       ? -1
                                       : columnsImportNum[importColumnTitleForShapeName];
            int numTopLeftCornerXImportColumn = importColumnTitleForTopLeftCornerX == string.Empty
                                            ? -1
                                            : columnsImportNum[importColumnTitleForTopLeftCornerX];
            int numTopLeftCornerYImportColumn = importColumnTitleForTopLeftCornerY == string.Empty
                                            ? -1
                                            : columnsImportNum[importColumnTitleForTopLeftCornerY];
            int numBottomRightCornerXImportColumn = importColumnTitleForBottomRightCornerX == string.Empty
                                                ? -1
                                                : columnsImportNum[importColumnTitleForBottomRightCornerX];
            int numBottomRightCornerYImportColumn = importColumnTitleForBottomRightCornerY == string.Empty
                                                ? -1
                                                : columnsImportNum[importColumnTitleForBottomRightCornerY];
            int numShapeGroupImportColumn = importColumnTitleForShapeGroup == string.Empty
                                        ? -1
                                        : columnsImportNum[importColumnTitleForShapeGroup];

            foreach (string[] items in asciiSettings.Rows)
            {
                try
                {
                    var boundingRect = new RectangleF();

                    // Calc bounding Rect from X1,X2,Y1,Y2 as given
                    string x1 = "0";
                    string y1 = "0";
                    string x2 = "0";
                    string y2 = "0";

                    // Create Ogama columns placeholder
                    var newAOIData = new AOIData();

                    if (numTrialIDImportColumn != -1)
                    {
                        newAOIData.TrialID = Convert.ToInt32(items[numTrialIDImportColumn], nfi);
                    }

                    newAOIData.SlideNr = numSlideNrImportColumn != -1 ? Convert.ToInt32(items[numSlideNrImportColumn], nfi) : 0;

                    if (numShapeNameImportColumn != -1)
                    {
                        newAOIData.ShapeName = items[numShapeNameImportColumn];
                    }

                    newAOIData.ShapeType   = VGShapeType.Rectangle;
                    newAOIData.ShapeNumPts = 4;

                    if (numTopLeftCornerXImportColumn != -1)
                    {
                        x1 = items[numTopLeftCornerXImportColumn];
                    }

                    if (numTopLeftCornerYImportColumn != -1)
                    {
                        y1 = items[numTopLeftCornerYImportColumn];
                    }

                    if (numBottomRightCornerXImportColumn != -1)
                    {
                        x2 = items[numBottomRightCornerXImportColumn];
                    }

                    if (numBottomRightCornerYImportColumn != -1)
                    {
                        y2 = items[numBottomRightCornerYImportColumn];
                    }

                    boundingRect.X      = Convert.ToSingle(x1, nfi);
                    boundingRect.Y      = Convert.ToSingle(y1, nfi);
                    boundingRect.Width  = Convert.ToSingle(x2, nfi) - boundingRect.X;
                    boundingRect.Height = Convert.ToSingle(y2, nfi) - boundingRect.Y;

                    string pts = "P1:(" + string.Format("{0:F1}", boundingRect.Left) + ";"
                                 + string.Format("{0:F1}", boundingRect.Top) + ") P2:("
                                 + string.Format("{0:F1}", boundingRect.Right) + ";" + string.Format("{0:F1}", boundingRect.Top)
                                 + ") P3:(" + string.Format("{0:F1}", boundingRect.Right) + ";"
                                 + string.Format("{0:F1}", boundingRect.Bottom) + ") P4:("
                                 + string.Format("{0:F1}", boundingRect.Left) + ";" + string.Format("{0:F1}", boundingRect.Bottom)
                                 + ")";
                    newAOIData.ShapePts = pts;

                    if (numShapeGroupImportColumn != -1)
                    {
                        newAOIData.Group = items[numShapeGroupImportColumn];
                    }

                    if (string.IsNullOrEmpty(newAOIData.Group))
                    {
                        newAOIData.Group = " ";
                    }

                    // Add new Element to AOITable
                    AOIDataList.Add(newAOIData);
                }
                catch (Exception ex)
                {
                    ExceptionMethods.HandleException(ex);
                }
            }
        }
示例#3
0
        ///////////////////////////////////////////////////////////////////////////////
        // Eventhandler                                                              //
        ///////////////////////////////////////////////////////////////////////////////

        ///////////////////////////////////////////////////////////////////////////////
        // Eventhandler for UI, Menu, Buttons, Toolbars etc.                         //
        ///////////////////////////////////////////////////////////////////////////////

        ///////////////////////////////////////////////////////////////////////////////
        // Eventhandler for Custom Defined Events                                    //
        ///////////////////////////////////////////////////////////////////////////////

        ///////////////////////////////////////////////////////////////////////////////
        // Methods and Eventhandling for Background tasks                            //
        ///////////////////////////////////////////////////////////////////////////////

        ///////////////////////////////////////////////////////////////////////////////
        // Inherited methods                                                         //
        ///////////////////////////////////////////////////////////////////////////////

        ///////////////////////////////////////////////////////////////////////////////
        // Methods for doing main class job                                          //
        ///////////////////////////////////////////////////////////////////////////////
        #region Methods

        /// <summary>
        ///   This method generates <see cref="AOIData" /> from each
        ///   row of the import file, that has to be on OGAMA import format.
        /// </summary>
        private static void GenerateAOIFromOgamaTable()
        {
            // Clear existing values
            AOIDataList.Clear();

            // Use the decimal separator specified.
            NumberFormatInfo nfi = CultureInfo.GetCultureInfo("en-US").NumberFormat;

            if (asciiSettings.DecimalSeparatorCharacter == ',')
            {
                nfi = CultureInfo.GetCultureInfo("de-DE").NumberFormat;
            }

            // Enumerate the columns in the import file and assign their title.
            var columnsImportNum = new Dictionary <string, int>();

            for (int i = 0; i < asciiSettings.ColumnHeaders.Count; i++)
            {
                columnsImportNum.Add(asciiSettings.ColumnHeaders[i], i);
            }

            // Get the assigned titles of the import columns for Ogamas columns
            string importColumnTitleForTrialID     = asciiSettings.ColumnAssignments["TrialID"];
            string importColumnTitleForSlideNr     = asciiSettings.ColumnAssignments["SlideNr"];
            string importColumnTitleForShapeName   = asciiSettings.ColumnAssignments["ShapeName"];
            string importColumnTitleForShapeType   = asciiSettings.ColumnAssignments["ShapeType"];
            string importColumnTitleForShapeNumPts = asciiSettings.ColumnAssignments["ShapeNumPts"];
            string importColumnTitleForShapePts    = asciiSettings.ColumnAssignments["ShapePts"];
            string importColumnTitleForShapeGroup  = asciiSettings.ColumnAssignments["ShapeGroup"];

            // Convert the names into column counters.
            int numTrialIDImportColumn = importColumnTitleForTrialID == string.Empty
                                     ? -1
                                     : columnsImportNum[importColumnTitleForTrialID];
            int numSlideNrImportColumn = importColumnTitleForSlideNr == string.Empty
                                     ? -1
                                     : columnsImportNum[importColumnTitleForSlideNr];
            int numShapeNameImportColumn = importColumnTitleForShapeName == string.Empty
                                       ? -1
                                       : columnsImportNum[importColumnTitleForShapeName];
            int numShapeTypeImportColumn = importColumnTitleForShapeType == string.Empty
                                       ? -1
                                       : columnsImportNum[importColumnTitleForShapeType];
            int numShapeNumPtsImportColumn = importColumnTitleForShapeNumPts == string.Empty
                                         ? -1
                                         : columnsImportNum[importColumnTitleForShapeNumPts];
            int numShapePtsImportColumn = importColumnTitleForShapePts == string.Empty
                                      ? -1
                                      : columnsImportNum[importColumnTitleForShapePts];
            int numShapeGroupImportColumn = importColumnTitleForShapeGroup == string.Empty
                                        ? -1
                                        : columnsImportNum[importColumnTitleForShapeGroup];

            foreach (string[] items in asciiSettings.Rows)
            {
                try
                {
                    // Create Ogama columns placeholder
                    var newAOIData = new AOIData();

                    if (numTrialIDImportColumn != -1)
                    {
                        newAOIData.TrialID = Convert.ToInt32(items[numTrialIDImportColumn], nfi);
                    }

                    newAOIData.SlideNr = numSlideNrImportColumn != -1 ? Convert.ToInt32(items[numSlideNrImportColumn], nfi) : 0;

                    if (numShapeNameImportColumn != -1)
                    {
                        newAOIData.ShapeName = items[numShapeNameImportColumn];
                    }

                    if (numShapeTypeImportColumn != -1)
                    {
                        newAOIData.ShapeType = (VGShapeType)Enum.Parse(typeof(VGShapeType), items[numShapeTypeImportColumn]);
                    }

                    if (numShapeNumPtsImportColumn != -1)
                    {
                        newAOIData.ShapeNumPts = Convert.ToInt32(items[numShapeNumPtsImportColumn], nfi);
                    }

                    if (numShapePtsImportColumn != -1)
                    {
                        newAOIData.ShapePts = items[numShapePtsImportColumn];
                    }

                    if (numShapeGroupImportColumn != -1)
                    {
                        newAOIData.Group = items[numShapeGroupImportColumn];
                    }

                    if (string.IsNullOrEmpty(newAOIData.Group))
                    {
                        newAOIData.Group = " ";
                    }

                    AOIDataList.Add(newAOIData);
                }
                catch (Exception ex)
                {
                    ExceptionMethods.HandleException(ex);
                }
            }
        }
示例#4
0
        public UserControl.Messages GoodCollect(object[] parserObjs)
        {
            UserControl.Messages returnMsg = new UserControl.Messages();
            try
            {
                foreach (object obj in parserObjs)
                {
                    AOIData aoiData    = obj as AOIData;
                    int     errorCount = 0;
                    try
                    {
                        errorCount = int.Parse(aoiData.ERRORCOUNT);
                    }
                    catch
                    {}
                    if (errorCount == 0)
                    {
                        ActionOnLineHelper onLine = new ActionOnLineHelper(this._domainDataProvider);

//						((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.AutoCloseConnection = false;
//						((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.OpenConnection();
                        Messages messages = onLine.GetIDInfo(aoiData.RCARD.Trim().ToUpper());
                        try
                        {
                            ProductInfo product = (ProductInfo)messages.GetData().Values[0];
                            // Added by Icyer 2006/08/03
                            // 只有当Simulation中没有数据时,才认为是第一次经过AOI站,才执行SMT上料
                            bool bExecuteSMTLoadItem = (product.LastSimulation == null);
                            // Added end
                            this._domainDataProvider.BeginTransaction();
                            string goodResult = string.Empty;
                            //归属工单采集
                            //Laws Lu,2006/08/10 归属工单时需要检查是否符合首字符串和长度检查

                            string moCode = this.getMOCode(aoiData.RCARD.Trim().ToUpper());

                            if (System.Configuration.ConfigurationSettings.AppSettings["MOPREFIXSTRING"] != null)
                            {
                                string moPrefix = System.Configuration.ConfigurationSettings.AppSettings["MOPREFIXSTRING"].Trim();
                                //首字符串检查
                                if (moCode.Length < moPrefix.Length || moCode.Substring(0, moPrefix.Length) != moPrefix)
                                {
                                    returnMsg.Add(new UserControl.Message(MessageType.Error
                                                                          , "$CS_Before_Card_FLetter_NotCompare $CS_Param_ID: " + aoiData.RCARD.Trim().ToUpper()));
                                }
                            }
                            if (System.Configuration.ConfigurationSettings.AppSettings["SNLENGTH"] != null)
                            {
                                try
                                {
                                    int snLength = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["SNLENGTH"].Trim());
                                    //长度检查
                                    if (aoiData.RCARD.Trim().ToUpper().Length != snLength)
                                    {
                                        returnMsg.Add(new UserControl.Message(MessageType.Error,
                                                                              "$CS_Before_Card_Length_FLetter_NotCompare $CS_Param_ID: " + aoiData.RCARD.Trim().ToUpper()));
                                    }
                                }
                                catch (Exception ex)
                                {
                                    returnMsg.Add(new UserControl.Message(ex));
                                }
                            }

                            if (returnMsg.IsSuccess())
                            {
                                IAction dataCollectMO = new ActionFactory(this._domainDataProvider).CreateAction(ActionType.DataCollectAction_GoMO);
                                messages.AddMessages(((IActionWithStatus)dataCollectMO).Execute(
                                                         new GoToMOActionEventArgs(ActionType.DataCollectAction_GoMO,
                                                                                   aoiData.RCARD.Trim().ToUpper(),
                                                                                   aoiData.USER.Trim().ToUpper(),
                                                                                   AgentHelp.getResCode(aoiData.RESOURCE.Trim().ToUpper()),
                                                                                   product, moCode)));


                                if (messages.IsSuccess())
                                {
                                    returnMsg.Add(new UserControl.Message(UserControl.MessageType.Success, string.Format("{0} $CS_GOMO_CollectSuccess", aoiData.RCARD.ToUpper())));
                                }
                                else
                                {
                                    returnMsg.Add(new UserControl.Message(UserControl.MessageType.Error, AgentHelp.GetErrorMessage(messages)));
                                }
                            }
                            messages.ClearMessages();


                            //GOOD采集
                            messages = onLine.GetIDInfo(aoiData.RCARD.Trim().ToUpper());
                            product  = (ProductInfo)messages.GetData().Values[0];
                            BenQGuru.eMES.DataCollect.DataCollectFacade dcFacade = new BenQGuru.eMES.DataCollect.DataCollectFacade(this._domainDataProvider);
                            goodResult = dcFacade.ActionCollectGood(aoiData.RCARD.ToUpper(), aoiData.USER.ToUpper(), AgentHelp.getResCode(aoiData.RESOURCE.ToUpper()));
                            // Added by Icyer 2006/08/03
                            // SMT上料
                            if (returnMsg.IsSuccess() == true && bExecuteSMTLoadItem == true)
                            {
                                returnMsg.AddMessages(this.SMTLoadItem(aoiData.RCARD.ToUpper(), AgentHelp.getResCode(aoiData.RESOURCE.ToUpper()), aoiData.USER.ToUpper()));
                            }
                            // Added end
                            if (goodResult == "OK")
                            {
                                this._domainDataProvider.CommitTransaction();

                                returnMsg.Add(new UserControl.Message(UserControl.MessageType.Success, string.Format("{0} $CS_GOOD_CollectSuccess", aoiData.RCARD.ToUpper())));
                                returnMsg.Add(new UserControl.Message(" "));
                                BenQGuru.eMES.Common.Log.Info(string.Format("{0} $CS_GOOD_CollectSuccess: {1}", aoiData.RCARD.Trim().ToUpper(), "OK"));
                                messages.Add(new UserControl.Message(MessageType.Success, string.Format("$CS_GOODSUCCESS,$CS_Param_ID:{0}", aoiData.RCARD.ToUpper())));
                            }
                            else
                            {
                                this._domainDataProvider.RollbackTransaction();

                                string errorMsg = string.Format("{0} $CS_GOOD_CollectFail : {1}", aoiData.RCARD.Trim().ToUpper(), goodResult);
                                returnMsg.Add(new UserControl.Message(UserControl.MessageType.Error, errorMsg));
                                returnMsg.Add(new UserControl.Message(" "));
                                BenQGuru.eMES.Common.Log.Info(errorMsg);
                            }
                        }
                        catch (Exception ex)
                        {
                            this._domainDataProvider.RollbackTransaction();
                            BenQGuru.eMES.Common.Log.Info(AgentHelp.GetErrorMessage(messages), ex);
                        }
                        finally
                        {
//							((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.CloseConnection();
//							((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.AutoCloseConnection = true;
                        }
                    }
                }
            }
            catch
            {}
            return(returnMsg);
        }