Esempio n. 1
0
 public void ValidateSensor(ConsultSensor sensor)
 {
     if (!_lstSensors.Contains(sensor))
     {
         _lstSensors.Add(sensor);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Битовый регистр
        /// </summary>
        /// <param name="name">Имя</param>
        /// <param name="reg">Регистр</param>
        /// <param name="bitMap">Карта битовых значений
        /// "" - Если бит не используется</param>
        public ConsultSensor(string name, byte[] reg, string[] bitMap)
        {
            if (bitMap.Length != 8)
            {
                throw new ArgumentException("Длина массива карты битовых значений должна быть = 8");
            }

            _type = ConsultTypeOfSensors.Bit;

            //TODO: Разобрать битовый массив с параметрами
            _bitSensors = new ConsultSensor[8];
            for (int i = 0; i < 8; i++)
            {
                if (bitMap[i] == "")
                {
                    continue;
                }
                string nameReg = String.Format("{0}_{1}", name, bitMap[i]);
                _bitSensors[i] = new ConsultSensor(nameReg, reg, ConversionFunctions.BitConverters[i]);
            }

            _name      = name;
            _registers = reg;
            _bitMap    = bitMap;
        }
Esempio n. 3
0
        public void Init(ConsultSensor sens)
        {
            _queue = new Queue<float>(50);
            _flag = new AutoResetEvent(false);
            _sens = sens;

            InitDefaults();

            this.ScaleDescription = sens.ConvFunc(1).Scale;

            MaximumF = ScaleDescription.Max;
            MinimumF = ScaleDescription.Min;

            this.Text = _sens._name;
            this.CustomUnitMeasure = ScaleDescription.Scale;

            _sens.NewDataFloat += new ConsultSensor.SensorNewDataFloatEven(NewDataUpdate);

            _workThread = new Thread(new ThreadStart(this.WorkFunction));
            _workThread.Name = "ColorBarThreadSensor:'" + sens._name + "'";
            _workThread.Priority = ThreadPriority.BelowNormal;
            _workThread.Start();
        }
Esempio n. 4
0
        public void SensorRemove(ConsultSensor sens)
        {
            _log.WriteEntry(this,
                String.Format("Removing live sensor: [{0}]", sens.ToString()),
                EventEntryType.Debug);

            //Если сейчас идет прием данных
            if (_flagIsScanning)
            {
                this.SensorStopLive();

                //Дождемся завершения приема данных
                lock (this)
                {
                    //удалим информацию о сенсоре
                    _sensors.Remove(sens);
                }

                //стартанем скан сенсоров заново
                this.SensorStartLive();
            }
            else
            {
                _sensors.Remove(sens);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Добавить сенсор для сканирования
        /// </summary>
        public void SensorAdd(ConsultSensor sens)
        {
            _log.WriteEntry(this,
                String.Format("Adding live sensor: [{0}]", sens.ToString()),
                EventEntryType.Debug);

            if (CountOfSensors + 1 > (int)ECUConst.ECU_REG_MAX_READS)
                throw new ConsultException("Достигнуто максимальное количество сенсоров - " + (int)ECUConst.ECU_REG_MAX_READS);
            if (_flagIsScanning)
            {
                SensorStopLive();
                lock (this)
                {
                    _sensors.Add(sens);
                }
                this.SensorStartLive();
            }
            else
            {
                _sensors.Add(sens);
            }
        }
Esempio n. 6
0
 public void Remove(ConsultSensor sens)
 {
     if (_sensors.Contains(sens))
     {
         _sensors.Remove(sens);
     }
 }
Esempio n. 7
0
        /// <summary>
        /// Добавить сенсор для мониторинга
        /// </summary>
        /// <param name="sens">Сенсор</param>
        /// <param name="evnt">Функция callback, вызываемая при появлении данных сенсора</param>
        public void Add(ConsultSensor sens)
        {
            //смотрим существует ли уже сенсор в списке
            ConsultSensor existSensor = this[sens._name];

            //Сенсор уже есть в списке
            if (existSensor != null)
                return;

            _sensors.Add(sens);
        }
Esempio n. 8
0
        /// <summary>
        /// Битовый регистр
        /// </summary>
        /// <param name="name">Имя</param>
        /// <param name="reg">Регистр</param>
        /// <param name="bitMap">Карта битовых значений
        /// "" - Если бит не используется</param>
        public ConsultSensor(string name, byte[] reg, string[] bitMap)
        {
            if (bitMap.Length != 8)
                throw new ArgumentException("Длина массива карты битовых значений должна быть = 8");

            _type = ConsultTypeOfSensors.Bit;

            //TODO: Разобрать битовый массив с параметрами
            _bitSensors = new ConsultSensor[8];
            for (int i = 0; i < 8; i++)
            {
                if (bitMap[i] == "")
                    continue;
                string nameReg = String.Format("{0}_{1}", name, bitMap[i]);
                _bitSensors[i] = new ConsultSensor(nameReg, reg, ConversionFunctions.BitConverters[i]);
            }

            _name = name;
            _registers = reg;
            _bitMap = bitMap;
        }
Esempio n. 9
0
        public void Init(ConsultSensor sens)
        {
            _queue = new Queue<float>(50);
            _flag = new AutoResetEvent(false);
            _sens = sens;

            InitDefaultAquaGaugeToConsult();

            this.ScaleDescription = sens.ConvFunc(1).Scale;

            MaxValue = ScaleDescription.Max;
            MinValue = ScaleDescription.Min;

            this.DialText = _sens._name + Environment.NewLine + ScaleDescription.Scale;

            _sens.NewDataFloat += NewDataUpdate;

            _workThread = new Thread(new ThreadStart(this.WorkFunction));
            _workThread.Name = "AquagaugeThreadSensor:[" + sens._name + "]";
            _workThread.Priority = ThreadPriority.BelowNormal;
            _workThread.Start();
        }
Esempio n. 10
0
 public ConsultAquaGauge(ConsultSensor sens)
     : base()
 {
     Init(sens);
 }
Esempio n. 11
0
 public void ValidateSensor(ConsultSensor sensor)
 {
     if (!_lstSensors.Contains(sensor))
         _lstSensors.Add(sensor);
 }
Esempio n. 12
0
 public ConsultColorBar(ConsultSensor sens)
     : base()
 {
     Init(sens);
 }
Esempio n. 13
0
 private void InitializeConsult()
 {
     ConsultData data = new ConsultData(new DataEngine());
     if (_consult.DataSource.ToString() != data.ToString())
     {
         _consult.DataSource = data;
         _sensSpeed = data.ValidSensors["Vehicle speed"];
     }
     else
     {
         try
         {
             _sensSpeed = _consult.DataSource.ValidSensors["Vehicle speed"];
         }
         catch (KeyNotFoundException)
         {
             throw new ConsultException("No information about sensor 'Vehicle speed'");
         }
     }
     _consult.MonitoringSensors.Add(_sensSpeed);
 }