diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 3b8a02f8..d3ca44fd 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Core/ThreadsFunctions.cs b/Step.Core/ThreadsFunctions.cs index c0b3dfdc..4ee29fe7 100644 --- a/Step.Core/ThreadsFunctions.cs +++ b/Step.Core/ThreadsFunctions.cs @@ -23,6 +23,7 @@ public static class ThreadsFunctions private static long ReadUserSoftKeysTimer = 0, ReadUserSoftKeysTimes = 0; private static long ReadAxesNamesTimer = 0, ReadAxesNamesTimes = 0; private static long ReadHeadsTimer = 0, ReadHeadsTimes = 0; + private static long ReadToolDataTimer = 0, ReadToolDataTimes = 0; private static Thread ConnThread; @@ -499,23 +500,28 @@ public static class ThreadsFunctions if (ncHandler.numericalControl.NC_IsConnected()) { // Get new data from PLC - libraryError = ncHandler.GetNcAlarms(out DTOAlarmsModel alarms); + libraryError = ncHandler.GetUpdatedToolsData(out Dictionary updatedStatus, out Dictionary updatedLives); if (libraryError.errorCode != 0) ManageLibraryError(libraryError); else // Send through signalR - MessageServices.Current.Publish(UPDATE_TOOLS_DATA, null, alarms); + MessageServices.Current.Publish(UPDATE_TOOLS_DATA, null, + new DTONewToolDataModel + { + UpdatedStatus = updatedStatus, + UpdatedLives = updatedLives + }); } else TryNcConnection(); sw.Stop(); //Update thread timer - ReadAlarmsTimer += sw.ElapsedMilliseconds; - ReadAlarmsTimes++; + ReadToolDataTimer += sw.ElapsedMilliseconds; + ReadToolDataTimes++; // Wait - Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds)); + Thread.Sleep(CalcSleepTime(1000, (int)sw.ElapsedMilliseconds)); } } catch (ThreadAbortException) @@ -682,6 +688,12 @@ public static class ThreadsFunctions ReadAxesNamesTimer = 0; ReadAxesNamesTimes = 0; } + if (ThreadsHandler.RunningThreadStatus.ContainsKey("UpdateToolsData") && ReadAxesNamesTimer != 0) + { + ThreadsHandler.RunningThreadStatus["UpdateToolsData"] = (ReadToolDataTimer / ReadToolDataTimes) + " mS"; + ReadToolDataTimer = 0; + ReadToolDataTimes = 0; + } MessageServices.Current.Publish(SEND_THREADS_STATUS, null, ThreadsHandler.RunningThreadStatus); diff --git a/Step.Core/ThreadsHandler.cs b/Step.Core/ThreadsHandler.cs index 76b44cbe..f434a16b 100644 --- a/Step.Core/ThreadsHandler.cs +++ b/Step.Core/ThreadsHandler.cs @@ -21,7 +21,8 @@ namespace Step.Core ThreadsFunctions.ReadUserSoftKeysData, ThreadsFunctions.ReadHeadsData, ThreadsFunctions.ReadAxesNamesData, - ThreadsFunctions.ReadAxes + ThreadsFunctions.ReadAxes, + ThreadsFunctions.UpdateToolsData }; private volatile static List RunningThreadsList = new List(); diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 2450b6e4..6124e0ce 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -228,13 +228,7 @@ namespace Step.Database.Controllers // Update db model SupportFunctions.CopyProperties(dtoTool, tool); - //tool.FamilyId = dtoTool.FamilyId; - //tool.OffsetLength = dtoTool.OffsetLength; - //tool.ResidualLife = dtoTool.ResidualLife; - //tool.ResidualRevive = dtoTool.ResidualRevive; - //tool.OffsetId1 = dtoTool.OffsetId1; - //tool.OffsetId2 = dtoTool.OffsetId2; - //tool.OffsetId3 = dtoTool.OffsetId3; + // Save dbCtx.SaveChanges(); @@ -258,21 +252,20 @@ namespace Step.Database.Controllers { DbNcFamilyModel dbFamily = (DbNcFamilyModel)family; dbCtx.Families.Add(dbFamily); - + dbCtx.SaveChanges(); - dbCtx.Families.Attach(dbFamily); - + return dbFamily; } public DbNcFamilyModel UpdateFamily(int familyId, DTONewNcFamilyModel family) { DbNcFamilyModel dbFamily = FindFamily(familyId); - + // Copy data from NewModel to DbModel SupportFunctions.CopyProperties(family, dbFamily); dbCtx.SaveChanges(); - + // Connect tools data dbCtx.Entry(dbFamily).Collection(x => x.Tools).Load(); return dbFamily; @@ -390,5 +383,16 @@ namespace Step.Database.Controllers dbCtx.MagazinePositions.AddRange(config); dbCtx.SaveChanges(); } + + public void UpdateToolsData(List tools) + { + foreach (var tool in tools) + { + DbNcToolModel tmpTool = dbCtx.Tools.Where(x => x.ToolId == tool.ToolId).FirstOrDefault(); + tmpTool = tool; + } + + dbCtx.SaveChanges(); + } } } \ No newline at end of file diff --git a/Step.Database/Migrations/201807171434381_InitMigration.resx b/Step.Database/Migrations/201807171434381_InitMigration.resx deleted file mode 100644 index cbd39113..00000000 --- a/Step.Database/Migrations/201807171434381_InitMigration.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Step.Database/Migrations/201807171434381_InitMigration.Designer.cs b/Step.Database/Migrations/201807251330036_InitMigration.Designer.cs similarity index 92% rename from Step.Database/Migrations/201807171434381_InitMigration.Designer.cs rename to Step.Database/Migrations/201807251330036_InitMigration.Designer.cs index 60279ac6..da3aab8b 100644 --- a/Step.Database/Migrations/201807171434381_InitMigration.Designer.cs +++ b/Step.Database/Migrations/201807251330036_InitMigration.Designer.cs @@ -13,7 +13,7 @@ namespace Step.Database.Migrations string IMigrationMetadata.Id { - get { return "201807171434381_InitMigration"; } + get { return "201807251330036_InitMigration"; } } string IMigrationMetadata.Source diff --git a/Step.Database/Migrations/201807171434381_InitMigration.cs b/Step.Database/Migrations/201807251330036_InitMigration.cs similarity index 99% rename from Step.Database/Migrations/201807171434381_InitMigration.cs rename to Step.Database/Migrations/201807251330036_InitMigration.cs index 5f4526b8..9472ab58 100644 --- a/Step.Database/Migrations/201807171434381_InitMigration.cs +++ b/Step.Database/Migrations/201807251330036_InitMigration.cs @@ -41,6 +41,7 @@ namespace Step.Database.Migrations offset_length = c.Int(nullable: false), residual_life = c.Int(nullable: false), residual_revive = c.Int(nullable: false), + status = c.Byte(nullable: false), family_id = c.Int(nullable: false), shank_id = c.Int(), offsetId1 = c.Int(), diff --git a/Step.Database/Migrations/201807251330036_InitMigration.resx b/Step.Database/Migrations/201807251330036_InitMigration.resx new file mode 100644 index 00000000..2864c6cf --- /dev/null +++ b/Step.Database/Migrations/201807251330036_InitMigration.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/Step.Database/Step.Database.csproj b/Step.Database/Step.Database.csproj index 66a380a1..033d3cad 100644 --- a/Step.Database/Step.Database.csproj +++ b/Step.Database/Step.Database.csproj @@ -78,9 +78,9 @@ - - - 201807171434381_InitMigration.cs + + + 201807251330036_InitMigration.cs @@ -116,8 +116,8 @@ - - 201807171434381_InitMigration.cs + + 201807251330036_InitMigration.cs diff --git a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs index 51c4e1bd..11bd7a73 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs @@ -1,4 +1,5 @@ using Step.Model.DatabaseModels; +using System.Collections; using System.ComponentModel.DataAnnotations; using static CMS_CORE_Library.DataStructures; @@ -20,29 +21,55 @@ namespace Step.Model.DTOModels.ToolModels // Foreign keys public int FamilyId { get; set; } + public bool Disabled { get; set; } + + public bool Broken { get; set; } + + public bool Measured { get; set; } + + public bool ClockwiseRotation { get; set; } + + public bool CounterClockwiseRotation { get; set; } + public int? ShankId { get; set; } public static explicit operator DTONcTool(DbNcToolModel obj) { + // Get bit values + var statusBit = new BitArray(obj.Status); + return new DTONcTool() { FamilyId = obj.FamilyId, ShankId = obj.ShankId == null ? 0 : obj.ShankId.Value, OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, - ResidualRevive = obj.ResidualRevive + ResidualRevive = obj.ResidualRevive, + Disabled = statusBit[0], + Broken = statusBit[1], + Measured = statusBit[2], + ClockwiseRotation = statusBit[3], + CounterClockwiseRotation = statusBit[4], }; } public static explicit operator DbNcToolModel(DTONcTool obj) { + // Prepare status byte + bool[] result = new bool[8] { obj.Disabled, obj.Broken, obj.Measured, obj.ClockwiseRotation, obj.CounterClockwiseRotation, false, false, false }; + byte status = 0; + // Set each bit in the byte + for (int i = 0; i < 8; i++) + result[i] = (status & (1 << i)) == 0 ? false : true; + return new DbNcToolModel() { FamilyId = obj.FamilyId, ShankId = obj.ShankId, OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, - ResidualRevive = obj.ResidualRevive + ResidualRevive = obj.ResidualRevive, + Status = status }; } } @@ -59,6 +86,9 @@ namespace Step.Model.DTOModels.ToolModels public static explicit operator DTONcToolModel(DbNcToolModel obj) { + // Get bit values + var statusBit = new BitArray(obj.Status); + return new DTONcToolModel() { Id = obj.ToolId, @@ -66,12 +96,24 @@ namespace Step.Model.DTOModels.ToolModels ShankId = obj.ShankId == null ? 0 : obj.ShankId.Value, OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, - ResidualRevive = obj.ResidualRevive + ResidualRevive = obj.ResidualRevive, + Disabled = statusBit[0], + Broken = statusBit[1], + Measured = statusBit[2], + ClockwiseRotation = statusBit[3], + CounterClockwiseRotation = statusBit[4], }; } public static explicit operator DbNcToolModel(DTONcToolModel obj) - { + { + // Prepare status byte + bool[] result = new bool[8] { obj.Disabled, obj.Broken, obj.Measured, obj.ClockwiseRotation, obj.CounterClockwiseRotation, false, false, false }; + byte status = 0; + // Set each bit in the byte + for (int i = 0; i < 8; i++) + result[i] = (status & (1 << i)) == 0 ? false : true; + return new DbNcToolModel() { ToolId = obj.Id, @@ -79,7 +121,8 @@ namespace Step.Model.DTOModels.ToolModels ShankId = obj.ShankId, OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, - ResidualRevive = obj.ResidualRevive + ResidualRevive = obj.ResidualRevive, + Status = status }; } } @@ -91,9 +134,13 @@ namespace Step.Model.DTOModels.ToolModels public int? OffsetId2 { get; set; } public int? OffsetId3 { get; set; } - + + public static explicit operator DTONewNcToolModel(DbNcToolModel obj) { + // Get bit values + var statusBit = new BitArray(obj.Status); + return new DTONewNcToolModel() { FamilyId = obj.FamilyId, @@ -101,6 +148,11 @@ namespace Step.Model.DTOModels.ToolModels OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, ResidualRevive = obj.ResidualRevive, + Disabled = statusBit[0], + Broken = statusBit[1], + Measured = statusBit[2], + ClockwiseRotation = statusBit[3], + CounterClockwiseRotation = statusBit[4], OffsetId1 = obj.OffsetId1, OffsetId2 = obj.OffsetId2, OffsetId3 = obj.OffsetId3 @@ -109,6 +161,13 @@ namespace Step.Model.DTOModels.ToolModels public static explicit operator DbNcToolModel(DTONewNcToolModel obj) { + // Prepare status byte + bool[] result = new bool[8] { obj.Disabled, obj.Broken, obj.Measured, obj.ClockwiseRotation, obj.CounterClockwiseRotation, false, false, false}; + byte status = 0; + // Set each bit in the byte + for (int i = 0; i < 8; i++) + result[i] = (status & (1 << i)) == 0 ? false : true; + return new DbNcToolModel() { FamilyId = obj.FamilyId, @@ -116,6 +175,7 @@ namespace Step.Model.DTOModels.ToolModels OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, ResidualRevive = obj.ResidualRevive, + Status = status, OffsetId1 = obj.OffsetId1, OffsetId2 = obj.OffsetId2, OffsetId3 = obj.OffsetId3 diff --git a/Step.Model/DTOModels/ToolModels/DTONewToolDataModel.cs b/Step.Model/DTOModels/ToolModels/DTONewToolDataModel.cs new file mode 100644 index 00000000..d103e245 --- /dev/null +++ b/Step.Model/DTOModels/ToolModels/DTONewToolDataModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Step.Model.DTOModels.ToolModels +{ + public class DTONewToolDataModel + { + public Dictionary UpdatedStatus; + public Dictionary UpdatedLives; + } +} diff --git a/Step.Model/DatabaseModels/NcToolModel.cs b/Step.Model/DatabaseModels/NcToolModel.cs index 59030a62..87f75ae8 100644 --- a/Step.Model/DatabaseModels/NcToolModel.cs +++ b/Step.Model/DatabaseModels/NcToolModel.cs @@ -19,7 +19,10 @@ namespace Step.Model.DatabaseModels [Column("residual_revive")] public int ResidualRevive { get; set; } - + + [Column("status")] + public byte Status { get; set; } + // Foreign keys [Column("family_id")] [ForeignKey("Family")] diff --git a/Step.Model/Step.Model.csproj b/Step.Model/Step.Model.csproj index 06b6ccfe..e18c4fdb 100644 --- a/Step.Model/Step.Model.csproj +++ b/Step.Model/Step.Model.csproj @@ -91,6 +91,7 @@ + diff --git a/Step/Listeners/Database/DatabaseTest.cs b/Step/Listeners/Database/DatabaseTest.cs deleted file mode 100644 index fcc94ec1..00000000 --- a/Step/Listeners/Database/DatabaseTest.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Step.Database.Controllers; -using TeamDev.SDK.MVVM; - -namespace Step.Listeners.Database -{ - public static class DatabaseTest - { - public static void DbTest(string taskName) - { - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - using (UsersController usersController = new UsersController()) - { - //user.Create("test", "nuova", "nome", "last", 1, "italian"); - Console.WriteLine("DB scritto " + taskName + " Thread:" + Thread.CurrentThread.ManagedThreadId + " " + stopwatch.ElapsedMilliseconds); - } - } - } -} diff --git a/Step/Listeners/Database/SignalRDatabaseHandler.cs b/Step/Listeners/Database/SignalRDatabaseHandler.cs new file mode 100644 index 00000000..97a8f146 --- /dev/null +++ b/Step/Listeners/Database/SignalRDatabaseHandler.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Step.Database.Controllers; +using Step.Model.DatabaseModels; +using Step.Model.DTOModels; +using Step.Model.DTOModels.ToolModels; +using TeamDev.SDK.MVVM; + +namespace Step.Listeners.Database +{ + public static class SignalRDatabaseHandler + { + public static void UpdateToolsData(object newData) + { + using (NcToolManagerController controller = new NcToolManagerController()) + { + // Convert input parameter + DTONewToolDataModel data = newData as DTONewToolDataModel; + + List updatedTools = new List(); + // Check if there are new data + if (data.UpdatedLives.Count != 0 || data.UpdatedStatus.Count != 0) + { + List dbTools = controller.FindTools(); + if(dbTools.Count > 0) + { + // Loop through new data + foreach (var live in data.UpdatedLives) + { + // Find tool and update residual life + var tmp = dbTools + .Where(x => x.ToolId == live.Key) // Get tool by id + ?.Select(x => { + x.ResidualLife = (int)live.Value; // Update data + return x; + }) + .FirstOrDefault(); + + if(tmp != null) + updatedTools.Add(tmp); + } + + foreach (var status in data.UpdatedStatus) + { + var tmp = dbTools + .Where(x => x.ToolId == status.Key) // Get tool by id + ?.Select(x => { + x.Status = status.Value; + return x; + }) + .FirstOrDefault(); + + if (tmp != null) + updatedTools.Add(tmp); + } + } + } + + controller.UpdateToolsData(updatedTools); + } + } + } +} diff --git a/Step/Listeners/ListenersHandler.cs b/Step/Listeners/ListenersHandler.cs index dbf4188e..d3f74f19 100644 --- a/Step/Listeners/ListenersHandler.cs +++ b/Step/Listeners/ListenersHandler.cs @@ -72,6 +72,10 @@ namespace Step.Listeners { SignalRListener.BroadcastData(); })); + infos.Add(MessageServices.Current.Subscribe(UPDATE_TOOLS_DATA, async (a, b) => + { + SignalRDatabaseHandler.UpdateToolsData(a); + })); } public static void Stop() diff --git a/Step/Step.csproj b/Step/Step.csproj index 56ce8cad..b3fa6304 100644 --- a/Step/Step.csproj +++ b/Step/Step.csproj @@ -178,7 +178,7 @@ - +