Exemplo n.º 1
0
        /// <summary>
        /// Преобразует состояние CAN-адаптера NIM-351 в обобщённое состояние
        /// </summary>
        /// <param name="state">Состояние CAN-адаптера NIM-351</param>
        /// <returns>Общее состояние для CAN-портов</returns>
        public static CanPortStatus ConvertToCanPortStatus(F_CAN_STATE state)
        {
            String msg;

            switch (state)
            {
            case F_CAN_STATE.CAN_STATE_BUS_OFF:
            {
                return(CanPortStatus.IsPassive);
            }

            case F_CAN_STATE.CAN_STATE_ERROR_ACTIVE:
            {
                return(CanPortStatus.IsActive);
            }

            case F_CAN_STATE.CAN_STATE_ERROR_PASSIVE:
            {
                return(CanPortStatus.IsActive);
            }

            case F_CAN_STATE.CAN_STATE_ERROR_WARNING:
            {
                return(CanPortStatus.IsActive);
            }

            case F_CAN_STATE.CAN_STATE_INIT:
            {
                return(CanPortStatus.IsPassive);
            }

            case F_CAN_STATE.CAN_STATE_STOPPED:
            {
                return(CanPortStatus.IsClosed);
            }

            case F_CAN_STATE.CAN_STATE_SLEEPING:
            {
                throw new NotImplementedException(
                          "Не поддреживается производителем устройства");
            }

            default:
            {
                msg = String.Format(
                    "Преобразование {0} в значение CANPORTSTATUS не поддерживается", state.ToString());
                throw new InvalidCastException(msg);
            }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Читает текущий статус адаптера и сравнивает с предыдущим. Если
        /// отличается генерирует событие и сохраняет новый статус
        /// </summary>
        /// <returns>true - если статус изменился</returns>
        private Boolean UpdatePortStatus()
        {
            F_CAN_STATE newStatus;
            Boolean     result;

            if (this.IsOpen)
            {
                newStatus = this.GetPortStatus();

                if (this._PortStatus != newStatus)
                {
                    // Статус изменился.
                    this._PortStatus = newStatus;
                    this.OnPortChangesStatus(ConvertNim351.ConvertToCanPortStatus(this._PortStatus));
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            else
            {
                // Если порт закрыт, есго статус должен быть F_CAN_STATE.CAN_STATE_STOPPED.
                // Если это не так, то устанавливаем и генерируем событие
                if (this._PortStatus == F_CAN_STATE.CAN_STATE_STOPPED)
                {
                    result = false;
                }
                else
                {
                    // Статус изменился.
                    this._PortStatus = F_CAN_STATE.CAN_STATE_STOPPED;
                    this.OnPortChangesStatus(ConvertNim351.ConvertToCanPortStatus(this._PortStatus));
                    result = true;
                }
            }

            return(result);
        }
Exemplo n.º 3
0
Arquivo: Api.cs Projeto: serialbus/NGK
 public static extern F_CAN_RESULT fw_can_get_controller_state(
     SafeFileHandle hDev,
     out F_CAN_STATE pState);
Exemplo n.º 4
0
        /// <summary>
        /// Читает текущий статус адаптера и сравнивает с предыдущим. Если 
        /// отличается генерирует событие и сохраняет новый статус
        /// </summary>
        /// <returns>true - если статус изменился</returns>
        private Boolean UpdatePortStatus()
        {
            F_CAN_STATE newStatus;
            Boolean result;

            if (this.IsOpen)
            {
                newStatus = this.GetPortStatus();

                if (this._PortStatus != newStatus)
                {
                    // Статус изменился.
                    this._PortStatus = newStatus;
                    this.OnPortChangesStatus(ConvertNim351.ConvertToCanPortStatus(this._PortStatus));
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            else
            {
                // Если порт закрыт, есго статус должен быть F_CAN_STATE.CAN_STATE_STOPPED.
                // Если это не так, то устанавливаем и генерируем событие
                if (this._PortStatus == F_CAN_STATE.CAN_STATE_STOPPED)
                {
                    result = false;
                }
                else
                {
                    // Статус изменился.
                    this._PortStatus = F_CAN_STATE.CAN_STATE_STOPPED;
                    this.OnPortChangesStatus(ConvertNim351.ConvertToCanPortStatus(this._PortStatus));
                    result = true;
                }
            }

            return result;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Преобразует состояние CAN-адаптера NIM-351 в обобщённое состояние
        /// </summary>
        /// <param name="state">Состояние CAN-адаптера NIM-351</param>
        /// <returns>Общее состояние для CAN-портов</returns>
        public static CanPortStatus ConvertToCanPortStatus(F_CAN_STATE state)
        {
            String msg;

            switch (state)
            {
                case F_CAN_STATE.CAN_STATE_BUS_OFF:
                    {
                        return CanPortStatus.IsPassive;
                    }
                case F_CAN_STATE.CAN_STATE_ERROR_ACTIVE:
                    {
                        return CanPortStatus.IsActive;
                    }
                case F_CAN_STATE.CAN_STATE_ERROR_PASSIVE:
                    {
                        return CanPortStatus.IsActive;
                    }
                case F_CAN_STATE.CAN_STATE_ERROR_WARNING:
                    {
                        return CanPortStatus.IsActive;
                    }
                case F_CAN_STATE.CAN_STATE_INIT:
                    {
                        return CanPortStatus.IsPassive;
                    }
                case F_CAN_STATE.CAN_STATE_STOPPED:
                    {
                        return CanPortStatus.IsClosed;
                    }
                case F_CAN_STATE.CAN_STATE_SLEEPING:
                    {
                        throw new NotImplementedException(
                            "Не поддреживается производителем устройства");
                    }
                default:
                    {
                        msg = String.Format(
                            "Преобразование {0} в значение CANPORTSTATUS не поддерживается", state.ToString());
                        throw new InvalidCastException(msg);
                    }
            }
        }
Exemplo n.º 6
0
Arquivo: Api.cs Projeto: serialbus/NGK
 public static extern F_CAN_RESULT fw_can_get_controller_state(
     SafeFileHandle hDev,
     out F_CAN_STATE pState);