Разработка, реализация и внедрение системы диспетчерского контроля состояния котельной

Назначение и специфика программного обеспечения "NordVision". Оценка его качества, надежности, работоспособности и устойчивости. Разработка структуры программы, пользовательского интерфейса и основных алгоритмов. Организация контекстно-зависимой помощи.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.02.2015
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Соблюдение перечисленных в этом разделе дипломного проекта элементарных правил позволит сохранить здоровье, как пользователям персональной компьютерной техники, так и ей самой.

5.3 Разработка мероприятий противопожарной безопасности рабочего помещения

Пожары в ВЦ представляют особую опасность, так как сопряжены с большими материальными потерями. Характерная особенность ВЦ - небольшие площади помещений. Как известно, пожар может возникнуть при взаимодействии горючих веществ, окисления и источников зажигания. В помещениях ВЦ присутствуют все три основные фактора, необходимые для возникновения пожара.

Горючими компонентами на ВЦ являются: строительные материалы для акустической и эстетической отделки помещений, перегородки, двери, полы, перфокарты и перфоленты, изоляция кабелей и др.

Пожаром называется неконтролируемое горение вне специального очага, наносящее материальный ущерб. Особенностью пожаров в закрытых помещениях является сравнительно медленное горении в течение первых 30-40 минут из-за недостаточного притока воздуха в зону горения. После разрушения остекления интенсивность пожара резко возрастает. Скорость горения различных веществ колеблется в широких пределах.

Под пожарной безопасностью понимается такое состояние объекта, при котором с большой вероятностью предотвращается возможность возникновения пожара, а в случае его возникновения обеспечивается эффективная защита людей от опасных и вредных факторов пожара и спасение материальных ценностей. Пожарная безопасность производственных объектов обеспечивается разработкой и осуществлением систем предотвращения пожаров и систем пожарной защиты. Для предотвращения пожаров необходимо исключить возникновение источников (импульсов) зажигания.

Источниками зажигания в ВЦ могут быть электронные схемы от ЭВМ, приборы, применяемые для технического обслуживания, устройства электропитания, кондиционирования воздуха, где в результате различных нарушений образуются перегретые элементы, электрические искры и дуги, способные вызвать загорания горючих материалов.

В современных ЭВМ очень высока плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, кабели. При протекании по ним электрического тока выделяется значительное количество теплоты. При этом возможно плавление изоляции. Для отвода избыточной теплоты от ЭВМ служат системы вентиляции и кондиционирования воздуха. При постоянном действии эти системы представляют собой дополнительную пожарную опасность.

Опасна перегрузка электропитающих сетей, что влечет за собой разогрев токоведущих проводников и возгорание электроизоляции, а также примыкающих материалов, способных воспламениться. Ослабленный электрический контакт в месте соединения проводников приводит к возникновению больших переходных сопротивлений и повышенному выделению теплоты.

Для большинства помещений ВЦ установлена категория пожарной опасности Е.

Одной из наиболее важных задач пожарной защиты является защита строительных помещений от разрушений и обеспечение их достаточной прочности в условиях воздействия высоких температур при пожаре. Учитывая высокую стоимость электронного оборудования ВЦ, а также категорию его пожарной опасности, здания для ВЦ и части здания другого назначения, в которых предусмотрено размещение ЭВМ, должны быть 1 и 2 степени огнестойкости.

Для изготовления строительных конструкций используются, как правило, кирпич, железобетон, стекло, металл и другие негорючие материалы. Применение дерева должно быть ограниченно, а в случае использования необходимо пропитывать его огнезащитными составами.

Каждое предприятие должно быть оснащено определенным количеством тех или иных видов пожарной техники в соответствии с принятыми нормами.

На производствах категории Е, к которым относятся вычислительные центры, для обеспечения пожаробезопасности принимаются следующие меры:

применяются стационарные аэрозольные (галоидоуглеводородные) и порошковые установки пожаротушения, в которых все элементы смонтированы и постоянно находятся в готовности к действию. Такие установки подразделяются на автоматические (приводятся в действие и при отсутствии в здании людей) и дистанционные (приводятся в действие людьми);

Для ликвидации небольших загораний используются огнетушители:

воздушно-пенные ОВП-5 и ОВП-10 (давление в корпусе создается сжатым диоксидом углерода);

СО2-огнетушители (углекислотные для тушения электроустановок под напряжением до 10 кВ) типа ОУ-2, ОУ-5, ОУ-8;

порошковые типа ОП-1 «Момент», ОП-2А, ОП10-А и т.д.

Для обнаружения загорания служат пожарные извещатели, реагирующие на дым, свет, температуру или сразу на несколько факторов.

В производственных помещениях ВЦ применяются главным образом углекислотные огнетушители, достоинством которых является высокая эффективность тушения пожара, сохранность электронного оборудования, диэлектрические свойства углекислого газа, что позволяет использовать эти огнетушители даже в том случае, когда сразу не удается обесточить электроустановку.

В соответствии с «Типовыми правилами пожарной безопасности для промышленных предприятий» залы ЭВМ, помещения для внешних запоминающих устройств, подготовки данных, сервисной аппаратуры, архивов, копировально-множительного оборудования и т.п. необходимо оборудовать дымовыми пожарными вещателями. В этих помещениях в начале пожара при горении различных пластмассовых, изоляционных материалов и бумажных изделий выделяется значительное количество дыма и мало теплоты.

Объекты ВЦ кроме АПС необходимо оборудовать установками стационарного автоматического пожаротушения. Наиболее целесообразно применять в ВЦ установки газового тушения пожара, действие которых основано на быстром заполнении помещения огнетушащим газовым веществом с резким снижением содержания в воздухе кислорода.

Кроме того, на руководителей предприятия возлагается ответственность за организацию пожарной охраны объекта и проведение мероприятий, в частности, инструктажа работающих по пожарной безопасности.

программа интерфейс алгоритм качество

Заключение

В процессе разработки программного продукта «NordVision» были учтены требования предъявляемые к программному обеспечению (п.2.2.3).

Рассчитаем полученное в результате дипломного проектирования значение (критерий) эффективности системы для частных показателей качества согласно методике и коэффициентам, определенных в п. 2.2.9.

Для частных показателей качества были получены следующие значения:

Удобство программного обеспечения - 5,5 баллов (п. 4.3.2.1).

Надежность программного обеспечения - 5 баллов (п. 4.3.2.2).

Произведем нормирование коэффициентов путем отнесения показателя к его интервалу изменений (интервал изменений приведен в таблице 2.11). Нормирование по диапазону изменений частного показателя производится по формуле, удовлетворяющих принципу «чем больше, тем лучше»:

, (7.1)

Нормированные значения показателей приведены в таблице 7.1.

Таблица 7.1.

Показатели

Минимальное

Максимальное

Требуемое значение

Нормированное значение

Удобство программного обеспечения

0

6

5

0,83

Надежность программного обеспечения

0

5

5

1

Определим эффективность системы, по нормированным значениям из таблицы 8.1 и согласующим коэффициентам из таблицы 2.10:

= 0,5 * 0,83 + 0,5 * 1= 0,92

Поскольку в концепции проекта (п.2.4) было определено, что показатель эффективности, рассчитанный для частных показателей качества согласно методике и коэффициентам, определенным в п. 2.2.9, для разрабатываемого программного комплекса должен составить не ниже критерия =0,92. Согласно п. 2.3.2.3, можно сделать вывод, что проектирование было выполнено успешно.

Достоинства спроектированного ПО «NordVision», на наш взгляд, заключаются в следующем:

· с программой может работать даже неопытный пользователь;

· задача разработана с учетом особенностей работы котельной.

Литература

Общие методические указания по дипломному проектированию. - Л.: СЗПИ, 1985.

Методические указания по дипломному проектированию для студентов специальности 2201. - СПб.: СЗПИ, 1994.

Брук В.М., Николаев В.И. Начала общей теории систем. - Л.: СЗПИ, 1977.

Николаев В.И., Брук В.М. Системотехника: методы и приложения. - Л.: Машиностроение, Ленинградское отделение, 1985.

Николаев В.И., Серебрянская Л.Л. Теория систем: методы и приложения: Текст лекций. Вып. 2.- Л.: СЗПИ, 1991.

Николаев В.И., Фаткиева Р.Р. Системный анализ. Часть 1 Системное проектирование СПб: СЗТУ 2002.

Копейкин М.В., Спиридонов В.В., Шумова Е.О. Базы данных. Концепция баз данных.: Уч. пос. - СПб.: СЗТУ, 2004.

Копейкин М.В., Спиридонов В.В., Шумова Е.О. Базы данных. Инфологические модели баз данных.: Уч. пос. - СПб.: СЗТУ, 2004.

Копейкин М.В., Спиридонов В.В., Шумова Е.О. Базы данных. Основы SQL реляционных баз данных.: Уч. пос. - СПб.: СЗТУ, 2004.

Технология разработки программных продуктов: Техническая документация на этапе создания программного изделия. - М.: Гум.-техн. колледж «Метод», 1999.

Боуман Д.С., Эмерсон С. Л., Дарновски М. Практическое руководство по SQL, 3-е издание.: Перевод с англ.: уч. Пос. - М.: Издательский дом «Вильямс», 2001.: ил.

Организация, планирование и управление предприятием: Методические указания к организационно-экономической части дипломных работ. - СПб.: СЗПИ, 1993.

Организация и планирование производства: Управление предприятием: Экономическое обоснование дипломных проектов. - СПб.: СЗПИ, 1993.

Гуткин В.И., Безопасность жизнедеятельности при эксплуатации ПК: Уч. пос. - СПб.: СЗТУ, 2004.

Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы, санитарные правила и нормы от 14 июля 1996 г. № 14, СанПиН 2.2.2.542-96.

Основы безопасности жизнедеятельности. - М.: Гум.-техн. колледж «Метод», 1998.

Приложение № 1

Экранные формы

Приложение № 2

Таблица 7.1

Образцы выходных форм

Источник

Авария

Время

Котел 1: Авария УПП первичного воздуха

k1

03.11.2011 16:26:17

Котел 1: Давление пара максимальное

k1

03.11.2011 16:26:17

Котел 1: Авария нет напряжения

k1

03.11.2011 16:26:17

Котел 1: Уровень воды максимальный

k1

03.11.2011 16:26:17

Котел 1: Авария нет напряжения

k1

03.11.2011 16:22:55

Котел 1: Авария УПП первичного воздуха

k1

03.11.2011 16:22:55

Котел 1: Давление пара максимальное

k1

03.11.2011 16:22:55

Котел 1: Уровень воды максимальный

k1

03.11.2011 16:22:55

Деаэратор 2: Ошибка клапана питательной воды

dr

03.11.2011 16:20:41

Деаэратор: Ошибка ПЧ насоса 3

dr

03.11.2011 16:20:41

Деаэратор: Ошибка ПЧ насоса 2

dr

03.11.2011 16:20:41

Деаэратор: Ошибка ПЧ насоса 1

dr

03.11.2011 16:20:41

Деаэратор: Ошибка клапана подогрева

dr

03.11.2011 16:20:41

Деаэартор 2: Ошибка клапана пара в водяное пространство

dr

03.11.2011 16:20:41

Деаэратор 1: Ошибка клапана пара в водяное пространство

dr

03.11.2011 16:20:41

Деаэратор 1: Ошибка клапана пара в паровое пространство

dr

03.11.2011 16:20:41

Деаэратор: Насос 1: Давление минимальное

dr

03.11.2011 16:20:41

Котел 1: Авария нет напряжения

k1

03.11.2011 16:20:37

Котел 1: Авария УПП первичного воздуха

k1

03.11.2011 16:20:37

Приложение № 3

Исходный текст главного модуля ПО «NordVision»

MainWindow.xaml.cs

using System;

using System.Collections.Generic;

using System.Collections.ObjectModel;

using System.ComponentModel;

using System.IO;

using System.Linq;

using System.Threading;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Input;

using System.Windows.Markup;

using System.Windows.Threading;

using Npgsql;

namespace cherepovec

{

/// <summary>

/// Interaction logic for MainWindow.xaml

/// </summary>

public partial class MainWindow : Window

{

public class ObservableCollectionEx<T> : ObservableCollection<T>

{

// Override the event so this class can access it

public override event System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged;

protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)

{

// Be nice - use BlockReentrancy like MSDN said

using (BlockReentrancy())

{

System.Collections.Specialized.NotifyCollectionChangedEventHandler eventHandler = CollectionChanged;

if (eventHandler == null)

return;

Delegate[] delegates = eventHandler.GetInvocationList();

// Walk thru invocation list

foreach (System.Collections.Specialized.NotifyCollectionChangedEventHandler handler in delegates)

{

DispatcherObject dispatcherObject = handler.Target as DispatcherObject;

// If the subscriber is a DispatcherObject and different thread

if (dispatcherObject != null && dispatcherObject.CheckAccess() == false)

{

// Invoke handler in the target dispatcher's thread

dispatcherObject.Dispatcher.Invoke(DispatcherPriority.DataBind, handler, this, e);

}

else // Execute handler as is

handler(this, e);

}

}

}

}

Thread thr1;

DispatcherTimer _timer;

bool running = true;

bool playAlarm = false;

bool[] oldAlarmsK1 = new bool[300];

bool[] oldAlarmsK2 = new bool[300];

bool[] oldAlarmsK3 = new bool[300];

bool[] oldAlarmsTk = new bool[300];

bool[] oldAlarmsDr = new bool[300];

private NpgsqlConnection conn = new NpgsqlConnection(Properties.Settings.Default.connString);

public ObservableCollection<int> k1ActMi = new ObservableCollection<int>();

public ObservableCollection<bool> k1ActMb = new ObservableCollection<bool>();

public ObservableCollectionEx<alarms> _AlarmsCollection = new ObservableCollectionEx<alarms>();

public ObservableCollectionEx<alarms> AlarmsCollection

{ get { return _AlarmsCollection; } }

public Dictionary<string, points> variables = new Dictionary<string, points>();

public Dictionary<string, showAlarms> showAl = new Dictionary<string, showAlarms>();

public Dictionary<string, alarms[]> alarmsDescription = new Dictionary<string, alarms[]>();

//

private void dispatcherTimer_Tick(object sender, EventArgs e)

{

if (playAlarm) media.Play();

else media.Stop();

}

void m_MediaEnded(object sender, RoutedEventArgs e)

{

media.Position = TimeSpan.FromSeconds(0);

media.Play();

}

//Чтение из БД описания аварий

private void addAlarmsDescriptions(string Name)

{

alarms[] al = new alarms[300];

alarmsDescription.Add(Name, new alarms[300]);

NpgsqlDataReader dr;

conn.Open();

NpgsqlCommand command = new NpgsqlCommand("SELECT \"N\", 'name', \"desc\" FROM alarms_desc WHERE name='" + Name + "' ORDER BY \"N\";", conn);

//try

{

dr = command.ExecuteReader();

while (dr.Read())

{

al[(int)dr["N"]] = new alarms { alarmSender = Name, alarmDescripton = dr["desc"].ToString() };

}

}

alarmsDescription[Name] = al;

try

{

for (int i = 0; i < 300; i++)

variables[Name].Mb_desc.Add("");

command = new NpgsqlCommand("SELECT n, description FROM mb_desc WHERE name='" + Name + "' ORDER BY n;", conn);

dr = command.ExecuteReader();

while (dr.Read())

{

variables[Name].Mb_desc[(int)dr["n"]] = dr["description"].ToString();

}

command = new NpgsqlCommand("SELECT n, description, _offset FROM mi_desc WHERE name='" + Name + "' ORDER BY n;", conn);

dr = command.ExecuteReader();

for (int i = 0; i < 300; i++)

{

variables[Name].Mi_offset.Add(1);

variables[Name].Mi_desc.Add("");

}

while (dr.Read())

{

variables[Name].Mi_offset[(int)dr["n"]] = ((int)dr["_offset"]);

variables[Name].Mi_desc[(int)dr["n"]] = dr["description"].ToString();

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

conn.Close();

}

/// <summary> чтение данных из БД

/// Поток чтения данных из БД

/// </summary>

private void thrSqlRead()

{

bool[] actAlarmsK1 = new bool[300];

bool[] actAlarmsK2 = new bool[300];

bool[] actAlarmsK3 = new bool[300];

bool[] actAlarmsDr = new bool[300];

bool[] actAlarmsTk = new bool[300];

bool[] al = new bool[10];

int[] mi_values = new int[300];

float[] float_mi_values = new float[1];

while (running)

{

try

{

conn.Open();

#region Чтение данных котел 1

NpgsqlCommand command = new NpgsqlCommand("SELECT id, values_mi, values_mb, alarms, name FROM act_values WHERE name='k1'", conn);

NpgsqlDataReader dr = command.ExecuteReader();

while (dr.Read())

{

actAlarmsK1 = ((bool[])dr["alarms"]);

mi_values = ((int[])dr["values_mi"]);

variables["k1"].Mb = ((bool[])dr["values_mb"]).ToList();

variables["k1"].alarms = ((bool[])dr["alarms"]).ToList();

}

float_mi_values = new float[mi_values.Length];

for (int i = 0; i < mi_values.Length; i++)

float_mi_values[i] = (float)mi_values[i] / variables["k1"].Mi_offset[i];

variables["k1"].Mi = float_mi_values.ToList();

Thread.Sleep(100);

#endregion

/*

#region Чтение данных котел 2

command = new NpgsqlCommand("SELECT id, values_mi, values_mb, alarms, name FROM act_values WHERE name='k2'", conn);

dr = command.ExecuteReader();

while (dr.Read())

{

actAlarmsK2 = ((bool[])dr["alarms"]);

mi_values = ((int[])dr["values_mi"]);

// variables["k3"].Mi = ((int[])dr["values_mi"]).ToList();

variables["k2"].Mb = ((bool[])dr["values_mb"]).ToList();

variables["k2"].alarms = ((bool[])dr["alarms"]).ToList();

}

float_mi_values = new float[mi_values.Length];

for (int i = 0; i < mi_values.Length; i++)

float_mi_values[i] = (float)mi_values[i] / variables["k2"].Mi_offset[i];

variables["k2"].Mi = float_mi_values.ToList();

Thread.Sleep(100);

#endregion

#region Чтение данных котел 3

command = new NpgsqlCommand("SELECT id, values_mi, values_mb, alarms, name FROM act_values WHERE name='k3'", conn);

dr = command.ExecuteReader();

while (dr.Read())

{

actAlarmsK3 = ((bool[])dr["alarms"]);

mi_values = ((int[])dr["values_mi"]);

// variables["k3"].Mi = ((int[])dr["values_mi"]).ToList();

variables["k3"].Mb = ((bool[])dr["values_mb"]).ToList();

variables["k3"].alarms = ((bool[])dr["alarms"]).ToList();

}

float_mi_values = new float[mi_values.Length];

for (int i = 0; i < mi_values.Length; i++)

float_mi_values[i] = (float)mi_values[i] / variables["k3"].Mi_offset[i];

variables["k3"].Mi = float_mi_values.ToList();

Thread.Sleep(100);

#endregion

#region Чтение данных деаэратор

command = new NpgsqlCommand("SELECT id, values_mi, values_mb, alarms, name FROM act_values WHERE name='dr'", conn);

dr = command.ExecuteReader();

while (dr.Read())

{

actAlarmsDr = ((bool[])dr["alarms"]);

mi_values = ((int[])dr["values_mi"]);

// variables["dr"].Mi = ((int[])dr["values_mi"]).ToList();

variables["dr"].Mb = ((bool[])dr["values_mb"]).ToList();

variables["dr"].alarms = ((bool[])dr["alarms"]).ToList();

}

float_mi_values = new float[mi_values.Length];

for (int i = 0; i < mi_values.Length; i++)

float_mi_values[i] = (float)mi_values[i] / variables["dr"].Mi_offset[i];

variables["dr"].Mi = float_mi_values.ToList();

Thread.Sleep(100);

#endregion

#region Чтение данных тепловой контур

command = new NpgsqlCommand("SELECT id, values_mi, values_mb, alarms, name FROM act_values WHERE name='tk'", conn);

dr = command.ExecuteReader();

while (dr.Read())

{

actAlarmsTk = ((bool[])dr["alarms"]);

mi_values = ((int[])dr["values_mi"]);

// variables["tk"].Mi = ((int[])dr["values_mi"]).ToList();

variables["tk"].Mb = ((bool[])dr["values_mb"]).ToList();

variables["tk"].alarms = ((bool[])dr["alarms"]).ToList();

}

float_mi_values = new float[mi_values.Length];

for (int i = 0; i < mi_values.Length; i++)

float_mi_values[i] = (float)mi_values[i] / variables["tk"].Mi_offset[i];

variables["tk"].Mi = float_mi_values.ToList();

Thread.Sleep(100);

#endregion

*/

#region составление списка текущих аварий

// если список аварий изменился - то обновить

if (!actAlarmsK1.SequenceEqual(oldAlarmsK1))

{

_AlarmsCollection.Clear();

oldAlarmsK1 = actAlarmsK1;

for (int i = 0; i < actAlarmsK1.Length; i++)

{

if (actAlarmsK1[i]) _AlarmsCollection.Add(alarmsDescription["k1"][i]);

}

if (actAlarmsK1.Contains(true) )

playAlarm = true;

else playAlarm = false;

}

if (variables["k1"].alarms.Contains(true) ) al[0] = true;

else al[0] = false;

variables["al"].alarms = al.ToList();

#endregion

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString(), "Ошибка чтения данных из БД");

Thread.Sleep(1000);

}

finally

{

conn.Close();

}

}

}

public MainWindow()

{

InitializeComponent();

}

private void button6_Click(object sender, RoutedEventArgs e)

{

playAlarm = false;

/*

NpgsqlConnection connx = new NpgsqlConnection("Server=192.168.1.144;Port=5432;User Id=postgres;Password=57Jrtg63;Database=otradnoe;");

connx.Open();

NpgsqlCommand command;

for (int i = 0; i < 300; i++)

{

command = new NpgsqlCommand("INSERT INTO mi_desc(n, decription, \"offset\", name) VALUES ("+i.ToString()+" , 'Тепловой контур переменная mi "+i.ToString()+"', 10, 'tk');", connx);

// try

{

int dr = command.ExecuteNonQuery();

}

}

connx.Close();

*/

// _AlarmsCollection.Add(new alarms { alarmSender = "Vasia", alarmDescripton = DateTime.Now.ToString() });

}

/// <summary> Вызов архивных графиков

/// Вызов wpf chart

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void border37_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

{

bool wind_OK = true;

Border btn = sender as Border;

foreach (Window control in this.OwnedWindows)

{

wpfToolkitChart b = control as wpfToolkitChart;

if (b != null)

{

if (b.WindowState == System.Windows.WindowState.Minimized) b.WindowState = System.Windows.WindowState.Normal;

if (!b.checkSeries(btn.Tag.ToString()))

{

b.addSeries(btn.Tag.ToString(), "hell");

b.changeData();

}

wind_OK = false;

}

}

if (wind_OK)

{

wpfToolkitChart wpGr = new wpfToolkitChart();

if (System.Windows.Forms.Screen.AllScreens.Length > 1)

{

System.Drawing.Rectangle scr = System.Windows.Forms.Screen.AllScreens[1].WorkingArea;

wpGr.Left = scr.Left;

wpGr.Top = scr.Top;

wpGr.Height = scr.Height / 2;

wpGr.Width = scr.Width;

}

else

{

wpGr.Left = this.Left;

wpGr.Top = this.Top;

wpGr.Height = this.Height / 2;

wpGr.Width = this.Width;

}

wpGr.Owner = this;

wpGr.Show();

wpGr.addSeries(btn.Tag.ToString(), "hello");

}

/*

wpfToolkitChart wpGr = new wpfToolkitChart();

wpGr.Owner = this;

wpGr.Show();

*/

}

//Закрытие программы останавливаем все потоки

private void Window_Closing(object sender, CancelEventArgs e)

{

running = false;

thr1.Join();

}

/// <summary>

/// Вызов журнала аварий

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button2_Click(object sender, RoutedEventArgs e)

{

bool wind_OK = true;

Border btn = sender as Border;

foreach (Window control in this.OwnedWindows)

{

journal b = control as journal;

if (b != null)

{

if (b.WindowState == System.Windows.WindowState.Minimized) b.WindowState = System.Windows.WindowState.Normal;

wind_OK = false;

}

}

if (wind_OK)

{

journal wpGr = new journal();

if (System.Windows.Forms.Screen.AllScreens.Length > 1)

{

System.Drawing.Rectangle scr = System.Windows.Forms.Screen.AllScreens[1].WorkingArea;

wpGr.Left = scr.Left;

wpGr.Top = scr.Top;

wpGr.Height = scr.Height / 2;

wpGr.Width = scr.Width;

}

else

{

wpGr.Left = this.Left;

wpGr.Top = this.Top;

wpGr.Height = this.Height / 2;

wpGr.Width = this.Width;

}

wpGr.Owner = this;

wpGr.Show();

}

}

private void Window_Loaded(object sender, RoutedEventArgs e)

{

showAl.Add("mainAlarm", new showAlarms());

variables.Add("k1", new points());

variables.Add("al", new points());

addAlarmsDescriptions("k1");

thr1 = new Thread(new ThreadStart(thrSqlRead));

thr1.Name = "sqlRead";

// Запуск нового потока.

for (int i = 0; i < 1000; i++)

{

k1ActMi.Add(0);

}

thr1.Start();

_timer = new DispatcherTimer();

_timer.Interval = TimeSpan.FromMilliseconds(1000);

_timer.Tick += new EventHandler(dispatcherTimer_Tick);

_timer.Start();

variables["k1"].MbSave.Add(false);

this.DataContext = variables;

listBox1.DataContext = this;

media.MediaEnded += new RoutedEventHandler(m_MediaEnded);

media.Position = TimeSpan.FromSeconds(0);

// media.Play();

//Загрузка контролов из внешних файлов

try

{

mainLabel.Content = externalLoad("controls\\boiler1.xaml");

}

catch (Exception ex)

{

System.IO.File.AppendAllText("client.log", DateTime.Now.ToString() + "\t : ошибка загрузки boiler_1.xaml - \t " + ex.Message.ToString() + " \r\n");

}

}

/// <summary>

/// Загрузка контролов из внешних файлов

/// </summary>

/// <param name="path">Путь к файлу</param>

/// <returns></returns>

private DependencyObject externalLoad(string path)

{

// Get the XAML content from an external file.

DependencyObject rootElement;

using (FileStream fs = new FileStream(path, FileMode.Open))

{

rootElement = (DependencyObject)XamlReader.Load(fs);

//rootElement = (DependencyObject)XamlReader.Load(fs);

}

FrameworkElement frameworkElement = (FrameworkElement)rootElement;

Grid gr = (Grid)frameworkElement.FindName("mGrid");

foreach (Object brd in gr.Children)

{

Border br = brd as Border;

if (br != null) br.MouseLeftButtonDown += new MouseButtonEventHandler(border37_MouseLeftButtonDown); ;

}

return rootElement;

}

private void button3_MouseDown(object sender, MouseButtonEventArgs e)

{

MessageBox.Show("open");

//variables["k1"].MbSave[0] = true;

}

private void button3_MouseUp(object sender, MouseButtonEventArgs e)

{

MessageBox.Show("close");

}

//Вызов окна управления

private void button3_Click(object sender, RoutedEventArgs e)

{

bool wind_OK = true;

Border btn = sender as Border;

foreach (Window control in this.OwnedWindows)

{

upravlenie b = control as upravlenie;

if (b != null)

{

if (b.WindowState == System.Windows.WindowState.Minimized) b.WindowState = System.Windows.WindowState.Normal;

wind_OK = false;

}

}

if (wind_OK)

{

upravlenie wpGr = new upravlenie(variables["k1"].Mi[36],variables["k1"].Mi[37]);

if (System.Windows.Forms.Screen.AllScreens.Length > 1)

{

System.Drawing.Rectangle scr = System.Windows.Forms.Screen.AllScreens[1].WorkingArea;

wpGr.Left = scr.Left;

wpGr.Top = scr.Top;

}

else

{

wpGr.Left = this.Left;

wpGr.Top = this.Top;

wpGr.sPercentsValue.Value = Convert.ToDecimal(variables["k1"].Mi[36]);

wpGr.sTempValue.Value = Convert.ToDecimal(variables["k1"].Mi[37]);

}

wpGr.Owner = this;

wpGr.Show();

}

}

private void button5_Click(object sender, RoutedEventArgs e)

{

//Загрузка контролов из внешних файлов

try

{

mainLabel.Content = externalLoad("controls\\boiler2d.xaml");

}

catch (Exception ex)

{

System.IO.File.AppendAllText("client.log", DateTime.Now.ToString() + "\t : ошибка загрузки boiler2d.xaml - \t " + ex.Message.ToString() + " \r\n");

}

}

private void button4_Click(object sender, RoutedEventArgs e)

{

//Загрузка контролов из внешних файлов

try

{

mainLabel.Content = externalLoad("controls\\boiler1.xaml");

}

catch (Exception ex)

{

System.IO.File.AppendAllText("client.log", DateTime.Now.ToString() + "\t : ошибка загрузки boiler_1.xaml - \t " + ex.Message.ToString() + " \r\n");

}

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.

    курсовая работа [41,2 K], добавлен 19.12.2010

  • Общие сведения о миномётах, их конструкция, боевые качества и классификация. Структурное построение обучающих программ, их алгоритмы. Жизненные циклы программного продукта. Реализация функционирования программы и разработка пользовательского интерфейса.

    курсовая работа [1,2 M], добавлен 06.11.2012

  • Подбор игрового движка и описание его основных характеристик. Разработка структуры, алгоритма и интерфейса программы. Проектирование иерархии классов. Выделение типового приема визуализации. Тестирование правильности работы программного обеспечения.

    курсовая работа [3,1 M], добавлен 19.01.2017

  • Общие сведения об исследуемой организации, направления ее хозяйственной деятельности, характеристика используемой вычислительной техники и программного обеспечения. Разработка пользовательского интерфейса, шаблонов, отладка и тестирование программы.

    отчет по практике [159,3 K], добавлен 11.04.2016

  • Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.

    курсовая работа [215,3 K], добавлен 01.09.2010

  • Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.

    отчет по практике [700,5 K], добавлен 24.11.2014

  • Разработка и реализация демонстрационного многопоточного приложения. Выбор основных средств реализации. Описание логики работы приложения и разработка программного обеспечения. Описание пользовательского интерфейса. Реализация потоков в Delphi.

    курсовая работа [462,5 K], добавлен 10.08.2014

  • Краткое описание этапов разработки программного продукта. Анализ поставленных задач и определение основных функций программы. Разработка пользовательского интерфейса. Составление программной документации. Техническое задание на разработку проекта.

    дипломная работа [1,5 M], добавлен 06.04.2013

  • Анализ технического задания. Разработка интерфейса программы и ее алгоритмов. Кодирование и тестирование разработанного программного обеспечения, оценка его практической эффективности и функциональности. Формирование, содержание руководства пользователя.

    курсовая работа [2,0 M], добавлен 31.07.2012

  • Создание прикладного программного обеспечения, позволяющего определять константу скорости реакции. Анализ математических моделей кинетики химических реакций. Разработка пользовательского интерфейса. Проверка работоспособности программного обеспечения.

    курсовая работа [269,2 K], добавлен 28.01.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.