Exemplo n.º 1
0
        /// <summary>
        /// Генерирует событие по изменению статуса порта
        /// </summary>
        /// <param name="status">Новое состояние CAN-порта</param>
        private 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;
        }
Exemplo n.º 2
0
        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        /// <summary>
        /// Обработчик события изменения статуса CAN-порта
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void EventHandler_CanPort_PortChangedStatus(object sender, 
            EventArgsPortChangesStatus args)
        {
            String msg;

            this._PropertyGridPortSettings.Refresh();

            switch (args.Status)
            {
                case CanPortStatus.IsActive:
                    {
                        this._MenuPortOpen.Enabled = false;
                        break; 
                    }
                case CanPortStatus.IsClosed:
                    {
                        this._MenuPortOpen.Enabled = true;
                        break; 
                    }
                case CanPortStatus.IsPassive:
                    {
                        this._MenuPortOpen.Enabled = false;
                        break; 
                    }
                case CanPortStatus.IsPassiveAfterReset:
                    {
                        this._MenuPortOpen.Enabled = false;
                        break; 
                    }
                case CanPortStatus.Unknown:
                    {
                        this._MenuPortOpen.Enabled = false;
                        this._MenuPortClose.Enabled = false;
                        msg = "Can-порт изменил состояние на Unknown";
                        throw new Exception(msg);
                        //break; 
                    }
                default:
                    {
                        msg = String.Format(
                            "Can-порт передал новое состояние {0}, которое не поддерживается в данном ПО",
                            args.Status.ToString());
                        throw new NotImplementedException(msg);
                    }
            }
            return;
        }
Exemplo n.º 3
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;
        }