/// <summary> /// Raised when a message is added. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">The event argument.</param> private void OnLogMessageAdded(object sender, LogMessageAddedEventArgs e) { if (e.Message.Text.StartsWith("RSLuaScript")) { return; } if ((e.Message.Text.Contains("Update RSLuaScript")) ) { if (DateTime.Compare(DateTime.UtcNow, lastUpdate.AddSeconds(1)) > 0) { //Can't use foreach as collection is updated inside for (int i = 0; i < myComponents.Count; ++i) { SmartComponent myComponent = myComponents[i]; //Test if component exists as no OnUnLoad event exists. if ((myComponent.ContainingProject == null) || (myComponent.ContainingProject.GetObjectFromUniqueId(myComponent.UniqueId) == null) || (myComponent.ContainingProject.Name == "")) { Logger.AddMessage("RSLuaScript: Remove old Component " + myComponent.Name + " from cache. This component works only with named station.", LogMessageSeverity.Information); myComponents.Remove(myComponent); --i; continue; } UpdateScriptIOSignals(myComponent); Logger.AddMessage("RSLuaScript: Updating Component " + myComponent.Name, LogMessageSeverity.Information); } lastUpdate = DateTime.UtcNow; } } }
/// <summary> /// Raised when a message is added. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">The event argument.</param> private void OnLogMessageAdded(object sender, LogMessageAddedEventArgs e) { if (e.Message.Text.StartsWith("RSMoveMecha")) { return; } RobotStudio.API.Internal.EventLogMessage eventLogMessage = e.Message as RobotStudio.API.Internal.EventLogMessage; if ((e.Message.Text.Contains("Update RSMoveMecha")) || (e.Message.Text.StartsWith("Checked:") && e.Message.Text.EndsWith("No errors.")) || (e.Message.Text.StartsWith("Vérifié :") && e.Message.Text.EndsWith("aucune erreur.")) || (e.Message.Text.StartsWith("Geprüft:") && e.Message.Text.EndsWith("Keine Fehler.")) || (e.Message.Text.StartsWith("Comprobado:") && e.Message.Text.EndsWith("Sin errores.")) || (e.Message.Text.StartsWith("Verificato:") && e.Message.Text.EndsWith("Nessun errore.")) || (e.Message.Text.StartsWith("次の項目を確認しました:") && e.Message.Text.EndsWith("エラーはありません。")) || (e.Message.Text.StartsWith("已检查:") && e.Message.Text.EndsWith("无错误。")) || ((eventLogMessage != null) && (eventLogMessage.Msg.Domain == 1) && (eventLogMessage.Msg.Number == 122)) //Program stopped. //|| ((eventLogMessage != null) && (eventLogMessage.Msg.Domain == 1) && (eventLogMessage.Msg.Number == 123)) //Program stopped. Step || ((eventLogMessage != null) && (eventLogMessage.Msg.Domain == 1) && (eventLogMessage.Msg.Number == 124)) //Program stopped. Start ) { if (DateTime.Compare(DateTime.UtcNow, lastUpdate.AddSeconds(1)) > 0) { //Can't use foreach as collection is updated inside for (int i = 0; i < myComponents.Count; ++i) { SmartComponent myComponent = myComponents[i]; //Test if component exists as no OnUnLoad event exists. if ((myComponent.ContainingProject == null) || (myComponent.ContainingProject.GetObjectFromUniqueId(myComponent.UniqueId) == null) || (myComponent.ContainingProject.Name == "")) { Logger.AddMessage("RSMoveMecha: Remove old Component " + myComponent.Name + " from cache.", LogMessageSeverity.Information); myComponents.Remove(myComponent); --i; continue; } Logger.AddMessage("RSMoveMecha: Updating Component " + myComponent.Name, LogMessageSeverity.Information); if (GetController(myComponent) != null) { myComponent.Properties["Status"].Value = "Updated" + System.DateTime.Now.ToString("yyyy-MM-dd_HH:mm:ss"); } } lastUpdate = DateTime.UtcNow; } } }