public void LoadConfig(string configPath) { XmlReaderSettings xrs = new XmlReaderSettings(); xrs.IgnoreWhitespace = true; xrs.IgnoreComments = true; try{ XmlReader reader = XmlReader.Create(configPath, xrs); reader.ReadStartElement("sensor-track"); var id = reader.GetAttribute("id"); var name = reader.GetAttribute("name"); while (true) { if (reader.NodeType != XmlNodeType.Element) { if (!reader.Read()) { break; } continue; } switch (reader.Name) { case "track-passive": this.TrackPassive = "true" == reader.ReadElementContentAsString(); break; case "track-accumulator": this.TrackAccum = "true" == reader.ReadElementContentAsString(); break; case "track": SensorTrackData set = new SensorTrackData(); set.id = reader.GetAttribute("sensor"); set.period = ParseTimeSpan(reader.GetAttribute("period")); set.gap = ParseTimeSpan(reader.GetAttribute("gap")); set.length = ParseTimeSpan(reader.GetAttribute("length")); if (set.id != null && !Settings.ContainsKey(set.id)) { Settings.Add(set.id, set); } reader.Read(); break; default: reader.Read(); break; } } reader.Close(); }catch (FileNotFoundException) { }catch (Exception e) { Logger.error("SensorTrack", "failed init", e); } }
protected virtual void SensorChanged(Sensor sensor) { SensorTrackData set; if (!Settings.TryGetValue(sensor.ID, out set)) { set = new SensorTrackData(); set.id = sensor.ID; Settings.Add(set.id, set); } if (set.LastTimeStamp == sensor.TimeStamp) { return; } if (Logger.DUMP) { Logger.dump("SensorTrack", "SensorChanged " + sensor.ID); } lock (set) { if (set.length > 0 && set.stopat == 0) { set.stopat = sensor.TimeStamp + set.length; } if (set.stopat != 0 && sensor.TimeStamp >= set.stopat) { set.startat = sensor.TimeStamp + set.gap; set.stopat = 0; Registry.RemoveListener(sensor, this.SensorChanged); //TODO: raise timer } StoreSensor(sensor); } }
protected virtual void StoreSensorData(SensorTrackData set) { lock (set) { try { var fs = new FileStream(Path.Combine(DataPath, VersionID + set.id), FileMode.Append); var sw = new BinaryWriter(fs); for (int i = 0; i < set.history_t.Count(); i++) { sw.Write(set.history_t[i]); sw.Write(set.history_v[i]); } set.history_t.Clear(); set.history_v.Clear(); sw.Close(); fs.Close(); }catch (Exception e) { Logger.error("StoreSensorData", "fail", e); } } }
protected virtual void StoreSensorData(SensorTrackData set) { lock(set) { try { var fs = new FileStream(Path.Combine(DataPath, VersionID + set.id), FileMode.Append); var sw = new BinaryWriter(fs); for(int i = 0; i < set.history_t.Count(); i++) { sw.Write(set.history_t[i]); sw.Write(set.history_v[i]); } set.history_t.Clear(); set.history_v.Clear(); sw.Close(); fs.Close(); }catch(Exception e){ Logger.error("StoreSensorData", "fail", e); } } }
protected virtual void SensorChanged(Sensor sensor) { SensorTrackData set; if (!Settings.TryGetValue(sensor.ID, out set)) { set = new SensorTrackData(); set.id = sensor.ID; Settings.Add(set.id, set); } if (set.LastTimeStamp == sensor.TimeStamp) return; if (Logger.DUMP) Logger.dump("SensorTrack", "SensorChanged " +sensor.ID); lock(set) { if (set.length > 0 && set.stopat == 0) { set.stopat = sensor.TimeStamp + set.length; } if (set.stopat != 0 && sensor.TimeStamp >= set.stopat) { set.startat = sensor.TimeStamp + set.gap; set.stopat = 0; Registry.RemoveListener(sensor, this.SensorChanged); //TODO: raise timer } StoreSensor(sensor); } }
public void LoadConfig(string configPath) { XmlReaderSettings xrs = new XmlReaderSettings(); xrs.IgnoreWhitespace = true; xrs.IgnoreComments = true; try{ XmlReader reader = XmlReader.Create(configPath, xrs); reader.ReadStartElement("sensor-track"); var id = reader.GetAttribute("id"); var name = reader.GetAttribute("name"); while(true){ if (reader.NodeType != XmlNodeType.Element){ if (!reader.Read()) break; continue; } switch (reader.Name) { case "track-passive": this.TrackPassive = "true" == reader.ReadElementContentAsString(); break; case "track-accumulator": this.TrackAccum = "true" == reader.ReadElementContentAsString(); break; case "track": SensorTrackData set = new SensorTrackData(); set.id = reader.GetAttribute("sensor"); set.period = ParseTimeSpan(reader.GetAttribute("period")); set.gap = ParseTimeSpan(reader.GetAttribute("gap")); set.length = ParseTimeSpan(reader.GetAttribute("length")); if (set.id != null && !Settings.ContainsKey(set.id)) Settings.Add(set.id, set); reader.Read(); break; default: reader.Read(); break; } } reader.Close(); }catch(FileNotFoundException){ }catch(Exception e){ Logger.error("SensorTrack", "failed init", e); } }