/// <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); }
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( ); }