diff --git a/SynPlc/Program.cs b/SynPlc/Program.cs index d37f2fb..7374f27 100644 --- a/SynPlc/Program.cs +++ b/SynPlc/Program.cs @@ -1,6 +1,5 @@ using NewLife.Extensions.Hosting.AgentService; using NewLife.Log; -using SqlSugar; using SynPlc; // 授权示例 Authorization example diff --git a/SynPlc/Worker.cs b/SynPlc/Worker.cs index 87b2890..7bd216c 100644 --- a/SynPlc/Worker.cs +++ b/SynPlc/Worker.cs @@ -1,5 +1,6 @@ using HslCommunication.Profinet.Siemens; using Microsoft.Extensions.Logging; +using NewLife.Log; using SqlSugar; using SynPlc.Entity; @@ -23,45 +24,65 @@ public class Worker : BackgroundService { while (!stoppingToken.IsCancellationRequested) { - var list = DB.Queryable().ToList(); + try + { + SynPlcFromDb(stoppingToken); + } + catch (Exception e) + { + XTrace.WriteException(e); + } + + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + + await Task.Delay(1000, stoppingToken); + } + } + + private async Task SynPlcFromDb(CancellationToken stoppingToken) + { + try + { + var list = await DB.Queryable().ToListAsync(stoppingToken); foreach(var e in list) { - var a = S7.ReadBool(e.Point); + var a = await S7.ReadBoolAsync(e.Point); if (a.IsSuccess) { e.UpdateTime = DateTime.Now; e.PValue = a.Content; - DB.Updateable(e).UpdateColumns(x => new { x.UpdateTime, x.PValue }).ExecuteCommand(); + await DB.Updateable(e).UpdateColumns(x => new { x.UpdateTime, x.PValue }).ExecuteCommandAsync(stoppingToken); } else { - _logger.LogInformation("ȡʧܣ"); + XTrace.WriteLine("{0} 读取异常",e.Point ); } } - var listp = DB.Queryable().ToList(); + var listp = await DB.Queryable().ToListAsync(stoppingToken); EPointDataEntity listd = new EPointDataEntity(); foreach (var e in listp) { - var a = S7.ReadDouble(e.Point); + var a = await S7.ReadDoubleAsync(e.Point); if (a.IsSuccess) { listd.ID = Guid.NewGuid().ToString(); listd.PID = e.ID; listd.CreateTime = DateTime.Now; listd.Data = a.Content.ToDecimal(); - DB.Insertable(listd).ExecuteCommand(); + await DB.Insertable(listd).ExecuteCommandAsync(stoppingToken); } else { - _logger.LogInformation("ȡʧܣ"); + XTrace.WriteLine("{0} 读取异常",e.Point ); } } - - _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); - - await Task.Delay(1000, stoppingToken); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; } } } \ No newline at end of file