Программно-аппаратная система генерации сигналов с заданными параметрами
Разработка программно-аппаратного комплекса на базе ПЭВМ типа Pentium IV, включающего в себя периферийное устройство для генерации сигнала в виде напряжения, меняющегося во времени, и программного обеспечения для управления процессом генерации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 30.06.2012 |
Размер файла | 3,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
атомные электростанции (АЭС);
- предприятия по производству и переработке ядерного топлива;
- научно-исследовательские и проектные организации, связанные с ядерными реакторами;
- ядерные энергетические установки на транспорте.
На территории Украины работают 4 атомных электростанций с 15 энергетическими ядерными реакторами, которые дают около 52% электроэнергии, вырабатываемой в стране. Для проведения исследовательских работ функционируют 2 ядерных реактора. В Украине работают более 8 тысяч предприятий и организаций, которые используют различные радиоактивные вещества, а также хранят и перерабатывают радиоактивные отходы.
Развитие отечественной ядерной энергетики ведется на основе строительства реакторов на тепловых нейтронах, позволяющих использовать в качестве топлива слабообогащённый природный уран (U-238).
К таким реакторам относятся:
- реакторы большой мощности, канальные (РБМК-1000, РБМК-1500), замедлителем в нем служит графит, а теплоносителем - кипящая вода, циркулирующая снизу вверх по вертикальным каналам, проходящим через активную зону. Он размещается в наземной шахте и содержит 192 т. слабообогащённой двуокиси урана-238, а под ним находится железобетонный бункер для сбора радиоактивных отходов при работе реактора;
- водоводяные энергетические реакторы (ВВЭР-600, ВВЭР-1000), в которых вода служит одновременно теплоносителем и замедлителем.
При аварии на АЭС с выбросом радионуклидов необходимо быстро выявить радиационную обстановку методом прогнозирования, а затем уточнить ее по данным разведки
Оценку радиационной обстановки произведем методом прогнозирования.
При авариях на АЭС выделяются 5 зон радиоактивного загрязнения. Зона радиационной опасности (М) - представляет собой участок загрязненной местности, в пределах которой доза излучения на открытой местности может составлять от 5 до 50 рад. в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 0,014 рад/час.
Рисунок 10.1 -- Зоны радиоактивного заражения
В пределах зоны «М» целесообразно ограничить пребывание людей, не привлекаемых непосредственно к работам по ликвидации последствий радиационной аварии.
При ликвидации аварии в зоне «М» и во всех других зонах должны выполняться основные мероприятия: радиационный и дозиметрический контроль, защита органов дыхания, профилактический прием йодсодержащих препаратов, санитарная обработка людей, дезактивация обмундирования и техники.
Зона умеренного загрязнения (А) - представляет собой участок загрязненной местности, в пределах которой доза излучения может составлять от 50 до 500 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 0,14 рад/час. Действия формирований в зоне «А» необходимо осуществлять в защитной технике с обязательной защитой органов дыхания.
В зоне сильного загрязнения (Б) - доза излучения составляет от 500 до 1500 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 1,4 рад/час. Действия формирований необходимо осуществлять в защитной технике с размещением в защитных сооружениях.
В зоне опасного загрязнения (В) - доза излучения составляет от 1500 до 5000 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 4,2 рад/час. Действия формирований возможно только в сильно защищенных объектах и технике. Время нахождения в зоне -- несколько часов.
В зоне чрезвычайного опасного загрязнения (Г) - доза излучения может составлять больше 5000 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 14 рад/час. В зоне нельзя находиться даже кратковременно.
Оценка радиационной обстановки при аварии на АЭС сводится к определению методом прогноза доз излучения и выработке оптимальных режимов деятельности людей при нахождении их в прогнозируемой зоне загрязнения.
При расчетах необходимо руководствоваться допустимой дозой облучения, установленной для различных категорий населения, оказавшегося в зоне радиоактивного загрязнения при аварии на АЭС.
1. население, рабочие и служащие, не привлекаемые в мирное время к работе с радиоактивными веществами - 1 мЗв в год;
2. население, рабочие и служащие, персонал, привлекаемые в мирное время к работе с радиоактивными веществами - 2 мЗв в год;
3. постоянно работающие с ионизирующим излучением - 20 мЗв в год.
программный аппаратный генерация сигнал
10.2 Расчетная часть
Расчетная часть выполнена по методике, изложенной в методических указаниях [10] для следующих данных:
Таблица 10.1 -- Исходные данные для решения задачи по оценке
T аварии |
TНАЧ. работы |
Начало работы после аварии |
Продолжит. TРАБ |
Количество авар. реакторов |
Доля выброса РВ, % |
KОСЛ |
Скорость ветра, м/с |
Rx, км |
ДУСТ, рад. |
Облачность |
|
10:00 |
12:00 |
2 |
12 |
1 |
30 |
3 |
5 |
33,7 |
0,3 |
3 |
1. По таблице 1 определяем категорию устойчивости атмосферы, соответствующую погодным условиям и заданному времени суток. По условию: облачность средняя (3 б.), скорость приземного ветра V10 = 5 м/с. Согласно таблице 1 категория устойчивости Д (изотермия).
2. По таблице 2 определяем среднюю скорость ветра Vср в слое распространения радиоактивного облака. Согласно таблицы для категории устойчивости Д и скорость приземного ветра V10 = 5 м/с средняя скорость ветра Vср = 5 м/с.
3. По таблице 4 для заданного типа ЯЭР (РБМК-1000), доли выброшенных РВ (h = 30%) и Vср= 5 м/с определяем размеры прогнозируемых зон загрязнения местности и наносим их в масштабе в виде правильных эллипсов.
Рисунок 10.2 -- Расположение объекта согласно зонам радиоактивного загрязнения
4. Исходя из заданного расстояния от объекта (Rх = 33,7 км) до аварийного реактора с учетом образующихся зон загрязнения устанавливаем, что объект оказался на внешней границе зоны «Б».
5. По таблице 7 определяем время начала формирования следа радиоактивного загрязнения после аварии (время начала выпадения радиоактивных осадков на территории объекта). Для Rх = 33,7 км, категории устойчивости Д и средней скорости ветра Vср = 5 м/с, = 1,7 часа. Следовательно, объект через = 1,7 часа после аварии окажется в зоне загрязнения, что потребует дополнительных мер по защите рабочих и служащих.
6. По таблице 10 для зоны загрязнения «Б» с учетом времени начала работы после аварии (= 2 часа) и продолжительности работы (= 12 часов) определяем дозу облучения, которую получат рабочие и служащие объекта при открытом расположении на внешней границе зоны «Б». Согласно таблице, = 17,1 рад. Расчет дозы с учетом внешней границы производим по формуле:
Расчет показывает, что рабочие и служащие офиса за 12 часов работы в зоне «Б» могут получить установленную дозу ( = 0,3 рад).
Используя данные из таблицы 10 определяем допустимое время начала работы рабочих служащих объекта после аварии на АЭС при условии получения дозы не более = 0,3 рад (по условию) по формуле:
Таблица 10.2 -- Результат оценки радиационной обстановки
№ вар. |
Категория устойчивости атмосферы |
Vср м/с |
Зона, место в зоне |
Дано:1);2) ; Определено: l) 2) |
|||||
6 |
Д |
5 |
Б, внешняя граница |
1,7 |
17,1 |
3,35 |
1,53 |
При = 1,53: 1) =12 > =2 месяца 2) =2 > ? 0,75 часа |
10.3 Мероприятия по защите сотрудников лаборатории
1. После получения оповещения о движении радиоактивною облака
установить в офисе непрерывное радиационное наблюдение с переносными или стационарными дозиметрическими приборами.
2. При прохождении радиоактивного облака сотрудников лаборатории укрыть в убежище или ПРУ.
3. По данным разведки уточнить прогнозируемую радиационную обстановку.
4. При уровнях радиации (Р > 5 мР/ч) на открытой местности сотрудники офиса должны находиться в респираторах или противогазах.
5. Во избежание переоблучения сотрудникам офиса необходимо организовать сменную работу с учетом допустимой дозы.
6. Для исключения заноса радиоактивных веществ внутрь помещений необходимо загерметизировать их, а при наличии фильтровентиляционных установок включить их в режиме «чистой вентиляции».
7. После выпадения радиоактивных осадков и снижения загрязненности территории произвести дезактивационные работы с последующим контролем степени загрязненности.
8. При больших уровнях загрязненности и невозможности работы сотрудников необходимо эвакуировать в незагрязненные районы.
10.4 Заключение
Офис окажется на внешней границе зоны сильного загрязнения (зона Б). Время начала формирования радиоактивного следа после аварии составит
= 1,7 часа.
1. Согласно = 1,53 рад и = 12 часов по таблице 10 находим = 2 месяца, т. е. можно начинать работу только через 2 месяца после аварии на АЭС и работать полную смену ( = 12 часов).
2. По исходным данным необходимо начать работу после аварии через 2 часа (= 2 часа). Следовательно, по таблице 10 и времени = 2 часа и рассчитанной дозе =1,53 рад с учетом = 0,3, находим продолжительность работы = 0,75 ч.
Следовательно, рабочие и служащие объекта, чтобы получить дозу не выше установленной (0,3 рад), могут начинать работу в зоне «Б» через 2 часа и выполнять ее 0,75 часа или при начале работы через 2 месяца могут работать 12 часов.
ЗАКЛЮЧЕНИЕ
В ходе работы над дипломным проектом была разработана программно-аппаратная система генерации сигналов с заданными параметрами.
Был проведён системный анализ, и разрабатываемая программно-аппаратная система была рассмотрена с точки зрения основных принципов системного анализа.
В результате проведения вариантного анализа, предпочтение было отдано использованию встроенной звуковой карты. В качестве библиотеки для создания графического интерфейса была выбрана Windows Presentation Foundation, которая входит в состав Microsoft .NET Framework.
Была разработана обобщённая блок-схема алгоритма программной системы, структурная модель и диаграмма концептуальных классов программно-аппаратного комплекса.
Также была создана универсальная платформа и ядро программной системы со строгим использованием объектно-ориентированного подхода на языке высокого уровня C#. Реализована возможность динамического подключения элементов библиотеки. Производится интерпретация схемы генератора и проверка на ошибки.
Реализован многофункциональный, доступный пользовательский интерфейс с использованием библиотеки WPF, которая позволяет добиться высокой скорости и качества отображения интерфейса. Интерфейс поддерживает возможности составления схемы графически, отката действий пользователя, масштабирования схемы.
При работе над данным проектом было проведено технико-экономическое обоснование проекта. Проведен анализ эффективности проекта на основе интегрального экономического эффекта. Период окупаемости капитальных вложений составил два года.
В рамках охраны труда было рассчитано защитное заземление, на соответствие принятым нормам и предложены некоторые рекомендации по улучшению условий работы в офисе компьютерной фирмы.
В рамках безопасности в чрезвычайных ситуациях была оценена радиационная обстановка в компьютерной фирме при загрязнении радиоактивными веществами после аварии на атомной электростанции.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. ГОСТ 12.1.004-76. Пожарная безопасность. Общие требования.
2. ГОСТ 12.2.032-78. Система стандартов безопасности труда. Рабочее место при выполнении работ сидя. Общие эргономические требования.
3. ДНАОП 0.00-1.31-99. Правила охраны труда во время эксплуатации ЭВМ.
4. ДСН 3.3.6.037-99. Санитарные нормы производственного шума, ультразвука и инфразвука.
5. ДСН 3.3.6.042-99. Санитарные нормы микроклимата производственных помещений.
6. Дьяконов В. Генераторы сигналов. / ДМК Пресс СПб.: Питер, 2009 - 381 с.
7. Макконнелл С. Совершенный код. / Пер. с англ. В.Г. Вшивцева - М.: Издательство «Русская редакция»; СПб.: Питер, 2008 - 896 с.
8. Методические указания для выполнения курсовой работы по дисциплине «Автоматизация проектирования сложных систем» для студентов специальности 7.091501 - «Компьютерные системы и сети» дневной формы обучения / Сост. Е.Н. Мащенко, Ю.П. Нюнькина - Севастополь: Изд-во СевНТУ, 2010. - 48 с.
9. Методические указания для выполнения раздела «Гражданская оборона» в дипломных проектах специальностей 7.080401 - «Информационные управляющие системы и технологии», 7.092502 - «Компьютерно-интегрированные технологические процессы и производства», 7.091401 - «Системы управления автоматики», 7.091501 - «Компьютерные системы и сети» Сост. М.С. Журавский. - Севастополь: Изд-во СевНТУ, 2000. - 15 с.
10. Методические указания для выполнения раздела «Охрана труда и окружающей среды» в дипломных проектах специальностей 7.080401 - «Информационные управляющие системы и технологии», 7.092502 - «Компьютерно-интегрированные технологические процессы и производства», 7.091401 - «Системы управления автоматики», 7.091501 - «Компьютерные системы и сети» Сост. Е.И. Азаренко. - Севастополь: Изд-во СевНТУ, 2005. - 10с.
11. Методические указания к выполнению курсовой работы «Расчет экономической эффективности создания и использования программного продукта» по дисциплинам «Основы менеджмента и маркетинга», «Менеджмент» для студентов специальностей 7.091501, 7.091401, 7.080401 всех форм обучения / Сост. Г.А. Раздобреева, Е. В. Коваль, Т.В. Кулешова.- Севастополь: Изд-во СевНТУ, 2009.- 24с.
12. Методические указания по организации и проведению преддипломной практики студентов дневной формы обучения специальности 7.091501 - «Компьютерные системы и сети» / Сост. В.В. Кирюхин, А.В. Скатков. - Севастополь: Изд-во СевНТУ, 2011. - 16 с.
13. Методические указания практическому занятию на тему «Метод анализа иерархий» по дисциплине «Теория оптимальных решений» для студентов специальности 7.091501 - «Компьютерные системы и сети» / Сост. Ю.Н. Щепин - Севастополь: Изд-во СевНТУ, 2002 - 11с.
14. СН 4559-88. Временные санитарные нормы и правила для работников вычислительных центров.
15. СНиП II-4-79. Естественное и искусственное освещение.
16. Современные USB-генераторы сигналов произвольной формы с сегментированной [Электронный ресурс]. - Электрон. данные (175 кб.). - Режим доступа http://www.prist.ru/info.php/articles/akip-3403-5_2.htm Понедельник, 21 Мая 2012 10:20.
17. Уоррен, Генри, С. Алгоритмические трюки для программистов.: Пер. с англ. -М.: Издательский дом «Вильяме», 2003. - 288с.: ил.
ПРИЛОЖЕНИЕ А
Расчёты для раздела «Вариантый анализ»
Приложение А1
Для этого рассчитаем коэффициенты критериев по формуле (A1):
(A1) |
Найдем сумму коэффициентов по формуле (A2):
(A2) |
Вычислим вектор локальных приоритетов по формуле (A3):
(A3) |
Оценим величину погрешности при вычислении вектора локальных приоритетов:
По полученным результатам можно сделать вывод о важности критериев. Представим критерии по убыванию их приоритетов:
1. Цена.
2. Разрядность и максимальная частота.
3. Уровень шума.
Для проверки согласованности матрицы вычислим:
(A4) |
Определим наибольшее собственное значение матрицы парных сравнений по следующей формуле:
(A5) |
Найдём индекс согласованности:
(A6) |
Найдем отношение согласованности ОС:
(A7) |
где СС - случайная согласованность, выбираемая в зависимости от размера матрицы.
СС(3) = 0,58.
Приложение А2
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А3
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А4
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А5
Вычислим глобальные приоритеты по формуле (A8):
(A8) |
Проверим погрешность вычислений:
Построим таблицу Q для имеющихся альтернатив. Элемент таблицы вычисляется по формуле (A9):
(A9) |
Таблица А1 -- Матрица Q влияния критериев на выбор альтернативы
А1 |
А2 |
А3 |
||
Б1 |
24,5 % |
50,76% |
25,74% |
|
Б2 |
64,85% |
20,02% |
14,13% |
|
Б3 |
91,56% |
4,73% |
3,7% |
Проверим согласованность иерархии. Для этого необходимо вычислить индекс согласованности, определяемый как сумма произведений индексов согласованностей критериев на их приоритеты:
Вычислим отношение согласованности по формуле (A10):
(A10) |
Найдем отношение согласованности при СС(3) = 0,58:
Приложение А6
Для этого рассчитаем коэффициенты критериев по формуле (A1):
Найдем сумму коэффициентов по формуле (A2):
Вычислим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов:
По полученным результатам можно сделать вывод о важности критериев. Представим критерии по убыванию их приоритетов:
1. Производительность;
2. Эффективность;
3. Кроссплатформенность;
4. Количество компонент.
Для проверки согласованности матрицы вычислим по формуле (A4):
Определим наибольшее собственное значение матрицы парных сравнений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности ОС по формуле (A7):
СС(4) = 0,9.
Приложение А7
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А8
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А9
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А10
Найдем значения по формуле (A1):
Найдем значение B по формуле (A2):
Определим вектор локальных приоритетов по формуле (A3):
Оценим величину погрешности при вычислении вектора локальных приоритетов, для этого сложим все приоритеты и сравним сумму с единицей:
Определим значения по формуле (A4):
Найдем значение наибольшего собственного значения матрицы суждений по формуле (A5):
Найдём индекс согласованности по формуле (A6):
Найдем отношение согласованности по формуле (A7):
Приложение А11
Вычислим глобальные приоритеты по формуле (A8):
Проверим погрешность вычислений:
Построим таблицу Q для имеющихся альтернатив. Элемент таблицы вычисляется по формуле (A9):
Таблица А2 -- Матрица Q влияния критериев на выбор альтернативы
А1 |
А2 |
А3 |
А4 |
||
Б1 |
69,77% |
20,43% |
7,19% |
2,41% |
|
Б2 |
67,37% |
12,25% |
10,02% |
10,36% |
|
Б3 |
30,35% |
8,56% |
3,24% |
57,85% |
Проверим согласованность иерархии. Для этого необходимо вычислить индекс согласованности, определяемый как сумма произведений индексов согласованностей критериев на их приоритеты:
Вычислим отношение согласованности по формуле (A10):
Найдем отношение согласованности при СС(3) = 0.58:
ПРИЛОЖЕНИЕ Б
Текст программы
Файл «\Siglab\UndoRedoService.cs»
namespace Siglab
{
using System.Collections.Generic;
using System.Linq;
using Commands;
using Common;
using Plugin;
/// <summary>
/// TODO: Update summary.
/// </summary>
public class UndoRedoService : NotifyableObject
{
/// <summary>
///
/// </summary>
private readonly Stack<IDesignerCommand> undoCommands = new Stack<IDesignerCommand>();
/// <summary>
///
/// </summary>
private readonly Stack<IDesignerCommand> redoCommands = new Stack<IDesignerCommand>();
/// <summary>
///
/// </summary>
private Stack<IDesignerCommand> originalUndoCommands = new Stack<IDesignerCommand>();
/// <summary>
///
/// </summary>
private Stack<IDesignerCommand> originalRedoCommands = new Stack<IDesignerCommand>();
/// <summary>
///
/// </summary>
public bool HasChanges
{
get
{
return !(this.originalUndoCommands.Count == this.undoCommands.Count &&
this.originalRedoCommands.Count == this.redoCommands.Count &&
this.originalUndoCommands.SequenceEqual(this.undoCommands) &&
this.originalRedoCommands.SequenceEqual(this.redoCommands));
}
}
/// <summary>
///
/// </summary>
public bool CanUndo
{
get
{
return this.undoCommands.Count > 0;
}
}
/// <summary>
///
/// </summary>
public bool CanRedo
{
get
{
return this.redoCommands.Count > 0;
}
}
/// <summary>
///
/// </summary>
public string UndoTitle
{
get
{
if (this.CanUndo)
{
return string.Format("Undo {0}", this.undoCommands.Peek().Title);
}
return null;
}
}
/// <summary>
///
/// </summary>
public string RedoTitle
{
get
{
if (this.CanRedo)
{
return string.Format("Redo {0}", this.redoCommands.Peek().Title);
}
return null;
}
}
/// <summary>
///
/// </summary>
/// <param name="command"></param>
public void Execute(IDesignerCommand command)
{
if (command == null)
{
return;
}
command.Execute();
this.undoCommands.Push(command);
this.redoCommands.Clear();
this.Update();
}
/// <summary>
///
/// </summary>
public void Undo()
{
if (!this.CanUndo)
{
return;
}
var command = this.undoCommands.Pop();
command.Undo();
this.redoCommands.Push(command);
this.Update();
}
/// <summary>
///
/// </summary>
public void Redo()
{
if (!this.CanRedo)
{
return;
}
var command = this.redoCommands.Pop();
command.Redo();
this.undoCommands.Push(command);
this.Update();
}
/// <summary>
///
/// </summary>
public void AcceptChanges()
{
this.originalRedoCommands = new Stack<IDesignerCommand>(this.redoCommands);
this.originalUndoCommands = new Stack<IDesignerCommand>(this.undoCommands);
}
/// <summary>
///
/// </summary>
private void Update()
{
this.Notify("UndoTitle");
this.Notify("RedoTitle");
}
}
}
Файл «/Siglab/PluginService.cs»
namespace Siglab
{
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.IO;
using System.Linq;
using Plugin;
/// <summary>
/// Plugin manager.
/// </summary>
public class PluginService
{
public PluginService(string pluginDirectory)
{
this.PluginDirectory = pluginDirectory;
this.LoadPlugins();
}
[ImportMany]
public List<ExportFactory<Plugin, IPluginMetadata>> Plugins
{
get;
protected set;
}
public string PluginDirectory
{
get;
private set;
}
public Plugin GetPlugin(string name)
{
var pluginFactory = this.Plugins.FirstOrDefault(n => n.Metadata.Name.Equals(name));
if (pluginFactory == null)
{
return null;
}
var plugin = pluginFactory.CreateExport().Value;
return plugin;
}
private void LoadPlugins()
{
var catalog = new AggregateCatalog();
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, this.PluginDirectory);
foreach (var directory in Directory.GetDirectories(path))
{
catalog.Catalogs.Add(new DirectoryCatalog(directory));
}
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
}
}
Файл «\Plugin\Plugin.cs\»
namespace Plugin
{
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Xml.Linq;
/// <summary>
/// Describes a plugin.
/// </summary>
public abstract class Plugin : ISettings
{
private readonly List<Port> ports = new List<Port>();
/// <summary>
/// Initializes a new instance of the Plugin class.
/// </summary>
protected Plugin()
{
this.Metadata = (PluginAttribute)Attribute.GetCustomAttribute(this.GetType(), typeof(PluginAttribute));
}
public List<Port> Ports
{
get
{
return this.ports;
}
}
/// <summary>
/// Gets the metadata.
/// </summary>
public PluginAttribute Metadata
{
get;
private set;
}
/// <summary>
/// Gets or sets the view.
/// </summary>
public UserControl View
{
get;
protected set;
}
/// <summary>
/// Gets the name.
/// </summary>
public string Name
{
get
{
return this.Metadata.Name;
}
}
/// <summary>
/// Gets the library.
/// </summary>
public string Library
{
get
{
return this.Metadata.Library;
}
}
/// <summary>
/// Gets the version.
/// </summary>
public string Version
{
get
{
return this.Metadata.Version;
}
}
/// <summary>
/// Gets the description.
/// </summary>
public string Description
{
get
{
return this.Metadata.Description;
}
}
/// <summary>
/// Gets or sets the settings.
/// </summary>
public XElement Settings
{
get
{
return this.ViewModel.Settings;
}
set
{
this.ViewModel.Settings = value;
}
}
/// <summary>
/// Gets or sets the view model.
/// </summary>
protected ISettings ViewModel
{
get;
set;
}
public void AddInputPort(string portName)
{
this.ports.Add(new InputPort(portName));
}
public void AddOutputPort(string portName)
{
this.ports.Add(new OutputPort(portName));
}
/// <summary>
/// Shows configure window.
/// </summary>
/// <param name="owner">The window owner.</param>
public abstract void ShowConfigureWindow(Window owner);
/// <summary>
/// Plugin emulation.
/// </summary>
public abstract void Emulate(IDictionary<Port, Signal> data);
private Signal GetSignal<TPort>(string portName, IDictionary<Port, Signal> data, Func<string, TPort> factory)
where TPort : Port
{
var port = factory(portName);
if (!this.ports.Contains(port))
{
throw new ArgumentException();
}
return data[port];
}
public Signal GetOutputSignal(string portName, IDictionary<Port, Signal> data)
{
return this.GetSignal(portName, data, n => new OutputPort(n));
}
public Signal GetInputSignal(string portName, IDictionary<Port, Signal> data)
{
return this.GetSignal(portName, data, n => new InputPort(n));
}
}
}
ПРИЛОЖЕНИЕ В
Модуль тестирования «SchemeTest»
namespace Tests
{
using System;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Siglab;
[TestClass]
public class SchemeTest
{
private TestContext testContextInstance;
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
[TestMethod]
[ExpectedException(typeof(XmlException))]
public void WithoutRootElement()
{
DesignerCanvasOpen(XElement.Load(new StringReader("error")));
}
[TestMethod]
public void EmptyRootElement()
{
DesignerCanvasOpen(XElement.Load(new StringReader("<Siglab></Siglab>")));
}
[TestMethod]
[ExpectedException(typeof(NullReferenceException))]
public void EmptyDesignerItem()
{
DesignerCanvasOpen(XElement.Load(new StringReader("<Siglab><Items><DesignerItem></DesignerItem></Items></Siglab>")));
}
[TestMethod]
[ExpectedException(typeof(FormatException))]
public void DesignerItemWithWrongId()
{
DesignerCanvasOpen(XElement.Load(new StringReader("<Siglab><Items><DesignerItem><Id>error</Id></DesignerItem></Items></Siglab>")));
}
private void DesignerCanvasOpen(XElement root)
{
var canvas = new DesignerCanvas();
canvas.Open(root);
}
}
}
Размещено на Allbest.ru
Подобные документы
Обзор области генерации сетевого трафика. Описание выбранных методов, моделей, алгоритмов решения задач. Создание модели поведения пользователя, распределение количества посещённых страниц сайта. Выбор средств реализации программного продукта (проекта).
курсовая работа [1,3 M], добавлен 30.06.2017Выбор базовых программных средств для разработки оригинального программного обеспечения. Компоненты программно-методического комплекса проектирования токарных операций. Программное обеспечение для организации интерфейса программно-методического комплекса.
дипломная работа [2,8 M], добавлен 14.05.2010Разработка программного обеспечения для автоматизированной системы калибровки и поверки комплекса технических средств ПАДК "Луг-1". Аналитический обзор аналогов. Проектирование пользовательского интерфейса. Средства разработки программного обеспечения.
дипломная работа [1,4 M], добавлен 17.12.2014Информационно-вычислительный комплекс "Ангара" для компьютерного моделирования трубопроводных систем энергетики. Генерации SQL скрипта структуры базы данных и средства программного доступа. Описание интерфейса пользователя и его режимы генерации.
дипломная работа [5,0 M], добавлен 09.05.2014Понятие, виды и функции тестов, компьютерное тестирование. Государственные стандарты создания компьютерных тестов и практическая реализация комплекса генерации тестов: СУБД и язык программирования, пользовательский интерфейс, экономическая эффективность.
дипломная работа [2,1 M], добавлен 29.06.2012Создание генератора статичной версии системы стратегического планирования в виде сайта. Разработка способа перевода динамических веб-страниц в статичные и Flash-объектов в изображения. Реализация веб-интерфейса взаимодействия пользователя с генератором.
отчет по практике [1,5 M], добавлен 06.04.2013Идентификация и аутентификация пользователей в системах защиты информации. Порядок установки программно-аппаратного комплекса аккорд. Регистрация администратора безопасности информации. Установка платы контроллера. Подсоединение контактного устройства.
курсовая работа [31,9 K], добавлен 15.03.2016Понятие фрактала, принципы создания изображения. Разработка алгоритма и режимов генерации ландшафта. Описание программы FracLandscapes.exe. в среде разработки Delphi 10. Примеры построения ландшафта с использованием различных режимов и количества изгибов.
курсовая работа [688,9 K], добавлен 04.05.2014Методика решения задачи по выбору подмножества, состоящего из нескольких компонент. Характеристики, порядок записи и листинг программ по генерации множества всех подмножеств из N элементов и генерации последовательности чисел в лексикографическом порядке.
реферат [22,4 K], добавлен 07.03.2010Модели звуковых карт, их возможности, качество звука и размеры. Устройство звуковых карт и принципы их функционирования. Методы генерации звука, применяющиеся в звуковых платах. Особенности системы пространственного звуковоспроизведения Dolby Digital.
реферат [34,8 K], добавлен 13.03.2011