diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index cd88164..c0db33c 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -73,7 +73,7 @@ namespace AIParkingApplication } } - public async Task GetCardInformation(string cardNumber) + public async Task GetCardInformation(string cardNumber) { try { @@ -83,13 +83,13 @@ namespace AIParkingApplication }; HttpResponseMessage response = await httpClient.PostAsJsonAsync("/api/check-card", request); response.EnsureSuccessStatusCode(); - var cardValication = await response.Content.ReadAsAsync(); + var cardValication = await response.Content.ReadAsAsync(); return cardValication; } catch (Exception ex) { Console.WriteLine($"CheckCard Exception:\t{DateTime.Now.ToString(AppConstant.DATETIME_FORMAT)} \t {ex.Message}"); - return new CardValidation(); + return new CardInformation(); } } @@ -146,7 +146,7 @@ namespace AIParkingApplication public string CardNumber { get; set; } } - public class CardValidation + public class CardInformation { [JsonProperty("status")] public bool IsValid { get; set; } diff --git a/AIParkingApplication/LaneIn.cs b/AIParkingApplication/LaneIn.cs index 8837cc9..8a4097e 100644 --- a/AIParkingApplication/LaneIn.cs +++ b/AIParkingApplication/LaneIn.cs @@ -80,20 +80,41 @@ namespace AIParkingApplication pictureBoxPlateImage.Invoke(new Action(() => { pictureBoxPlateImage.Image?.Dispose(); - pictureBoxPlateImage.Image = result.PlateImage; + pictureBoxPlateImage.Image = result.PlateImage.ToBitmap(); })); - var cardValidation = await apiController.GetCardInformation(cardNumber); + var cardInformation = await apiController.GetCardInformation(cardNumber); - ShowCardInfoOnUI(cardNumber, result.PlateString, cardValidation.CardType, DateTime.Now.ToString(AppConstant.DATETIME_FORMAT)); + ShowCardInfoOnUI(cardNumber, result.PlateString, cardInformation.CardType, DateTime.Now.ToString(AppConstant.DATETIME_FORMAT)); - if (isAutoOpenDoor) + //TODO check saveLogResult + var saveLogResult = await apiController.SaveLog(LaneDirection.In, cardInformation.CardRealID.ToString(), "1", result.PlateType, DateTime.Now.ToString(AppConstant.DATETIME_FORMAT), result.PlateString, result.PlateImage, result.PlateImage, result.PlateImage, overviewVideoFrame); + if (saveLogResult.Status) { - if (this.doorId == doorId) + if (isAutoOpenDoor) { - c3Device.OpenDoor(doorId); + if (this.doorId == doorId) + { + var openDoorResult = c3Device.OpenDoor(doorId); + if (openDoorResult.HasError) + { + lblRecogizePlateStatus.Invoke(new Action(() => + { + lblRecogizePlateStatus.BackColor = Color.Red; + lblRecogizePlateStatus.Text = "KHÔNG THỂ MỞ CỬA"; + })); + } + } } } + else + { + lblRecogizePlateStatus.Invoke(new Action(() => + { + lblRecogizePlateStatus.BackColor = Color.Red; + lblRecogizePlateStatus.Text = "KHÔNG THỂ KẾT NỐI ĐẾN MÁY CHỦ"; + })); + } } else { @@ -145,8 +166,9 @@ namespace AIParkingApplication Console.WriteLine($"ProcessFrameImage\texMessage: {ex.Message}"); return new FinalPlateResult { - PlateImage = frame.ToBitmap(), - PlateString = string.Empty + PlateImage = frame, + PlateString = string.Empty, + PlateType = PlateType.Square }; } } diff --git a/AIParkingApplication/PlateProcessor.cs b/AIParkingApplication/PlateProcessor.cs index c1b5136..a503237 100644 --- a/AIParkingApplication/PlateProcessor.cs +++ b/AIParkingApplication/PlateProcessor.cs @@ -36,24 +36,26 @@ namespace AIParkingApplication //TODO: Check if plateDetected empty OcrResult plateOcrResultFromEngine = await Util.SendEngineRequestAsync(plateDetected, plateType); - Bitmap finalPlateImage; - if (!string.IsNullOrEmpty(plateOcrResultFromEngine.Ocr) && !string.IsNullOrEmpty(plateOcrResultFromEngine.Plate)) + Mat finalPlateImage; + if (!string.IsNullOrEmpty(plateOcrResultFromEngine.Ocr) && !string.IsNullOrEmpty(plateOcrResultFromEngine.PlateImageBase64)) { - byte[] imageData = Convert.FromBase64String(plateOcrResultFromEngine.Plate); + byte[] imageData = Convert.FromBase64String(plateOcrResultFromEngine.PlateImageBase64); using (var ms = new MemoryStream(imageData)) { - finalPlateImage = new Bitmap(ms); + Bitmap image = new Bitmap(ms); + finalPlateImage = BitmapConverter.ToMat(image); } } else { - finalPlateImage = plateDetected.ToBitmap(); + finalPlateImage = plateDetected; } return new FinalPlateResult { PlateString = plateOcrResultFromEngine.Ocr, - PlateImage = finalPlateImage + PlateImage = finalPlateImage, + PlateType = plateType }; } @@ -84,7 +86,8 @@ namespace AIParkingApplication return new FinalPlateResult { PlateString = string.Empty, - PlateImage = frame.ToBitmap() + PlateImage = frame, + PlateType = PlateType.Square }; } } @@ -105,6 +108,7 @@ namespace AIParkingApplication public class FinalPlateResult { public string PlateString { get; set; } - public Bitmap PlateImage { get; set; } + public Mat PlateImage { get; set; } + public PlateType PlateType { get; set; } } }