From 2903ea86530629cd2f0d2820a36bb0a7c563365d Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 14:40:15 +0700 Subject: [PATCH 01/10] =?UTF-8?q?SmallRefactor:=20Truy=E1=BB=81n=20ki?= =?UTF-8?q?=E1=BB=83u=20d=E1=BB=AF=20li=E1=BB=87u=20enum=20thay=20v=C3=AC?= =?UTF-8?q?=20int?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIParkingApplication/ApiController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index b1cd7b5..17e95f1 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -141,7 +141,7 @@ namespace AIParkingApplication } //Neu Dicrection la Out thi logID la logID lay ve khi check the - public async Task SaveLog(int direction, string cardID, string cameraID, int squareOrLong, string timeInOrOut, string textPlate, Mat plateImage, Mat plateImageResult, Mat PlateFrameImage, Mat FrameImage, string logID = "") + public async Task SaveLog(VehicleDirection direction, string cardID, string cameraID, ModePlate squareOrLong, string timeInOrOut, string textPlate, Mat plateImage, Mat plateImageResult, Mat PlateFrameImage, Mat FrameImage, string logID = "") { string plateImageBase64 = Convert.ToBase64String(plateImage.ToBytes()); string plateImageResultBase64 = Convert.ToBase64String(plateImageResult.ToBytes()); @@ -151,12 +151,12 @@ namespace AIParkingApplication { var request = new SaveLogParams { - Direction = (direction == (int)VehicleDirection.In) ? "in" : "out", + Direction = (direction == VehicleDirection.In) ? "in" : "out", LogID = logID, CardID = cardID, TextPlate = textPlate, CameraID = cameraID, - ModePlate = (squareOrLong == (int)ModePlate.Sqare) ? "1":"0", + ModePlate = (squareOrLong == ModePlate.Sqare) ? "1":"0", TimeVehicleInOrOut = timeInOrOut, PlateImage = plateImageBase64, PlateResultImage = plateImageResultBase64, From e972222b91b32c007a987bf946f2bd3f4de8f36e Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 14:43:32 +0700 Subject: [PATCH 02/10] =?UTF-8?q?SmallRefactor:=20Xo=C3=A1=20component=20k?= =?UTF-8?q?h=C3=B4ng=20c=E1=BA=A7n=20thi=E1=BA=BFt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIParkingApplication/ApiController.cs | 46 +-------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index 17e95f1..f66b7b4 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -11,7 +11,7 @@ namespace AIParkingApplication private HttpClient httpClient; private bool isHttpClientDisposabled; private int numberOfRetry; - private ApiPath apiPath; + public enum VehicleDirection { In, @@ -60,26 +60,6 @@ namespace AIParkingApplication } } - //TODO For New API - //public async Task Login(LoginModel loginData) - //{ - // try - // { - // HttpResponseMessage response = await httpClient.PostAsJsonAsync("/api/login", loginData); - // response.EnsureSuccessStatusCode(); - // var loginResult = await response.Content.ReadAsAsync(); - // return loginResult; - // } - // catch (Exception ex) - // { - // Console.WriteLine($"SendEngineRequest : {ex.Message}"); - // return new LoginResponseModel - // { - // IsLoggedIn = false - // }; - // } - //} - public async void GetApiPathFromServer() { try @@ -97,29 +77,6 @@ namespace AIParkingApplication } } - public async Task SaveLogIn(Mat plateImage, PlateType plateType) - { - string plateImageBase64 = Convert.ToBase64String(plateImage.ToBytes()); - try - { - var request = new PlateRequestEngineModel - { - Img64 = plateImageBase64, - Mode = plateType == PlateType.Square ? "square" : "long", - Display = "full" - }; - HttpResponseMessage response = await httpClient.PostAsJsonAsync("/get-from-frame", request); - response.EnsureSuccessStatusCode(); - var ocrResult = await response.Content.ReadAsAsync(); - return ocrResult; - } - catch (Exception ex) - { - Console.WriteLine($"SendEngineRequest : {ex.Message}"); - return new OcrResult(); - } - } - public async Task CheckCard(string cardNumber) { try @@ -305,7 +262,6 @@ namespace AIParkingApplication } - public class PlateLogModel { [JsonProperty("card")] From d5089f189b17b619c578db25548684d44cdca38c Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 15:21:22 +0700 Subject: [PATCH 03/10] =?UTF-8?q?Chuy=E1=BB=83n=20API=20l=E1=BA=A5y=20Th?= =?UTF-8?q?=E1=BB=91ng=20k=C3=AA=20t=E1=BB=AB=20{Statistic}=20sang=20{ApiC?= =?UTF-8?q?ontroller}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIParkingApplication/ApiController.cs | 25 +++++++++++++++++++++++++ AIParkingApplication/Statistic.cs | 27 ++++++--------------------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index f66b7b4..4a325be 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -60,6 +60,31 @@ namespace AIParkingApplication } } + public async Task GetStatisticInfo() + { + try + { + HttpResponseMessage response = await httpClient.GetAsync("/api/statistics"); + response.EnsureSuccessStatusCode(); + Statistic.ParkInfo parkInfo = await response.Content.ReadAsAsync(); + + if (string.IsNullOrEmpty(parkInfo.TotalIn)) + { + parkInfo.TotalIn = "0"; + } + if (string.IsNullOrEmpty(parkInfo.TotalOut)) + { + parkInfo.TotalOut = "0"; + } + return parkInfo; + } + catch (Exception ex) + { + Console.WriteLine($"SendApiStatisticRequest : {ex.Message}"); + return new Statistic.ParkInfo(); + } + } + public async void GetApiPathFromServer() { try diff --git a/AIParkingApplication/Statistic.cs b/AIParkingApplication/Statistic.cs index efda3d1..e7f596b 100644 --- a/AIParkingApplication/Statistic.cs +++ b/AIParkingApplication/Statistic.cs @@ -3,6 +3,7 @@ using System.Windows.Forms; using System.Threading; using Newtonsoft.Json; using System.Net.Http; +using System.Xml.Serialization; namespace AIParkingApplication { @@ -12,6 +13,7 @@ namespace AIParkingApplication private readonly Thread thrStatistics; private readonly TimeSpan updateInterval; private ParkInfo parkInfo; + private string baseAddress; private Label lblLoaiXe; private Label lblXeMay; @@ -23,8 +25,8 @@ namespace AIParkingApplication public Statistic(string baseAddress, TimeSpan updateInterval) { InitializeComponent(); + this.baseAddress = baseAddress; this.updateInterval = updateInterval; - client = new HttpClient { BaseAddress = new Uri(baseAddress), Timeout = TimeSpan.FromMilliseconds(5000) }; thrStatistics = new Thread(new ThreadStart(GetStatistic)) { IsBackground = true }; thrStatistics.Start(); } @@ -39,27 +41,10 @@ namespace AIParkingApplication } } - private async void GetDataFromServer() + async void GetDataFromServer() { - try - { - HttpResponseMessage response = await client.GetAsync("/api/statistics"); - response.EnsureSuccessStatusCode(); - parkInfo = await response.Content.ReadAsAsync(); - - if (string.IsNullOrEmpty(parkInfo.TotalIn)) - { - parkInfo.TotalIn = "0"; - } - if (string.IsNullOrEmpty(parkInfo.TotalOut)) - { - parkInfo.TotalOut = "0"; - } - } - catch (Exception ex) - { - Console.WriteLine($"SendApiStatisticRequest : {ex.Message}"); - } + ApiController apiController = new ApiController(this.baseAddress); + parkInfo = await apiController.GetStatisticInfo(); } private void ShowInfo() From 30f5f14ee70b739832b526ad57466e1eba7f344b Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 16:48:42 +0700 Subject: [PATCH 04/10] SmallRefactor: {SaveLogParams} -> {SaveLogModel} --- AIParkingApplication/ApiController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index 4a325be..1adbd98 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -131,7 +131,7 @@ namespace AIParkingApplication string FrameImageBase64 = Convert.ToBase64String(FrameImage.ToBytes()); try { - var request = new SaveLogParams + var request = new SaveLogModel { Direction = (direction == VehicleDirection.In) ? "in" : "out", LogID = logID, @@ -231,7 +231,7 @@ namespace AIParkingApplication public string Cost { get; set; } } - public class SaveLogParams + public class SaveLogModel { [JsonProperty("card")] public string CardID { get; set; } From 5d7dcd63dac899c94a83c8a96a543c5b8b6aec1d Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 16:55:14 +0700 Subject: [PATCH 05/10] =?UTF-8?q?Handle=20m=E1=BB=99t=20l=E1=BB=97i=20Thre?= =?UTF-8?q?ad=20ch=E1=BA=A1y=20tr=C6=B0=E1=BB=9Bc=20khi=20Control=20=C4=91?= =?UTF-8?q?=C6=B0=E1=BB=A3c=20t=E1=BA=A1o=20d=E1=BA=ABn=20=C4=91=E1=BA=BFn?= =?UTF-8?q?=20l=E1=BB=97i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIParkingApplication/StatusBar.cs | 37 +++++++++++++++++-------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/AIParkingApplication/StatusBar.cs b/AIParkingApplication/StatusBar.cs index 24f0397..dee0d3f 100644 --- a/AIParkingApplication/StatusBar.cs +++ b/AIParkingApplication/StatusBar.cs @@ -23,26 +23,29 @@ namespace AIParkingApplication { while (true) { - lblDateTime.Invoke(new Action(() => + if (IsHandleCreated) { - lblDateTime.Text = DateTime.Now.ToString(AppConstant.DATETIME_FORMAT); - })); + lblDateTime.Invoke(new Action(() => + { + lblDateTime.Text = DateTime.Now.ToString(AppConstant.DATETIME_FORMAT); + })); - lblPingTimeC3.Invoke(new Action(() => - { - PingResult pingResult = GetPingStatus(c3IP); - lblPingTimeC3.Text = $"{pingResult.ReplyTime} ms"; - lblPingTimeC3.BackColor = pingResult.BackColor; - lblPingTimeC3.ForeColor = pingResult.ForceColor; - })); + lblPingTimeC3.Invoke(new Action(() => + { + PingResult pingResult = GetPingStatus(c3IP); + lblPingTimeC3.Text = $"{pingResult.ReplyTime} ms"; + lblPingTimeC3.BackColor = pingResult.BackColor; + lblPingTimeC3.ForeColor = pingResult.ForceColor; + })); - lblPingTimeServer.Invoke(new Action(() => - { - PingResult pingResult = GetPingStatus(webServerIP); - lblPingTimeServer.Text = $"{pingResult.ReplyTime} ms"; - lblPingTimeServer.BackColor = pingResult.BackColor; - lblPingTimeServer.ForeColor = pingResult.ForceColor; - })); + lblPingTimeServer.Invoke(new Action(() => + { + PingResult pingResult = GetPingStatus(webServerIP); + lblPingTimeServer.Text = $"{pingResult.ReplyTime} ms"; + lblPingTimeServer.BackColor = pingResult.BackColor; + lblPingTimeServer.ForeColor = pingResult.ForceColor; + })); + } Thread.Sleep(1000); } } From 02870d5aa72b356e059e75c7649fccd4af566c47 Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 16:55:47 +0700 Subject: [PATCH 06/10] SmallRefactor: {VehicleDirection} -> {LaneDirection} --- AIParkingApplication/ApiController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index 1adbd98..34a0a92 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -12,7 +12,7 @@ namespace AIParkingApplication private bool isHttpClientDisposabled; private int numberOfRetry; - public enum VehicleDirection + public enum LaneDirection { In, Out @@ -123,7 +123,7 @@ namespace AIParkingApplication } //Neu Dicrection la Out thi logID la logID lay ve khi check the - public async Task SaveLog(VehicleDirection direction, string cardID, string cameraID, ModePlate squareOrLong, string timeInOrOut, string textPlate, Mat plateImage, Mat plateImageResult, Mat PlateFrameImage, Mat FrameImage, string logID = "") + public async Task SaveLog(LaneDirection direction, string cardID, string cameraID, ModePlate squareOrLong, string timeInOrOut, string textPlate, Mat plateImage, Mat plateImageResult, Mat PlateFrameImage, Mat FrameImage, string logID = "") { string plateImageBase64 = Convert.ToBase64String(plateImage.ToBytes()); string plateImageResultBase64 = Convert.ToBase64String(plateImageResult.ToBytes()); @@ -133,7 +133,7 @@ namespace AIParkingApplication { var request = new SaveLogModel { - Direction = (direction == VehicleDirection.In) ? "in" : "out", + Direction = (direction == LaneDirection.In) ? "in" : "out", LogID = logID, CardID = cardID, TextPlate = textPlate, From f8004c32125aafda90046d0e059982779994efaf Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 17:00:33 +0700 Subject: [PATCH 07/10] SmallRefactor: {CardInfo} -> {CardModel} --- AIParkingApplication/ApiController.cs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index 34a0a92..826594b 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -106,7 +106,7 @@ namespace AIParkingApplication { try { - var request = new CardInfo() + var request = new CardModel() { CardNumber = cardNumber }; @@ -168,7 +168,7 @@ namespace AIParkingApplication } } - public class CardInfo + public class CardModel { [JsonProperty("card")] public string CardNumber { get; set; } @@ -267,12 +267,6 @@ namespace AIParkingApplication public string FrameImage { get; set; } } - public class ApiPath - { - [JsonProperty("savelogsin")] //wtf is this from server. - public string SaveVehicleIn { get; set; } - } - public class LoginModel { [JsonProperty("username")] @@ -282,11 +276,6 @@ namespace AIParkingApplication public string Password { get; set; } } - public class LoginResponseOldModel - { - - } - public class PlateLogModel { [JsonProperty("card")] From 089c289019b8563c4efa6759ca85e7e4a6792ddb Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 17:02:23 +0700 Subject: [PATCH 08/10] SmallRefactor: {Data} -> {Config} --- AIParkingApplication/ApiController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index 826594b..fd1e172 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -315,10 +315,10 @@ namespace AIParkingApplication public bool IsLoginSuccess { get; set; } [JsonProperty("data")] - public Data LoginData { get; set; } + public Config LoginData { get; set; } } - public class Data + public class Config { [JsonProperty("userID")] public int UserID { get; set; } From 2cd9fa1ef3c5c63625dc287e25161670f78c96bc Mon Sep 17 00:00:00 2001 From: Le Chau Date: Fri, 26 Jun 2020 17:18:49 +0700 Subject: [PATCH 09/10] SmallRefactor: {APIPath} -> {APIPathModel} --- AIParkingApplication/ApiController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index fd1e172..11015a9 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -333,7 +333,7 @@ namespace AIParkingApplication public bool IsSaveSystemLogs { get; set; } [JsonProperty("api")] - public APIPath APIPath { get; set; } + public APIPathModel APIPath { get; set; } [JsonProperty("camera1")] public CameraData CameraData1 { get; set; } @@ -371,7 +371,7 @@ namespace AIParkingApplication } - public class APIPath + public class APIPathModel { [JsonProperty("apiStatistics")] public APIProperties ApiStatistics { get; set; } From 7512bafc4301b293846b78e011d010efe9c157e6 Mon Sep 17 00:00:00 2001 From: Le Chau Date: Mon, 29 Jun 2020 09:36:48 +0700 Subject: [PATCH 10/10] SmallRefactor --- AIParkingApplication/ApiController.cs | 50 ++++++++------------------- 1 file changed, 14 insertions(+), 36 deletions(-) diff --git a/AIParkingApplication/ApiController.cs b/AIParkingApplication/ApiController.cs index 11015a9..8a047c6 100644 --- a/AIParkingApplication/ApiController.cs +++ b/AIParkingApplication/ApiController.cs @@ -167,7 +167,7 @@ namespace AIParkingApplication } } } - + #region Check card validation API public class CardModel { [JsonProperty("card")] @@ -218,7 +218,10 @@ namespace AIParkingApplication [JsonProperty("name")] public string CustomerName { get; set; } } + #endregion + + #region Save Log API public class SaveLogRespone { [JsonProperty("status")] @@ -266,7 +269,10 @@ namespace AIParkingApplication [JsonProperty("frameImage")] public string FrameImage { get; set; } } + #endregion + + #region Get Config API public class LoginModel { [JsonProperty("username")] @@ -276,39 +282,6 @@ namespace AIParkingApplication public string Password { get; set; } } - public class PlateLogModel - { - [JsonProperty("card")] - public string CardID { get; set; } - - [JsonProperty("plate")] - public string PlateString { get; set; } - - [JsonProperty("type")] - public string LaneType { get; set; } - - [JsonProperty("mod")] - public string PlateMode { get; set; } //0 or 1 - - [JsonProperty("camera")] - public string CameraID { get; set; } - - [JsonProperty("time")] - public string Time { get; set; } - - [JsonProperty("plateImage")] - public string PlateImageBase64 { get; set; } - - [JsonProperty("plateResultImage")] - public string PlateResultImageBase64 { get; set; } - - [JsonProperty("plateFrameImage")] - public string PlateFrameImageBase64 { get; set; } - - [JsonProperty("frameImage")] - public string FrameImageBase64 { get; set; } - } - public class LoginDataModel { [JsonProperty("status")] @@ -371,6 +344,7 @@ namespace AIParkingApplication } + #region API Path public class APIPathModel { [JsonProperty("apiStatistics")] @@ -401,6 +375,7 @@ namespace AIParkingApplication [JsonProperty("path")] public string Path { get; set; } } + #endregion public class CameraData { @@ -503,13 +478,14 @@ namespace AIParkingApplication public int Logs { get; set; } } + #region LaneConfig public class LaneConfig { [JsonProperty("laneConfig")] - public LanePosision Posision { get; set; } + public LaneConfigPosision Posision { get; set; } } - public class LanePosision + public class LaneConfigPosision { [JsonProperty("left")] public LaneConfigParam LeftLane { get; set; } @@ -529,5 +505,7 @@ namespace AIParkingApplication [JsonProperty("longPlate")] public bool IsLongPlate { get; set; } } + #endregion + #endregion }