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