diff --git a/AIParkingApplication/AIParkingApplicationForm.cs b/AIParkingApplication/AIParkingApplicationForm.cs
index 270ebbb..aac0eb0 100644
--- a/AIParkingApplication/AIParkingApplicationForm.cs
+++ b/AIParkingApplication/AIParkingApplicationForm.cs
@@ -63,6 +63,18 @@ namespace AIParkingApplication
MessageBox.Show("Cấu hình API Plate Recognize lỗi!", "Cấu hình API Engine lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
+ AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
+ Application.ThreadException += Application_ThreadException;
+ }
+
+ private void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+ {
+ appLogger.Log(LogLevel.Error, $"Application.ThreadException. ex:{e.Exception.Message}");
+ }
+
+ private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+ {
+ appLogger.Log(LogLevel.Error, $"AppDomain.CurrentDomain.UnhandledException. ex:{(e.ExceptionObject as Exception).Message}");
}
private void InitAllLanes()
diff --git a/AIParkingApplication/App.config b/AIParkingApplication/App.config
index 2bd35b8..7693369 100644
--- a/AIParkingApplication/App.config
+++ b/AIParkingApplication/App.config
@@ -5,6 +5,7 @@
+
diff --git a/AIParkingApplication/LaneIn.cs b/AIParkingApplication/LaneIn.cs
index 05143a6..20dd437 100644
--- a/AIParkingApplication/LaneIn.cs
+++ b/AIParkingApplication/LaneIn.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Threading.Tasks;
@@ -69,14 +70,14 @@ namespace AIParkingApplication
if (!cardInfoResult.IsValid)
{
lblStatusInfo.UpdateLabel("THẺ KHÔNG HỢP LỆ", Color.Purple);
- appLogger.Log(LogLevel.Error, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: THẺ KHÔNG HỢP LỆ");
+ appLogger.Log(LogLevel.Info, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: THẺ KHÔNG HỢP LỆ");
return;
}
if (cardInfoResult.Direction != "in")
{
lblStatusInfo.UpdateLabel("XE ĐÃ Ở TRONG BÃI", Color.Red);
- appLogger.Log(LogLevel.Error, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: XE ĐÃ Ở TRONG BÃI");
+ appLogger.Log(LogLevel.Info, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: XE ĐÃ Ở TRONG BÃI");
return;
}
@@ -148,21 +149,24 @@ namespace AIParkingApplication
{
try
{
+ var starTime = DateTime.Now;
Cv2.Resize(frame, frame, new OpenCvSharp.Size(1280, 720));
FinalPlateResult finalPlateResult = await plateProcessor.ProcessPlate(frame);
if (isRetryMode && !plateProcessor.IsPlateStringValid(finalPlateResult.PlateString))
{
- Console.WriteLine("ProcessFrameImage Retry Mode");
Thread.Sleep(1000);
overviewCamera.RequestCaptureOneFrame();
finalPlateResult = await plateProcessor.ProcessPlate(frame);
+ Console.WriteLine("ProcessFrameImage Retry Mode");
}
+ appLogger.Log(LogLevel.Info, $"ProcessFrameImage: {(DateTime.Now - starTime).TotalMilliseconds} ms");
return finalPlateResult;
}
catch (Exception ex)
{
Console.WriteLine($"ProcessFrameImage\texMessage: {ex.Message}");
+ appLogger.Log(LogLevel.Info, $"ProcessFrameImage: ex: {ex.Message}");
return new FinalPlateResult
{
PlateImage = frame,
diff --git a/AIParkingApplication/LaneOut.cs b/AIParkingApplication/LaneOut.cs
index 974a453..a0496a8 100644
--- a/AIParkingApplication/LaneOut.cs
+++ b/AIParkingApplication/LaneOut.cs
@@ -72,14 +72,14 @@ namespace AIParkingApplication
if (!cardInfoResult.IsValid)
{
lblStatusInfo.UpdateLabel("THẺ KHÔNG HỢP LỆ", Color.Purple);
- appLogger.Log(LogLevel.Error, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: THẺ KHÔNG HỢP LỆ");
+ appLogger.Log(LogLevel.Info, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: THẺ KHÔNG HỢP LỆ");
return;
}
if (cardInfoResult.Direction != "out")
{
lblStatusInfo.UpdateLabel("CHƯA NHẬN THẺ VÀO", Color.Red);
- appLogger.Log(LogLevel.Error, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: XE ĐÃ Ở TRONG BÃI");
+ appLogger.Log(LogLevel.Info, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | lỗi: XE ĐÃ Ở TRONG BÃI");
return;
}
@@ -121,14 +121,17 @@ namespace AIParkingApplication
OpenDoor(doorId);
appLogger.Log(LogLevel.Info, $"Request thẻ cổng {doorId} vào | số thẻ : {cardNumber} | biển số: {result.PlateString} | Đã mở cửa");
}
- PrinterData printerData = new PrinterData
+ if (false)
{
- PlateString = result.PlateString,
- MoneyAmount = saveLogResult.Cost,
- TimeParkingIn = cardInformation.TimeIn,
- TimeParkingOut = DateTime.Now.GetTimeFormatted()
- };
- printer.DoPrint(printerData);
+ PrinterData printerData = new PrinterData
+ {
+ PlateString = result.PlateString,
+ MoneyAmount = saveLogResult.Cost,
+ TimeParkingIn = cardInformation.TimeIn,
+ TimeParkingOut = DateTime.Now.GetTimeFormatted()
+ };
+ printer.DoPrint(printerData);
+ }
}
else
{
@@ -161,9 +164,11 @@ namespace AIParkingApplication
private void OpenDoor(int doorId)
{
- if (doorControlAccess.OpenDoor(doorId).HasError)
+ var openDoorResult = doorControlAccess.OpenDoor(doorId);
+ if (openDoorResult.HasError)
{
lblStatusInfo.UpdateLabel("KHÔNG THỂ MỞ CỬA", Color.Red);
+ appLogger.Log(LogLevel.Error, $"Không thể mở cửa {doorId}. Lỗi: {openDoorResult.Message}");
}
}
@@ -171,6 +176,7 @@ namespace AIParkingApplication
{
try
{
+ var starTime = DateTime.Now;
Cv2.Resize(frame, frame, new OpenCvSharp.Size(1280, 720));
FinalPlateResult finalPlateResult = await plateProcessor.ProcessPlate(frame);
@@ -181,6 +187,7 @@ namespace AIParkingApplication
overviewCamera.RequestCaptureOneFrame();
finalPlateResult = await plateProcessor.ProcessPlate(frame);
}
+ appLogger.Log(LogLevel.Info, $"ProcessFrameImage: {(DateTime.Now - starTime).TotalMilliseconds} ms");
return finalPlateResult;
}
catch (Exception ex)
diff --git a/AIParkingApplication/LoginForm.cs b/AIParkingApplication/LoginForm.cs
index fc9ed51..5ac59ed 100644
--- a/AIParkingApplication/LoginForm.cs
+++ b/AIParkingApplication/LoginForm.cs
@@ -34,7 +34,7 @@ namespace AIParkingApplication
{
lblLoginStatus.Text = "Địa chỉ server không được để trống! \r\n ví dụ: 192.168.1.2:80";
btnLogin.Enabled = true;
- applicationLogger.Log(LogLevel.Error, "Địa chỉ server không được để trống");
+ applicationLogger.Log(LogLevel.Info, "Địa chỉ server không được để trống");
return;
}
@@ -44,7 +44,7 @@ namespace AIParkingApplication
{
lblLoginStatus.Text = "Địa chỉ server không đúng định dạng: \r\n ví dụ: 192.168.1.122:80";
btnLogin.Enabled = true;
- applicationLogger.Log(LogLevel.Error, "Địa chỉ server không đúng định dạng");
+ applicationLogger.Log(LogLevel.Info, "Địa chỉ server không đúng định dạng");
return;
}
@@ -54,9 +54,9 @@ namespace AIParkingApplication
}
catch (Exception ex)
{
+ applicationLogger.Log(LogLevel.Error, $"Cấu máy chủ lỗi - Kiểm tra lại tên máy chủ, kết nối máy chủ! Không thể khởi tạo API Webserver. ex: {ex.Message}");
MessageBox.Show($"Cấu máy chủ lỗi - Kiểm tra lại tên máy chủ, kết nối máy chủ! \r\n {ex.Message}", "Lỗi khởi tạo API!", MessageBoxButtons.OK, MessageBoxIcon.Error);
btnLogin.Enabled = true;
- applicationLogger.Log(LogLevel.Error, "Cấu máy chủ lỗi - Kiểm tra lại tên máy chủ, kết nối máy chủ! Không thể khởi tạo API Webserver");
return;
}
@@ -67,7 +67,7 @@ namespace AIParkingApplication
{
lblLoginStatus.Text = "Tên tài khoản hoặc mật khẩu không được để trống";
btnLogin.Enabled = true;
- applicationLogger.Log(LogLevel.Error, "Tên tài khoản hoặc mật khẩu không được để trống");
+ applicationLogger.Log(LogLevel.Info, "Tên tài khoản hoặc mật khẩu không được để trống");
return;
}
@@ -79,7 +79,7 @@ namespace AIParkingApplication
if (execeptioMessage.Contains("Error converting value"))
{
lblLoginStatus.UpdateLabel("Sai tên tài khoản hoặc mật khẩu!", Color.Red);
- applicationLogger.Log(LogLevel.Error, "Sai tên tài khoản hoặc mật khẩu");
+ applicationLogger.Log(LogLevel.Info, "Sai tên tài khoản hoặc mật khẩu");
return;
}
diff --git a/AIParkingApplication/Printer.cs b/AIParkingApplication/Printer.cs
index d0b185e..5ea14e6 100644
--- a/AIParkingApplication/Printer.cs
+++ b/AIParkingApplication/Printer.cs
@@ -47,7 +47,7 @@ namespace AIParkingApplication
catch (Exception ex)
{
Console.WriteLine($"ProcessingString\texMessage:{ex.Message}");
- appLogger.Log(LogLevel.Info, $"Lỗi khi In hóa đơn: {ex.Message}");
+ appLogger.Log(LogLevel.Error, $"Lỗi khi In hóa đơn: {ex.Message}");
return string.Empty;
}
}