Я использую устройство, которое получает показания давления в 4-20MA, преобразует его в напряжение и масштабирует это в пределах диапазона, а затем отображает данные в виде линейного графика в реальном времени.Я масштабирую ось Y и у меня есть кнопки для регулировки масштаба оси Y во время выполнения в зависимости от того, насколько большой диапазон необходим.Другими словами, если давление начинается с 0 фунтов на кв. Дюйм, а затем резко возрастает до 20000, я хочу, чтобы график показывал -100 (минимум - только так, чтобы, если PSI был в 0, его видно), до 0, 100, 200,..., 19800, 19900, 20000. Но вместо этого, если давление, скажем, в 19743 году, шкала "-43, 43, 143, ..., 19843, 19943" примерно такая.Есть ли способ изменить это так, чтобы он считал только «целые сотни» или что-то в этом роде?
Мой интервал оси Y прыгает на 50, поэтому ось может идти в 0, 50, 100, ... или 0, 100, 200 и т. Д. И т. Д. (При желании можно прыгать на 500 фунтов / кв. Дюйм за раз).Но я просто хочу, чтобы числа по оси Y показывали целые сотни, если это имеет смысл.
Мое максимальное значение y - это максимальное входящее значение (я сравниваю 3 входных значения) и добавляю 1000 к этому.Поэтому, если текущее максимальное давление составляет 19 000 фунтов на квадратный дюйм, график должен показывать от -100 до 20 0000.
Мои сравнения входящих значений - имена «RawIn #», но они уже масштабированы.Плохое именование переменных, я знаю.
if (rawIn0 > rawIn1)
{
maxY = Convert.ToInt32(rawIn0);
}
else if (rawIn1 > rawIn0)
{
maxY = Convert.ToInt32(rawIn1);
}
if (maxY < rawIn2)
{
maxY = Convert.ToInt32(rawIn2);
}
if (maxY > absoluteMaxY)
{
absoluteMaxY = maxY;
}
if (rawIn0 > rawIn1)
{
minY = Convert.ToInt32(rawIn1);
}
else if (rawIn1 > rawIn0)
{
minY = Convert.ToInt32(rawIn0);
}
if (minY > rawIn2)
{
minY = Convert.ToInt32(rawIn2);
}
Текущий способ масштабирования графика.MinY всегда равно 0. Поэтому минимум = -100.
chart1.ChartAreas[0].AxisY.Maximum = absoluteMaxY + 1000;
chart1.ChartAreas[0].AxisY.Minimum = minY - 100;
Мои кнопки во время выполнения увеличивают и уменьшают интервал.Чем выше интервал //, тем легче увидеть весь график с меньшим количеством линий по оси Y.
private void yValueSizeInc_Click(object sender, EventArgs e)
{
if (chart1.ChartAreas[0].AxisY.Interval < 50)
{
chart1.ChartAreas[0].AxisY.Interval = 50;
}
else
{
chart1.ChartAreas[0].AxisY.Interval += 50;
}
Properties.Settings.Default.pressureInterval =
(int)chart1.ChartAreas[0].AxisY.Interval;
yValueSize.Text = chart1.ChartAreas[0].AxisY.Interval.ToString();
}
private void yValueSizeDec_Click(object sender, EventArgs e)
{
if (chart1.ChartAreas[0].AxisY.Interval <= 50)
{
chart1.ChartAreas[0].AxisY.Interval = 50;
}
else
{
chart1.ChartAreas[0].AxisY.Interval -= 50;
}
Properties.Settings.Default.pressureInterval = (int)
chart1.ChartAreas[0].AxisY.Interval;
yValueSize.Text = chart1.ChartAreas[0].AxisY.Interval.ToString();
}
Счетчик давления может быть неравномерным