Обеспечение подсистемы имитаторов средств обнаружения и противодействия беспилотным летательным аппаратам
Разработка программного обеспечения подсистемы имитаторов, входящей в состав комплекса средств обнаружения и противодействия беспилотным летательным аппаратам. Сравнительный анализ существующих аналогов. Требования к аппаратно-программному обеспечению.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.01.2015 |
Размер файла | 3,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
- видимого 400-700 нм,
- ближнего инфракрасного 700 - 1050 нм;
- электростатических полей;
Ультрафиолетовое излучение полезно в небольших количествах, но в больших дозах приводит к дерматиту кожи, головной боли, рези в глазах. Инфракрасное излучение приводит к перегреву тканей человека (особенно хрусталика глаза), повышению температуры тела. Уровни напряженности электростатических полей должны составлять не более 25 кВ/м. Плотность магнитного поля не более 250 нТл. Напряжённость электрического поля не более 25 В/м. Поверхностный электростатический потенциал не должен превышать 500В. При повышенном уровне напряженности полей следует сократить время работы за компьютером, делать пятнадцатиминутные перерывы в течении полутора часов.
Для предупреждения внедрения опасной техники все дисплеи должны проходить испытания на соответствие требованиям безопасности (например, международные стандарты MRP 2, TCO 99, TCO 03 и т д).
Так как работа программиста по виду трудовой деятельности относится к группе В - творческая работа в режиме диалога с ЭВМ, а по напряженности работы ко II категории тяжести [33], предлагается сократить время работы за компьютером, делать перерывы суммарное время которых должно составлять 50 минут при 8-ми часовой смене.
3.4.1 Инструментальный контроль электромагнитной обстановки
Одним из важных методов организации электромагнитной безопасности является инструментальный контроль. Он производится как при вводе в эксплуатацию оборудования и организации новых рабочих мест, так и после проведения организационно-технических мероприятий, направленных на нормализацию электромагнитной обстановки, при аттестации рабочих мест и проведении производственного контроля.
Осуществляется контроль органами ГСЭН и (или) испытательными лабораториями (центрами), аккредитованными в установленном порядке. Используемые приборы с допустимой основной относительной погрешностью измерений ± 20 %, должны быть включены в Государственный реестр средств измерения РФ и иметь действующие свидетельства о прохождении Государственной поверки.
Перед проведением инструментального контроля следует составить план размещения рабочих мест пользователей ПЭВМ в помещении, занести в протокол сведения об оборудовании рабочего места, установить на экране ВДТ типичное для данного вида работы изображение (текст, графика и др.). При проведении измерений должна быть включена вся вычислительная техника, ВДТ и другое используемое для работы электрооборудование, размещенное в данном помещении.
Измерение уровней переменных электрических и магнитных полей, статических электрических полей на рабочем месте, оборудованном ПЭВМ, производится на расстоянии 50 см от экрана на трех уровнях на высоте 0,5, 1,0 и 1,5 м.
3.5 Электробезопасность. Статическое электричество
Помещение, в котором производится работа с ПЭВМ, по опасности поражения электрическим током можно отнести к 1 классу, т.е. это помещение без повышенной опасности (сухое, беспыльное, с нормальной температурой воздуха, изолированными полами и малым числом заземленных приборов).
На рабочем месте программиста из всего оборудования металлическим является лишь корпус системного блока компьютера, но здесь используются системные блоки, отвечающие стандарту фирмы IBM, в которых кроме рабочей изоляции предусмотрен элемент для заземления и провод с заземляющей жилой для присоединения к источнику питания. Таким образом, оборудование выполнено по классу 1 (ПУЭ).
Электробезопасность помещения обеспечивается в соответствии с ПУЭ. Опасное и вредное воздействие на людей электрического тока, электрической дуги и электромагнитных полей проявляется в виде электротравм и профессиональных заболеваний.
Степень опасного и вредного воздействия на человека электрического тока, электрической дуги и электромагнитных полей зависит от:
- рода и величины напряжения и тока;
- частоты электрического тока;
- пути тока через тело человека;
- продолжительности воздействия на организм человека.
Электробезопасность в помещении обеспечивается техническими способами и средствами защиты, а так же организационными и техническими мероприятиями.
Рассмотрим основные причины поражения человека электрическим током на рабочем месте:
- прикосновение к металлическим нетоковедущим частям (корпусу, периферии компьютера), которые могут оказаться под напряжением в результате повреждения изоляции;
- нерегламентированное использование электрических приборов;
- отсутствие инструктажа сотрудников по правилам электробезопасности.
В течение работы на корпусе компьютера накапливается статическое электричество. На расстоянии 5-10см от экрана напряженность электростатического поля составляет 60-280 кВ/м, то есть в 10 раз превышает норму 20 кВ/м. Для уменьшения напряжённости применять применение увлажнители и нейтрализаторы, антистатическое покрытия пола.
Кроме того, при неисправности каких-либо блоков компьютера корпус может оказаться под током, что может привести к электрическим травмам или электрическим ударам. Для устранения этого необходимо обеспечить подсоединение металлических корпусов оборудования к заземляющей жиле.
Электробезопасность обеспечивается в соответствии с ГОСТ 12.1.030. - 81 (2001). Опасное и вредное воздействие на людей электрического тока проявляется в виде электротравм и профессиональных заболеваний.
Электробезопасность в лаборатории обеспечивается техническими способами и средствами защиты, а так же организационными и техническими мероприятиями.
Рассмотрим основные причины поражения программиста электрическим током на рабочем месте:
- прикосновение к металлическим нетоковедущим частям системного блока пэвм, которые могут оказаться под напряжением в результате повреждения изоляции;
- запрещенное использование электрических приборов, таких как электрические плиты, чайники, обогреватели.
3.5.1 Обеспечение электробезопасности техническими способами и средствами
Так как все токоведущие части ЭВМ изолированы, то случайное прикосновение к токоведущим частям исключено.
Для обеспечения защиты от поражения электрическим током при прикосновении к металлическим нетоковедущим частям, которые могут оказаться под напряжением в результате повреждения изоляции, рекомендуется применять защитное заземление.
Заземление корпуса ЭВМ обеспечено подведением заземляющей жилы к питающим розеткам. Сопротивление заземления 4 Ом, согласно (ПУЭ) для электроустановок с напряжением до 1000 В.
3.5.2 Организационные и технические мероприятия по обеспечению электробезопасности
Основным организационным мероприятием является инструктаж и обучение безопасным методам труда, а так же проверка знаний правил безопасности и инструкций в соответствии с занимаемой должностью применительно к выполняемой работе.
При проведении незапланированного и планового ремонта вычислительной техники выполняются следующие действия:
- отключение компьютера от сети;
- проверка отсутствия напряжения.
После выполнения этих действий проводится ремонт неисправного оборудования.
Если ремонт проводится на токоведущих частях, находящихся под напряжением, то выполнение работы проводится не менее чем двумя лицами с применением электрозащитных средств.
3.6 Организация рабочего места программиста
Производственная деятельность программиста, заставляет его продолжительное время находиться в сидячем положении, которое является вынужденной позой, поэтому организм постоянно испытывает недостаток в подвижности и активной физической деятельности. При выполнении работы сидя большую роль играет плечевой пояс. Перемещение рук в пространстве влияет не только на работу мышц плечевого пояса и спины, но и на положение позвоночника, таза и даже ног.
Чтобы исключить возникновение заболеваний необходимо иметь возможность свободной перемены поз. Необходимо соблюдать режим труда и отдыха с перерывами, заполняемыми “отвлекающими" мышечными нагрузками на те звенья опорно-двигательного аппарата, которые не включены в поддержание основной рабочей позы.
Антропологические характеристики человека определяют габаритные и компоновочные параметры его рабочего места, а также свободные параметры отдельных его элементов. При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м. При выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками высотой 1,5 - 2,0 м. Экран видеомонитора следует располагать от глаз пользователя на расстоянии 600 - 700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов
Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы. При этом допускается использование рабочих столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5 - 0,7.
Рабочий стул (кресло) должен быть подъемно-поворотным, регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья, при этом регулировка каждого параметра должна быть независимой, легко осуществляемой и иметь надежную фиксацию.
По условиям работы рабочее место программиста относится к индивидуальному рабочему месту для работы сидя.
Рабочее место для выполнения работ в положении сидя должно соответствовать требованиям ГОСТ 12.2.032-78, ГОСТ 22269-76, ГОСТ 21829-76 и требованиям технической эстетики. В конструкции его элементов необходимо учитывать характер работы, психологические особенности человека и его антропометрические данные.
Рабочий стол должен регулировать по высоте в пределах 680-760 мм; при отсутствии такой возможности его высота должна составлять 720 мм. Оптимальные размеры рабочей поверхности столешницы1600х600 мм. Под столешницей рабочего стола должно быть свободное пространство для ног с размерами по высоте не менее 600 мм, по ширине 500 мм, по глубине 650. На поверхности рабочего стола для документов необходимо предусматривать размещение специальной подставки, расстояние которой от глаз должно быть аналогичным расстоянию от глаз до клавиатуры, что позволяет снизить зрительное утомление.
Рабочий стул (кресло) (рисунок 3.2) должен быть снабжен подъемно - поворотным устройством, обеспечивающим регуляцию высоты сидения и спинки, его конструкция должна предусматривать также изменение угла наклона спинки. Рабочее кресло должно иметь подлокотники. Регулировка каждого параметра должна легко осуществляться, быть независимой и иметь надежную фиксацию. Высота поверхности сидения должна регулироваться в пределах 400-500 мм. Ширина сидения должна составлять не менее 400 мм, глубина - не менее 380 мм, ширина подлокотников - не менее 50 мм, длина - не менее 200 мм; высота над поверхностью сидения - 200-250 мм. Высота опорной поверхности спинки должна быть не менее 300 мм, ширина - не менее 380 мм. Радиус ее кривизны в горизонтальной плоскости 400 мм. Угол наклона спинки должен изменяться в пределах 90-110 к плоскости сидения.
Материал покрытия рабочего стула должен обеспечивать возможность легкой очистки от загрязнений. Поверхность сидения и спинки должна быть полумягкой, с нескользящим, неэлектризующим и воздухонепроницаемым покрытием.
На рабочем месте необходимо предусматривать подставку для ног. Ее длина должна составлять 400 мм, ширина 350 мм. Необходимо предусматривать регулировку высоты подставки в пределах 0-150 мм и угла ее наклона - в пределах 0°-20. Она должна иметь рифленое покрытие и бортик высотой 10 мм по нижнему краю.
Организация рабочего места, в которое включается регулируемое по высоте кресло оператора (рисунок 3. 6), позволяет сузить диапазон высот рабочих поверхностей, причем предпочтительнее рабочие поверхности более высокие, т.к. человеку небольшого роста при регулируемой высоте кресла оператора легче приспособиться к соответствующей высоте рабочей поверхности, сохраняя расстояние между высотой рабочей поверхности и кресла оператора равным 270-280 мм, и в случае необходимости пользоваться подставкой для ног.
Рисунок 7.2 - Рабочий стул (кресло)
При организации рабочего места важно учитывать факторы, оказывающие влияние на организацию исполнительной деятельности оператора: размеры моторного поля; величину, форму, сопротивление и направление движения органов управления; их опознавательные признаки; порядок размещения и информационную значимость воздействия органов управления на систему [34].
В ходе анализа вредных и опасных факторов, воздействующих на оператора ЭВМ, были выявлены возможные угрозы, установлены нормы и методы обеспечения безопасности и необходимых условий для работы с ЭВМ, установлены ключевые моменты в организации рабочего места.
Заключение
В результате выполнения дипломного проекта был разработан интернет-сервис взаимного поиска попутного транспорта и пассажиров.
Серверная часть сервиса реализована средствами языка Java, сервера приложений GlassFishи СУБД PostgreSQL. Клиентская часть сервиса - на HTML5, JavaScriptи jQuery. При разработке сервиса большое внимание было уделено интеграции с социальными сетями и картографическими сервисами.
Разработанный сервис предназначен для решения проблемы пробок в современных крупных городах, а также для снижения уровня загрязнения от транспорта путем оптимизации распределения пассажиров между автомобилями. Так как пользователем сервиса может любой человек, имеющий выход в сеть Интернет, нельзя предсказать его уровень компьютерной грамотности. В связи с этим обстоятельством каждый инструмент сервиса имеет интуитивно понятный интерфейс.
При разработке программных средств были учтены все требования, изложенные в техническом задании. Тем не менее, планируется дальнейшее развитие сервиса в направлении интеграции системы с кассами автовокзалов страны для обеспечения пользователям сервиса возможности покупки билета на междугородние автобусы "не выходя из дома".
Было произведено комплексное тестирование разработанных программных средств, в результате которого было установлено полное соответствие разработки и технического задания.
В настоящее время сервис находится в тестовой эксплуатации.
Список использованных источников
1. Интернет-статистика. Вопросы безопасности.
2. Википедия. Транспорт.
3. Моспробка. Carpool - совместное использование автомобиля для проезда.
4. Баканов А.С. Эргономика пользовательского интерфейса. / Баканов А.С., Обознов А.А. - М.: Институт психологии РАН. - 2011.
5. Скотт Б. Проектирование веб-интерфейсов. / Скотт Б., Нейл Т. - М.: Символ-Плюс. - 2010.
6. Р. Дж. Торрес. Практическое руководство по проектированию и разработке пользовательского интерфейса. М.: Вильямс. - 2002.
7. Раскин Д. Интерфейс: новые направления в проектировании компьютерных систем. - М.: Символ-Плюс. - 2004.
8. Таненбаум Э. Современные операционные системы. - СПб.: Питер. - 2011.
9. Марк Г. Собель. Linux. Администрирование и системное программирование. - СПб.: Питер. - 2011.
10. Адельштайн Т. Системное администрирование в Linux. / Адельштайн Т., Любанович Б. - СПб.: Питер. - 2009.
11. Зандрста Мэтт. PHP. Объекты, шаблоны и методики программирования. - М.: Вильямс. - 2011.
12. Котеров Д. PHP 5. / Котеров Д., Костарев А. - СПб.: БХВ-Петербург. - 2008.
13. Шилдт Г. Java. Полное руководство. - М.: Вильямс. - 2012.
14. Лафоре Р. Структуры данных и алгоритмы Java. - СПб.: Питер. - 2011.
15. Эккель Б. Философия Java. - СПб.: Питер. - 2009.
16. GlassFish Community.
17. ReelsenA. PlayFrameworkCookbook. - 2011.
18. Кузнецов М. MySQL 5. / Кузнецов М., Симдянов И. - СПб.: БХВ-Петербург. - 2006.
19. Гешвинде Э. PostgreSQL. Руководство администратора. / Гешвинде Э., Шениг Г. - Ю. - ДиаСофтЮП. - 2002.
20. Дж. Уорсли PostgreSQL. Для профессионалов. Питер. / Дж. Уорсли, Дж. Дрейк. - 2003.
21. Сравнение ООП языков: Java, C++, Object Pascal - http://www.interface.ru/home. asp? artId=3567.
22. Крокфорд Д. JavaScript: сильные стороны. СПб.: Питер. - 2012.
23. Стефанов С. JavaScript. Шаблоны. М.: Символ-Плюс. - 2011.
24. Дронов В.html 5, CSS 3 и Web 2.0. - СПб.: БХВ-Петербург. - 2011.
25. Хеник Б.html и CSS. Путь к совершенству. - СПб.: Питер. - 2011.
26. ДавыдовС. IntelliJIDEA. Профессиональное программирование на Java. Наиболее полное руководство. / ДавыдовС., ЕфимовА. - СПб.: БХВ-Петербург. - 2005.
27. Федотова Д.Э. Case-технологии: Практикум. - М.: Горячая линия. - 2005.
28. Дейт К. Дж. Введение в системы баз данных. - М.: Вильямс. - 2005.
29. Кузнецов С.Д. Основы баз данных. - М.: Интернет-университет информационных технологий, БИНОМ. Лаборатория знаний. - 2007.
30. Конноли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. / Конноли Т., Бегг К. - М.: Вильямс. - 2003.
31. Криспин Л. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд. / Криспин Л., Грегори Д. - М.: Вильямс. - 2010.
32. Ивченко Г.И. Теория массового обслуживания. / Ивченко Г.И., Каштанов В.А., Коваленко И.Н. - М.: Высшая школа. - 1982.
33. "Санитарные нормы и правила при работе с машинами и оборудованием, создающими локальную вибрацию, передающуюся на руки работающих" СанПиН 2.2.2/2.4.3041-84.
34. ГОСТ 12.1.012-90 "Вибрационная безопасность".
35. ГОСТ 24346-80 "Вибрация. Термины и определения".
36. Безопасность жизнедеятельности. Ред. С.В. Белов. Учебник для техникумов и вузов. - М.: Высшая школа, 2009.
37. Санитарные нормы и правила при работе с машинами и оборудованием, создающими локальную вибрацию, передающуюся на руки работающих. № 3041-84.
38. Санитарные нормы вибрации рабочих мест. № 3044-84.
39. Вибрационная безопасность. ГОСТ 12.1.012-90.
40. Вибрация. Термины и определения. ГОСТ 24346-80.
Приложения
Приложение А
/defeat/UDefeat. pas
// ТЕКУЩИЕ ЗАДАЧИ:
//
// ~~~~ УПРАВЛЕНИЕ СРЕДСТВАМИ ПОДАВЛЕНИЯ ~~~~~~~ //
{====================================================
Приложение для организации противодействия БПЛА
Функционирует в связке с приложениями:
КП (KPBPLA)
Погодных условий (Weather)
БПЛА (PImitator)
посредством приложения организующего межпрограммное взаимодействие (trnsserver)
=====================================================}
{====================================================
Общий принцип работы приложения:
После подключения к БД (где содержатся необходимые библиотеки, семантики,
слои и списки со СП), необходимо подсоедениться к серверу.
При этом создаётся поток, для параллельного принятия сообщений,
поступающих от разных элементов системы через сервер.
Сообщения анализируются, и вызывают соответствующую реакцию.
=====================================================}
unit UDefeat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls, Buttons, IdGlobal,
ConnectWithDB, MainDBModul, C_Layers, {C_Maps,} C_Libraries, C_Semantics, C_Primitives,
IOMesVar, Get_Enabled, C_SemanticsConst, All_Use,
UDefeatFeature, IdAntiFreezeBase, IdAntiFreeze, IdThreadComponent,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
USPCommon, IdIOHandler, IdIOHandlerStream, Menus;
type
TBytes = array of Byte;
TPacetStruct = array [1.20] of string;
TIdBytes = TBytes;
TFDefeat = class (TForm)
GroupBox2: TGroupBox;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
MProtocol: TMemo;
GroupBox10: TGroupBox;
LEAAdressBLA: TLabeledEdit;
LEAClassBLA: TLabeledEdit;
GroupBox11: TGroupBox;
LEAKodFeature: TLabeledEdit;
LEANameFeature: TLabeledEdit;
LEATypeFeature: TLabeledEdit;
LEARange: TLabeledEdit;
Panel2: TPanel;
Panel3: TPanel;
LETemperature: TLabeledEdit;
LECloud: TLabeledEdit;
LEFog: TLabeledEdit;
LEPrecipitation: TLabeledEdit;
GroupBox3: TGroupBox;
LEWindDirection: TLabeledEdit;
LEWindSpeed: TLabeledEdit;
LEModeTime: TLabeledEdit;
NbDefeat: TNotebook;
GroupBox1: TGroupBox;
GroupBox8: TGroupBox;
LEKodBLA: TLabeledEdit;
LEKodFN: TLabeledEdit;
LEComTime: TLabeledEdit;
SGListFeatures: TStringGrid;
BBTechnicalBehavior: TBitBtn;
GroupBox4: TGroupBox;
LEKodRes: TLabeledEdit;
LETimeRes: TLabeledEdit;
GroupBox7: TGroupBox;
EParDB: TEdit;
GroupBox9: TGroupBox;
CBTypeDB: TComboBox;
GroupBox12: TGroupBox;
LEHost: TLabeledEdit;
LEPort: TLabeledEdit;
GroupBox13: TGroupBox;
SBSelectMap: TSpeedButton;
EMap: TEdit;
PBLoad: TProgressBar;
ODMap: TOpenDialog;
IdTCPCFN: TIdTCPClient;
IdThreadCFN: TIdThreadComponent;
IdAntiFFN: TIdAntiFreeze;
TimerSys: TTimer;
EAnswer: TEdit;
LETimeExution: TLabeledEdit;
SBClear: TSpeedButton;
BChangeState: TButton;
RGLevelMessage: TRadioGroup;
MMenu: TMainMenu;
Files: TMenuItem;
Panels: TMenuItem;
Settings: TMenuItem;
Helper: TMenuItem;
BBLoadFeature: TMenuItem;
BBStart: TMenuItem;
BBExit: TMenuItem;
BBAdjustment: TMenuItem;
BBApply: TMenuItem;
BBSaveIni: TMenuItem;
Features: TMenuItem;
Weather: TMenuItem;
TBehaivor: TMenuItem;
OpenFeatures: TMenuItem;
OpenWeather: TMenuItem;
N2: TMenuItem;
SServer: TMenuItem;
SWeather: TMenuItem;
SBPLA: TMenuItem;
SKPBPLA: TMenuItem;
StatusBar1: TStatusBar;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
RKPBPLA: TMenuItem;
RBPLA: TMenuItem;
Protocol: TMenuItem;
Analiz: TMenuItem;
Pacet: TMenuItem;
MessLog: TMenuItem;
PProtocol: TMemo;
LProtocol: TMemo;
procedure BChangeStateClick (Sender: TObject); // Управление готовностью СП
procedure SBClearClick (Sender: TObject); // Очистка полей с результатами
procedure SGListFeaturesSelectCell (Sender: TObject; ACol, ARow: Integer;
varCanSelect: Boolean); // Отображение готовности СП
procedure BBTechnicalBehaviorClick (Sender: TObject); // Вызов окна ТХ
procedure FormClose (Sender: TObject; var Action: TCloseAction); // Обработка создания формы
procedure BBAdjustmentClick (Sender: TObject); // Открытие вкладки настроек
procedure TimerSysTimer (Sender: TObject); // Обработка тика таймера
procedure IdTCPCFNDisconnected (Sender: TObject); // Обработка отключения от сервера
procedure IdTCPCFNConnected (Sender: TObject); // Обработка подключения к серверу
procedure BBStartClick (Sender: TObject); // Старт работы (подключение к серверу)
procedure BBApplyClick (Sender: TObject); // Применение настроек подключения
procedure SBSelectMapClick (Sender: TObject); // Выбор карты
procedure BBSaveIniClick (Sender: TObject); // Сохранение настроек подключения
procedure BBLoadFeatureClick (Sender: TObject); // Загрузка СП (Подключение к БД)
procedure FormCreate (Sender: TObject); // Обработка закрытия формы
procedure IdThreadCFNRun (Sender: TIdCustomThreadComponent); // Обработка запущенного потока
procedure ExitTFD (Sender: TObject);
procedure FeaturesClick (Sender: TObject);
procedure OpenWeatherClick (Sender: TObject);
procedure AnalizClick (Sender: TObject);
procedure PacetClick (Sender: TObject);
procedure MessLogClick (Sender: TObject);
private
{ Private declarations }
CurrentLine: SmallInt;
Load_Feature: Boolean;
// ListDetectionBLA: TStringList; // Список обнаруженных БЛА (для выбора СП)
ListAllBLA: TStringList; // Список всех БЛА (для оценки поражения)
// Строка это wSID - код канала-отправителя
DefeatFeature: TDefeatFeature; // Средства подавления
BaseDefeat: TBaseDefeat;
Work: Boolean;
ExePath: String;
AddressBPLA: Word;
EndTransfer: Boolean;
procedure SetWeather; // Установка погоды и времени
public
{ Public declarations }
ParDB: String;
Host: String;
Port: Integer;
PathMap: String;
LevelMessage: Word; // Уровень отображения ошибок
SysTime: TDateTime; // Собственное время модели
BPLA: TDataFromIBPLA; // Структура данных от БЛА
DataToISP: TDataToISP; // Структура данных команды от КП БЛА
// Map: TMMap_ALL;
// Mlayers: TMLayer_ALL;
conn: Boolean;
rw,rs,rk,rb,sb,sk: integer;
runstop: boolean;
procedure CommandProcessing; // Выполнение команд КП (?)
procedureBLAProcessing; // Реагирование на пришедшие данные о БПЛА (?)
procedure AnalizDefeat (ParDefeat: TParDefeat); // Для события OnSendMessBLA
// Анализируем сообщение присланное БПЛА о взаимодействии со средством противодействия
procedure SendAnswer (ISPAnswer: TISPAnswer); // Для события OnSendMessKPBLA
// Шлём ответ на присланную от КП команду
procedure interfacing (size, number: integer);
procedure RMOutput (number: integer);
procedure showpacet (pacet: TPacetStruct);
// procedure SMOutput (number: integer);
end;
var
FDefeat: TFDefeat;
implementation
usesUInitFile, Synchro, SetQuery, UAnalizBPLA, UError, DB;
{$R *. dfm}
// =====================================================
// ~~~~~~~ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ~~~~~~~~~~ //
// ====================================================
// Обработка создания главного окна приложения
procedure TFDefeat. FormCreate (Sender: TObject);
begin
NbDefeat. PageIndex: = 0;
Load_Feature: = False;
BBStart. Enabled: = False;
BBSaveIni. Enabled: = False;
BBApply. Enabled: = False;
EndTransfer: = True;
ExePath: = Application. ExeName;
ListAllBLA: = TStringList. Create;
rw: = 0;
rb: = 0;
rk: = 0;
rs: = 0;
sb: = 0;
sk: = 0;
runstop: = false;
MProtocol. Hint: = 'Протокол. '
+ #13#10 + 'Отображает необходимую информацию о поражении цели,'
+ #13#10 + ' а так же команды поступающие от командного пункта';
StatusBar1. Hint: = 'Строка состояний. '
+ #13#10 + 'Отображает число принятых сообщений от'
+ #13#10 + 'сервера, погоды, командного пункта, цели'
+ #13#10 + 'и число отправленных сообщений командному пункту и цели. ';
// Таблица отображения СП
with SGListFeatures do
begin
RowCount: = 2;
ColWidths [0]: = 140;
Cells [0, 0]: = 'Идентификатор';
ColWidths [1]: = 420;
Cells [1, 0]: = 'Тип';
ColWidths [2]: = 160;
Cells [2, 0]: = 'Расположение';
ColWidths [3]: = 50;
Cells [3, 0]: = 'Готов';
end;
// Установка параметров подключения
{
EParDB. ReadOnly: = True;
LEHost. ReadOnly: = True;
LEPort. ReadOnly: = True;
EMap. ReadOnly: = True;
}
// Чтение параметров из файла
ShapingParametr;
// Отображение
EParDB. Text: = ParDB;
LEHost. Text: = Host;
LEPort. Text: = IntToStr (Port);
EMap. Text: = PathMap;
RGLevelMessage. ItemIndex: = LevelMessage;
conn: = false;
end;
// Обработка закрытия приложения (отключение)
procedure TFDefeat. FormClose (Sender: TObject; var Action: TCloseAction);
begin
// Если подключение существует
StatusBar1. SimpleText: = 'Закрытие приложения. ';
Runstop: = true;
with IdTCPCFN do
begin
if Connected then
// Отключаемся
try
Disconnect;
except
end;
end;
BaseDefeat. CloseMap;
{
if not (Map = nil) then
begin
Map. Destroy;
Mlayers. Free;
end;
}
end;
// ===========================================================
// ~~~~~~~~~ ОБРАБОТЧИКИ КОМПОНЕТ ФОРМЫ ~~~~~~~~~~~~ //
// ВКЛАДКИ МЕНЮ------------------------------------------------------------
// ====================================================
// Выход
procedure TFDefeat. ExitTFD (Sender: TObject);
begin
Fdefeat. Close;
// Application. Terminate;
end;
// Окрытие вкладки со средствами противодействия
procedure TFDefeat. FeaturesClick (Sender: TObject);
begin
if OpenFeatures. Caption = 'Открыть' then
begin
interfacing (3,-1);
interfacing (345,1);
NbDefeat. PageIndex: = 0;
OpenFeatures. Caption: = 'Закрыть';
BBSaveIni. Enabled: = false;
BBApply. Enabled: = false;
if BBStart. Caption <> 'Стоп' then
begin
BBAdjustment. Enabled: = true;
end;
end
else
begin
if BBSaveIni. Enabled = false then
begin
interfacing (3,-1);
end;
OpenFeatures. Caption: = 'Открыть';
end;
{
// Открытие таблицы
if OpenFeatures. Caption = 'Открыть' then
begin
// Работа отображением на форме
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 345;
FDefeat. Height: = FDefeat. Height + Nbdefeat. Height;
FDefeat. AutoSize: = True;
// Блокировка
BBSaveIni. Enabled: = False;
BBApply. Enabled: = False;
// Разблокировка
if BBStart. Caption <> 'Стоп' then
begin
BBAdjustment. Enabled: = True;
end;
TBehaivor. Enabled: = True;
BBLoadFeature. Enabled: = True;
// Изменение наименования кнопки (для работы в активном режиме)
if BBStart. Caption = 'Начать ' then
begin
BBStart. Caption: = 'Начать';
BBStart. Enabled: = True;
end;
// Открытие вкладки с технк ическими характеристиками
NbDefeat. PageIndex: = 0;
// Изменение наименования кнопки (для правильного функционирования)
OpenFeatures. Caption: = 'Закрыть';
end
// Закрытие таблицы
else
begin
// При закрытой вкладке настроек
if BBAdjustment. Enabled = True then
begin
// Работа с отображением на форме
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 3;
FDefeat. AutoSize: = True;
// Блокировка
// BBAdjustment. Enabled: = True;
TBehaivor. Enabled: = False;
// Открытие вкладки настроек
NbDefeat. PageIndex: = 0;
end
// При открытой вкладке настроек
else
begin
// Блокировка
FDefeat. AutoSize: = False;
BBLoadFeature. Enabled: = False;
BBStart. Enabled: = False;
if BBSaveIni. Enabled = false then
begin
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
// Nbdefeat. Height: = 260;
end;
// Разблокировка
FDefeat. AutoSize: = True;
// BBSaveIni. Enabled: = True;
// BBApply. Enabled: = True;
// BBAdjustment. Enabled: = False;
// Открытие вкладки настроек
// NbDefeat. PageIndex: = 1;
end;
OpenFeatures. Caption: = 'Открыть';
end;
}
end;
// Технические характеристики - вызов окна с техническими характеристиками СП
procedure TFDefeat. BBTechnicalBehaviorClick (Sender: TObject);
begin
// Если строка выбрана
if CurrentLine <> 0 then
begin
// передаётся выбранная строка из SGListFeatures
DefeatFeature. ShowTechnicalBehavior (CurrentLine - 1);
end
else
begin
// иначе (строка равна 0)
ShowMessage ('СП не выбрано. ');
end;
end;
// Управление готовностью СП
procedure TFDefeat. BChangeStateClick (Sender: TObject);
begin
if BChangeState. Caption = 'Не готов' then
begin
BChangeState. Caption: = 'Готов';
// Готовность СП ставим в 0
DefeatFeature. SetState (CurrentLine - 1, False);
SGListFeatures. Cells [3, CurrentLine]: = ' Нет';
end
else
begin
BChangeState. Caption: = 'Не готов';
// Готовность СП ставим в 1
DefeatFeature. SetState (CurrentLine - 1, True);
SGListFeatures. Cells [3, CurrentLine]: = 'Да';
end;
end;
// Отображение готовности СП
procedure TFDefeat. SGListFeaturesSelectCell (Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
CurrentLine: = ARow;
if SGListFeatures. Cells [3, ARow] = 'Да' then
BChangeState. Caption: = 'Не готов'
else
BChangeState. Caption: = 'Готов'
end;
// Очистка полей результатов взаимодействия СП с БПЛА
procedure TFDefeat. SBClearClick (Sender: TObject);
begin
LETimeExution. Text: = '';
LEAAdressBLA. Text: = '';
LEAClassBLA. Text: = '';
LEAKodFeature. Text: = '';
LEATypeFeature. Text: = '';
LEANameFeature. Text: = '';
LEARange. Text: = '';
end;
// Открытие вкладки погоды
procedure TFDefeat. OpenWeatherClick (Sender: TObject);
begin
// Открытие
if OpenWeather. Caption = 'Открыть' then
begin
// Работа с отображением
FDefeat. AutoSize: = False;
Nbdefeat. Top: = 367;
Panel2. Height: = 84;
FDefeat. Height: = FDefeat. Height + Panel2. Height;
FDefeat. AutoSize: = true;
OpenWeather. Caption: = 'Закрыть';
end
// Закрытие
else
begin
// Работа с отображением
FDefeat. AutoSize: = False;
Nbdefeat. Top: = 294;
FDefeat. Height: = FDefeat. Height - Panel2. Height;
Panel2. Height: = 4;
FDefeat. AutoSize: = true;
OpenWeather. Caption: = 'Открыть';
end;
{
if OpenWeather. Caption = 'Открыть' then
begin
FDefeat. AutoSize: = False;
Nbdefeat. Top: = 367;
Panel2. Height: = 84;
if (OpenFeatures. Caption = 'Закрыть') or (BBAdjustment. Enabled = False) then
begin
FDefeat. Height: = FDefeat. Height + Panel2. Height + 5;
end
else
FDefeat. Height: = FDefeat. Height + Panel2. Height + 5;
FDefeat. AutoSize: = True;
OpenWeather. Caption: = 'Закрыть';
end
else
begin
FDefeat. AutoSize: = False;
Nbdefeat. Top: = 294;
Panel2. Height: = 4;
if (OpenFeatures. Caption = 'Закрыть') or (BBAdjustment. Enabled = False) then
begin
FDefeat. Height: = 700;
end
else
FDefeat. Height: = 500;
FDefeat. AutoSize: = True;
OpenWeather. Caption: = 'Открыть';
end;
}
end;
// =====================================================
// НАСТРОЙКИ ПОДКЛЮЧЕНИЯ-----------------------------------------------
// =====================================================
// Настройка подключения (открытие вкладки настроек)
procedure TFDefeat. BBAdjustmentClick (Sender: TObject);
begin
interfacing (3,-1);
interfacing (260,1);
NbDefeat. PageIndex: = 1;
BBAdjustment. Enabled: = False;
BBSaveIni. Enabled: = True;
BBApply. Enabled: = True;
{
// Работа с отображением
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 260;
FDefeat. Height: = FDefeat. Height + Nbdefeat. Height;
FDefeat. AutoSize: = True;
// Блокировка
BBAdjustment. Enabled: = False;
BBLoadFeature. Enabled: = False;
// Разблокировка
BBSaveIni. Enabled: = True;
BBApply. Enabled: = True;
// Работа с наименование кнопки Начать (для правильного функционирования)
if BBStart. Enabled = true then
begin
BBStart. Enabled: = False;
BbStart. Caption: = 'Начать ';
end;
TBehaivor. Enabled: = False;
// Открытие вкладки настроек
NbDefeat. PageIndex: = 1;
}
end;
// Применение настроек
procedure TFDefeat. BBApplyClick (Sender: TObject);
begin
interfacing (3,-1);
if OpenFeatures. Caption = 'Закрыть' then
begin
interfacing (350,1);
Nbdefeat. PageIndex: = 0;
end;
BBSaveIni. Enabled: = false;
BBApply. Enabled: = false;
BBAdjustment. Enabled: = True;
{
// При открытой таблице
if OpenFeatures. Caption = 'Открыть' then
begin
// Работас отображением
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 3;
FDefeat. AutoSize: = True;
end
// При закрытой таблице
else
begin
// Работа с отображением
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 350;
FDefeat. Height: = FDefeat. Height + Nbdefeat. Height;
FDefeat. AutoSize: = True;
// Разблокировка
TBehaivor. Enabled: = True;
// Открытие вкладки средств противодействия
NbDefeat. PageIndex: = 0;
end;
// Блокировка
BBSaveIni. Enabled: = False;
BBApply. Enabled: = False;
// Разблокировка
BBAdjustment. Enabled: = True;
BBLoadFeature. Enabled: = True;
// Проверка наименования кнопки Начать (для правильной работы функционала)
if BBStart. Caption = 'Начать ' then
begin
BBStart. Enabled: = True;
BBStart. Caption: = 'Начать';
end;
// Применение настроек подключения
IdTCPCFN. Port: = Port;
IdTCPCFN. Host: = Host;
}
end;
// Сохранение настроек подключения
procedure TFDefeat. BBSaveIniClick (Sender: TObject);
begin
interfacing (3,-1);
if OpenFeatures. Caption = 'Закрыть' then
begin
interfacing (350,1);
Nbdefeat. PageIndex: = 0;
end;
BBSaveIni. Enabled: = false;
BBApply. Enabled: = false;
BBAdjustment. Enabled: = True;
{
// Разблокировка
BBAdjustment. Enabled: = True;
BBLoadFeature. Enabled: = True;
BBAdjustment. Enabled: = True;
// Проверка наименования кнопки Начать (для правильной работы фунционала)
if BBStart. Caption = 'Начать ' then
begin
BBStart. Enabled: = True;
BBStart. Caption: = 'Начать';
end;
// Блокировка
BBSaveIni. Enabled: = False;
BBApply. Enabled: = False;
// Изменение параметров
ParDB: = EParDB. Text;
Host: = LEHost. Text;
Port: = StrToInt (LEPort. Text);
PathMap: = EMap. Text;
LevelMessage: = RGLevelMessage. ItemIndex;
// Запись параметров в файл (\Defeat. ini)
MakeParametr;
// Если таблица закрыта
if OpenFeatures. Caption = 'Открыть' then
begin
// Работа с отображением на форме
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 3;
FDefeat. AutoSize: = True;
end
// если таблица открыта
else
begin
// Работа с отображением на форме
FDefeat. AutoSize: = False;
FDefeat. Height: = FDefeat. Height - Nbdefeat. Height;
Nbdefeat. Height: = 350;
FDefeat. Height: = FDefeat. Height + Nbdefeat. Height;
FDefeat. AutoSize: = True;
// Разблокировка
TBehaivor. Enabled: = True;
// Открытие вкладки средств противодействия
NbDefeat. PageIndex: = 0;
end;
}
end;
// Выбор карты
procedure TFDefeat. SBSelectMapClick (Sender: TObject);
begin
ODMap. Filter: = 'Файлы c картой (*. map) |*. map|Все файлы (*. *) |*. *';
if ODMap. Execute then
EMap. Text: = ODMap. FileName;
end;
// =====================================================
// ВРЕМЯ-------------------------------------------------------------------------
// ====================================================
// Обработка тика таймера (обновление времени)
procedure TFDefeat. TimerSysTimer (Sender: TObject);
begin
// Установка TCP соединения
if not IdTCPCFN. Connected then
begin
with IdTCPCFN do
try
Connect
except
end
end;
// Синхронизация
SysTime: = NowSync;
// Обновление времени на форме
LEModeTime. Text: = DateTimeToStr (SysTime);
end;
// =====================================================
// ОСНОВНАЯ ЛОГИКА-----------------------------------------------------------
// =====================================================
// Загрузка (подключение к БД, загрузка СП)
procedure TFDefeat. BBLoadFeatureClick (Sender: TObject);
var
dbConnect: TObject; // Текущее соединение с БД
MLayers: TMLayer_ALL; // Слои (?)
MKLSemantics: TMKL_Semantic_All; // Семантика
LayerSP: TMLayer; // Слой СП (?)
MLibraries: TMLibrary_All; // Библиотеки
PlaceError: String; // Наименование ошибки (?)
begin
// Блокировка
Files. Enabled: = False;
Panels. Enabled: = False;
Settings. Enabled: = False;
Helper. Enabled: = False;
SBClear. Enabled: = False;
StatusBar1. Panels [5]. Text: = 'Система: Подключение к базе данных. ';
LProtocol. Text: = LProtocol. Text + 'Система: Подключение к базе данных. ' + #13#10;
BBLoadFeature. Enabled: = False;
BBAdjustment. Enabled: = False;
BBExit. Enabled: = False;
BBStart. Enabled: = False;
// Прогерсс загрузки = 0
PBLoad. Position: = 0;
// TimerLoad. Enabled: = True;
BBTechnicalBehavior. Enabled: = False;
// Цепляемся к БД
{
if not Initialize_Enabled (1, MainDB. dbADM, nil, nil, MainDB. AdbADM,
nil, nil, MainDB. AdbADM_Bl) then
begin
MainDB. Free;
Exit
end;
}
// Указываем наименование файла с настройками подключения
DefRep_WDB: =NameIni;
try
try
//
// ShowMessage ('Circle');
PlaceError: = 'BBLoadFeatureClick: 296--ConnectWithDB--';
// Установка соединения с БД
FConnectWithDB (MainDB. dbMain, nil, nil, MainDB. AdbMain, DefRep_WDB,
'Base', 'DB', 'Objects. gdb', 'Нет БД');
StatusBar1. Panels [5]. Text: = 'Система: Установка соединения. ';
LProtocol. Text: = LProtocol. Text + 'Система: Установка соединения. ' + #13#10;
// Вслучаеуспешногосоединения
ifMainDB. dbMain. Connectedthen
begin
// ShowMessage ('BD1');
PBLoad. Position: = PBLoad. Position + 10;
dbConnect: = MainDB. dbMain;
end
else
if MainDB. AdbMain. Connected then
begin
// ShowMessage ('BD2');
PBLoad. Position: = PBLoad. Position + 10;
dbConnect: = MainDB. AdbMain;
end
else
begin
// Иначе
ShowMessage ('Нет БД, работать не могу');
StatusBar1. Panels [5]. Text: = 'Система: Подключение к базе данных не было осуществлено! ';
LProtocol. Text: = LProtocol. Text + 'Система: Подключение к базе данных не было осуществлено! ' + #13#10;
BBExit. Enabled: = True;
Exit
end;
// Получение параметров из файла картографической настройки (?)
Is_User_En_Check: = FGetParFromVV ('Is_User_En_Check', False);
Application. ProcessMessages;
StatusBar1. Panels [5]. Text: = 'Система: Получение параметров из файла картографической настройки. ';
LProtocol. Text: = LProtocol. Text + 'Система: Получение параметров из файла картографической настройки. ' + #13#10;
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('Parametres Map Options');
// Загружаем все слои
PlaceError: = 'BBLoadFeatureClick: 313--Layers--';
MLayers: = TMLayer_ALL. Create (dbConnect);
MLayers. LoadFromDB;
Application. ProcessMessages;
StatusBar1. Panels [5]. Text: = 'Система: Загрузка слоёв. ';
LProtocol. Text: = LProtocol. Text + 'Система: Загрузка слоёв. ' + #13#10;
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('All Layers');
// Семантики
PlaceError: = 'BBLoadFeatureClick: 318--Semantics--';
MKLSemantics: = TMKL_Semantic_All. Create (nil, nil);
MKLSemantics. LoadKlSemBD;
Application. ProcessMessages;
StatusBar1. Panels [5]. Text: = 'Система: Настройка семантик. ';
LProtocol. Text: = LProtocol. Text + 'Система: Настройка семантик. ' + #13#10;
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('Semantics');
// Библиотеки
PlaceError: = 'BBLoadFeatureClick: 323--Libraries--';
MLibraries: = TMLibrary_All. Create (dbConnect);
MLibraries. LoadFromDB;
Application. ProcessMessages;
StatusBar1. Panels [5]. Text: = 'Система: Подключение библиотек';
LProtocol. Text: = LProtocol. Text + 'Система: Подключение библиотек' + #13#10;
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('Libraries');
// Загружаем слой со СП
StatusBar1. Panels [5]. Text: = 'Система: Загрузка слоя со средствами противодействия';
LProtocol. Text: = LProtocol. Text + 'Система: Загрузка слоя со средствами противодействия' + #13#10;
PlaceError: = 'BBLoadFeatureClick: 328--LayerSP--';
LayerSP: = MLayers. LaysById [KodLaySP];
ifLayerSP = nilthen
begin
ShowMessage ('Не найден слой со средствами подавления. ' + #13#10 +
'В КП БПЛА занесите средства подавления и перезапустите программу');
StatusBar1. Panels [5]. Text: = 'Система: Слой со средствами противодействия не найден! ';
LProtocol. Text: = LProtocol. Text + 'Система: Слой со средствами противодействия не найден! ' + #13#10;
BBExit. Enabled: = True;
Exit
end;
except
on E: EDatabaseError do
raise EDBError. Create ('TFDefeat', PlaceError, E. Message);
on E: Exception do
raise EBaseError. Create ('TFDefeat', PlaceError, 'EBaseError',
'Ошибка при загрузке средств подавления',
'Ошибка "' + E. Message + '"');
end;
Application. ProcessMessages;
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('Layers SP');
// Загружаем объекты (СП)
StatusBar1. Panels [5]. Text: = 'Система: Загрузка объектов. ';
LProtocol. Text: = LProtocol. Text + 'Система: Загрузка объектов. ' + #13#10;
if LayerSP <> nil then
DefeatFeature: = TDefeatFeature. Create (dbConnect)
else
begin
ShowMessage ('Нетслоясобъектамиподавления (возможностараяверсияКПБПЛА) ');
StatusBar1. Panels [5]. Text: = 'Система: Нет слоя с объектами противодействия (возможно старая версия КП БПЛА)! ';
LProtocol. Text: = LProtocol. Text + 'Система: Нет слоя с объектами противодействия (возможно старая версия КП БПЛА)! ' + #13#10;
Exit
end;
Application. ProcessMessages;
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('Objects SP');
// Наносим СП на карту
StatusBar1. Panels [5]. Text: = 'Система: Нанесение средств противодействия на карту. ';
LProtocol. Text: = LProtocol. Text + 'Система: Нанесение средств противодействия на карту. ' + #13#10;
if LayerSP. Count > 0 then
begin
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DefeatFeature. LoadFeature (LayerSP, MKLSemantics, MLibraries);
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PBLoad. Position: = PBLoad. Position + 10;
// ShowMessage ('SP for map');
end
else
begin
StatusBar1. Panels [5]. Text: = 'Система: На карту не нанесены средства противодействия! ';
LProtocol. Text: = LProtocol. Text + 'Система: На карту не нанесены средства противодействия! ' + #13#10;
ShowMessage ('На карту не нанесены средства подавления. ' + #13#10 +
'В КП БПЛА нанесите средства подавления и перезапустите программу');
BBExit. Enabled: = True;
Exit
end;
except
on E: EBaseError do
E. ShowMessage;
on E: Exception do
raise;
end;
// Выбор СП в таблице
CurrentLine: = 1;
// TimerLoad. Enabled: = False;
// Отображаем что загрузка выполнена и разблокируем кнопки
PBLoad. Position: = 100;
// Разблокировка
Files. Enabled: = true;
Panels. Enabled: = true;
Settings. Enabled: = true;
Helper. Enabled: = true;
SbClear. Enabled: = true;
Load_Feature: = True;
BBTechnicalBehavior. Enabled: = True;
BBAdjustment. Enabled: = True;
BBExit. Enabled: = True;
BBStart. Enabled: = True;
BBLoadFeature. Enabled: = True;
// Выводим собщение об успехе
StatusBar1. Panels [5]. Text: = 'Система: Соединение с базой данных установлено, средства противодействия загружены. ';
LProtocol. Text: = LProtocol. Text + 'Система: Соединение с базой данных установлено, средства противодействия загружены. ' + #13#10;
end;
// Старт (соединение с сервером)
procedure TFDefeat. BBStartClick (Sender: TObject);
begin
// Проверка на запуск
if Work then
begin
// Прекращение работы
StatusBar1. Panels [5]. Text: = 'Система: Прекращение работы. ';
LProtocol. Text: = LProtocol. Text + 'Система: Прекращение работы. ' + #13#10;
BBAdjustment. Enabled: = True;
BBLoadFeature. Enabled: = True;
BChangeState. Enabled: = False;
BBStart. Caption: = 'Старт';
TimerSys. Enabled: = false;
work: =false;
// Если поток активен, соединение существует
if IdThreadCFN. Active and IdTCPCFN. Connected then
try
// Останавливаем поток, разрываем соединение
IdThreadCFN. Stop;
IdTCPCFN. Disconnect;
StatusBar1. Panels [5]. Text: = 'Система: Разрыв соединения. ';
LProtocol. Text: = LProtocol. Text + 'Система: Разрыв соединения. ' + #13#10;
except
end
end
else
begin
// Запуск
StatusBar1. Panels [5]. Text: = 'Система: Запуск! ';
LProtocol. Text: = LProtocol. Text + 'Система: Запуск! ' + #13#10;
BBAdjustment. Enabled: = False;
BBLoadFeature. Enabled: = False;
BChangeState. Enabled: = True;
BBStart. Caption: ='Стоп';
IdTCPCFN. Port: = Port;
IdTCPCFN. Host: = Host;
// пробуем соединиться с сервером
StatusBar1. Panels [5]. Text: = 'Система: Подключение к серверу. ';
LProtocol. Text: = LProtocol. Text + 'Система: Подключение к серверу. ' + #13#10;
with IdTCPCFN do
begin
if not Connected then
try
Connect;
if conn = false then
begin
conn: = True;
end;
except
end;
// Синхронизациявремени
Weather_MyNow: = now;
Weather_Reseived. time: = now;
// Запуск таймера (часов)
TimerSys. Enabled: = True;
Work: = True;
end;
end;
end;
// =====================================================
// ~~~~~~~~~ПРОЦЕДУРЫ И ФУНКЦИИ~~~~~~~~~~~~~~~~ //
// ПОГОДА------------------------------------------------------------------------
// =====================================================
// Установка погодных условий (При синхронизации с приложением погоды)
procedure TFDefeat. SetWeather;
begin
// Температура
LETemperature. Text: = IntToStr (Weather_Reseived. Temp) + '°C';
// Облачность
LECloud. Text: = IntToStr (Weather_Reseived. cloud) + '%';
// Наличие тумана
if Weather_Reseived. Mist =0then
LEFog. Text: = 'Нет'
else
LEFog. Text: = 'Есть';
// Осадки
LEPrecipitation. Text: = IntToStr (Weather_Reseived. hydro) + '%';
// Направление ветра
LEWindDirection. Text: = IntToStr (Weather_Reseived. course) + '°';
// Скорость ветра
LEWindSpeed. Text: = FloatToStr (Weather_Reseived. wind) + 'м/сек';
// Отображение системного времени модели
LEModeTime. Text: = DateTimeToStr (SysTime);
end;
// ===================================================
// СВЯЗЬ С КП--------------------------------------------------------------------
// ====================================================
// Команда СП
procedure TFDefeat.commandProcessing;
var
i: Integer;
YesFeature: Boolean;
Kod_ISP: String;
begin
//
try
YesFeature: = False;
with DataToISP do
begin
Kod_ISP: = IntToStr (KodISP); // Код СП из КП
LEKodBLA. Text: = IntToStr (NumerAim); // Номер цели
LEKodFN. Text: = Kod_ISP;
LEComTime. Text: = TimeToStr (TimeMark); // Время засечки
end;
with DefeatFeature do
begin
// Поиск СП в списке
for I: = 0 to ListFeature. Count - 1 do
begin
// Если СП найдено
if ListFeature [i] = Kod_ISP then
begin
YesFeature: = True;
// Команда СП
TBaseDefeat (ListFeature. Objects [i]).commFromKPBLA (DataToISP);
end;
end;
end;
// Не найдено запрашиваемого средства
if Not YesFeature then
raise EBaseError. Create ('TFDefeat', 'CommandProcessing: 206', 'EBaseError',
'Нет средства поражения с кодом = ' + Kod_ISP,
'Нет средства поражения с кодом = ' + Kod_ISP)
except
on E: EBaseError do
E. ShowMessage;
on E: Exception do
raise;
end;
end;
// Отправка ответа в КП
procedure TFDefeat. SendAnswer (ISPAnswer: TISPAnswer);
var
tmp_dyn: TIdBytes;
ISPAnswerPack: TISPAnswerPack;
begin
LEKodRes. Text: = IntToStr (ISPAnswer. KodISP); // Код СП из КП
LETimeRes. Text: = TimeToStr (NowSync); // Синхронизированное время
// Вывод ответа КП на экран
case ISPAnswer. Answer of
SP_Obn_: EAnswer. Text: = 'Принято к исполнению';
SP_NObn_: EAnswer. Text: = 'Цель не обнаружена';
SP_No_: EAnswer. Text: = 'Цель потеряна';
SP_YesAll_: EAnswer. Text: = 'Команда выполнена';
end;
// Запись сообщения
with ISPAnswerPack do
begin
Main. KodISP: = ISPAnswer. KodISP;
Main. TimeMark: = SysTime;
Main. NumerAim: = ISPAnswer. NumerAim;
Main. Answer: = ISPAnswer. Answer;
Header. bType: = SMT_ISPAns;
Header. wSID: = PRG_ISP;
// Header. wAID: = PRG_SERVER;
Header. wAID: = PRG_MAIN;
Header. rDTM: = GetPacketTime (NowSync);
Header. nLength: = Sizeof (TISPAnswer);
Header. wBC: = 0;
end;
// Отправка сообщения
// ShowMessage ('Пишем в буфер');
// sk: = sk + 1;
IdTCPCFN. WriteBuffer (ISPAnswerPack, SizeOf (ISPAnswerPack));
if runstop <> true then
RMOutput (6);
{
if RKPBPLA. Checked = true then
begin
// StatusBar1. Panels [5]. Text: = 'Система: Отправлено сообщение№' + inttostr (sk) + ' командному пункту';
end;
}
// StatusBar1. Panels [8]. Text: = 'K: ' + inttostr (sk);
end;
// =====================================================
// БПЛА--------------------------------------------------------------------------
// =====================================================
// Отслеживание БПЛА (занесение в список целей, отслеживание координат) (?)
procedure TFDefeat. BLAProcessing;
var
i: Integer;
AdrrBPLA: String;
YesBPLA: Boolean;
begin
// BPLA
YesBPLA: = False;
AdrrBPLA: = IntToStr (AddressBPLA);
// Поиск БПЛА в списке
for i: = 0 to ListAllBLA. Count - 1 do
begin
if ListAllBLA [i] = AdrrBPLA then
begin
// Определение координат БПЛА
TAnalizBPLA (ListAllBLA. Objects [i]). SetCoord (BPLA);
YesBPLA: = True
end
end;
if Not YesBPLA then
// Добавление БПЛА в список (если не было найдено)
ListAllBLA. AddObject (AdrrBPLA, TAnalizBPLA. Create (BPLA, AddressBPLA));
end;
// =====================================================
// TCP---------------------------------------------------------------------------
// =====================================================
// Обработка подключения
procedure TFDefeat. IdTCPCFNConnected (Sender: TObject);
var
Ident: R_Ident;
tmp_dyn: TIdBytes;
Ipacet: TPacetStruct;
begin
// Запускаем поток
IdThreadCFN. Start;
// Запись сообщения
// if IdTCPCFN. IOHandler. Connected then
if IdTCPCFN. Connected then
begin
with Ident do
begin
// Параметры сообщения
Main. wCnlID: = PRG_ISP; // Код программы (отправителя)
Main. sARM_Name: = FGet_ARMName; // Имя машины
Main. sSRV_Name: = Host; // Адрес сервера
Main. sPRG_Path: = ExePath; // Пусть к исполняемому файлу
Main. sPRG_Rem: = 'Имитатор ср-в подавления'; // Наименование приложения
Header. bType: = SMT_SCQ; // Тип cообщения (запрос списка абонентов) (!)
Header. wSID: = PRG_ISP; // Код отправителя
Header. rDTM: = GetPacketTime (NowSync); // Параметры времени (!)
Header. wAID: = PRG_SERVER; // Код получателя
Header. nLength: = SizeOf (Main); // Размер пакета (!)
Header. wBC: = 0; // Число блоков данных
Ipacet [1]: = '1';
Подобные документы
Описание математической модели летательного аппарата. Разработка алгоритмов управления беспилотным летательным аппаратом . Модель атмосферы и воздушных возмущений. Модель рулевых органов. Синтез управления на траекторном уровне. Петля Нестерова.
дипломная работа [1,0 M], добавлен 29.09.2008Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.
дипломная работа [3,2 M], добавлен 30.06.2011Диагностический анализ системы управления предприятия, его организационной и функциональной структуры. Разработка проекта подсистемы учёта средств вычислительной техники, описание технического обеспечения базы данных. Характеристика программного продукта.
дипломная работа [7,2 M], добавлен 28.06.2011Разработка программного обеспечения для автоматизированной системы калибровки и поверки комплекса технических средств ПАДК "Луг-1". Аналитический обзор аналогов. Проектирование пользовательского интерфейса. Средства разработки программного обеспечения.
дипломная работа [1,4 M], добавлен 17.12.2014Анализ технических средств, разработка структуры подсистемы. Создание программного приложения в среде InduSoft Web Studio. Информационный расчет аналогового ввода сигналов. Адресация каналов модулей. Экспериментальная проверка подсистемы в составе стенда.
дипломная работа [1,7 M], добавлен 16.05.2017Методы защиты программного обеспечения, их оценка и анализ защищенности. Методы свершенствования подсистемы защиты информации от вредоносного программного обеспечения. Перечень сведений конфиденциального характера организации ООО "СтройСпецКомплект".
дипломная работа [1,9 M], добавлен 10.07.2015Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.
дипломная работа [1,4 M], добавлен 03.06.2014Способы построения защищенных сегментов локальных систем. Анализ систем обнаружения вторжений и антивирусное обеспечение. Анализ технологии удаленного сетевого доступа. Установка программного обеспечения на серверы аппаратно-программного комплекса.
дипломная работа [2,4 M], добавлен 14.03.2013Анализ функциональной структуры автоматизированной системы управления. Обоснование необходимости создания подсистемы учета материальных средств, проектирование информационной базы данных. Расчет себестоимости разработки внедряемого программного продукта.
дипломная работа [5,4 M], добавлен 26.06.2011Обобщенная модель процесса обнаружения атак. Обоснование и выбор контролируемых параметров и программного обеспечения для разработки системы обнаружения атак. Основные угрозы и уязвимые места. Использование системы обнаружения атак в коммутируемых сетях.
дипломная работа [7,7 M], добавлен 21.06.2011