/// <summary> /// Get the temperature sequence from the database /// </summary> /// <param name="SequenceName">温度序列名称</param> /// <param name="SequenceInstance">获取到的温度序列实例</param> /// <returns></returns> public bool GetTemperatureSequence(string SequenceName, out CTemperatureSequence SequenceInstance) { SequenceInstance = new CTemperatureSequence(); bool ret = false; using (MySqlCommand cmd = new MySqlCommand() { CommandTimeout = COMMAND_TIMEOUT }) { try { if (Open()) { cmd.Connection = conn; cmd.CommandText = "SELECT `name`, `order`, `temper`, `consume`, `add_time` FROM `temperature_sequence` WHERE `name` = '" + SequenceName + "' AND `using`='E' ORDER BY `order` ASC"; MySqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { CTemperatureSequenceKeyPoint p = new CTemperatureSequenceKeyPoint(Convert.ToDouble(dr["temper"]), Convert.ToInt16(dr["consume"])); SequenceInstance.Add(p); } } if (SequenceInstance.Count == 0) { SequenceInstance = null; } else { SequenceInstance.SequenceName = SequenceName; } ret = true; } else { ret = false; } } catch (Exception ex) { strLastError = ex.Message; ret = false; } } Close(); return(ret); }
private static void OnPresettedSequenceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { StepAreaAndLineChart owner = d as StepAreaAndLineChart; /* * 重新生成一个CTemperatureSequence对象,这个对象和传入的对象区别是: * 重新生成的CTemperatureSequence对象会在尾部多加一个Point,这个Point用来 * 正确产生Step Series的最后一个横阶梯 */ CTemperatureSequence seq; if (e.NewValue == null) { seq = new CTemperatureSequence(); } else { seq = ((CTemperatureSequence)e.NewValue).Clone() as CTemperatureSequence; if (seq.Count > 0) { /* 这里在最后加入一个Point用来修正Step Chart的View */ CTemperatureSequenceKeyPoint point = seq[seq.Count - 1]; seq.Add(new CTemperatureSequenceKeyPoint() { HoldTime = 0, TargetTemperature = point.TargetTemperature }); } } owner._SeriesSequence.DataSource = seq; /* 更新实时温度曲线的描点间隔 */ if (seq != null && seq.Count > 0 && owner.RealtimeTemperatureCollection != null) { owner.RealtimeTemperatureCollection.TotalTime = owner.PresettedSequence.TotalTime; } }