Esempio n. 1
0
        /// <summary>
        /// Создаёт объект CAN-порта конкретного типа на основе
        /// строки с параметрами CAN-порта и возвращает инферфейс
        /// </summary>
        /// <param name="configPort">Описатель порта, полученный при
        /// вызове метода ToString() конкретного класса порта</param>
        /// <returns></returns>
        public static ICanPort Create(string configPort)
        {
            string[] pair;
            Dictionary <string, string> settings = new Dictionary <string, string>();

            // Получаем из строки пары: [параметр:значение]
            string[] parameters = configPort.Split(';');
            // Преобразуем пары в словарь
            foreach (string param in parameters)
            {
                pair = param.Split(':');
                if (pair.Length != 2)
                {
                    throw new InvalidCastException();
                }
                settings.Add(pair[0].Trim(), pair[1].Trim());
            }
            // Проверяем наличие всех необходимых ключей
            if (!(settings.ContainsKey("Manufacturer") && settings.ContainsKey("HardwareType") &&
                  settings.ContainsKey("PortName") && settings.ContainsKey("BitRate") &&
                  settings.ContainsKey("Mode") && settings.ContainsKey("FrameFormat")))
            {
                throw new InvalidCastException();
            }

            BaudRate    bitRate     = (BaudRate)Enum.Parse(typeof(BaudRate), settings["BitRate"]);
            FrameFormat frameFormat = (FrameFormat)Enum.Parse(typeof(FrameFormat), settings["FrameFormat"]);
            PortMode    mode        = (PortMode)Enum.Parse(typeof(PortMode), settings["Mode"]);

            // На основе полученных данных строим объект порта
            switch (settings["Manufacturer"].ToUpper())
            {
            case "FASTWEL":
            {
                switch (settings["HardwareType"].ToUpper())
                {
                case "NIM-351":
                {
                    return((ICanPort) new Fastwel.NIM351.CanPort(settings["PortName"],
                                                                 bitRate, frameFormat, mode));
                }

                default:
                { throw new NotSupportedException(""); }
                }
                //break;
            }

            case "IXXAT":
            {
                return((ICanPort) new IXXAT.CanPort(settings["PortName"],
                                                    bitRate, frameFormat, mode));
            }

            default:
            { throw new NotSupportedException(""); }
            }
        }
 public ComposeServiceBuilder Ports(int target, int published, PortMode mode = PortMode.Host,
                                    string protocol = "tcp")
 {
     _config.Ports.Add(new PortsLongDefinition
     {
         Target = target, Published = published, Mode = mode, Protocol = protocol
     });
     return(this);
 }
Esempio n. 3
0
 private void Clear()
 {
     fromXml   = false;
     baudRate  = 0.0;
     parity    = System.IO.Ports.Parity.None;
     dataBits  = 0;
     stopBits  = System.IO.Ports.StopBits.None;
     portMode  = SerialIO.PortMode.DOSMode_Default;
     handshake = System.IO.Ports.Handshake.None;
 }
Esempio n. 4
0
File: Api.cs Progetto: serialbus/NGK
        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Строит и возвращает структуру режима работы порта NIM351
        /// </summary>
        /// <param name="mode">Режим работы порта</param>
        /// <param name="frameFormat">Формат кадра</param>
        /// <param name="errorFrameEnable">Разрешает/запрещает передачу информационных сообщений</param>
        /// <returns></returns>
        public static CAN_OPMODE OpModeBuilder(PortMode mode,
                                               FrameFormat frameFormat, Boolean errorFrameEnable)
        {
            CAN_OPMODE result;

            String msg;

            result = CAN_OPMODE.CAN_OPMODE_INIT;

            switch (mode)
            {
            case PortMode.NORMAL:
            { break; }

            case PortMode.LISTEN_ONLY:
            { result |= CAN_OPMODE.CAN_OPMODE_LSTNONLY; break; }

            case PortMode.SELFTEST:
            { result |= CAN_OPMODE.CAN_OPMODE_SELFTEST; break; }

            case PortMode.SELFRECV:
            { result |= CAN_OPMODE.CAN_OPMODE_SELFRECV; break; }

            default:
            {
                msg = String.Format(Properties.ErrorMessages.NotSupportedValue, mode);
                throw new InvalidCastException(msg);
            }
            }

            switch (frameFormat)
            {
            case FrameFormat.StandardFrame:
            { result |= CAN_OPMODE.CAN_OPMODE_STANDARD; break; }

            case FrameFormat.ExtendedFrame:
            { result |= CAN_OPMODE.CAN_OPMODE_EXTENDED; break; }

            case FrameFormat.MixedFrame:
            { result |= (CAN_OPMODE.CAN_OPMODE_STANDARD | CAN_OPMODE.CAN_OPMODE_EXTENDED); break; }

            default:
            {
                msg = String.Format(Properties.ErrorMessages.NotSupportedValue, frameFormat);
                throw new InvalidCastException(msg);
            }
            }

            if (errorFrameEnable)
            {
                result |= CAN_OPMODE.CAN_OPMODE_ERRFRAME;
            }

            return(result);
        }
Esempio n. 5
0
        private void SetPortMode(PortMode value)
        {
            switch (value)
            {
            case PortMode.FirstAvailable:
                PortModeFirstAvailableRadioButton.Checked = true;
                break;

            case PortMode.Specific:
                PortModeSpecificRadioButton.Checked = true;
                break;
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Конструктор для десериализации
        /// </summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        public CanPort(SerializationInfo info, StreamingContext context)
        {
            this._InputBufferMessages = new Queue <Frame>(100);

            // Инициализируем дескриптор устройства
            this._DeviceHandle = new SafeFileHandle(IntPtr.Zero, true);
            this._DeviceHandle.Close();

            this._PortName         = info.GetString("PortName");
            this._BitRate          = (BaudRate)info.GetValue("BitRate", typeof(BaudRate));
            this._OpMode           = (PortMode)info.GetValue("Mode", typeof(PortMode));
            this._ErrorFrameEnable = info.GetBoolean("ErrorFrameEnable");
            this._FrameFormat      = (FrameFormat)info.GetValue("FrameFormat", typeof(FrameFormat));
            this._Timeouts         = (F_CAN_TIMEOUTS)info.GetValue("Timeouts", typeof(F_CAN_TIMEOUTS));
        }
Esempio n. 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="portName"></param>
        /// <param name="bitRate"></param>
        /// <param name="frameFormat"></param>
        /// <param name="mode"></param>
        public CanPort(String portName, BaudRate bitRate, FrameFormat frameFormat,
                       PortMode mode)
        {
            // Инициализируем буфер входящих сообщений
            this._InputBufferMessages = new Queue <Frame>(100);

            // Инициализируем дескриптор устройства
            this._DeviceHandle = new SafeFileHandle(IntPtr.Zero, true);
            this._DeviceHandle.Close();

            // Номер порта
            PortName     = portName;
            _BitRate     = bitRate;
            _FrameFormat = frameFormat;
            _OpMode      = mode;

            // Структура таймаутов
            _Timeouts = new F_CAN_TIMEOUTS();
        }
        /// <summary>
        /// </summary>
        internal void Validate()
        {
            if (string.IsNullOrEmpty(ApplicationPath))
            {
                throw new CassiniException(SR.ErrApplicationPathIsNull, ErrorField.ApplicationPath);
            }

            try
            {
                ApplicationPath = Path.GetFullPath(ApplicationPath);
            }
            catch
            {
            }
            if (!Directory.Exists(ApplicationPath))
            {
                throw new CassiniException(SR.WebdevDirNotExist, ErrorField.ApplicationPath);
            }

            ApplicationPath = ApplicationPath.Trim('\"').TrimEnd('\\');


            if (!string.IsNullOrEmpty(VirtualPath))
            {
                VirtualPath = VirtualPath.Trim('\"');
                VirtualPath = VirtualPath.Trim('/');
                VirtualPath = "/" + VirtualPath;
            }
            else
            {
                VirtualPath = "/";
            }


            if (!VirtualPath.StartsWith("/"))
            {
                VirtualPath = "/" + VirtualPath;
            }


            if (AddHost && string.IsNullOrEmpty(HostName))
            {
                throw new CassiniException(SR.ErrInvalidHostname, ErrorField.HostName);
            }


            IPAddress = ParseIP(IPMode, IPv6, IPAddress).ToString();


            if (VisualStudio) // then STOP HERE.
            {
                // It is fortunate that in order to provide api parity with WebDev
                // we do not need to port scan. Visual Studio balks and refuses to
                // attach if we monkey around and open ports.
                Port     = Port == 0 ? 80 : Port;
                PortMode = PortMode.Specific;
                return;
            }


            switch (PortMode)
            {
            case PortMode.FirstAvailable:

                if (PortRangeStart < 1)
                {
                    throw new CassiniException(SR.ErrInvalidPortRangeValue, ErrorField.PortRangeStart);
                }

                if (PortRangeEnd < 1)
                {
                    throw new CassiniException(SR.ErrInvalidPortRangeValue, ErrorField.PortRangeEnd);
                }

                if (PortRangeStart > PortRangeEnd)
                {
                    throw new CassiniException(SR.ErrPortRangeEndMustBeEqualOrGreaterThanPortRangeSta,
                                               ErrorField.PortRange);
                }
                Port = CassiniNetworkUtils.GetAvailablePort(PortRangeStart, PortRangeEnd,
                                                            System.Net.IPAddress.Parse(IPAddress), true);

                if (Port == 0)
                {
                    throw new CassiniException(SR.ErrNoAvailablePortFound, ErrorField.PortRange);
                }

                break;

            case PortMode.Specific:

                if ((Port < 1) || (Port > 0xffff))
                {
                    throw new CassiniException(SR.ErrPortOutOfRange, ErrorField.Port);
                }


                // start waiting....
                //TODO: design this hack away.... why am I waiting in a validation method?
                int now = Environment.TickCount;

                // wait until either 1) the specified port is available or 2) the specified amount of time has passed
                while (Environment.TickCount < now + WaitForPort &&
                       CassiniNetworkUtils.GetAvailablePort(Port, Port, System.Net.IPAddress.Parse(IPAddress), true) !=
                       Port)
                {
                    Thread.Sleep(100);
                }

                // is the port available?
                if (CassiniNetworkUtils.GetAvailablePort(Port, Port, System.Net.IPAddress.Parse(IPAddress), true) !=
                    Port)
                {
                    throw new CassiniException(SR.ErrPortIsInUse, ErrorField.Port);
                }


                break;

            default:

                throw new CassiniException(SR.ErrInvalidPortMode, ErrorField.None);
            }
        }
Esempio n. 9
0
 private void SetPortMode(PortMode value)
 {
     switch (value)
     {
         case PortMode.FirstAvailable:
             PortModeFirstAvailableRadioButton.Checked = true;
             break;
         case PortMode.Specific:
             PortModeSpecificRadioButton.Checked = true;
             break;
     }
 }
        /// <summary>
        /// </summary>
        internal void Validate()
        {
            if (string.IsNullOrEmpty(ApplicationPath))
            {
                throw new CassiniException(SR.ErrApplicationPathIsNull, ErrorField.ApplicationPath);
            }

            try
            {
                ApplicationPath = Path.GetFullPath(ApplicationPath);
            }
            catch
            {
            }
            if (!Directory.Exists(ApplicationPath))
            {
                throw new CassiniException(SR.WebdevDirNotExist, ErrorField.ApplicationPath);
            }

            ApplicationPath = ApplicationPath.Trim('\"').TrimEnd('\\');

            if (!string.IsNullOrEmpty(VirtualPath))
            {
                VirtualPath = VirtualPath.Trim('\"');
                VirtualPath = VirtualPath.Trim('/');
                VirtualPath = "/" + VirtualPath;
            }
            else
            {
                VirtualPath = "/";
            }

            if (!VirtualPath.StartsWith("/"))
            {
                VirtualPath = "/" + VirtualPath;
            }

            if (AddHost && string.IsNullOrEmpty(HostName))
            {
                throw new CassiniException(SR.ErrInvalidHostname, ErrorField.HostName);
            }

            IPAddress = ParseIP(IPMode, IPv6, IPAddress).ToString();

            if (VisualStudio) // then STOP HERE.
            {
                // It is fortunate that in order to provide api parity with WebDev
                // we do not need to port scan. Visual Studio balks and refuses to
                // attach if we monkey around and open ports.
                Port = Port == 0 ? 80 : Port;
                PortMode = PortMode.Specific;
                return;
            }

            switch (PortMode)
            {
                case PortMode.FirstAvailable:

                    if (PortRangeStart < 1)
                    {
                        throw new CassiniException(SR.ErrInvalidPortRangeValue, ErrorField.PortRangeStart);
                    }

                    if (PortRangeEnd < 1)
                    {
                        throw new CassiniException(SR.ErrInvalidPortRangeValue, ErrorField.PortRangeEnd);
                    }

                    if (PortRangeStart > PortRangeEnd)
                    {
                        throw new CassiniException(SR.ErrPortRangeEndMustBeEqualOrGreaterThanPortRangeSta,
                                                   ErrorField.PortRange);
                    }
                    Port = CassiniNetworkUtils.GetAvailablePort(PortRangeStart, PortRangeEnd,
                                                                System.Net.IPAddress.Parse(IPAddress), true);

                    if (Port == 0)
                    {
                        throw new CassiniException(SR.ErrNoAvailablePortFound, ErrorField.PortRange);
                    }

                    break;

                case PortMode.Specific:

                    if ((Port < 1) || (Port > 0xffff))
                    {
                        throw new CassiniException(SR.ErrPortOutOfRange, ErrorField.Port);
                    }

                    // start waiting....
                    //TODO: design this hack away.... why am I waiting in a validation method?
                    int now = Environment.TickCount;

                    // wait until either 1) the specified port is available or 2) the specified amount of time has passed
                    while (Environment.TickCount < now + WaitForPort &&
                           CassiniNetworkUtils.GetAvailablePort(Port, Port, System.Net.IPAddress.Parse(IPAddress), true) !=
                           Port)
                    {
                        Thread.Sleep(100);
                    }

                    // is the port available?
                    if (CassiniNetworkUtils.GetAvailablePort(Port, Port, System.Net.IPAddress.Parse(IPAddress), true) !=
                        Port)
                    {
                        throw new CassiniException(SR.ErrPortIsInUse, ErrorField.Port);
                    }

                    break;
                default:

                    throw new CassiniException(SR.ErrInvalidPortMode, ErrorField.None);
            }
        }
 /// <summary>
 /// End User set up mode end.
 /// <para>* Valid at the user setup mode.</para>
 /// </summary>
 /// <param name="device">GU256x128c device</param>
 public static void IoPortInputOutputSetting(this Gu256x128c device, byte n, PortMode mode)
 {
     device.WriteBytes(new byte[] { 0x1F, 0x28, 0x65, 0x02, 0x4F, 0x55, 0x54 });
 }
Esempio n. 12
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="portName">Наименование порта (серийный номер порта)</param>
        public CanPort(String portName, BaudRate bitRate, FrameFormat frameFormat,
            PortMode mode)
        {
            IVciDeviceList deviceList;
            String serialNumber;
            Object pack;

            // Настраиваем поля 
            this.PortName = portName;
            // Инициализируем входной буфер сообщений
            this._InputBufferMessages = new Queue<Frame>(100);
            // Инициализируем свойства порта
            this._FrameFormat = frameFormat;
            this._ErrorFrameEnable = true;
            ((ICanPort)this).Mode = mode;
            this._LowSpeedModeEnable = false;
            // Устанавливаем скорость по умолчанию
            this._CanBitRate = bitRate;

            // Получаем список доступных устройств
            deviceList = GetDeviceList();
            // Находим нужное нам устройство и открываем его
            foreach (IVciDevice item in deviceList)
            {
                pack = (Object)item.UniqueHardwareId;
                serialNumber = GetSerialNumber(ref pack);

                if (serialNumber == this._SerialNumber)
                {
                    // Устройство найдено
                    this._CanDevice = item;
                    break;
                }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Конструктор для десериализации
        /// </summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        public CanPort(SerializationInfo info, StreamingContext context)
        {
            this._InputBufferMessages = new Queue<Frame>(100);

            // Инициализируем дескриптор устройства
            this._DeviceHandle = new SafeFileHandle(IntPtr.Zero, true);
            this._DeviceHandle.Close();

            this._PortName = info.GetString("PortName");
            this._BitRate = (BaudRate)info.GetValue("BitRate", typeof(BaudRate));
            this._OpMode = (PortMode)info.GetValue("Mode", typeof(PortMode));
            this._ErrorFrameEnable = info.GetBoolean("ErrorFrameEnable");
            this._FrameFormat = (FrameFormat)info.GetValue("FrameFormat", typeof(FrameFormat));
            this._Timeouts = (F_CAN_TIMEOUTS)info.GetValue("Timeouts", typeof(F_CAN_TIMEOUTS));
        }
Esempio n. 14
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="portName"></param>
        /// <param name="bitRate"></param>
        /// <param name="frameFormat"></param>
        /// <param name="mode"></param>
        public CanPort(String portName, BaudRate bitRate, FrameFormat frameFormat,
            PortMode mode)
        {
            // Инициализируем буфер входящих сообщений
            this._InputBufferMessages = new Queue<Frame>(100);

            // Инициализируем дескриптор устройства
            this._DeviceHandle = new SafeFileHandle(IntPtr.Zero, true);
            this._DeviceHandle.Close();

            // Номер порта
            PortName = portName;
            _BitRate = bitRate;
            _FrameFormat = frameFormat;
            _OpMode = mode;

            // Структура таймаутов
            _Timeouts = new F_CAN_TIMEOUTS();
        }
Esempio n. 15
0
        /// <summary>
        /// Set input or output for general purpose I/O port.
        /// </summary>
        /// <param name="device">GU256x128c device</param>
        /// <param name="n">I/O port number</param>
        /// <param name="a">Set Input or Output</param>
        public static void IoPortInputOutputSetting(this Gu256x128c device, byte n, PortMode mode)
        {
            var a = (byte)mode;

            device.WriteBytes(new byte[] { 0x1F, 0x28, 0x70, 0x01, n, a });
        }
Esempio n. 16
0
File: Api.cs Progetto: serialbus/NGK
        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Строит и возвращает структуру режима работы порта NIM351
        /// </summary>
        /// <param name="mode">Режим работы порта</param>
        /// <param name="frameFormat">Формат кадра</param>
        /// <param name="errorFrameEnable">Разрешает/запрещает передачу информационных сообщений</param>
        /// <returns></returns>
        public static CAN_OPMODE OpModeBuilder(PortMode mode,
            FrameFormat frameFormat, Boolean errorFrameEnable)
        {
            CAN_OPMODE result;
            String msg;

            result = CAN_OPMODE.CAN_OPMODE_INIT;

            switch (mode)
            {
                case PortMode.NORMAL:
                    { break; }
                case PortMode.LISTEN_ONLY:
                    { result |= CAN_OPMODE.CAN_OPMODE_LSTNONLY; break; }
                case PortMode.SELFTEST:
                    { result |= CAN_OPMODE.CAN_OPMODE_SELFTEST; break; }
                case PortMode.SELFRECV:
                    { result |= CAN_OPMODE.CAN_OPMODE_SELFRECV; break; }
                default:
                    {
                        msg = String.Format(Properties.ErrorMessages.NotSupportedValue, mode);
                        throw new InvalidCastException(msg);
                    }
            }

            switch (frameFormat)
            {
                case FrameFormat.StandardFrame:
                    { result |= CAN_OPMODE.CAN_OPMODE_STANDARD; break; }
                case FrameFormat.ExtendedFrame:
                    { result |= CAN_OPMODE.CAN_OPMODE_EXTENDED; break; }
                case FrameFormat.MixedFrame:
                    { result |= (CAN_OPMODE.CAN_OPMODE_STANDARD | CAN_OPMODE.CAN_OPMODE_EXTENDED); break; }
                default:
                    {
                        msg = String.Format(Properties.ErrorMessages.NotSupportedValue, frameFormat);
                        throw new InvalidCastException(msg);
                    }
            }

            if (errorFrameEnable)
            { result |= CAN_OPMODE.CAN_OPMODE_ERRFRAME; }

            return result;
        }