Фрагмент текста программы терминала для компьютеров с процессорами х86 и операционной системой Windows:
using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.IO.Ports;System.IO;ERNC_COMPort
{partial class Form1 : Form
{
// string str;void SetTextCallback(string text);Form1()
{();
}void Form1_Load(object sender, EventArgs e)
{
{[] availablePorts = SerialPort.GetPortNames();(string port in availablePorts)
{.Items.Add(port);
}.Text = comboBox5.Items[0].ToString();
// comboBox4.Text = "1";.StopBits = StopBits.One;.DataBits = 8;.BaudRate = 115200;.PortName = comboBox5.Text;.Parity = Parity.None;
}(Exception e9)
{.Show(e9.Message);
}
}void button1_Click(object sender, EventArgs e)
{
{.Open();(serialPort1.IsOpen)
{.Enabled = false;.Enabled = true;.Enabled = false;_load.Enabled = true;_save.Enabled = true;
}
}(Exception e1)
{.Show(e1.Message);
}
}void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
{.Text = comboBox5.SelectedItem.ToString();.PortName = comboBox5.Text;
}void button5_Click(object sender, EventArgs e)
{
{.Close();(!serialPort1.IsOpen)
{.Enabled = true;.Enabled = false;.Enabled = true;_load.Enabled = false;_save.Enabled = false;
}
}(Exception e2)
{.Show(e2.Message);
}
}void N_tel_list_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{(N_tel_list.CurrentCell.ColumnIndex == 0)
{tb = (TextBox)e.Control;.KeyPress += new KeyPressEventHandler(tb_KeyPress);
}
{tb = (TextBox)e.Control;.KeyPress -= tb_KeyPress;
}
}tb_KeyPress(object sender, KeyPressEventArgs e)
{((!Char.IsNumber(e.KeyChar) && (e.KeyChar != '-') && (e.KeyChar != ',')))
{((e.KeyChar != (char)Keys.Back) || (e.KeyChar != (char)Keys.Delete))
{ e.Handled = true; }
}
}void bt_add_Click(object sender, EventArgs e)
{_tel_list.Rows.Add();_N_num.Text = Convert.ToString(N_tel_list.Rows.Count);_tel_list.Rows[N_tel_list.Rows.Count - 1].Cells[0].Value = Convert.ToUInt32(tb_add.Text);
}void bt_del_Click(object sender, EventArgs e)
{(int i = 0; i < N_tel_list.SelectedRows.Count; i++)
{_tel_list.Rows.RemoveAt(N_tel_list.SelectedRows[0].Index);
}_N_num.Text = Convert.ToString(N_tel_list.Rows.Count);
}void bt_save_Click(object sender, EventArgs e)
{[] com = new byte[1];[] mas_N_tel = new byte[4];[] mas_index = new byte[2];i;[0] = 0x01;_index[0] = (byte)(N_tel_list.Rows.Count);_index[1] = (byte)(N_tel_list.Rows.Count >> 8);.Write(com, 0, 1);.Write(mas_index, 0, mas_index.Length);(i = 0; i < N_tel_list.Rows.Count; i++)
{N_tel = Convert.ToUInt32(N_tel_list.Rows[i].Cells[0].Value);_N_tel[0] = (byte)(N_tel);_N_tel[1] = (byte)(N_tel >> 8);_N_tel[2] = (byte)(N_tel >> 16);_N_tel[3] = (byte)(N_tel >> 24);.Write(mas_N_tel, 0, mas_N_tel.Length);
}
}void bt_load_Click(object sender, EventArgs e)
{[] com = new byte[3];[] in_mas = new byte[60000];[] N_tel = new uint[15000];[] mas_N_tel = new byte[4];[] mas_index = new byte[2];i,j=0,N_rec;(N_tel_list.Rows.Count != 0) while (N_tel_list.Rows.Count != 0) N_tel_list.Rows.Remove(N_tel_list.Rows[N_tel_list.Rows.Count - 1]);[0] = 0x03;[1] = 0x00;[2] = 0x00;.Write(com, 0, 3);_rec = (int)serialPort1.ReadByte() | (int)serialPort1.ReadByte() << 8;(i = 0; i < N_rec*4; i++) in_mas[i] = (byte)(serialPort1.ReadByte());= 0;(j = 0; j < N_rec; j++)
{_tel[j] = (uint)(in_mas[i]) | (uint)(in_mas[i+1]) << 8 | (uint)(in_mas[i+2]) << 16 | (uint)(in_mas[i+3]) << 24;_tel_list.Rows.Add();_tel_list.Rows[N_tel_list.Rows.Count - 1].Cells[0].Value = N_tel[j];= i + 4;
}_N_num.Text = Convert.ToString(N_tel_list.Rows.Count);
}void bt_search_Click(object sender, EventArgs e)
{N_tel_search = Convert.ToUInt32(tb_search.Text);(int i = 0; i < N_tel_list.Rows.Count; i++) if (Convert.ToUInt32(N_tel_list.Rows[i].Cells[0].Value) == N_tel_search)
{_tel_list.CurrentCell = N_tel_list[0, i];
break;
}
}
}
}
Выводы по разделу
В ходе выполнения специальной части проекта был создан блок управления шлагбаумом с использованием GSM сети, обладающий следующими характеристиками:
возможность хранения номеров до 19000 абонентов;
возможность корректировки списка номеров телефонов дистанционно с использованием Wi-Fi сети;
возможность считывания и имитации сигналов пультов практически любых шлагбаумов;
лёгкая интеграция в существующие системы без доработки конструкции;
возможность автономной работы при временном отсутствии напряжения питания;
за счёт универсальности конструкции возможность установки, как в помещениях, так и на улице, в любом удобном для заказчика месте в зоне действия передатчика 433 Мгц.
блок управление шлагбаум сигнал
11. Экономическая часть
.1 Планирование разработки блока управления шлагбаумом с построением ленточного
графика
.1.1 Определение трудоёмкости и продолжительности работ по созданию блока управления шлагбаумом
Процесс разработки включает: обзор и анализ аналогичных систем управления шлагбаумами, анализ и выбор аппаратных и программных средств для создания системы; отладка; испытание. Согласно ГОСТ 23501.1-79 регламентируются следующие стадии проведения исследования:
техническое задание - ТЗ (ГОСТ 23501.2-79);
эскизный проект - ЭП (ГОСТ 23501.5-80);
технический проект - ТП (ГОСТ 23501.6-80);
рабочий проект - РП (ГОСТ 23501.11-81);
внедрение - ВП (ГОСТ 23501.15-81).
В таблице 11.1.
приведён перечень работ, выполняемых на всех стадиях разработки БУШ.
Таблица 11.1 - Состав работ и стадии разработки БУШ
|
Стадии разработки |
Перечень работ |
|
Техническое задание |
- постановка задачи; - подбор литературы; - сбор исходных данных; - определение требований к системе; - определение этапов, и сроков. |
|
Эскизный проект |
- анализ аналогичных систем; - разработка общей структуры системы; - детализация подсистем в первом приближении; -документирование. |
|
Технический проект |
- разработка структуры системы; - выбор и описание элементов системы; - разработка управляющей программы. |
|
Рабочий проект |
- описание технических особенностей элементов системы; - программирование; - разработка программной документации; - согласование и утверждение программы и методики испытаний. |
|
Внедрение |
- опытная эксплуатация; - анализ данных, полученных в результате опытной эксплуатации; - корректировка технической документации по результатам испытаний. |
Трудоёмкость разработки БУШ на каждой из стадий определяется как сумма трудоёмкостей входящих в них работ, оцениваемых экспертным путём в человеко-днях, и носит вероятностный характер, так как зависит от множества трудно-учитываемых факторов.
Трудоёмкость каждой отдельной
работы определяется по формуле (3.1).
, (3.1)
где
tmin - минимально возможная трудоёмкость выполнения данной работы в человеко-днях;
tmax - максимально возможная трудоёмкость выполнения этой работы в человеко-днях.
Продолжительность каждого вида работ в календарных днях (Ti) определяется по формуле
(3.2), в днях.
, (3.2)
где
ti - трудоёмкость работ, человек-дней;
Чi - численность исполнителей, человек;
Kвых - коэффициент, учитывающий выходные и праздничные дни, вычисляется по
формуле (3.3).
, (3.3)
где
Ккал. - число календарных дней;
Краб. - число рабочих дней.
Для расчёта принимается среднее значение Kвых=1,47.
Полный список видов и этапов работ по созданию
программного продукта, экспертные оценки и расчётные величины их
трудоёмкости, а также продолжительность каждого вида работ,
рассчитанные по формулам (3.1) и (3.2), представлены в таблице 11.2.
Таблица 11.2. - Расчёт трудоёмкости и продолжительности работ по созданию системы мониторинга.
|
№ п/п |
Наименование стадий и работ |
Трудоёмкость, человеко-дни |
Количество исполнителей, чел. |
Продолжи- тельность, календарные дни |
|||
|
|
|
tmin |
tmax |
ti |
Чi |
Тi |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
Техническое задание |
|||||||
|
1 |
Постановка задачи |
3 |
3 |
3 |
2 |
2,2 |
|
|
2 |
Подбор литературы |
4 |
4 |
4 |
1 |
5,88 |
|
|
3 |
Сбор исходных данных |
5 |
5 |
5 |
1 |
7,35 |
|
|
4 |
Определение требований к системе |
3 |
3 |
3 |
2 |
2,2 |
|
|
5 |
Определение стадий, этапов и сроков разработки системы |
2 |
2 |
2 |
2 |
1,47 |
|
|
Эскизный проект |
|||||||
|
6 |
Анализ аналогичных систем |
2 |
2 |
2 |
1 |
2,94 |
|
|
7 |
Разработка общей структуры системы |
2 |
3 |
2,4 |
2 |
1,77 |
|
|
8 |
Детализация подсистем в первом приближении |
1 |
2 |
1,4 |
2 |
1,03 |
|
|
9 |
Документирование |
2 |
3 |
2,4 |
1 |
3,53 |
|
|
Технический проект |
|||||||
|
10 |
Разработка структуры системы |
5 |
5 |
5 |
1 |
7,35 |
|
|
11 |
Выбор и описание элементов системы |
2 |
3 |
2,4 |
1 |
3,53 |
|
|
12 |
Разработка управляющей программы |
5 |
5 |
5 |
1 |
7,35 |
|
|
Рабочий проект |
|||||||
|
13 |
Описание технических особенностей элементов системы |
3 |
4 |
3,4 |
1 |
5 |
|
|
14 |
Программирование |
11 |
13 |
11,8 |
1 |
17,35 |
|
|
15 |
Разработка программной документации |
4 |
5 |
4,4 |
1 |
6,47 |
|
|
16 |
Согласование и утверждение программы и методики испытаний |
1 |
2 |
1,4 |
2 |
1,03 |
|
|
Внедрение |
|||||||
|
17 |
6 |
7 |
6,4 |
1 |
9,4 |
||
|
18 |
Анализ данных, полученных в результате опытной эксплуатации |
2 |
3 |
2,4 |
1 |
3,53 |
|
|
19 |
Корректировка технической документации по результатам испытаний |
2 |
2 |
2 |
1 |
2,94 |
|
|
Итого |
|
|
70 |
|
93 |
||
Таким образом, общая трудоёмкость разработки программного продукта
составляет 70 человеко-дней, а их продолжительность - 93 календарных дней.
.1.2 Построение ленточного графика разработки программного продукта
В качестве инструмента планирования работ используем ленточный график. Ленточный график является удобным, простым и наглядным инструментом для планирования работ. Он представляет собой таблицу, где перечислены работы и длительность выполнения каждой из них. Продолжением таблицы является линейный график, построенный в масштабе, наглядно показывающий продолжительность каждой работы в виде отрезков прямых, располагающихся в соответствии с последовательностью выполнения работ.
Ленточный график разработки программного продукта, построенный по данным
таблицы 11.2, приведён на рисунке 11.1.
Рисунок
11.1. Ленточный график разработки системы
График позволяет наглядно представить логическую
последовательность и взаимосвязь отдельных работ, сроки начала и окончания
работ, соблюдение которых обеспечит своевременное выполнение проекта и
разработку программного продукта.
11.2
Расчёт сметы затрат на разработку программного обеспечения
Сметная стоимость проектирования и внедрения системы
включает в себя затраты, определяемые по формуле (3.4)
Спр=Сосн+Сдоп+Снзп+См+Смаш.вр+Сн; (3.4)
где
Спр- стоимость разработки системы;
См - затраты на используемые материалы;
Сосн - основная заработная плата исполнителей;
Сдоп - дополнительная заработная плата исполнителей, учитывающая потери времени на отпуска и болезни (принимается в среднем 10% от основной заработной платы);
Снзп -обязательные начисления на заработную плату;
Сн - накладные расходы включают затраты на управление, уборку, ремонт, электроэнергию, отопление и другие хозяйственные расходы (принимаются в размере 60% от основной и дополнительной заработной платы);
Смаш.вр - стоимость машинного времени.
11.2.1 Основная заработная плата исполнителей
На статью «Заработная плата» относят заработную плату
научных, инженерно-технических и других работников, непосредственно участвующих
в разработке ПС. Расчёт ведётся по формуле (3.5)
Зисп=Зср*Т , (3.5)
где
Зисп - заработная плата исполнителей (руб.);
Зср - средняя дневная тарифная ставка работника организации разработчика программного продукта (руб./чел.дни);
Т - трудоёмкость разработки ПС (чел./дни).
Зср определяется по формуле (3.6):
Зср=С/Фмес , (3.6)
где:
С - месячная зарплата работника (руб./мес.);
Фмес - среднее количество рабочих дней в месяце (20дн.).
Расчёт затрат на основную заработную плату
разработчиков программного продукта приведен в таблице 11.3
Таблица 11.3- Затраты на заработную плату
|
№ |
Исполнитель |
Оклад, руб./мес. |
Оклад, руб./день |
Трудоёмкость, чел. дней |
Сумма, руб. |
|
1 |
2 |
3 |
4 |
5 |
6 |
|
1 |
Инженер-программист |
15000 |
750 |
70 |
52500 |
|
2 |
Руководитель |
30000 |
1500 |
6 |
9000 |
|
Итого Сосн |
76 |
61500 |
|||
.2.2 Дополнительная заработная плата
Дополнительная заработная плата на период разработки системы
рассчитывается относительно основной и составляет 10% от её величины.
Сдоп=Сосн*0.1=61500*0,1=6150 руб.
.2.3 Расчёт обязательных начислений на заработную плату
Согласно Федеральному закону от 24.12.2009 №212-ФЗ «О страховых взносах в пенсионный фонд Российской Федерации, фонд социального страхования Российской Федерации, федеральный фонд обязательного медицинского страхования и территориальные фонды обязательного медицинского страхования» совокупность фискальной нагрузки на предприятия составляет:
- 30% от суммы основной и дополнительной заработной платы в отношении каждого работника нарастающим итогом с начала года и до 512 000 руб.
10% от суммы основной и дополнительной заработной платы в
отношении каждого работника нарастающим итогом с начала года и составляет более
512 000 руб.
Величина
годовых обязательных начислений на заработную плату (Снзп) определяется по
формуле (3.7).
Снзп = (Сосн + Сдоп) * 30%, руб. (3.7)
Снзп = (61500 + 6150) *0,3 = 20295 руб.
.2.4 Расчёт расходов на материалы
На эту статью относят все затраты на приобретаемые
устройства, магнитные носители данных, бумагу, для печатных устройств,
канцтовары и др. Затраты по ним определяются по экспертным оценкам. Расчёт расходов на материалы приведен в
таблице 11.4
Таблица 11.4. Расчёт затрат на материалы
|
№ |
Материалы |
Количество, штуки |
Стоимость, рубли |
|
1 |
2 |
3 |
4 |
|
1 |
Модуль SIM900 |
1 |
1587 |
|
2 |
Wi-Fi модуль HLK-RM04 |
1 |
1299 |
|
3 |
Договор с оператором сотовой связи + SIM-карта |
1 |
200 |
|
4 |
Передатчик FS1000A |
1 |
1050 |
|
5 |
Li-ion аккумулятор |
1 |
550 |
|
6 |
Пластиковый корпус G1022BF |
1 |
925 |
|
7 |
Микроконтроллер STM32F103C8T6 |
1 |
280 |
|
8 |
EEPROM 24C512 |
1 |
350 |
|
9 |
Приёмник XY-MK-5V |
1 |
660 |
|
|
Итого, См |
|
6901 |