示例#1
0
文件: CanPort.cs 项目: serialbus/NGK
        /// <summary>
        /// Генерирует событие по изменению статуса порта
        /// </summary>
        /// <param name="status">Новое состояние CAN-порта</param>
        protected virtual void OnPortChangesStatus(CanPortStatus status)
        {
            EventArgsPortChangesStatus args = new EventArgsPortChangesStatus(status);
            EventHandlerPortChangesStatus handler = this.PortChangedStatus;

            if (handler != null)
            {
                foreach (EventHandlerPortChangesStatus SingleCast in handler.GetInvocationList())
                {
                    ISynchronizeInvoke syncInvoke = SingleCast.Target as ISynchronizeInvoke;
                    if ((syncInvoke != null) && (syncInvoke.InvokeRequired))
                    {
                        syncInvoke.Invoke(SingleCast, new Object[] { this, args });
                    }
                    else
                    {
                        SingleCast(this, args);
                    }
                }
            }
            return;
        }
示例#2
0
        /// <summary>
        /// Обработчик события изменения состояния CAN-порта
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void EventHandler_CanPort_PortChangesStatus(object sender,
            EventArgsPortChangesStatus args)
        {
            String traceMessage;

            switch (args.Status)
            {
                case CanPortStatus.IsActive:
                    {
                        traceMessage = String.Format(
                            "{0}: Сеть {1}: CAN-порт изменил свое состояние на {2}",
                            DateTime.Now.ToString(new System.Globalization.CultureInfo("ru-Ru")),
                            this.Description, CanPortStatus.IsClosed);
                        Trace.TraceInformation(traceMessage);

                        // СAN-порт в активном состоянии можно работать
                        //this.Start();
                        break;
                    }
                case CanPortStatus.IsClosed:
                    {
                        traceMessage = String.Format(
                            "{0}: Сеть {1}: CAN-порт изменил свое состояние на {2}",
                            DateTime.Now.ToString(new System.Globalization.CultureInfo("ru-Ru")),
                            this.Description, CanPortStatus.IsClosed);
                        Trace.TraceInformation(traceMessage);

                        // CAN-порт закрыт, останавливаем службы
                        this.Stop();
                        break;
                    }
                case CanPortStatus.IsPassive:
                    {
                        traceMessage = String.Format(
                            "{0}: Сеть {1}: CAN-порт изменил свое состояние на {2}",
                            DateTime.Now.ToString(new System.Globalization.CultureInfo("ru-Ru")),
                            this.Description, CanPortStatus.IsClosed);
                        Trace.TraceInformation(traceMessage);

                        // CAN-порт закрыт, останавливаем службы
                        this.Stop();
                        break;
                    }
                case CanPortStatus.IsPassiveAfterReset:
                    {
                        traceMessage = String.Format(
                            "{0}: Сеть {1}: CAN-порт изменил свое состояние на {2}",
                            DateTime.Now.ToString(new System.Globalization.CultureInfo("ru-Ru")),
                            this.Description, CanPortStatus.IsClosed);
                        Trace.TraceInformation(traceMessage);

                        // CAN-порт закрыт, останавливаем службы
                        this.Stop();
                        break;
                    }
                case CanPortStatus.Unknown:
                    {
                        traceMessage = String.Format(
                            "{0}: Сеть {1}: CAN-порт изменил свое состояние на {2}",
                            DateTime.Now.ToString(new System.Globalization.CultureInfo("ru-Ru")),
                            this.Description, CanPortStatus.IsClosed);
                        Trace.TraceInformation(traceMessage);

                        // CAN-порт закрыт, останавливаем службы
                        this.Stop();
                        break;
                    }
                default:
                    {
                        traceMessage = String.Format(
                            "{0}: Сеть {1}: CAN-порт изменил свое состояние на {2}",
                            DateTime.Now.ToString(new System.Globalization.CultureInfo("ru-Ru")),
                            this.Description, CanPortStatus.IsClosed);
                        Trace.TraceError(traceMessage);

                        // CAN-порт закрыт, останавливаем службы
                        this.Stop();

                        throw new InvalidOperationException(traceMessage);
                    }
            }
            return;
        }