private static int SaveResultRec(PhotoStruct rec, bool success, CarDataStruct answer) { if (!success) { return(0); } Int32.TryParse(myParams.Value("MarkExceptions"), out int markExceptions); int resIns = -1; Int32.TryParse(myParams.Value("RecognizeBorder"), out int recognizeBorder); Int32.TryParse(myParams.Value("MarkSaveID"), out int markSaveID); Int32.TryParse(myParams.Value("MarkLockID"), out int markLockID); string str1 = MyTrim(answer.MarkProbStr, 0, 10); int probMark = str1.Length > 0 ? Int32.Parse(str1) : 0; string str2 = MyTrim(answer.TypeProbStr, 0, 10); int probType = str2.Length > 0 ? Int32.Parse(str2) : 0; if ((probMark >= recognizeBorder) || (probType >= recognizeBorder)) { string sqlSave = myParams.Value("SqlSaveImageRes"); string mark = MyTrim(answer.Mark, 0, 50); string modl = MyTrim(answer.Modl, 0, 50); string probMarkStr = probMark.ToString(); string type = MyTrim(answer.Type, 0, 50); string side = MyTrim(answer.Side, 0, 50); string probTypeStr = probType.ToString(); string brand = mark + ", " + modl /*+ " " + MyTrim(ans.Generation, 0, 250)*/; if (brand == ", ") { brand = string.Empty; } if (CarTypes.Keys.Contains(type)) { type = CarTypes[type]; } if (CarTypes.Keys.Contains(side)) { side = CarTypes[side]; } sqlSave = sqlSave .Replace("##ID##", rec.TargetInfoID.ToString()); if (probMark >= recognizeBorder) { sqlSave = sqlSave .Replace("##brand##", "'" + brand + "'") .Replace("##brandProb##", "'" + probMarkStr + "'"); } else { sqlSave = sqlSave .Replace("##brand##", "''") .Replace("##brandProb##", "''"); } if (probType >= recognizeBorder) { sqlSave = sqlSave .Replace("##type##", "'" + type + "'") .Replace("##typeProb##", "'" + probTypeStr + "'"); } else { sqlSave = sqlSave .Replace("##type##", "''") .Replace("##typeProb##", "''"); } // Console.WriteLine("sqlSave = '" + sqlSave + "'"); Log(sqlSave, 2); bool ok = false; try { if (conn == null) { RestoreConnection(); } SqlCommand command = new SqlCommand(null, conn); command.CommandText = sqlSave; command.Prepare(); resIns = command.ExecuteNonQuery(); cntSave++; ok = true; } catch (Exception e) { cntLock++; ok = false; } finally { // Console.WriteLine(" -> -> finally "); } if (ok) { if (markSaveID > 0) { Console.Write("+ " + (markSaveID > 1 ? (rec.TargetInfoID.ToString() + ", ") : "")); } } else { if (markLockID > 0) { Console.Write("X " + (markSaveID > 1 ? (rec.TargetInfoID.ToString() + ", ") : "")); } } } return(resIns); }
public int ProcessPhotoBath(List <PhotoStruct> photoList, ref TimeSpan ts_Process, ref TimeSpan ts_Pauses) { //Console.WriteLine("ProcessPhotoBath()"); Int32.TryParse(myParams.Value("UseMultyProc"), out int useMultyProc); Int32.TryParse(myParams.Value("IDsSaveStep"), out int idsSaveStep); Int32.TryParse(myParams.Value("OneFilePause_ms"), out int oneFilePause_ms); // сбросим счётчики распознавания cntPrep = 0; cntReco = 0; cntSave = 0; cntLock = 0; long lastId = 0; for (int i = 0; i < photoList.Count; i++) { var rec = photoList[i]; lastId = rec.TargetInfoID; int resRec = 0; //Console.WriteLine("CreateDirectories()"); CreateDirectories(); CarDataStruct answer = new CarDataStruct(); string fname = rec.TargetInfoID.ToString(); //Console.WriteLine("RecognizeImageByteArr()"); if (rec.bufLen > 1000) { Stopwatch sw_reco = new Stopwatch(); sw_reco.Start(); resRec = CarModelSdk.RecognizeImageByteArr(out answer, rec.buf, rec.bufLen, rec.ImgFileName); sw_reco.Stop(); ts_Process += sw_reco.Elapsed; } else { continue; } //Console.WriteLine("MyTrim(answer.Name, 0, 250)"); string resName = MyTrim(answer.Name, 0, 250); if (resRec > 0) { cntReco++; var resSaveToDB = SaveResultRec(rec, true, answer); if (oneFilePause_ms > 0) { Stopwatch sw_pause = new Stopwatch(); sw_pause.Start(); Wait(oneFilePause_ms); sw_pause.Stop(); ts_Pauses += sw_pause.Elapsed; } } // запомним lastId int ii = i + 1; if (ii % idsSaveStep == 0 && ii > 0) { long idFrom = lastId + 1; updateParamInDB(_myName + "_ID_From", idFrom.ToString()); //saveParamToDB(_myName + "_ID_From", idFrom.ToString()); } } cntPrep = photoList.Count; // запомним lastId long idFromRes = lastId + 1; updateParamInDB(_myName + "_ID_From", idFromRes.ToString()); //saveParamToDB(_myName + "_ID_From", idFromRes.ToString()); return(cntReco); }