diff --git a/OCR_Decode/DriverDrsWindow.cs b/OCR_Decode/DriverDrsWindow.cs index 9dc6129..7ee6fe3 100644 --- a/OCR_Decode/DriverDrsWindow.cs +++ b/OCR_Decode/DriverDrsWindow.cs @@ -18,7 +18,7 @@ namespace OCR_Decode { Name = "DRS"; } - public override object DecodePng() + public override async Task DecodePng() { bool result = false; int greenValue = GetGreenPixels(); diff --git a/OCR_Decode/DriverGapToLeaderWindow.cs b/OCR_Decode/DriverGapToLeaderWindow.cs index af9f4ae..802f705 100644 --- a/OCR_Decode/DriverGapToLeaderWindow.cs +++ b/OCR_Decode/DriverGapToLeaderWindow.cs @@ -13,9 +13,9 @@ namespace OCR_Decode { Name = "Gap to leader"; } - public override object DecodePng() + public override async Task DecodePng() { - int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Gap); + int result = await GetTimeFromPng(WindowImage, OcrImage.WindowType.Gap); return result; } } diff --git a/OCR_Decode/DriverLapTimeWindow.cs b/OCR_Decode/DriverLapTimeWindow.cs index 80bf221..d196fd3 100644 --- a/OCR_Decode/DriverLapTimeWindow.cs +++ b/OCR_Decode/DriverLapTimeWindow.cs @@ -14,9 +14,9 @@ namespace OCR_Decode { Name = "Lap time"; } - public override object DecodePng() + public override async Task DecodePng() { - int result = GetTimeFromPng(WindowImage,OcrImage.WindowType.LapTime); + int result = await GetTimeFromPng(WindowImage,OcrImage.WindowType.LapTime); return result; } } diff --git a/OCR_Decode/DriverNameWindow.cs b/OCR_Decode/DriverNameWindow.cs index 7788275..1129c2b 100644 --- a/OCR_Decode/DriverNameWindow.cs +++ b/OCR_Decode/DriverNameWindow.cs @@ -15,10 +15,10 @@ namespace OCR_Decode { Name = "Name"; } - public override object DecodePng(List DriverList) + public override async Task DecodePng(List DriverList) { string result = ""; - result = GetStringFromPng(WindowImage); + result = await GetStringFromPng(WindowImage); if (!IsADriver(DriverList, result)) { diff --git a/OCR_Decode/DriverPositionWindow.cs b/OCR_Decode/DriverPositionWindow.cs index 91915cb..f797c9c 100644 --- a/OCR_Decode/DriverPositionWindow.cs +++ b/OCR_Decode/DriverPositionWindow.cs @@ -13,9 +13,9 @@ namespace OCR_Decode { Name = "Position"; } - public override object DecodePng() + public override async Task DecodePng() { - string result = GetStringFromPng(WindowImage,"0123456789"); + string result = await GetStringFromPng(WindowImage,"0123456789"); int position; try diff --git a/OCR_Decode/DriverSector1Window.cs b/OCR_Decode/DriverSector1Window.cs index 7f497a6..7b8ed2c 100644 --- a/OCR_Decode/DriverSector1Window.cs +++ b/OCR_Decode/DriverSector1Window.cs @@ -13,9 +13,9 @@ namespace OCR_Decode { Name = "Sector 1"; } - public override object DecodePng() + public override async Task DecodePng() { - int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector); + int result = await GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector); return result; } } diff --git a/OCR_Decode/DriverSector2Window.cs b/OCR_Decode/DriverSector2Window.cs index 8bdb343..c7fc02b 100644 --- a/OCR_Decode/DriverSector2Window.cs +++ b/OCR_Decode/DriverSector2Window.cs @@ -13,9 +13,9 @@ namespace OCR_Decode { Name = "Sector 2"; } - public override object DecodePng() + public override async Task DecodePng() { - int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector); + int result = await GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector); return result; } } diff --git a/OCR_Decode/DriverSector3Window.cs b/OCR_Decode/DriverSector3Window.cs index 84773c6..148bc2d 100644 --- a/OCR_Decode/DriverSector3Window.cs +++ b/OCR_Decode/DriverSector3Window.cs @@ -13,9 +13,9 @@ namespace OCR_Decode { Name = "Sector 3"; } - public override object DecodePng() + public override async Task DecodePng() { - int result = GetTimeFromPng(WindowImage,OcrImage.WindowType.Sector); + int result = await GetTimeFromPng(WindowImage,OcrImage.WindowType.Sector); return result; } } diff --git a/OCR_Decode/DriverTyresWindow.cs b/OCR_Decode/DriverTyresWindow.cs index 81a5b93..37757bb 100644 --- a/OCR_Decode/DriverTyresWindow.cs +++ b/OCR_Decode/DriverTyresWindow.cs @@ -22,13 +22,12 @@ namespace OCR_Decode { Name = "Tyres"; } - public override object DecodePng() + public override async Task DecodePng() { //WindowImage.Save(Reader.DEBUG_DUMP_FOLDER + "testTyres" + rnd.Next(0, 1000) + ".png"); - - return GetTyreInfos(); + return await GetTyreInfos(); } - private Tyre GetTyreInfos() + private async Task GetTyreInfos() { Bitmap tyreZone = GetSmallBitmapFromBigOne(WindowImage, FindTyreZone()); @@ -37,7 +36,7 @@ namespace OCR_Decode int laps = -1; //MHIWsmhiw so we can detect Soft Medium Hard Inters and Wet tyres - string text = GetStringFromPng(tyreZone, "SMHIW", OcrImage.WindowType.Tyre); + string text = await GetStringFromPng(tyreZone, "SMHIW", OcrImage.WindowType.Tyre); if (text.Length == 1 && text != "") { //We found a tire letter @@ -67,7 +66,7 @@ namespace OCR_Decode } else { - string number = GetStringFromPng(tyreZone, "0123456789", OcrImage.WindowType.Tyre); + string number = await GetStringFromPng(tyreZone, "0123456789", OcrImage.WindowType.Tyre); try { laps = Convert.ToInt32(number); diff --git a/OCR_Decode/Form1.cs b/OCR_Decode/Form1.cs index 20943bb..bd9fe35 100644 --- a/OCR_Decode/Form1.cs +++ b/OCR_Decode/Form1.cs @@ -34,7 +34,7 @@ namespace OCR_Decode RefreshUi(); } - private void RefreshUi() + private async void RefreshUi() { tbxResult.Text = ""; @@ -45,7 +45,7 @@ namespace OCR_Decode int DrawMS = (int)stopWatch.ElapsedMilliseconds; stopWatch.Restart(); - tbxResult.Text = Reader.Decode(pageNmbr); + tbxResult.Text = await Reader.Decode(pageNmbr); stopWatch.Stop(); int OcrMS = (int)stopWatch.ElapsedMilliseconds; diff --git a/OCR_Decode/Reader.cs b/OCR_Decode/Reader.cs index 621da79..095ddae 100644 --- a/OCR_Decode/Reader.cs +++ b/OCR_Decode/Reader.cs @@ -170,7 +170,7 @@ namespace OCR_Decode } } } - public string Decode(int idImage) + public async Task Decode(int idImage) { string result = ""; ChangeImage(idImage); @@ -183,10 +183,11 @@ namespace OCR_Decode { case 0: //Main Zone + //Parallel.ForEach(MainZones[mainZoneId].Zones, z => foreach (Zone z in MainZones[mainZoneId].Zones) { - mainResults.Add(z.Decode(Drivers)); - } + mainResults.Add(await z.Decode(Drivers)); + }//); break; //Next there will be the title and laps added } @@ -276,11 +277,11 @@ namespace OCR_Decode int count = 0; foreach (Zone zz in z.Zones) { - string driverFolder = DEBUG_DUMP_FOLDER + "driver" + count + "\\"; - if (!Directory.Exists(driverFolder)) - Directory.CreateDirectory(driverFolder); + //string driverFolder = DEBUG_DUMP_FOLDER + "driver" + count + "\\"; + //if (!Directory.Exists(driverFolder)) + //Directory.CreateDirectory(driverFolder); - zz.ZoneImage.Save(driverFolder + "FullImage.png"); + //zz.ZoneImage.Save(driverFolder + "FullImage.png"); g.DrawRectangle(Pens.Red, z.Bounds); foreach (Window w in zz.Windows) diff --git a/OCR_Decode/Window.cs b/OCR_Decode/Window.cs index ab18a30..585e92f 100644 --- a/OCR_Decode/Window.cs +++ b/OCR_Decode/Window.cs @@ -44,11 +44,11 @@ namespace OCR_Decode Engine.DefaultPageSegMode = PageSegMode.SingleLine; } } - public virtual Object DecodePng() + public virtual async Task DecodePng() { return "NaN"; } - public virtual Object DecodePng(List drivers) + public virtual async Task DecodePng(List drivers) { return "NaN"; } @@ -60,7 +60,7 @@ namespace OCR_Decode return stream.ToArray(); } } - public static int GetTimeFromPng(Bitmap wImage,OcrImage.WindowType type) + public static async Task GetTimeFromPng(Bitmap wImage,OcrImage.WindowType type) { string rawResult = ""; int result = 0; @@ -156,7 +156,7 @@ namespace OCR_Decode page.Dispose(); return result; } - public static string GetStringFromPng(Bitmap image,string allowedChars = "",OcrImage.WindowType windowType = OcrImage.WindowType.Text) + public static async Task GetStringFromPng(Bitmap image,string allowedChars = "",OcrImage.WindowType windowType = OcrImage.WindowType.Text) { string result = ""; diff --git a/OCR_Decode/Zone.cs b/OCR_Decode/Zone.cs index 74a8946..3134e1f 100644 --- a/OCR_Decode/Zone.cs +++ b/OCR_Decode/Zone.cs @@ -62,18 +62,18 @@ namespace OCR_Decode { Windows.Add(window); } - public virtual List Decode(List drivers) + public virtual async Task> Decode(List drivers) { List result = new List(); foreach (Window w in Windows) { if (w is DriverNameWindow) { - result.Add((w as DriverNameWindow).DecodePng(drivers)); + result.Add(await (w as DriverNameWindow).DecodePng(drivers)); } else { - result.Add(w.DecodePng()); + result.Add(await w.DecodePng()); } } return result;