Esempio n. 1
0
        /// <summary>
        ///     Отправляет команду на устройство без возврата данных.
        ///     Для возврата данных используйте <see cref="Request{T}" />
        /// </summary>
        /// <param name="command">Команда для устройства</param>
        public void Request(string command)
        {
            try
            {
                var byteCommand = ScpiDataParser.ParseSendData(command);

                Exchange.Connect();
                Exchange.Send(byteCommand);
                // Задержка обмена данными для эмульятора
                Thread.Sleep(2400);

                var buffer = Exchange.Receive();

                ScpiDataParser.ParseReceiveData(buffer);
            }
            catch (ASCPIParseDataException ascpiParseDataException)
            {
                throw new ASCPIParseDataException(ascpiParseDataException.Message);
            }
            catch (Exception exception)
            {
                throw new Exception(exception.Message);
            }
            finally
            {
                Exchange.Disconnect();
            }
        }
Esempio n. 2
0
        /// <summary>
        ///     Отправляет команду и возвращает результата заданного типа <see cref="T" />
        ///     Для отправки без возврата данных используйте <see cref="Request" />
        /// </summary>
        /// <typeparam name="T">Требуемый тип данных</typeparam>
        /// <param name="command">Команда для устройства</param>
        /// <returns>Значение типа <see cref="T" /></returns>
        public T Request <T>(string command)
        {
            try
            {
                var type = typeof(T);

                var byteCommand = ScpiDataParser.ParseSendData(command);

                Exchange.Connect();
                Exchange.Send(byteCommand);

                switch (type.Name)
                {
                case nameof(Double):
                {
                    return((T)Convert.ChangeType(ScpiDataParser.ParseDouble(Exchange.Receive()), typeof(T)));
                }

                case nameof(Int32):
                {
                    return((T)Convert.ChangeType(ScpiDataParser.ParseInteger(Exchange.Receive()), typeof(T)));
                }

                case nameof(Boolean):
                {
                    return((T)Convert.ChangeType(ScpiDataParser.ParseBoolean(Exchange.Receive()), typeof(T)));
                }

                case nameof(String):
                {
                    return((T)Convert.ChangeType(ScpiDataParser.ParseReceiveData(Exchange.Receive()), typeof(T)));
                }

                default: throw new Exception("Не верный тип возврата: " + type.Name);
                }
            }
            catch (Exception exception)
            {
                throw new Exception(exception.Message);
            }
            finally
            {
                Exchange.Disconnect();
            }
        }