Info() public static method

public static Info ( object msg ) : void
msg object
return void
示例#1
0
        IDisposable SubscribeLocal(SecsEventSubscription subscription)
        {
            var handler = new Action <SecsMessage>(msg =>
            {
                #region event action
                var filter = subscription.Filter;
                try
                {
                    if (msg.IsMatch(filter))
                    {
                        EapLogger.Info("event[" + filter.Name + "] >> EAP");
                        msg.Name = filter.Name;
                        subscription.Handle(msg);
                    }
                }
                catch (Exception ex)
                {
                    EapLogger.Error("event[" + filter.Name + "] EAP process Error!", ex);
                }
                #endregion
            });

            _eventHandlers.AddHandler(subscription.GetKey(), handler);
            EapLogger.Notice("EAP subscribe event " + subscription.Filter.Name);
            return(new LocalDisposable(() =>
            {
                _eventHandlers.RemoveHandler(subscription.GetKey(), handler);
                EapLogger.Notice("EAP unsubscribe event " + subscription.Filter.Name);
            }));
        }
示例#2
0
 public void MessageOut(SecsMessage msg, int systembyte)
 {
     EapLogger.Info(new SecsMessageLogInfo
     {
         In         = false,
         Message    = msg,
         SystemByte = systembyte
     });
 }
示例#3
0
 void menuItemGemDisable_Click(object sender, EventArgs e)
 {
     if (_secsGem != null)
     {
         EapLogger.Info("SECS/GEM Stop");
         _secsGem.Dispose();
         _secsGem = null;
     }
     gemStatusLabel.Text        = "Disable";
     menuItemGemDisable.Enabled = false;
     menuItemGemEnable.Enabled  = true;
 }
示例#4
0
 void Send2TCS(XDocument xmldoc, bool normal)
 {
     try
     {
         string msg = xmldoc.ToFormatedXml();
         //axPostMan.Send(TcsPostmanId, "", msg);
         if (normal)
         {
             EapLogger.Info("EAP >> TCS : \r\n" + msg);
         }
         else
         {
             EapLogger.Error("EAP >> TCS : \r\n" + msg);
         }
     }
     catch (Exception ex)
     {
         EapLogger.Error("Send2TCS error:", ex);
     }
 }
示例#5
0
        void menuItemGemEnable_Click(object sender, EventArgs e)
        {
            EapLogger.Info("SECS/GEM Start");
            gemStatusLabel.Text = "Start";
            _secsGem?.Dispose();
            _secsGem = new SecsGem(
                EAPConfig.Instance.Mode == ConnectionMode.Active,
                IPAddress.Parse(EAPConfig.Instance.IP),
                EAPConfig.Instance.TcpPort, EAPConfig.Instance.SocketRecvBufferSize)
            {
                DeviceId         = EAPConfig.Instance.DeviceId,
                LinkTestInterval = EAPConfig.Instance.LinkTestInterval,
                T3     = EAPConfig.Instance.T3,
                T5     = EAPConfig.Instance.T5,
                T6     = EAPConfig.Instance.T6,
                T7     = EAPConfig.Instance.T7,
                T8     = EAPConfig.Instance.T8,
                Logger = new SecsLogger()
            };
            _secsGem.ConnectionChanged += delegate
            {
                this.Invoke((MethodInvoker) delegate
                {
                    EapLogger.Info("SECS/GEM " + _secsGem.State);
                    gemStatusLabel.Text        = _secsGem.State.ToString();
                    eqpAddressStatusLabel.Text = "Device IP: " + _secsGem.DeviceAddress;
                    if (_secsGem.State == ConnectionState.Selected)
                    {
                        _secsGem.SendAsync(new SecsMessage(1, 13, "TestCommunicationsRequest", Item.L()));
                    }
                });
            };

            _secsGem.PrimaryMessageReceived += PrimaryMsgHandler;
            _secsGem.Start();
            menuItemGemDisable.Enabled = true;
            menuItemGemEnable.Enabled  = false;
        }
示例#6
0
 public void Info(string msg)
 {
     EapLogger.Info("SECS/GEM Info: " + msg);
 }
示例#7
0
        IDisposable SubscribeRemote(SecsEventSubscription subscription)
        {
            var filter      = subscription.Filter;
            var description = filter.Name;
            var handler     = new Action <SecsMessage>(msg =>
            {
                try
                {
                    if (msg.IsMatch(filter))
                    {
                        EapLogger.Info($"event[{description}] >> Z");
                        msg.Name = filter.Name;
                        subscription.Handle(msg);
                    }
                }
                catch (Exception ex)
                {
                    EapLogger.Error($"event[{description}] Z process Error!", ex);
                }
            });
            int    key = subscription.GetKey();
            string recoverQueuePath = $"FormatName:DIRECT=TCP:{subscription.ClientAddress} \\private$\\{subscription.Id}";

            if (subscription.Recoverable)
            {
                return(new SerializableDisposable(subscription,
                                                  new RemoteDisposable(subscription,
                                                                       subscribeAction: () =>
                {
                    #region recover complete
                    _eventHandlers.AddHandler(key, handler);
                    EapLogger.Notice("Z subscribe event " + description);

                    Action <SecsMessage> recover = null;
                    if (_recoverEventHandlers.TryRemove(recoverQueuePath, out recover))
                    {
                        _eventHandlers.RemoveHandler(key, recover);
                        EapLogger.Notice($"Z recover completely event[{description}]");
                    }
                    #endregion
                },
                                                                       disposeAction: () =>
                {
                    #region Dispose
                    _eventHandlers.RemoveHandler(key, handler);
                    EapLogger.Notice("Z unsubscribe event " + description);

                    var queue = new MessageQueue(recoverQueuePath, QueueAccessMode.Send)
                    {
                        Formatter = new BinaryMessageFormatter()
                    };
                    queue.DefaultPropertiesToSend.Recoverable = true;

                    var recover = new Action <SecsMessage>(msg =>
                    {
                        #region recover action
                        try
                        {
                            if (msg.IsMatch(filter))
                            {
                                EapLogger.Info("recoverable event[" + description + "]");
                                msg.Name = filter.Name;
                                queue.Send(msg);
                            }
                        }
                        catch (Exception ex)
                        {
                            EapLogger.Error(ex);
                        }
                        #endregion
                    });
                    if (_recoverEventHandlers.TryAdd(recoverQueuePath, recover))
                    {
                        EapLogger.Notice("Z subscribe event[" + description + "] for recovering.");
                        _eventHandlers.AddHandler(key, recover);
                    }
                    #endregion
                })));
            }
            _eventHandlers.AddHandler(key, handler);
            EapLogger.Notice("Z subscribe event " + description);
            return(new SerializableDisposable(subscription,
                                              new RemoteDisposable(subscription, null, () =>
            {
                _eventHandlers.RemoveHandler(key, handler);
                EapLogger.Notice("Z unsubscribe event " + description);
            })));
        }
示例#8
0
        static void Main()
        {
            Application.ThreadException += (sender, e) =>
            {
                EapLogger.Error(e.Exception);
            };

            AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
            {
                EapLogger.Error(e.ExceptionObject as Exception);
                if (e.IsTerminating)
                {
                    MessageBox.Show(e.ExceptionObject.ToString(), "程式發生嚴重錯誤而終止");
                }
            };

            var fileAppender = new RollingLogFileAppender
            {
                Layout = new PatternLayout("%date{HH:mm:ss,fff} %-6level [%4thread] %message%newline")
            };

            fileAppender.ActivateOptions();
            var l = (Logger)LogManager.GetLogger("EAP").Logger;

            l.Level = Level.All;
            l.Repository.RendererMap.Put(typeof(SecsMessageLogInfo), new SecsMessageRenderer());
            l.Repository.Threshold  = Level.All;
            l.Repository.Configured = true;
            l.AddAppender(fileAppender);

            RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
            ChannelServices.RegisterChannel(
                new TcpChannel(
                    new Hashtable {
                ["port"] = 0, ["bindTo"] = Settings.Default.TcpBindTo
            },
                    null,
                    new BinaryServerFormatterSinkProvider {
                TypeFilterLevel = TypeFilterLevel.Full
            }),
                false);

            bool newMutexCreated;

            using (new Mutex(true, "EAP" + EAPConfig.Instance.ToolId, out newMutexCreated))
            {
                if (!newMutexCreated)
                {
                    MessageBox.Show($"系統中已經執行了EAP:{EAPConfig.Instance.ToolId}啟動錯誤");
                    return;
                }
                EapLogger.Info("__________________ EAP Started __________________");

                var form = new HostMainForm();
                RemotingServices.Marshal(form, EAPConfig.Instance.ToolId, typeof(ISecsDevice));
                PublishZService();

                Application.Run(form);
                EapLogger.Info("___________________ EAP Stop ____________________");
            }
        }