/// <summary>
        /// 任务流
        /// </summary>
        /// <returns></returns>
        private int TestTaskFlow()
        {
            int    ret     = -1;
            string pattern = null;

            eidRead = "NULL";

            if (readWriteIdHandle.IsTimeOut)
            {
                frmMain.DisplayLog("测试超时\r\n");
                return(ret);
            }

            ProductionInfo.SystemType systemType = ProductionInfo.Type;

            //使用do..while(false)的原因,是为了当测试流程为fail时,使用break跳出该结构,仍然执行结果上报
            do
            {
                //从芯片获取eid
                //eidRead = "081603FFFFF35293" + eidlast.ToString("X").PadLeft(4,'0');
                //int readRet = 1;
                eidRead = readWriteIdHandle.ReadId(ATReadCmd.ReadIdType.EidRead);
                pattern = @"[0-9A-Z]{20}";
                if (string.IsNullOrEmpty(eidRead) || !Regex.IsMatch(eidRead, pattern))
                {
                    frmMain.DisplayLog("EID读取失败\r\n");
                    break;
                }
                frmMain.DisplayLog(string.Format("已获取模块EID:{0}\r\n", eidRead));
                frmMain.SetText(AllForms.EnumControlWidget.txtEid.ToString(), eidRead, false);


                //从芯片读出SN
                snRead  = readWriteIdHandle.ReadId(ATReadCmd.ReadIdType.SnRead);
                pattern = @"^[0-9A-Z]{16}$";
                if (string.IsNullOrEmpty(snRead))
                {
                    frmMain.DisplayLog("SN为空读取失败\r\n");
                    break;
                }
                if (!Regex.IsMatch(snRead, pattern))
                {
                    frmMain.DisplayLog("SN合法性检查:SN不合法败\r\n");
                    break;
                }
                frmMain.DisplayLog(string.Format("已获取模块合法SN:{0}\r\n", snRead));
                frmMain.SetText(AllForms.EnumControlWidget.txtSn.ToString(), snRead, false);

                //从芯片读出IMEI
                imeiRead = readWriteIdHandle.ReadId(ATReadCmd.ReadIdType.ImeiRead);
                pattern  = @"\d{15}";
                if (string.IsNullOrEmpty(imeiRead) || !Regex.IsMatch(imeiRead, pattern))
                {
                    frmMain.DisplayLog("IMEI读取失败\r\n");
                    break;
                }
                frmMain.DisplayLog(string.Format("已获取模块IMEI:{0}\r\n", imeiRead));
                frmMain.SetText(AllForms.EnumControlWidget.txtImei.ToString(), imeiRead, false);


                //从芯片获取iccid
                iccidRead = readWriteIdHandle.ReadId(ATReadCmd.ReadIdType.IccidRead);
                pattern   = @"[0-9A-Z]{20}";
                if (string.IsNullOrEmpty(iccidRead) || !Regex.IsMatch(iccidRead, pattern))
                {
                    frmMain.DisplayLog("ICCID读取失败\r\n");
                    break;
                }
                frmMain.DisplayLog(string.Format("已获取模块ICCID:{0}\r\n", iccidRead));
                frmMain.SetText(AllForms.EnumControlWidget.txtIccid.ToString(), iccidRead, false);


                //从芯片获取Verson
                versonRead = readWriteIdHandle.ReadId(ATReadCmd.ReadIdType.VersonRead);
                if (string.IsNullOrEmpty(iccidRead))
                {
                    frmMain.DisplayLog("版本号读取失败 FAIL\r\n");
                    break;
                }
                frmMain.DisplayLog(string.Format("已获取版本号:{0}\r\n", versonRead));
                if (versonRead != VersonIni.ToUpper())
                {
                    frmMain.DisplayLog(string.Format("读出的版本号:{0} 与 配置的版本号:{1} 不一致 FAIL\r\n", versonRead, VersonIni));
                    break;
                    //ret = -1;
                    //return ret;
                }
                else
                {
                    frmMain.DisplayLog(string.Format("读出的版本号:{0} 与 配置的版本号:{1} 一致 PASS\r\n", versonRead, VersonIni));
                }


                //判断IMEI与标签IMEI是否一致
                if (labelImei == imeiRead)
                {
                    frmMain.DisplayLog(string.Format("标签IMEI:{0}与模块IMEI:{1}对比一致 PASS\r\n", labelImei, imeiRead));
                }
                else
                {
                    frmMain.DisplayLog(string.Format("标签IMEI:{0}与模块IMEI:{1}对比不一致 FAIL\r\n", labelImei, imeiRead));
                    break;
                }

                //eid与iccid的后6位对比
                if (CompareEidIccid == 1)//要对比
                {
                    string lastSixIccid = iccidRead.Substring(iccidRead.Length - 6);
                    string lastSixEid   = eidRead.Substring(eidRead.Length - 6);
                    if (JudgeStandard == 0)
                    {
                        //一样 FAIL
                        if (lastSixIccid == lastSixEid)
                        {
                            frmMain.DisplayLog(string.Format("空中写号检查:未做。详细:后6位的eid:{0} 与 iccid:{1} 完全一致 FAIL\r\n", lastSixEid, lastSixIccid));
                            break;
                            //ret = -1;
                            //return ret;
                        }
                        else
                        {
                            frmMain.DisplayLog(string.Format("空中写号检查:通过。详细:后6位的eid:{0} 与 iccid:{1}不一致 PASS\r\n", lastSixEid, lastSixIccid));
                        }
                    }
                    else if (JudgeStandard == 1)
                    {
                        //一样 PASS
                        if (lastSixIccid != lastSixEid)
                        {
                            frmMain.DisplayLog(string.Format("空中写号检查:未做。详细:后6位的eid:{0} 与 iccid:{1} 不一致 FAIL\r\n", lastSixEid, lastSixIccid));
                            break;
                            //ret = -1;
                            //return ret;
                        }
                        else
                        {
                            frmMain.DisplayLog(string.Format("空中写号检查:通过。详细:后6位的eid:{0} 与 iccid:{1}完全一致 PASS\r\n", lastSixEid, lastSixIccid));
                        }
                    }
                }
                //离线查重IMEI
                if (ProductionInfo.Type == ProductionInfo.SystemType.Offline)
                {
                    JiaHao.ExcelHelp.ExcelHelper excel = JiaHao.ExcelHelp.ExcelHelper.GetExcelHelperInstance();
                    ret = excel.SearchImei(imeiRead);
                    if (ret != 0)
                    {
                        frmMain.DisplayLog(string.Format("IMEI查重: {0} 重复 FAIL\r\n", imeiRead));
                        return(ret);
                    }
                    else
                    {
                        frmMain.DisplayLog(string.Format("IMEI查重: {0} 本机查重 PASS\r\n", imeiRead));
                    }
                }

                #region
                if (systemType == ProductionInfo.SystemType.iMES)
                {
                    //调用打印接口下拉eid相关信息rep,为了生成Log作准备
                    Production.Server.NewHttpImeiPrint.ResponseInfo rep;
                    string errorInfo;
                    ret = ToImesInterface.ImeiPrint(out rep, imeiRead, out errorInfo);
                    //ImeiPrint(out rep);
                    if (ret != 0)
                    {
                        //显示结果:下拉失败,并改变颜色
                        frmMain.DisplayLog("从IMES下拉信息失败" + errorInfo + "\r\n");
                        break;
                    }
                    frmMain.DisplayLog("从IMES下拉信息成功\r\n");
                    //模组读出的和IMES下拉的是否相同
                    //IMEI,PUBLICSN,ICCID,IMSI,EID,IMEIBINDINGSN,DATE
                    //"sn":123456789012345,AI18082202000001,,,,,8822
                    string[] idNumber = rep.sn.ToUpper().Split(',');
                    #region 比对
                    #region IMEI
                    if (idNumber[0] == "")
                    {
                        frmMain.DisplayLog(string.Format("服务器IMEI获取为空 FAIL\r\n"));
                        ret = -1;
                        break;
                    }
                    if (idNumber[0] != imeiRead.ToUpper())
                    {
                        frmMain.DisplayLog(string.Format("服务器IMEI:{0} 与 模块IMEI:{1} 不一致 FAIL\r\n", idNumber[0], imeiRead));
                        ret = -1;
                        break;
                    }
                    else
                    {
                        frmMain.DisplayLog(string.Format("服务器IMEI:{0} 与 模块IMEI:{1} 一致 PASS\r\n", idNumber[0], imeiRead));
                    }
                    #endregion
                    #region SN
                    if (idNumber[1] != snRead.ToUpper())
                    {
                        frmMain.DisplayLog(string.Format("服务器SN:{0} 与 模块SN:{1} 不一致 FAIL\r\n", idNumber[1], snRead));
                        ret = -1;
                        break;
                    }
                    else
                    {
                        frmMain.DisplayLog(string.Format("服务器SN:{0} 与 模块SN:{1} 一致 PASS\r\n", idNumber[1], snRead));
                    }
                    #endregion

                    #region ICCID
                    if (idNumber[2] != iccidRead.ToUpper())
                    {
                        frmMain.DisplayLog(string.Format("服务器ICCID:{0} 与 模块ICCID:{1} 不一致 FAIL\r\n", idNumber[2], iccidRead));
                        ret = -1;
                        break;
                    }
                    else
                    {
                        frmMain.DisplayLog(string.Format("服务器ICCID:{0} 与 模块ICCID:{1} 一致 PASS\r\n", idNumber[2], iccidRead));
                    }
                    #endregion

                    #region EID
                    if (idNumber[4] != eidRead.ToUpper())
                    {
                        frmMain.DisplayLog(string.Format("服务器EID:{0} 与 模块EID:{1} 不一致 FAIL\r\n", idNumber[4], eidRead));
                        ret = -1;
                        break;
                    }
                    else
                    {
                        frmMain.DisplayLog(string.Format("服务器EID:{0} 与 模块EID:{1} 一致 PASS\r\n", idNumber[4], eidRead));
                    }
                    #endregion

                    #endregion
                }

                if (systemType == ProductionInfo.SystemType.GSMMES)
                {
                    //EID合法性检查
                    ret = EidVerify();
                    if (ret != 0)
                    {
                        break;
                    }
                }
                #endregion

                if (systemType == ProductionInfo.SystemType.GSMMES)
                {
                    //EID合法性检查
                    ret = CheckAllNumber();
                    if (ret != 0)//失败就直接上报测试结果
                    {
                        break;
                    }
                }
            } while (false);

            if (systemType == ProductionInfo.SystemType.GSMMES)
            {
                frmMain.DisplayLog("测试数据上报服务器\r\n");
                //EID/IMEI/SN上报服务器
                int    resultUpload = ret == 0 ? 1 : 2;
                string testDada     = string.Empty;
                string log          = frmMain.ReadLog();

                ret = EidUpload(resultUpload, log);
                if (ret != 0)
                {
                    frmMain.DisplayLog("过站失败\r\n");
                    return(ret);
                }
            }
            #region 离线 记录到Excel
            if (ProductionInfo.Type == ProductionInfo.SystemType.Offline)
            {
                if (ret == 0)
                {
                    JiaHao.ExcelHelp.ExcelHelper excel = JiaHao.ExcelHelp.ExcelHelper.GetExcelHelperInstance();
                    excel.ExportExcelOneByOne(new JiaHao.ExcelHelp.ExcelHelper.TrayInfoInExcel()
                    {
                        num          = 1,
                        sn           = snRead,
                        imei         = imeiRead,
                        eid          = eidRead,
                        iccid        = iccidRead,
                        cuatomerName = "中移物联"
                    });
                    frmMain.DisplayLog("写入Excel成功\r\n");
                }
            }
            #endregion
            return(ret);
        }
Beispiel #2
0
        private void Watcher_Created(object sender, FileSystemEventArgs e)
        {
            // tempName = e.FullPath;

            //Console.WriteLine("文件新建事件处理逻辑 {0}  {1}  {2}", e.ChangeType, e.FullPath, e.Name);
            fileOnCreatedFullName = e.FullPath;
            fileOnCreatedName     = fileOnCreatedFullName.Substring(fileOnCreatedFullName.LastIndexOf("\\") + 1);

            string patternRF   = @"[\dA-F]{20}__\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_";
            string patternPass = @"[\dA-F]{20}__\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_.log";

            //string patternOfGPS = @"^\d{20}_\d{8}_\d{6}_(PASS|FAIL).(LOG|log|Log)$";

            //01_IMEI-ICCID-IMSI-EID-SN_年月日_时分秒_pass.log
            //01_865439030000610-898602C99916C0366442-123456789012345-898602C99916C0366442-CH04037470010061_20180809_175339_FAIL
            //新的log匹配
            string patternOfGPS = @"(01_)(\d*)-([0-9a-zA-Z]*)-([0-9a-zA-Z]*)-([0-9a-zA-Z]*)-([0-9a-zA-Z]*)(_\d{8}_\d{6}_)(PASS|FAIL)(\.log)$";

            int result = -1;

            //匹配RF性能测试
            if (TestFunc == 0)
            {
                if (Regex.IsMatch(fileOnCreatedName, patternRF))
                {
                    frmMain.ClearUILastTestState();
                    #region MyRegion
                    //if (Regex.IsMatch(fileOnCreatedName, patternPass))
                    //{
                    //    frmMain.DisplayLog(string.Format("已获取文件名:{0}\r\n", fileOnCreatedName));
                    //    frmMain.DisplayLog("性能测试合格\r\n");
                    //    result = 0;
                    //}
                    //else
                    //{
                    //    frmMain.DisplayLog(string.Format("已获取文件名:{0}\r\n", fileOnCreatedName));
                    //    string patternFail = @"(?<=^[\dA-F]{20}__\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_)(.*)(?=\.log$)";
                    //    string failStr = Regex.Match(fileOnCreatedName, patternFail).Value;
                    //    frmMain.DisplayLog(string.Format("性能测试不合格:{0}\r\n", failStr));
                    //    result = -1;
                    //}
                    #endregion
                    var retmatch = Regex.Match(fileOnCreatedName, patternRF, RegexOptions.IgnoreCase);
                    if (retmatch.Success)
                    {
                        string t = retmatch.Groups[8].Value;
                        eid = retmatch.Groups[5].Value;
                        //frmMain.DisplayLog(string);

                        //绑定IMEI
                        //若IMES返回:已绑定,ret应该为0,仍然进行性能测试
                        int ret = EidBindImei();
                        if (ret != 0)
                        {
                            //显示结果:绑定失败,并改变颜色
                            result = -1;
                            return;
                        }
                        //调用打印接口下拉eid相关信息rep,为了生成Log作准备
                        Production.Server.NewHttpImeiPrint.ResponseInfo rep;
                        ret = ImeiPrint(out rep);
                        if (ret != 0)
                        {
                            //显示结果:下拉失败,并改变颜色
                            result = -1;
                            return;
                        }

                        if (t.ToUpper().Contains("PASS"))
                        {
                            frmMain.DisplayLog("性能测试合格\r\n");
                            result = 0;
                            //Baseurl
                        }
                        else
                        {
                            frmMain.DisplayLog(string.Format("性能测试不合格:{0}\r\n", eid));
                            result = -1;
                        }
                        //System.Windows.Forms.MessageBox.Show ( "find!!!");
                        Thread.Sleep(3000);  //3s后再处理
                    }
                }
                else
                {
                    return;
                }
            }
            //GPS测试
            if (TestFunc == 1)
            {
                #region 对应新log日志格式                                                           //20180810 majianbo
                if (Regex.IsMatch(fileOnCreatedName, patternOfGPS, RegexOptions.IgnoreCase)) //找到日志
                {
                    frmMain.ClearUILastTestState();
                    var retmatch = Regex.Match(fileOnCreatedName, patternOfGPS, RegexOptions.IgnoreCase);
                    if (retmatch.Success)
                    {
                        string t = retmatch.Groups[8].Value;
                        eid = retmatch.Groups[5].Value;
                        if (t.ToUpper().Contains("PASS"))
                        {
                            frmMain.DisplayLog("GPS测试合格\r\n");
                            result = 0;
                        }
                        else
                        {
                            frmMain.DisplayLog("GPS测试不合格\r\n");
                            result = -1;
                        }
                        //System.Windows.Forms.MessageBox.Show ( "find!!!");
                        Thread.Sleep(3000);  //3s后再处理
                    }
                }
                else
                {
                    return;
                }

                #endregion
            }
            //  eid = fileOnCreatedName.Substring(0, 20);        //保存性能测试产生log文件中的eid
            frmMain.SetText(AllForms.EnumControlWidget.txtEid.ToString( ), eid, false);
            frmMain.DisplayLog(string.Format("已获取EID:{0}\r\n", eid));

            // frmMain.Update ( );

            bool isUse = false;
            int  cnt   = 0;
            do
            {
                isUse = CheckFileIsUsing(fileOnCreatedFullName);
                Thread.Sleep(10);
                //if ( cnt++ > 600 )  //大于10s
                //{
                //    //System.Windows.Forms.MessageBox.Show ( "find!!!" );
                //    result = -1;
                //    break;
                //}
            } while (isUse);

            string log = "";
            //if ( isUse == false )
            //{
            //读取LOG
            try
            {
                log = ReadInfoFromLog( );
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

            // }
            //设定流程
            TestFlow flow = new TestFlow(frmMain, eid, log, result, ProductionInfo.PlanCode);

            //加载流程
            ViewControlers view = new ViewControlers(frmMain, flow, eid);
            //开启线程
            Thread thread = new Thread(view.StartTest);
            thread.IsBackground = true;
            thread.Start( );
        }