- Thêm đồng bộ thủ công
- Báo trạng thái khi resend - Báo rõ hơn từng loại cảm biến CDM, Sensor
This commit is contained in:
+70
-98
@@ -145,67 +145,87 @@ namespace SafeBagDE70
|
||||
}
|
||||
|
||||
private bool InitSerialPorts()
|
||||
{
|
||||
var bInitDE70=InitSerialPortDE70();
|
||||
var bInitSensor = InitSerialPortSensor();
|
||||
if (bInitDE70 && bInitSensor)
|
||||
return true;
|
||||
else
|
||||
{
|
||||
AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT;
|
||||
APIModels.SendEvent(AppData.DeviceStatus);
|
||||
Log.Fatal("LỖI CỔNG KẾT NỐI");
|
||||
ShowError("LỖI CỔNG KẾT NỐI, VUI LÒNG KIỂM TRA LẠI CỔNG KẾT NỐI");
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private bool InitSerialPortSensor()
|
||||
{
|
||||
try
|
||||
{
|
||||
InitSerialPortDE70();
|
||||
InitSerialPortSensor();
|
||||
if (serialPortSensor.IsOpen) serialPortSensor.Close();
|
||||
|
||||
serialPortSensor.PortName = AppData.SensorPort;
|
||||
serialPortSensor.BaudRate = 9600;
|
||||
serialPortSensor.Parity = Parity.None;
|
||||
serialPortSensor.DataBits = 8;
|
||||
serialPortSensor.StopBits = StopBits.One;
|
||||
serialPortSensor.ReadTimeout = 1000;
|
||||
serialPortSensor.WriteTimeout = 1000;
|
||||
|
||||
if (bOpenPort)
|
||||
{
|
||||
if (!serialPortSensor.IsOpen)
|
||||
serialPortSensor.Open();
|
||||
}
|
||||
return true;
|
||||
}catch(Exception ex)
|
||||
{
|
||||
AppData.DeviceStatus.SensorStatus = (int)SensorStatusCode.ERROR;
|
||||
AppData.DeviceStatus.Description = ex.Message;
|
||||
APIModels.SendEvent(AppData.DeviceStatus);
|
||||
Log.Information(ex, "LỖI KẾT NỐI SENSOR");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool InitSerialPortDE70()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (serialPortDE70.IsOpen) serialPortDE70.Close();
|
||||
|
||||
|
||||
serialPortDE70.ReadBufferSize = 4096;
|
||||
serialPortDE70.WriteBufferSize = 4096;
|
||||
|
||||
|
||||
serialPortDE70.PortName = AppData.CDMPort;
|
||||
serialPortDE70.BaudRate = 9600;
|
||||
serialPortDE70.Parity = Parity.Even;
|
||||
serialPortDE70.DataBits = 8;
|
||||
serialPortDE70.StopBits = StopBits.One;
|
||||
serialPortDE70.ReadTimeout = 10000;
|
||||
serialPortDE70.WriteTimeout = 10000;
|
||||
if (bOpenPort)
|
||||
{
|
||||
if (!serialPortDE70.IsOpen)
|
||||
serialPortDE70.Open();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT;
|
||||
AppData.DeviceStatus.Description = ex.Message;
|
||||
APIModels.SendEvent(AppData.DeviceStatus);
|
||||
Log.Fatal(ex, "LỖI CỔNG KẾT NỐI");
|
||||
ShowError("LỖI CỔNG KẾT NỐI, VUI LÒNG KIỂM TRA LẠI CỔNG KẾT NỐI");
|
||||
Log.Information(ex, "LỖI KẾT NỐI CDM");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void InitSerialPortSensor()
|
||||
{
|
||||
if (serialPortSensor.IsOpen) serialPortSensor.Close();
|
||||
|
||||
serialPortSensor.PortName = AppData.SensorPort;
|
||||
serialPortSensor.BaudRate = 9600;
|
||||
serialPortSensor.Parity = Parity.None;
|
||||
serialPortSensor.DataBits = 8;
|
||||
serialPortSensor.StopBits = StopBits.One;
|
||||
serialPortSensor.ReadTimeout = 1000;
|
||||
serialPortSensor.WriteTimeout = 1000;
|
||||
|
||||
if(bOpenPort)
|
||||
{
|
||||
if (!serialPortSensor.IsOpen)
|
||||
serialPortSensor.Open();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void InitSerialPortDE70()
|
||||
{
|
||||
if (serialPortDE70.IsOpen) serialPortDE70.Close();
|
||||
|
||||
|
||||
serialPortDE70.ReadBufferSize = 4096;
|
||||
serialPortDE70.WriteBufferSize = 4096;
|
||||
|
||||
|
||||
serialPortDE70.PortName = AppData.CDMPort;
|
||||
serialPortDE70.BaudRate = 9600;
|
||||
serialPortDE70.Parity = Parity.Even;
|
||||
serialPortDE70.DataBits = 8;
|
||||
serialPortDE70.StopBits = StopBits.One;
|
||||
serialPortDE70.ReadTimeout = 10000;
|
||||
serialPortDE70.WriteTimeout = 10000;
|
||||
if(bOpenPort)
|
||||
{
|
||||
if (!serialPortDE70.IsOpen)
|
||||
serialPortDE70.Open();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void InitTimers()
|
||||
{
|
||||
warningTimer = new DispatcherTimer(); // 30 seconds
|
||||
@@ -262,8 +282,6 @@ namespace SafeBagDE70
|
||||
});
|
||||
Log.Information("7. Timout completed");
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void BackToWelcomeScreen()
|
||||
@@ -402,7 +420,7 @@ namespace SafeBagDE70
|
||||
}
|
||||
if (countSensorTimer % 300 == 0)
|
||||
{
|
||||
ResenData();
|
||||
AppData.ResendData();
|
||||
}
|
||||
countSensorTimer++;
|
||||
sensorTimer.IsEnabled = false;
|
||||
@@ -415,53 +433,6 @@ namespace SafeBagDE70
|
||||
}
|
||||
sensorTimer.IsEnabled = true;
|
||||
}
|
||||
static Task? resendTask=null;
|
||||
private static void ResenData()
|
||||
{
|
||||
if (!AppData.IsInTransaction && AppData.IsInternetOk)
|
||||
{
|
||||
|
||||
if(resendTask==null || resendTask.IsCompleted)
|
||||
{
|
||||
resendTask = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = new CDMDbContext())
|
||||
{
|
||||
var startTime = DateTime.Now.Date.AddDays(-2).Date;
|
||||
var unsentHist = context.Histories
|
||||
.Where(x => x.DepositTime >= startTime)
|
||||
.Where(x => ((x.IsSent == null || x.IsSent == false)))
|
||||
.ToList();
|
||||
foreach (var item in unsentHist)
|
||||
{
|
||||
var data2Send = JsonConvert.DeserializeObject<CountingData2Send>(item.Data);
|
||||
var bResult = await APIModels.SendCountingData(data2Send);
|
||||
if (bResult)
|
||||
{
|
||||
item.IsSent = true;
|
||||
context.Update(item);
|
||||
context.SaveChanges();
|
||||
Log.Information("Resend: " + item.Data + " successfully");
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Error("Resend: " + item.Data + " failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Fatal(ex, "Resend failed");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Stopwatch watch = new Stopwatch();
|
||||
private void GetSensorValue()
|
||||
{
|
||||
@@ -512,6 +483,7 @@ namespace SafeBagDE70
|
||||
if (state!=prevSensorStatus)
|
||||
{
|
||||
AppData.DeviceStatus.Description=strSensorMessage;
|
||||
AppData.DeviceStatus.SensorStatus= state;
|
||||
APIModels.SendEvent(AppData.DeviceStatus);
|
||||
prevSensorStatus = state;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user