private void UpdateChart(object chart, Dictionary <string, DataContainer> dict) { Chart chart_ = (Chart)chart; // get all keys from the current connection var keys = dict.Keys.ToArray(); // clear and update the graphs (for each key) foreach (string key in keys) { // if series does not exist, add it if (chart_.Series.IndexOf(key) == -1) { Charting.AddChartSeries(key, chart_); } int i = dict[key].time.Length - 1; if (dict[key].time[i] != null) { DateTime time = DateTime.ParseExact(dict[key].time[i], Constants.FMT, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal); chart_.Series[key].Points.AddXY(time.ToOADate(), Convert.ToDouble(dict[key].value[i])); } // remove old data points if (chart_.Series[key].Points.Count > Constants.n_steps) { chart_.Series[key].Points.RemoveAt(0); } } }
private void timerChart_Tick(object sender, EventArgs e) { // add data-points foreach (string item in clbAttackModels.Items) { string key = item.ToString(); attack_timeseries[key].InsertData(DateTime.UtcNow.ToString(Constants.FMT), attack_model_container[key].value_attack.ToString()); } // draw chart UpdateChart(attackChart, attack_timeseries); UpdateChart(packetChart, packet_timeseries); // scale y-axis for the chart Charting.ChangeYScale(attackChart, "data_chart"); // update time axis minimum and maximum Charting.UpdateChartAxes(attackChart, time_chart_window); Charting.UpdateChartAxes(packetChart, time_chart_window); }
private void ChannelGUI_Load(object sender, EventArgs e) { // read command line arguments string[] args = Environment.GetCommandLineArgs(); ParseArgs(args); // update the dropout model (depending on selection and values) UpdateDroupOutModel(); // application directory folderName = Directory.GetCurrentDirectory(); toolStripLabel.Text = "Dir: " + folderName; // Initial chart settings Charting.InitialChartSettings(this); // manage form controls (e.g. enable/disable) Helpers.ManageNumericalUpdowns(this); timerChart.Start(); }