diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index f69ef120..09dc6b1f 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 3bee648d..2450b6e4 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -144,7 +144,7 @@ namespace Step.Database.Controllers return dtoShanks; } - public List FindPositions() + public List FindMagazinePositions() { List positions = dbCtx .MagazinePositions @@ -273,6 +273,8 @@ namespace Step.Database.Controllers dbCtx.SaveChanges(); + dbCtx.Entry(dbFamily).Collection(x => x.Tools).Load(); + return dbFamily; } @@ -290,8 +292,7 @@ namespace Step.Database.Controllers dbCtx.Shanks.Add(dbShank); dbCtx.SaveChanges(); - - dbCtx.Shanks.Attach(dbShank); + return dbShank; } @@ -308,8 +309,8 @@ namespace Step.Database.Controllers dbShank.MagazinePositionType = dtoShank.MagazinePositionType; dbCtx.SaveChanges(); - - dbCtx.Shanks.Attach(dbShank); + + dbCtx.Entry(dbShank).Collection(x => x.Tools).Load(); return dbShank; } @@ -383,5 +384,11 @@ namespace Step.Database.Controllers return GetShank(shankId.Value); } + + public void SetupMagazinePositions(List config) + { + dbCtx.MagazinePositions.AddRange(config); + dbCtx.SaveChanges(); + } } } \ No newline at end of file diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index abc3af7a..a0acdfa4 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -915,38 +915,6 @@ namespace Step.NC return cmsError; } - //public List GetFamilies() - //{ - // using (NcToolManagerController toolsManager = new NcToolManagerController()) - // { - // return toolsManager.GetFamilies(); - // } - //} - - //public List GetShanksData() - //{ - // using (NcToolManagerController toolsManager = new NcToolManagerController()) - // { - // return toolsManager.GetShanks(); - // } - //} - - //public List GetPositions() - //{ - // using (NcToolManagerController toolsManager = new NcToolManagerController()) - // { - // return toolsManager.GetPositions(); - // } - //} - - //public List GetOffsets() - //{ - // using (NcToolManagerController toolsManager = new NcToolManagerController()) - // { - // return toolsManager.GetOffsets(); - // } - //} - #endregion Read Data #region Write data @@ -1148,6 +1116,7 @@ namespace Step.NC if (dbTool.ShankId != null) { + // Check if shank is loaded in magazine DbNcShankModel shank = toolsManager.FindShank(dbTool.ShankId.Value); if (shank.MagazineId != null) { @@ -1339,7 +1308,7 @@ namespace Step.NC DTONcMagazinePositionModel magPos = (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos); // Get magazine positions - List positions = toolsManager.FindPositions() + List positions = toolsManager.FindMagazinePositions() .Select(x => (NcMagazinePositionModel)x) .ToList(); @@ -1407,6 +1376,59 @@ namespace Step.NC } } + public CmsError SetupNcToolManager() + { + if(NcConfig.NcVendor != NC_VENDOR.SIEMENS) + { + return UpdateMagazinePositionConf(); + } + + return new CmsError(CMS_ERROR_CODES.OK, ""); + } + + public CmsError UpdateMagazinePositionConf() + { + using (NcToolManagerController toolsManager = new NcToolManagerController()) + { + // Get database configured positions + List dbPositions = toolsManager.FindMagazinePositions(); + if (dbPositions.Count <= 0) + { + List config = new List(); + // Read configuration + CmsError cmsError = numericalControl.TOOLS_RMagazineConfig(ref config); + if (cmsError.IsError()) + return cmsError; + + // Setup new positions list + List fromConfigPosition = new List(); + foreach (var conf in config) + { + for (byte i = 1; i <= conf.MaxPositions; i++) + { + // Create new positions + fromConfigPosition.Add(new DbNcMagazinePositionModel() + { + MagazineId = conf.Id, + PositionId = i, + Disabled = false, + Type = 0 + }); + } + } + + // Update database + toolsManager.SetupMagazinePositions(fromConfigPosition); + + return cmsError; + } + + return new CmsError(CMS_ERROR_CODES.OK, ""); + } + } + + + public CmsError StartEditData() { return numericalControl.TOOLS_WStartEditData(); @@ -1440,7 +1462,7 @@ namespace Step.NC return cmsError; // Get magazine positions - List positions = toolsManager.FindPositions() + List positions = toolsManager.FindMagazinePositions() .Select(x => (NcMagazinePositionModel)x) .ToList(); cmsError = numericalControl.TOOLS_WUpdateMagazinePositions(positions); diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index bae98ef5..2ff625e1 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -297,7 +297,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List magazines = toolsManager.FindPositions(); + List magazines = toolsManager.FindMagazinePositions(); return Ok(magazines); } diff --git a/Step/program.cs b/Step/program.cs index 28b115fa..571fdbbf 100644 --- a/Step/program.cs +++ b/Step/program.cs @@ -14,6 +14,7 @@ using Step.Utils; using System.Net.NetworkInformation; using System.Net; using System.Net.Sockets; +using Step.NC; namespace Step { @@ -41,7 +42,7 @@ namespace Step ServerConfigController.ReadStartupConfig(); DatabaseContext.SetUpDbConnectionAndDbConfig(); - + // Register listener to "close application" messages MessageServices.Current.Subscribe(SEND_STOP_SERVER, (a, b) => { @@ -50,6 +51,13 @@ namespace Step ThreadSiemensHmi.StopWindow(); }); + // Setup Osai/fanuc toolManager + using(NcHandler handler = new NcHandler()) + { + handler.Connect(); + handler.SetupNcToolManager(); + } + // Start server services if(!ValidateAddress(ServerStartupConfig.ServerAddress)) ExceptionManager.Manage(ERROR_LEVEL.FATAL, "IP Address not valid (must be one configured in Windows-OS)!"); @@ -58,10 +66,10 @@ namespace Step opt.Urls.Add("http://localhost:" + ServerStartupConfig.ServerPort.ToString()); opt.Urls.Add("http://127.0.0.1:" + ServerStartupConfig.ServerPort.ToString()); - if (!String.IsNullOrWhiteSpace(ServerStartupConfig.ServerAddress.ToString())) + if (!string.IsNullOrWhiteSpace(ServerStartupConfig.ServerAddress.ToString())) opt.Urls.Add("http://" + ServerStartupConfig.ServerAddress.ToString() + ":" + ServerStartupConfig.ServerPort.ToString()); - using (WebApp.Start(opt)) + using (WebApp.Start(opt)) { // Start Threads @@ -81,7 +89,7 @@ namespace Step ServerControlWindow.Stop(); } - private static Boolean ValidateAddress(String Addr) { + private static bool ValidateAddress(String Addr) { //If is an asterisk is OK if (String.IsNullOrWhiteSpace(Addr) || Addr == "*") return true;