public void ValidateSensor(ConsultSensor sensor) { if (!_lstSensors.Contains(sensor)) { _lstSensors.Add(sensor); } }
/// <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; }
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(); }
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); } }
/// <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); } }
public void Remove(ConsultSensor sens) { if (_sensors.Contains(sens)) { _sensors.Remove(sens); } }
/// <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); }
/// <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; }
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(); }
public ConsultAquaGauge(ConsultSensor sens) : base() { Init(sens); }
public void ValidateSensor(ConsultSensor sensor) { if (!_lstSensors.Contains(sensor)) _lstSensors.Add(sensor); }
public ConsultColorBar(ConsultSensor sens) : base() { Init(sens); }
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); }