Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Poyasnitelnaya_zapiska_ukr_variant_polnostyu_go...doc
Скачиваний:
5
Добавлен:
08.09.2019
Размер:
1.85 Mб
Скачать

Приложение I

Программа верхнего уровня.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ZedGraph;

using System.IO.Ports;

using System.IO;

using System.Threading;

namespace Bokaev

{

public partial class Form1 : Form

{

//создаем графики

GraphPane pane0, pane1, pane2, pane3, pane4;

//проверочные графики

GraphPane paneControl0, paneControl1, paneControl2, paneControl3, paneControl4;

// создаем списки точек

PointPairList list0 = new PointPairList();

PointPairList list1 = new PointPairList();

PointPairList list2 = new PointPairList();

PointPairList list3 = new PointPairList();

PointPairList list4 = new PointPairList();

//списки проверочных точек

PointPairList listControl0 = new PointPairList();

PointPairList listControl1 = new PointPairList();

PointPairList listControl2 = new PointPairList();

PointPairList listControl3 = new PointPairList();

PointPairList listControl4 = new PointPairList();

//координата Х (время)

double x = 0;

//CSV Writer (Excel)

private StreamWriter m_CSVWriter;

private StreamWriter m_CSVWriter1;

private StreamWriter m_CSVWriter2;

private StreamWriter m_CSVWriter3;

private StreamWriter m_CSVWriter4;

private StreamWriter global_CSVWriter;

//Для определения времени измерения

DateTime data1, data2;

public Form1()

{

InitializeComponent();

//csv добавляем пункт меню

zedGraph.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler(MyContextMenuBuilder);

zedGraph1.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler(MyContextMenuBuilder1);

zedGraph2.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler(MyContextMenuBuilder2);

zedGraph3.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler(MyContextMenuBuilder3);

zedGraph4.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler(MyContextMenuBuilder4);

}

//==============================0

//добавлеение меню(Excel)

private void MyContextMenuBuilder(ZedGraphControl control,ContextMenuStrip menuStrip,

Point mousePt, ZedGraphControl.ContextMenuObjectState objState)

{

// зодать новую запись меню

ToolStripMenuItem _item = new ToolStripMenuItem();

//Для обращения к меню

_item.Name = "Export Data as CSV";

_item.Tag = "export_data_csv";

//Отображение меню

_item.Text = "Export Data as CSV";

// Получить хендел на функцию меню

_item.Click += new System.EventHandler(ShowSaveAsForExportCSV);

// Вставить пункт по указанному месту

menuStrip.Items.Insert(2, _item);

}

//функция меню

private void ShowSaveAsForExportCSV(object sender, System.EventArgs e)

{

try

{

//Отображение диалога для сохранения

saveFileDialog1.Filter = "CSV files (*.csv)|*.csv";

saveFileDialog1.ShowDialog();

//получить имя файла

m_CSVWriter = new StreamWriter(saveFileDialog1.FileName);

WriteCSVToStream(); //запись

m_CSVWriter.Close(); //закрыть

MessageBox.Show("CSV File Saved", " ZedGraph ", MessageBoxButtons.OK);

}

catch (Exception ex)

{

MessageBox.Show("Выбранный файл недоступен для записи", "Ошибка", MessageBoxButtons.OK);

}

}

//запись в файл

private void WriteCSVToStream()

{

//записать информацию о измерениях

//название графика

m_CSVWriter.Write("Name graph: ;" + zedGraph.GraphPane.Title.Text + "\n");

//время начала

m_CSVWriter.Write("Date start: ;" + data1.ToString() +"\n" );

//время конца

m_CSVWriter.Write("Date end: ;" + DateTime.Now.ToString()+"\n");

//продолжительность

m_CSVWriter.Write("Time: ;" + (DateTime.Now-data1).ToString() + "\n");

//количество записей

m_CSVWriter.Write("Count: ;" + list0.Count.ToString() + "\n");

//цена деления

m_CSVWriter.Write("Frequency (ms): ;" + txtFren.Text+ "\n");

//Записываем заголовки осей Х и У

string _xAxisHeader = CheckCSVString(zedGraph.GraphPane.XAxis.Title.Text);

string _yAxisHeader = CheckCSVString(zedGraph.GraphPane.YAxis.Title.Text);

m_CSVWriter.Write(_xAxisHeader + ";" + _yAxisHeader + "\n");

//записываем точки из списка

for (int i = 0; i < list0.Count; i++)

{

m_CSVWriter.Write(list0[i].X.ToString() + ";" + list0[i].Y.ToString() + "\n");

}

}

//============ End 0

//==============================1

//добавлеение меню(Excel)

private void MyContextMenuBuilder1(ZedGraphControl control, ContextMenuStrip menuStrip,

Point mousePt, ZedGraphControl.ContextMenuObjectState objState)

{

// зодать новую запись меню

ToolStripMenuItem _item = new ToolStripMenuItem();

//Для обращения к меню

_item.Name = "Export Data as CSV";

_item.Tag = "export_data_csv";

//Отображение меню

_item.Text = "Export Data as CSV";

// Получить хендел на функцию меню

_item.Click += new System.EventHandler(ShowSaveAsForExportCSV1);

// Вставить пункт по указанному месту

menuStrip.Items.Insert(2, _item);

}

//функция меню

private void ShowSaveAsForExportCSV1(object sender, System.EventArgs e)

{

try

{

//Отображение диалога для сохранения

saveFileDialog1.Filter = "CSV files (*.csv)|*.csv";

saveFileDialog1.ShowDialog();

//получить имя файла

m_CSVWriter1 = new StreamWriter(saveFileDialog1.FileName);

WriteCSVToStream1(); //запись

m_CSVWriter1.Close(); //закрыть

MessageBox.Show("CSV File Saved", " ZedGraph ", MessageBoxButtons.OK);

}

catch (Exception ex)

{

MessageBox.Show("Выбранный файл недоступен для записи", "Ошибка", MessageBoxButtons.OK);

}

}

//запись в файл

private void WriteCSVToStream1()

{

//записать информацию о измерениях

//название графика

m_CSVWriter1.Write("Name graph: ;" + zedGraph1.GraphPane.Title.Text + "\n");

//время начала

m_CSVWriter1.Write("Date start: ;" + data1.ToString() + "\n");

//время конца

m_CSVWriter1.Write("Date end: ;" + DateTime.Now.ToString() + "\n");

//продолжительность

m_CSVWriter1.Write("Time: ;" + (DateTime.Now - data1).ToString() + "\n");

//количество записей

m_CSVWriter1.Write("Count: ;" + list1.Count.ToString() + "\n");

//цена деления

m_CSVWriter1.Write("Frequency (ms): ;" + txtFren.Text + "\n");

//Записываем заголовки осей Х и У

string _xAxisHeader = CheckCSVString(zedGraph1.GraphPane.XAxis.Title.Text);

string _yAxisHeader = CheckCSVString(zedGraph1.GraphPane.YAxis.Title.Text);

m_CSVWriter1.Write(_xAxisHeader + ";" + _yAxisHeader + "\n");

//записываем точки из списка

for (int i = 0; i < list1.Count; i++)

{

m_CSVWriter1.Write(list1[i].X.ToString() + ";" + list1[i].Y.ToString() + "\n");

}

}

//============ End 1

//==============================2

//добавлеение меню(Excel)

private void MyContextMenuBuilder2(ZedGraphControl control, ContextMenuStrip menuStrip,

Point mousePt, ZedGraphControl.ContextMenuObjectState objState)

{

// зодать новую запись меню

ToolStripMenuItem _item = new ToolStripMenuItem();

//Для обращения к меню

_item.Name = "Export Data as CSV";

_item.Tag = "export_data_csv";

//Отображение меню

_item.Text = "Export Data as CSV";

// Получить хендел на функцию меню

_item.Click += new System.EventHandler(ShowSaveAsForExportCSV2);

// Вставить пункт по указанному месту

menuStrip.Items.Insert(2, _item);

}

//функция меню

private void ShowSaveAsForExportCSV2(object sender, System.EventArgs e)

{

try

{

//Отображение диалога для сохранения

saveFileDialog1.Filter = "CSV files (*.csv)|*.csv";

saveFileDialog1.ShowDialog();

//получить имя файла

m_CSVWriter2 = new StreamWriter(saveFileDialog1.FileName);

WriteCSVToStream2(); //запись

m_CSVWriter2.Close(); //закрыть

MessageBox.Show("CSV File Saved", " ZedGraph ", MessageBoxButtons.OK);

}

catch (Exception ex)

{

MessageBox.Show("Выбранный файл недоступен для записи", "Ошибка", MessageBoxButtons.OK);

}

}

//запись в файл

private void WriteCSVToStream2()

{

//записать информацию о измерениях

//название графика

m_CSVWriter2.Write("Name graph: ;" + zedGraph2.GraphPane.Title.Text + "\n");

//время начала

m_CSVWriter2.Write("Date start: ;" + data1.ToString() + "\n");

//время конца

m_CSVWriter2.Write("Date end: ;" + DateTime.Now.ToString() + "\n");

//продолжительность

m_CSVWriter2.Write("Time: ;" + (DateTime.Now - data1).ToString() + "\n");

//количество записей

m_CSVWriter2.Write("Count: ;" + list2.Count.ToString() + "\n");

//цена деления

m_CSVWriter2.Write("Frequency (ms): ;" + txtFren.Text + "\n");

//Записываем заголовки осей Х и У

string _xAxisHeader = CheckCSVString(zedGraph2.GraphPane.XAxis.Title.Text);

string _yAxisHeader = CheckCSVString(zedGraph2.GraphPane.YAxis.Title.Text);

m_CSVWriter2.Write(_xAxisHeader + ";" + _yAxisHeader + "\n");

//записываем точки из списка

for (int i = 0; i < list2.Count; i++)

{

m_CSVWriter2.Write(list2[i].X.ToString() + ";" + list2[i].Y.ToString() + "\n");

}

}

//============ End 2

//==============================3

//добавлеение меню(Excel)

private void MyContextMenuBuilder3(ZedGraphControl control, ContextMenuStrip menuStrip,

Point mousePt, ZedGraphControl.ContextMenuObjectState objState)

{

// зодать новую запись меню

ToolStripMenuItem _item = new ToolStripMenuItem();

//Для обращения к меню

_item.Name = "Export Data as CSV";

_item.Tag = "export_data_csv";

//Отображение меню

_item.Text = "Export Data as CSV";

// Получить хендел на функцию меню

_item.Click += new System.EventHandler(ShowSaveAsForExportCSV3);

// Вставить пункт по указанному месту

menuStrip.Items.Insert(2, _item);

}

//функция меню

private void ShowSaveAsForExportCSV3(object sender, System.EventArgs e)

{

try

{

//Отображение диалога для сохранения

saveFileDialog1.Filter = "CSV files (*.csv)|*.csv";

saveFileDialog1.ShowDialog();

//получить имя файла

m_CSVWriter3 = new StreamWriter(saveFileDialog1.FileName);

WriteCSVToStream3(); //запись

m_CSVWriter3.Close(); //закрыть

MessageBox.Show("CSV File Saved", " ZedGraph ", MessageBoxButtons.OK);

}

catch (Exception ex)

{

MessageBox.Show("Выбранный файл недоступен для записи", "Ошибка", MessageBoxButtons.OK);

}

}

//запись в файл

private void WriteCSVToStream3()

{

//записать информацию о измерениях

//название графика

m_CSVWriter3.Write("Name graph: ;" + zedGraph3.GraphPane.Title.Text + "\n");

//время начала

m_CSVWriter3.Write("Date start: ;" + data1.ToString() + "\n");

//время конца

m_CSVWriter3.Write("Date end: ;" + DateTime.Now.ToString() + "\n");

//продолжительность

m_CSVWriter3.Write("Time: ;" + (DateTime.Now - data1).ToString() + "\n");

//количество записей

m_CSVWriter3.Write("Count: ;" + list3.Count.ToString() + "\n");

//цена деления

m_CSVWriter3.Write("Frequency (ms): ;" + txtFren.Text + "\n");

//Записываем заголовки осей Х и У

string _xAxisHeader = CheckCSVString(zedGraph3.GraphPane.XAxis.Title.Text);

string _yAxisHeader = CheckCSVString(zedGraph3.GraphPane.YAxis.Title.Text);

m_CSVWriter3.Write(_xAxisHeader + ";" + _yAxisHeader + "\n");

//записываем точки из списка

for (int i = 0; i < list3.Count; i++)

{

m_CSVWriter3.Write(list3[i].X.ToString() + ";" + list3[i].Y.ToString() + "\n");

}

}

//============ End 3

//==============================4

//добавлеение меню(Excel)

private void MyContextMenuBuilder4(ZedGraphControl control, ContextMenuStrip menuStrip,

Point mousePt, ZedGraphControl.ContextMenuObjectState objState)

{

// зодать новую запись меню

ToolStripMenuItem _item = new ToolStripMenuItem();

//Для обращения к меню

_item.Name = "Export Data as CSV";

_item.Tag = "export_data_csv";

//Отображение меню

_item.Text = "Export Data as CSV";

// Получить хендел на функцию меню

_item.Click += new System.EventHandler(ShowSaveAsForExportCSV4);

// Вставить пункт по указанному месту

menuStrip.Items.Insert(2, _item);

}

//функция меню

private void ShowSaveAsForExportCSV4(object sender, System.EventArgs e)

{

try

{

//Отображение диалога для сохранения

saveFileDialog1.Filter = "CSV files (*.csv)|*.csv";

saveFileDialog1.ShowDialog();

//получить имя файла

m_CSVWriter4 = new StreamWriter(saveFileDialog1.FileName);

WriteCSVToStream4(); //запись

m_CSVWriter4.Close(); //закрыть

MessageBox.Show("CSV File Saved", " ZedGraph ", MessageBoxButtons.OK);

}

catch (Exception ex)

{

MessageBox.Show("Выбранный файл недоступен для записи", "Ошибка", MessageBoxButtons.OK);

}

}

//запись в файл

private void WriteCSVToStream4()

{

//записать информацию о измерениях

//название графика

m_CSVWriter4.Write("Name graph: ;" + zedGraph4.GraphPane.Title.Text + "\n");

//время начала

m_CSVWriter4.Write("Date start: ;" + data1.ToString() + "\n");

//время конца

m_CSVWriter4.Write("Date end: ;" + DateTime.Now.ToString() + "\n");

//продолжительность

m_CSVWriter4.Write("Time: ;" + (DateTime.Now - data1).ToString() + "\n");

//количество записей

m_CSVWriter4.Write("Count: ;" + list4.Count.ToString() + "\n");

//цена деления

m_CSVWriter4.Write("Frequency (ms): ;" + txtFren.Text + "\n");

//Записываем заголовки осей Х и У

string _xAxisHeader = CheckCSVString(zedGraph4.GraphPane.XAxis.Title.Text);

string _yAxisHeader = CheckCSVString(zedGraph4.GraphPane.YAxis.Title.Text);

m_CSVWriter4.Write(_xAxisHeader + ";" + _yAxisHeader + "\n");

//записываем точки из списка

for (int i = 0; i < list4.Count; i++)

{

m_CSVWriter4.Write(list4[i].X.ToString() + ";" + list4[i].Y.ToString() + "\n");

}

}

//============ End 4

private string CheckCSVString(string _string)

{//Check to see if there are any characters that can disturb the CSV delimeters.

string _returnString = _string;

if (_string.IndexOfAny("\",\x0A\x0D".ToCharArray()) > -1)

{

_returnString = "\"" + _string.Replace("\"", "\"\"") + "\"";

}

return _returnString;

}

private void Form1_Load(object sender, EventArgs e)

{

//инициализация графиков

pane0 = zedGraph.GraphPane;

pane1 = zedGraph1.GraphPane;

pane2 = zedGraph2.GraphPane;

pane3 = zedGraph3.GraphPane;

pane4 = zedGraph4.GraphPane;

//инициализация проверочных графиков

paneControl0= zedGraphControl5.GraphPane;

paneControl1 =zedGraphControl4.GraphPane;

paneControl2 =zedGraphControl3.GraphPane;

paneControl3= zedGraphControl2.GraphPane;

paneControl4 =zedGraphControl1.GraphPane;

// Устанавливаем цвет линии и привязываем список точек

Color curveColor = Color.Black;

LineItem myCurve0 = pane0.AddCurve("", list0, curveColor, SymbolType.None);

LineItem myCurve1 = pane1.AddCurve("", list1, curveColor, SymbolType.None);

LineItem myCurve2 = pane2.AddCurve("", list2, curveColor, SymbolType.None);

LineItem myCurve3 = pane3.AddCurve("", list3, curveColor, SymbolType.None);

LineItem myCurve4 = pane4.AddCurve("", list4, curveColor, SymbolType.None);

LineItem myCurveControl0 = paneControl0.AddCurve("", listControl0, curveColor, SymbolType.None);

LineItem myCurveControl1 = paneControl1.AddCurve("", listControl1, curveColor, SymbolType.None);

LineItem myCurveControl2 = paneControl2.AddCurve("", listControl2, curveColor, SymbolType.None);

LineItem myCurveControl3 = paneControl3.AddCurve("", listControl3, curveColor, SymbolType.None);

LineItem myCurveControl4 = paneControl4.AddCurve("", listControl4, curveColor, SymbolType.None);

//Задать оси и названия графиков

pane0.Title.Text = "Graph0";

pane0.XAxis.Title.Text = "X";

pane0.YAxis.Title.Text = "Y";

pane1.Title.Text = "Graph1";

pane1.XAxis.Title.Text = "X";

pane1.YAxis.Title.Text = "Y";

pane2.Title.Text = "Graph2";

pane2.XAxis.Title.Text = "X";

pane2.YAxis.Title.Text = "Y";

pane3.Title.Text = "Graph3";

pane3.XAxis.Title.Text = "X";

pane3.YAxis.Title.Text = "Y";

pane4.Title.Text = "Graph4";

pane4.XAxis.Title.Text = "X";

pane4.YAxis.Title.Text = "Y";

//Задаем оси для проверочных графиков

paneControl0.Title.Text = "Graph0";

paneControl0.XAxis.Title.Text = "X";

paneControl0.YAxis.Title.Text = "Y";

paneControl1.Title.Text = "Graph1";

paneControl1.XAxis.Title.Text = "X";

paneControl1.YAxis.Title.Text = "Y";

paneControl2.Title.Text = "Graph2";

paneControl2.XAxis.Title.Text = "X";

paneControl2.YAxis.Title.Text = "Y";

paneControl3.Title.Text = "Graph3";

paneControl3.XAxis.Title.Text = "X";

paneControl3.YAxis.Title.Text = "Y";

paneControl4.Title.Text = "Graph4";

paneControl4.XAxis.Title.Text = "X";

paneControl4.YAxis.Title.Text = "Y";

}

//начать опрос

private void button1_Click(object sender, EventArgs e)

{

//открыть файл для записи (Excel)

try

{

//получить имя файла

global_CSVWriter = new StreamWriter(txtSave.Text);

//записать шапку

//записать информацию о измерениях

//время начала

global_CSVWriter.Write("Date start: ;" + data1.ToString() + "\n");

//цена деления

global_CSVWriter.Write("Frequency (ms): ;" + txtFren.Text + "\n");

//название графика

global_CSVWriter.Write("Name graph: ;" + zedGraph.GraphPane.Title.Text +";;;"

+ zedGraph1.GraphPane.Title.Text +";;;"

+ zedGraph2.GraphPane.Title.Text +";;;"

+ zedGraph3.GraphPane.Title.Text +";;;"

+ zedGraph4.GraphPane.Title.Text +"\n");

//Записываем заголовки осей Х и У

string _xAxisHeader0 = CheckCSVString(zedGraph.GraphPane.XAxis.Title.Text);

string _yAxisHeader0 = CheckCSVString(zedGraph.GraphPane.YAxis.Title.Text);

string _xAxisHeader1 = CheckCSVString(zedGraph1.GraphPane.XAxis.Title.Text);

string _yAxisHeader1 = CheckCSVString(zedGraph1.GraphPane.YAxis.Title.Text);

string _xAxisHeader2 = CheckCSVString(zedGraph2.GraphPane.XAxis.Title.Text);

string _yAxisHeader2 = CheckCSVString(zedGraph2.GraphPane.YAxis.Title.Text);

string _xAxisHeader3 = CheckCSVString(zedGraph3.GraphPane.XAxis.Title.Text);

string _yAxisHeader3 = CheckCSVString(zedGraph3.GraphPane.YAxis.Title.Text);

string _xAxisHeader4 = CheckCSVString(zedGraph4.GraphPane.XAxis.Title.Text);

string _yAxisHeader4 = CheckCSVString(zedGraph4.GraphPane.YAxis.Title.Text);

global_CSVWriter.Write( _xAxisHeader0 + ";" + _yAxisHeader0 + ";;"

+ _xAxisHeader1 + ";" + _yAxisHeader1 + ";;"

+ _xAxisHeader2 + ";" + _yAxisHeader2 + ";;"

+ _xAxisHeader3 + ";" + _yAxisHeader3 + ";;"

+ _xAxisHeader4 + ";" + _yAxisHeader4 + "\n");

serialPort1.PortName = txtPort.Text;

serialPort1.BaudRate = 19200;

serialPort1.Open();

serialPort1.ReadTimeout = 100;

serialPort1.Write("s"); //начало измерений

//очистить графики

list0.Clear();

list1.Clear();

list2.Clear();

list3.Clear();

list4.Clear();

x = 0;

listControl0.Clear();

listControl1.Clear();

listControl2.Clear();

listControl3.Clear();

listControl4.Clear();

//задаем настройки опроса

switch (txtFren.Text)

{

case "1000":

timer1.Interval = 1000;

break;

case "1500":

timer1.Interval = 1500;

break;

case "2000":

timer1.Interval = 2000;

break;

case "2500":

timer1.Interval = 2500;

break;

case "3000":

timer1.Interval = 3000;

break;

}

//заблокировать кнопки

button1.Enabled = false;

btnStart.Enabled = false;

button2.Enabled = true;

//Отобразить время начала измерений

data1 = DateTime.Now;

lblStart.Text = DateTime.Now.ToString();

timer1.Enabled = true;

serialPort1.Write("r"); //команда получить данные

// Обновим график

zedGraph.AxisChange();

zedGraph.Invalidate();

zedGraph1.AxisChange();

zedGraph1.Invalidate();

zedGraph2.AxisChange();

zedGraph2.Invalidate();

zedGraph3.AxisChange();

zedGraph3.Invalidate();

zedGraph4.AxisChange();

zedGraph4.Invalidate();

//проверочные

zedGraphControl1.AxisChange();

zedGraphControl1.Invalidate();

zedGraphControl2.AxisChange();

zedGraphControl2.Invalidate();

zedGraphControl3.AxisChange();

zedGraphControl3.Invalidate();

zedGraphControl4.AxisChange();

zedGraphControl4.Invalidate();

zedGraphControl5.AxisChange();

zedGraphControl5.Invalidate();

}

catch (Exception ex)

{

// в случае исключения прекратить процедуру

global_CSVWriter.Close();

serialPort1.Close();

//MessageBox.Show(ex.ToString());

MessageBox.Show("COM порт недоступен, или запрещена запись в файл.", " Ошибка ", MessageBoxButtons.OK);

}

}

//таймер опроса датчиков

private void timer1_Tick(object sender, EventArgs e)

{

byte[] Mes = new byte[11]; //массив входных данных

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]