private void buttonCheck_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
List<Task> listTask = new List<Task>();
Task taskEms = new Task(
double.Parse(textBoxEmsPi.Text),
double.Parse(textBoxEmsTheta.Text),
double.Parse(textBoxEmsPi.Text), // deadline = period
0);
Task taskTms = new Task(
double.Parse(textBoxTmsPi.Text),
double.Parse(textBoxTmsTheta.Text),
double.Parse(textBoxTmsPi.Text), // deadline = period
0);
listTask.Add(taskEms);
listTask.Add(taskTms);
DataTable dtSync = dataGridViewSync.DataSource as DataTable;
foreach (DataRow dr in dtSync.Rows)
{
Task t = new Task(
double.Parse(dr["Period"].ToString()),
double.Parse(dr["ExecutionTime"].ToString()) + 2 * _overhead,
double.Parse(dr["ExecutionTime"].ToString()) + 2 * _overhead, // deadline = execution
double.Parse(dr["Phase"].ToString()),
0);
listTask.Add(t);
}
double interval = listTask[0].Period;
foreach (Task t in listTask)
{
interval = (double)GetLCM((long)interval, (long)t.Period);
}
FormChart chart = new FormChart("Resource demand / supply");
chart.GetLable.Text = "Schedulable";
try
{
Series seriesDBF = new Series("Resource Demand");
seriesDBF.ChartArea = "ChartArea1";
seriesDBF.ChartType = SeriesChartType.StepLine;
seriesDBF.Legend = "Legend1";
seriesDBF.Color = Color.Blue;
Series seriesSBF = new Series("Resurce Supply");
seriesSBF.ChartArea = "ChartArea1";
seriesSBF.ChartType = SeriesChartType.Line;
seriesSBF.Legend = "Legend1";
seriesSBF.Color = Color.Red;
DataTable dt = GetSelectedTaskSet();
for (double t = 0; t <= interval; t += 1)
{
double dbf = GetDBF_Sporadic_EDF(listTask, t);
if (dbf > t)
chart.GetLable.Text = "Not Schedulable";
seriesDBF.Points.Add(new DataPoint(t, dbf));
seriesSBF.Points.Add(new DataPoint(t, t));
}
chart.AxisX.Title = "Interval Length";
chart.AxisY.Title = "Resource demand / supply";
chart.AxisX.Minimum = 0;
chart.AddSeries(seriesDBF);
chart.AddSeries(seriesSBF);
}
finally
{
this.Cursor = Cursors.Default;
}
chart.Show();
}