From 88205c46189365ddcd14e20036592b212a47eecf Mon Sep 17 00:00:00 2001 From: Toshiro 444 <55591295+caprican@users.noreply.github.com> Date: Thu, 25 Apr 2024 18:11:59 +0200 Subject: [PATCH] Resolve crash TIA --- Extract.Core/Properties/Resources.Designer.cs | 102 ++++++++++++++++-- Extract.Core/Properties/Resources.resx | 42 ++++++-- Extract_V18/AlarmsTextsAddIn.cs | 38 +++---- Extract_V18/Config.xml | 39 ++++--- TIA_Extract/AlarmsTextsAddIn.cs | 43 +++----- TIA_Extract/Config.xml | 2 + 6 files changed, 190 insertions(+), 76 deletions(-) diff --git a/Extract.Core/Properties/Resources.Designer.cs b/Extract.Core/Properties/Resources.Designer.cs index d8a9abf..999d99f 100644 --- a/Extract.Core/Properties/Resources.Designer.cs +++ b/Extract.Core/Properties/Resources.Designer.cs @@ -61,7 +61,97 @@ internal Resources() { } /// - /// Recherche une chaîne localisée semblable à Génération des alarmes terminée. + /// Recherche une chaîne localisée semblable à on. + /// + public static string BuildAlarms_AlarmOn { + get { + return ResourceManager.GetString("BuildAlarms_AlarmOn", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à Build HMI alarm from. + /// + public static string BuildAlarms_BuildAlarmFrom { + get { + return ResourceManager.GetString("BuildAlarms_BuildAlarmFrom", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à Builder non compatible with. + /// + public static string BuildAlarms_BuilderNoCompatible { + get { + return ResourceManager.GetString("BuildAlarms_BuilderNoCompatible", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à do not compil. + /// + public static string BuildAlarms_CannotCompile { + get { + return ResourceManager.GetString("BuildAlarms_CannotCompile", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à Create HMI alarm from. + /// + public static string BuildAlarms_CreateAlarm { + get { + return ResourceManager.GetString("BuildAlarms_CreateAlarm", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à Extract HMI alarms from. + /// + public static string BuildAlarms_ExtractAlarmForm { + get { + return ResourceManager.GetString("BuildAlarms_ExtractAlarmForm", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à No connexion found between. + /// + public static string BuildAlarms_NoConnexionDevice { + get { + return ResourceManager.GetString("BuildAlarms_NoConnexionDevice", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à and. + /// + public static string BuildAlarms_NoConnexionDeviceAnd { + get { + return ResourceManager.GetString("BuildAlarms_NoConnexionDeviceAnd", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à Updayte HMI alarm from. + /// + public static string BuildAlarms_UpdateAlarm { + get { + return ResourceManager.GetString("BuildAlarms_UpdateAlarm", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à HMI Alarms updated on. + /// + public static string BuildAlarms_UpdateOnDevice { + get { + return ResourceManager.GetString("BuildAlarms_UpdateOnDevice", resourceCulture); + } + } + + /// + /// Recherche une chaîne localisée semblable à HMI alarm generation completed. /// public static string BuildAlarmsEnded { get { @@ -70,7 +160,7 @@ public static string BuildAlarmsEnded { } /// - /// Recherche une chaîne localisée semblable à La génération à été annulé par l'utilisateur. + /// Recherche une chaîne localisée semblable à Build canceled by user. /// public static string CancelByUser { get { @@ -88,7 +178,7 @@ public static string ContextMenu_GlobalDb { } /// - /// Recherche une chaîne localisée semblable à Aucun DB d'alarmes trouvé dans le dossier. + /// Recherche une chaîne localisée semblable à No alarm DB found in folder. /// public static string EmptyGlobalDb { get { @@ -97,7 +187,7 @@ public static string EmptyGlobalDb { } /// - /// Recherche une chaîne localisée semblable à Alarmes mises à jour. + /// Recherche une chaîne localisée semblable à Alarms updated. /// public static string Feedback_AlarmsUpdated_Text { get { @@ -106,7 +196,7 @@ public static string Feedback_AlarmsUpdated_Text { } /// - /// Recherche une chaîne localisée semblable à Aucun projet trouvé. + /// Recherche une chaîne localisée semblable à No projects found. /// public static string Feedback_NoProject_Text { get { @@ -115,7 +205,7 @@ public static string Feedback_NoProject_Text { } /// - /// Recherche une chaîne localisée semblable à La tâche à été annulé par l'utilisateur. + /// Recherche une chaîne localisée semblable à Tack canceled by user. /// public static string TaskGenerateCancel { get { diff --git a/Extract.Core/Properties/Resources.resx b/Extract.Core/Properties/Resources.resx index cbf1464..24bf3a5 100644 --- a/Extract.Core/Properties/Resources.resx +++ b/Extract.Core/Properties/Resources.resx @@ -118,24 +118,54 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Génération des alarmes terminée + HMI alarm generation completed + + + on + + + Build HMI alarm from + + + Builder non compatible with + + + do not compil + + + Create HMI alarm from + + + Extract HMI alarms from + + + No connexion found between + + + and + + + Updayte HMI alarm from + + + HMI Alarms updated on - La génération à été annulé par l'utilisateur + Build canceled by user Build - Aucun DB d'alarmes trouvé dans le dossier + No alarm DB found in folder - Alarmes mises à jour + Alarms updated - Aucun projet trouvé + No projects found - La tâche à été annulé par l'utilisateur + Tack canceled by user \ No newline at end of file diff --git a/Extract_V18/AlarmsTextsAddIn.cs b/Extract_V18/AlarmsTextsAddIn.cs index c5c693c..744b62e 100644 --- a/Extract_V18/AlarmsTextsAddIn.cs +++ b/Extract_V18/AlarmsTextsAddIn.cs @@ -42,6 +42,7 @@ public class AlarmsTextsAddIn : ContextMenuAddIn private const string databaseMark = "_Defauts"; private const string userFolder = "UserFiles"; + private const string alarmsClassName = "Alarm"; private FeedbackContext _feedbackContext; @@ -57,7 +58,6 @@ public class AlarmsTextsAddIn : ContextMenuAddIn public AlarmsTextsAddIn(TiaPortal tiaPortal) : base(s_DisplayNameOfAddIn) { _tiaPortal = tiaPortal; - GetFeedbackContext(); //#if DEBUG // Core.Properties.Resources.Culture = new CultureInfo("en-US"); @@ -95,11 +95,9 @@ private MenuStatus OnCanGenerate(MenuSelectionProvider menuS // Disabled = Visible but not executable // Hidden = Item will not be shown - var select1 = menuSelectionProvider.GetSelection(); - var select2 = menuSelectionProvider.GetSelection(); - var select3 = menuSelectionProvider.GetSelection(); - - if (select1.Any() || select2.Any() || select3.Any()) + if (menuSelectionProvider.GetSelection().Any() || + menuSelectionProvider.GetSelection().Any() || + menuSelectionProvider.GetSelection().Any()) return MenuStatus.Enabled; else return MenuStatus.Hidden; @@ -147,14 +145,13 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP do { if (tempGroupList[0].Blocks.Where(bloc => bloc is SimaticSW.GlobalDB).Cast() is IEnumerable globalDBs) - { foreach (var plcDataBlock in globalDBs) { asUpdateAlarms = true; BuildAlarms(exclusiveAccess, plcDataBlock, projectPath.Directory.FullName); _feedbackContext.Log(NotificationIcon.Success, Extract.Core.Properties.Resources.Feedback_AlarmsUpdated_Text); } - } + if (tempGroupList[0].Groups.Count > 0) tempGroupList.AddRange(tempGroupList[0].Groups); @@ -171,7 +168,6 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP break; case TagTable hmiTagTable: var hmiSoft = GetDeviceSoftware(hmiTagTable); - foreach (var connection in hmiSoft.Connections) { var devices = new List(); @@ -198,13 +194,11 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP { var group = plcSoftware.BlockGroup.Groups.Find(hmiTagTable.Name); foreach (var plcGroupBlock in group.Blocks.Where(bloc => bloc.Name.EndsWith(databaseMark))) - { if (plcGroupBlock is SimaticSW.GlobalDB dB) { BuildAlarms(exclusiveAccess, dB, projectPath.Directory.FullName); _feedbackContext.Log(NotificationIcon.Success, Extract.Core.Properties.Resources.Feedback_AlarmsUpdated_Text); } - } } } } @@ -217,9 +211,9 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB globalDB, string projectDirectoryPath) { - _feedbackContext.Log(NotificationIcon.Information, $"Extraction des alarmes depuis {globalDB.Name}"); + _feedbackContext.Log(NotificationIcon.Information, $"{Extract.Core.Properties.Resources.BuildAlarms_ExtractAlarmForm} {globalDB.Name}"); - exclusiveAccess.Text = $"Génération des messages depuis {globalDB.Name}"; + exclusiveAccess.Text = $"{Extract.Core.Properties.Resources.BuildAlarms_BuildAlarmFrom} {globalDB.Name}"; if (globalDB.Name.EndsWith(databaseMark)) { @@ -234,7 +228,7 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob var comp = globalDB.GetService(); if (comp.Compile().State != CompilerResultState.Success) { - _feedbackContext.Log(NotificationIcon.Error, $"{globalDB.Name} n'est pas compilable."); + _feedbackContext.Log(NotificationIcon.Error, $"{globalDB.Name} {Extract.Core.Properties.Resources.BuildAlarms_CannotCompile}"); return; } } @@ -283,7 +277,6 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob } } while (deviceGroup.Count > 0); - foreach (var device in devices) { foreach (var deviceItem in device.DeviceItems) @@ -300,18 +293,18 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob switch (softContainer?.Software) { case HmiTarget hmi: - _feedbackContext.Log(NotificationIcon.Information, $"Générateur non compatible avec {device.Name}."); + _feedbackContext.Log(NotificationIcon.Information, $"{Extract.Core.Properties.Resources.BuildAlarms_BuilderNoCompatible} {device.Name}."); break; case HmiSoftware hmiUnified: var connexion = hmiUnified.Connections.FirstOrDefault(con => con.Partner == plcSoft.Name); if (connexion is null) { - _feedbackContext.Log(NotificationIcon.Information, $"Pas de connexion trouvée entre {device.Name} et {plcSoft.Name}."); + _feedbackContext.Log(NotificationIcon.Information, $" {device.Name} et {plcSoft.Name}."); break; } - var alarmClass = hmiUnified.AlarmClasses.Find("Alarm"); + var alarmClass = hmiUnified.AlarmClasses.Find(alarmsClassName); foreach (var internalMember in globalDB.Interface.Members) { @@ -354,7 +347,7 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob break; } else - alarmClass = hmiUnified.AlarmClasses.Find("Alarm"); + alarmClass = hmiUnified.AlarmClasses.Find(alarmsClassName); } } break; @@ -366,17 +359,16 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob if (hmiUnified.Tags.Find(tagname) is HmiTag hmiTag) { tag = hmiTag; - exclusiveAccess.Text = $"Mise à jour de l'alarme depuis {globalDB.Name}/{exportTag.Name} dans {device.Name}"; + exclusiveAccess.Text = $"{Extract.Core.Properties.Resources.BuildAlarms_UpdateAlarm} {globalDB.Name}/{exportTag.Name} {Extract.Core.Properties.Resources.BuildAlarms_AlarmOn} {device.Name}"; } else { - exclusiveAccess.Text = $"Création de l'alarme depuis {globalDB.Name}/{exportTag.Name} dans {device.Name}"; + exclusiveAccess.Text = $"{Extract.Core.Properties.Resources.BuildAlarms_CreateAlarm} {globalDB.Name}/{exportTag.Name} {Extract.Core.Properties.Resources.BuildAlarms_AlarmOn} {device.Name}"; if (string.IsNullOrEmpty(folderName)) tag = hmiUnified.Tags.Create(tagname); else { - var tagTables = new List(); tagTables.AddRange(hmiUnified.TagTables); @@ -419,7 +411,7 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob } } } - _feedbackContext.Log(NotificationIcon.Success, $"Alarmes mis à jours sur {device.Name}"); + _feedbackContext.Log(NotificationIcon.Success, $"{Extract.Core.Properties.Resources.BuildAlarms_UpdateOnDevice} {device.Name}"); break; } diff --git a/Extract_V18/Config.xml b/Extract_V18/Config.xml index 34459fe..1d35dbc 100644 --- a/Extract_V18/Config.xml +++ b/Extract_V18/Config.xml @@ -3,11 +3,11 @@ A. MORELLET Convert comment from global db to hmi alarms - V1.1 + V1.2 Alarms builder 906ABF3F-C4CA-45F7-98F0-2E78F9F3D48B - 18.0.1.1 + 18.0.1.2 @@ -15,8 +15,10 @@ Extract_V18.pdb + - + + Extract.Core.dll Extract.Core.pdb @@ -34,28 +36,35 @@ - + - - - - - + + + + + - - + + - + - - - + + + + + \ No newline at end of file diff --git a/TIA_Extract/AlarmsTextsAddIn.cs b/TIA_Extract/AlarmsTextsAddIn.cs index f082aea..03b235b 100644 --- a/TIA_Extract/AlarmsTextsAddIn.cs +++ b/TIA_Extract/AlarmsTextsAddIn.cs @@ -24,8 +24,6 @@ using System.Text.RegularExpressions; using SimaticML; -using Siemens.Engineering.Settings; -using System.Globalization; namespace TIA_Extract { @@ -44,6 +42,7 @@ public class AlarmsTextsAddIn : ContextMenuAddIn private const string databaseMark = "_Defauts"; private const string userFolder = "UserFiles"; + private const string alarmsClassName = "Alarm"; private FeedbackContext _feedbackContext; @@ -59,10 +58,9 @@ public class AlarmsTextsAddIn : ContextMenuAddIn public AlarmsTextsAddIn(TiaPortal tiaPortal) : base(s_DisplayNameOfAddIn) { _tiaPortal = tiaPortal; - GetFeedbackContext(); //#if DEBUG - // Core.Properties.Resources.Culture = new CultureInfo("en-US"); + // Core.Properties.Resources.Culture = new CultureInfo("en-US"); //#else // TiaPortalSettingsFolder generalSettingsFolder = _tiaPortal.SettingsFolders.Find("General"); // TiaPortalSetting UILanguageSetting = generalSettingsFolder.Settings.Find("UserInterfaceLanguage"); @@ -97,11 +95,9 @@ private MenuStatus OnCanGenerate(MenuSelectionProvider menuS // Disabled = Visible but not executable // Hidden = Item will not be shown - var select1 = menuSelectionProvider.GetSelection(); - var select2 = menuSelectionProvider.GetSelection(); - var select3 = menuSelectionProvider.GetSelection(); - - if(select1.Any() || select2.Any() || select3.Any()) + if(menuSelectionProvider.GetSelection().Any() || + menuSelectionProvider.GetSelection().Any() || + menuSelectionProvider.GetSelection().Any()) return MenuStatus.Enabled; else return MenuStatus.Hidden; @@ -149,14 +145,13 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP do { if (tempGroupList[0].Blocks.Where(bloc => bloc is SimaticSW.GlobalDB).Cast() is IEnumerable globalDBs) - { foreach (var plcDataBlock in globalDBs) { asUpdateAlarms = true; BuildAlarms(exclusiveAccess, plcDataBlock, projectPath.Directory.FullName); _feedbackContext.Log(NotificationIcon.Success, Extract.Core.Properties.Resources.Feedback_AlarmsUpdated_Text); } - } + if (tempGroupList[0].Groups.Count > 0) tempGroupList.AddRange(tempGroupList[0].Groups); @@ -188,9 +183,8 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP { devices.AddRange(deviceGroup[0].Devices); deviceGroup.AddRange(deviceGroup[0].Groups); - deviceGroup.RemoveAt(0); } - + deviceGroup.RemoveAt(0); } while (deviceGroup.Count > 0); foreach (var device in devices) @@ -200,13 +194,11 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP { var group = plcSoftware.BlockGroup.Groups.Find(hmiTagTable.Name); foreach (var plcGroupBlock in group.Blocks.Where(bloc => bloc.Name.EndsWith(databaseMark))) - { if (plcGroupBlock is SimaticSW.GlobalDB dB) { BuildAlarms(exclusiveAccess, dB, projectPath.Directory.FullName); _feedbackContext.Log(NotificationIcon.Success, Extract.Core.Properties.Resources.Feedback_AlarmsUpdated_Text); } - } } } } @@ -219,9 +211,9 @@ private void OnGenerate(MenuSelectionProvider menuSelectionP public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB globalDB, string projectDirectoryPath) { - _feedbackContext.Log(NotificationIcon.Information, $"Extraction des alarmes depuis {globalDB.Name}"); + _feedbackContext.Log(NotificationIcon.Information, $"{Extract.Core.Properties.Resources.BuildAlarms_ExtractAlarmForm} {globalDB.Name}"); - exclusiveAccess.Text = $"Génération des messages depuis {globalDB.Name}"; + exclusiveAccess.Text = $"{Extract.Core.Properties.Resources.BuildAlarms_BuildAlarmFrom} {globalDB.Name}"; if (globalDB.Name.EndsWith(databaseMark)) { @@ -236,7 +228,7 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob var comp = globalDB.GetService(); if (comp.Compile().State != CompilerResultState.Success) { - _feedbackContext.Log(NotificationIcon.Error, $"{globalDB.Name} n'est pas compilable."); + _feedbackContext.Log(NotificationIcon.Error, $"{globalDB.Name} {Extract.Core.Properties.Resources.BuildAlarms_CannotCompile}"); return; } } @@ -301,18 +293,18 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob switch (softContainer?.Software) { case HmiTarget hmi: - _feedbackContext.Log(NotificationIcon.Information, $"Générateur non compatible avec {device.Name}."); + _feedbackContext.Log(NotificationIcon.Information, $"{Extract.Core.Properties.Resources.BuildAlarms_BuilderNoCompatible} {device.Name}."); break; case HmiSoftware hmiUnified: var connexion = hmiUnified.Connections.FirstOrDefault(con => con.Partner == plcSoft.Name); if (connexion is null) { - _feedbackContext.Log(NotificationIcon.Information, $"Pas de connexion trouvée entre {device.Name} et {plcSoft.Name}."); + _feedbackContext.Log(NotificationIcon.Information, $" {device.Name} et {plcSoft.Name}."); break; } - var alarmClass = hmiUnified.AlarmClasses.Find("Alarm"); + var alarmClass = hmiUnified.AlarmClasses.Find(alarmsClassName); foreach (var internalMember in globalDB.Interface.Members) { @@ -355,7 +347,7 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob break; } else - alarmClass = hmiUnified.AlarmClasses.Find("Alarm"); + alarmClass = hmiUnified.AlarmClasses.Find(alarmsClassName); } } break; @@ -367,17 +359,16 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob if (hmiUnified.Tags.Find(tagname) is HmiTag hmiTag) { tag = hmiTag; - exclusiveAccess.Text = $"Mise à jour de l'alarme depuis {globalDB.Name}/{exportTag.Name} dans {device.Name}"; + exclusiveAccess.Text = $"{Extract.Core.Properties.Resources.BuildAlarms_UpdateAlarm} {globalDB.Name}/{exportTag.Name} {Extract.Core.Properties.Resources.BuildAlarms_AlarmOn} {device.Name}"; } else { - exclusiveAccess.Text = $"Création de l'alarme depuis {globalDB.Name}/{exportTag.Name} dans {device.Name}"; + exclusiveAccess.Text = $"{Extract.Core.Properties.Resources.BuildAlarms_CreateAlarm} {globalDB.Name}/{exportTag.Name} {Extract.Core.Properties.Resources.BuildAlarms_AlarmOn} {device.Name}"; if (string.IsNullOrEmpty(folderName)) tag = hmiUnified.Tags.Create(tagname); else { - var tagTables = new List(); tagTables.AddRange(hmiUnified.TagTables); @@ -420,7 +411,7 @@ public void BuildAlarms(ExclusiveAccess exclusiveAccess, SimaticSW.GlobalDB glob } } } - _feedbackContext.Log(NotificationIcon.Success, $"Alarmes mis à jours sur {device.Name}"); + _feedbackContext.Log(NotificationIcon.Success, $"{Extract.Core.Properties.Resources.BuildAlarms_UpdateOnDevice} {device.Name}"); break; } diff --git a/TIA_Extract/Config.xml b/TIA_Extract/Config.xml index 87b3953..2866e51 100644 --- a/TIA_Extract/Config.xml +++ b/TIA_Extract/Config.xml @@ -15,7 +15,9 @@ Extract_V19.pdb + + Extract.Core.dll