- •1.2.1.2 Лінійні датчики серії длп.
- •1.3 Датчики кута повороту – енкодери
- •1.4 Датчики кута нахилу - инклинометра.
- •1.5 Принцип роботи uart.
- •3.1.2 Критерій вибору датчика для визначення лінійного зміщення.
- •5.1 Визначення вартості витратних матеріалів, необхідних для розробки програмного продукту
- •5.3 Розрахунок відрахувань на соціальні заходи
- •5.4 Розрахунок витрат на оплату машинного часу при розробці програмного продукту
- •5.5 Розрахунок інших накладних витрат у складі витрат на розробку програмного продукту
- •5.6 Розрахунок собівартості апаратного забезпечення
- •5.7.2 Аналіз собівартості системи
- •Висновок
- •Додаток а
- •Єдина тарифна сітка розрядів і коефіцієнтів по оплаті праці робітників
- •Розрахунок сумарної потужності устаткування
- •Приложение I
- •Int y0,y1,y2,y3,y4; //буфер для значения датчика
Приложение 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]; //массив входных данных