From 2275b51a3fbd532b810eef329f119e2e69d9a9dd Mon Sep 17 00:00:00 2001 From: Nguyen Dinh Thuan Date: Tue, 17 Sep 2024 21:59:55 +0700 Subject: [PATCH] =?UTF-8?q?c=E1=BA=ADp=20nh=E1=BA=ADt=20tr=E1=BA=A1ng=20th?= =?UTF-8?q?=C3=A1i=20m=C3=A1y=20in=20c=E1=BA=ADp=20nh=E1=BA=ADt=20tr?= =?UTF-8?q?=E1=BA=A1ng=20th=C3=A1i=20DE70?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AppData.cs | 7 +-- De70Cmdv2.cs | 19 ++++++-- DepositSMUCv2.xaml.cs | 96 +++++++++++++++++++++++--------------- Services/PrinterManager.cs | 19 +++++--- 4 files changed, 91 insertions(+), 50 deletions(-) diff --git a/AppData.cs b/AppData.cs index e4b145a..49d67a3 100644 --- a/AppData.cs +++ b/AppData.cs @@ -148,8 +148,8 @@ namespace SafeBagDE70 } return bInitUser; } - public static CDMSTATE? CDMSTATE = null; - public static ADMINDEVICESTATUS? ADMINDEVICESTATUS = null; + public static CDMSTATE CDMSTATE; + public static ADMINDEVICESTATUS ADMINDEVICESTATUS; private static DateTime CutOffTime = new DateTime(1, 1, 1, 11, 0, 0); // 11:00 a.m as cut-off time public static string GetNumberPartFromMerchantCode(string merchantCode) @@ -609,7 +609,8 @@ namespace SafeBagDE70 { NORMAL = 0, NEARPAPEROUT = 1, - PAPEROUT=2 + PAPEROUT=2, + ERROR=3 } public enum SensorStatusCode { diff --git a/De70Cmdv2.cs b/De70Cmdv2.cs index 6c484d3..24f5d95 100644 --- a/De70Cmdv2.cs +++ b/De70Cmdv2.cs @@ -8,6 +8,7 @@ using System.IO.Ports; using System.Text; using System.Linq; + using SafeBagDE70.API; public class CCmdRsp { @@ -15,6 +16,7 @@ public static int mDenominationCount; public static string mSelectedCurrency; public static int miSelectedCurrency; + private SerialPort serialPort = null; private int m_all_sendsize; private int m_all_recvsize; @@ -1577,6 +1579,7 @@ public class Com232C { SerialPort serialPort = null; + public static int prevState = 0; public Com232C(SerialPort _serialPort) { this.serialPort = _serialPort; @@ -1584,13 +1587,18 @@ public byte send_dat(byte[] buf, int size) { //Debug.WriteLine(DE70_CMD.ByteArrayToString(buf, 0, size)); + AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.NORMAL; + AppData.CDMSTATE.CDMStatus = "DE: OK"; + byte bResult = 0; try { serialPort.Write(buf, 0, size); - return Constants.E_OK; + bResult= Constants.E_OK; } catch (Exception e) { + AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT; + AppData.CDMSTATE.CDMStatus = "DE: LỖI"; try { Log.Fatal(e, "DE70_send_dat"); @@ -1602,11 +1610,16 @@ { Log.Fatal(e2,"DE70_send_dat2"); } - } + if(AppData.DeviceStatus.CDMStatus!=prevState) + { + APIModels.SendEvent(AppData.DeviceStatus); + prevState = AppData.DeviceStatus.CDMStatus; + } // Implement serial communication send function - return Constants.E_NG; + bResult= Constants.E_NG; + return bResult; } public int rcv_dat(byte[] buf, int pos, int size) diff --git a/DepositSMUCv2.xaml.cs b/DepositSMUCv2.xaml.cs index 4a4b5ea..0cf1657 100644 --- a/DepositSMUCv2.xaml.cs +++ b/DepositSMUCv2.xaml.cs @@ -393,43 +393,13 @@ namespace SafeBagDE70 if (countSensorTimer % 10 == 0) { - - var status = printerManager.GetStatus(); - var strPrinterMessage = ""; - if(status!=null) - { - if (status.StsNOPAPER) - { - AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.PAPEROUT; - StopTimers(); - strPrinterMessage = "MÁY IN HẾT GIẤY! ĐỀ NGHỊ THAY GIẤY"; - ShowError(strPrinterMessage); - AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; - } - else if (status.StsNEARENDPAP) - { - strPrinterMessage = "MÁY IN GẦN HẾT GIẤY"; - AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.NEARPAPEROUT; - AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; - } - else - { - AppData.ADMINDEVICESTATUS.PrinterStatus = "MÁY IN OK"; + GetPrinterStatus(); - } - if (AppData.DeviceStatus.PrinterStatus != prevPrinterStatus) - { - AppData.DeviceStatus.Description = strPrinterMessage; - APIModels.SendEvent(AppData.DeviceStatus); - prevPrinterStatus = AppData.DeviceStatus.PrinterStatus; - } - } - AppData.DeviceStatus.Description = AppData.CDMSTATE.CDMStatus; AppData.DeviceStatus.DeviceTime = DateTime.Now; APIModels.SendHealthCheck(AppData.DeviceStatus); } - if(countSensorTimer%5==0) + if (countSensorTimer%5==0) { AppData.ADMINDEVICESTATUS.DeviceStatus = AppData.IsInternetOk == false ? "Kết nối Internet: Không" : "Kết nối Internet: OK"; } @@ -448,6 +418,54 @@ namespace SafeBagDE70 } sensorTimer.IsEnabled = true; } + + private void GetPrinterStatus() + { + var status = printerManager.GetStatus(); + var strPrinterMessage = ""; + if (status != null) + { + if (status.StsNOPAPER) + { + AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.PAPEROUT; + StopTimers(); + strPrinterMessage = "MÁY IN: HẾT GIẤY! ĐỀ NGHỊ THAY GIẤY"; + ShowError(strPrinterMessage); + AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; + } + else if (status.StsNEARENDPAP) + { + strPrinterMessage = "MÁY IN: GẦN HẾT GIẤY"; + AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.NEARPAPEROUT; + AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; + } + else if (status.StsPAPERJAM || status.StsCUTERROR || status.StsOVERTEMP) + { + strPrinterMessage = "MÁY IN: LỖI"; + AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.ERROR; + AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; + } + else + { + strPrinterMessage = "MÁY IN: OK"; + AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.NORMAL; + AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; + } + } + else + { + strPrinterMessage = "MÁY IN: LỖI"; + AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.ERROR; + AppData.ADMINDEVICESTATUS.PrinterStatus = strPrinterMessage; + } + if (AppData.DeviceStatus.PrinterStatus != prevPrinterStatus) + { + AppData.DeviceStatus.Description = strPrinterMessage; + APIModels.SendEvent(AppData.DeviceStatus); + prevPrinterStatus = AppData.DeviceStatus.PrinterStatus; + } + } + Stopwatch watch = new Stopwatch(); private void GetSensorValue() { @@ -535,12 +553,14 @@ namespace SafeBagDE70 } catch (Exception ex) { - Log.Fatal(ex,"GetSensorValue"); - if(serialPortSensor.IsOpen) - serialPortSensor.Close(); - serialPortSensor.Open(); - serialPortSensor.DiscardInBuffer(); - serialPortSensor.DiscardOutBuffer(); + //Log.Fatal(ex,"GetSensorValue"); + //if(serialPortSensor.IsOpen) + // serialPortSensor.Close(); + //serialPortSensor.Open(); + + //serialPortSensor.DiscardInBuffer(); + //serialPortSensor.DiscardOutBuffer(); + InitSerialPortSensor(); } } private void DoMaintaince() diff --git a/Services/PrinterManager.cs b/Services/PrinterManager.cs index ff21eb7..0f46e30 100644 --- a/Services/PrinterManager.cs +++ b/Services/PrinterManager.cs @@ -1,5 +1,6 @@ using Custom.CuCustomWndAPI; using HandyControl.Data; +using Microsoft.IdentityModel.Abstractions; using SafeBagDE70.API; using Serilog; using System; @@ -28,9 +29,9 @@ namespace SafeBagDE70.Services } catch (Exception ex) { - Log.Information("[PRINTER] Không thể khởi tạo máy in"); + Log.Fatal(ex,"[PRINTER] Không thể khởi tạo máy in"); - AppData.DeviceStatus.PrinterStatus = 3; + AppData.DeviceStatus.PrinterStatus = (int)PrinterStatusCode.ERROR; AppData.DeviceStatus.Description = "[PRINTER] Không thể khởi tạo máy in"; APIModels.SendEvent(AppData.DeviceStatus); } @@ -38,13 +39,19 @@ namespace SafeBagDE70.Services public PrinterStatus? GetStatus() { - if(dev!=null) + try { - var status = dev.GetPrinterFullStatus(); - return status; + if (dev != null) + { + var status = dev.GetPrinterFullStatus(); + return status; + } + } + catch(Exception ex) + { + Log.Fatal(ex, "Get Printer Status"); } return null; - } public bool IsNearPaperOut() {