Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
nybok PZ (Восстановлен).docx
Скачиваний:
47
Добавлен:
01.03.2016
Размер:
1.43 Mб
Скачать

2 Разработка алгоритма программы

Для успешной реализации системы необходимо продумать на начальном этапе структуру приема данных из сокета на ком–порт, и визуализацию передачи пакетов. Полная схема алгоритма системы представлена на чертеже БрГТУ.07823 – 12 90 00.

В начале работы программы система должна произвести инициализацию элементов и сети Ethernet, предусматривается создание объекта сокета, смотрите рисунок 2.1.

Рисунок 2.1 – Инициализация элементов иEthernet

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

Рисунок 2.2 – Сканирование и выбор порта.

Если объекты порта и сокета созданы производится подключение, рисунок 2.3.

Рисунок 2.3 – Подключение.

При подключении создаются два дочерних потока. Один для приема данных с Ethernet, второй для приема данных с ком–порта. При приеме пакетов сEthernet, предусматривается визуализация передачи пакетов в логе окна, рисунок 2.4.

Рисунок 2.4– Создание дочерних потоков.

В процессе работы программы, предусматривается очистка лога передачи и временных буферов, рисунок 2.5.

Рисунок 2.5 – Очистка лога и буферов.

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

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

3 Проектирование программных модулей

Терминальная программа написана на языке программирования Java. Программа оформлена в виде исполняемого файла дляJava–машины TINI (TINI JVM), исрльзовалась среда программированияNetBeansIDE7.0.1, версияJDK(JavaDevelopmentKit) 1.7, текст программы приведен в приложении БрГТУ.07823 – 12 12 00.

Среда IDE NetBeans – это признанная интегрированная среда разработки приложений для платформ Windows, Mac, Linux и Solaris. Проект NetBeans состоит из интегрированной среды разработки с открытым исходным кодом и платформы приложений, которые позволяют разработчикам быстро создавать веб–приложения, производственные, настольные и мобильные приложения на платформе Java, а также PHP, JavaScript и Ajax, Ruby и Ruby on Rails, Groovy и C/C++. Проект поддерживается энергичным сообществом разработчиков и предлагает большой выбор подключаемых модулей независимых поставщиков ПО. Мы считаем, что среду IDE NetBeans должен загрузить каждый разработчик программного обеспечения[7].

В начале работы программ запускается на выполнение объект класса Server, функцией которого является прослушивание сокета.

В процессе выполнения основной программы, прозводится сканирование системы на наличие комм–портов, создается объекты для ком–порта и сокета, после создания объектов на выполнение запускаются два дочерних потока на основе класса Thread, главный потокmainперед своим завершением, ожидает когда дочерние потоки закончат свою работу. Первый поток производит передачу пакетов из сокета в ком–порт, второй из ком–порта в сокет. Схема данных приведена на чертеже БрГТУ.07823–11 91 00.

Отправленные пакеты отображаются в окне лога в Hex–формате. Схема программной реализации системы представлена на рисунке 3.1.

Рисунок 3.1 – Программная реализация системы

Класс ServerSocetреализован как сервер, работающий по протоколуTCP/IPи возвращающий по запросу клиента имя сервера клиента и порт.

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

Класс Socet– создает объект сокета. Перечислим основные методы, реализованные в классе:

– int getPort() – возвращает номер текущего порта;

– setPort (int Port) – устанавливает номер порта;

– setInputStream() – связывания сокета с входным потоком;

– setOutputStream() – связывание сокета с выходным потоком.

Класс SerialPort– создает объект ком–порта. Основные методы данного класса:

– getPortIdentifier() – возвращает им порта;

– setSerialPortParams() – установка параметров порта;

– setOutputBufferSize() – установка выходного буфера порта;

– setInputBufferSize() – установка входного буфера порта.

КлассMyclass– пользовательский класс, который организует непосредственно связь между сокетом и портом:

–numport() – производит сканирование ком–портов в системе;

–connect() – пользовательский метод создающий объекты ком–порта и сокета;

–socetComm() – организует передачу данных из сокета в ком–порт;

–comSocet() – организует передачу данных из порта в сокет.

КлассView– пользовательский класс, организующий отображение отправленных данных вHex–формате.

КлассThread– класс, объекты которого являются создаваемые дочерние потоки;

  • run() – определяет точку входу в поток. Программный код задается переопределением этого метода;

–start() – метод для запуска потока, при вызове этого метода автоматически запускается методrun();

–sleep() – метод используется для приостановки запуска потока, время, на которое выполняется приостановка в работе потока;

–join() – метод–инструкция ожидания завершения потока.

Класс BufferedReader – класс, создает буфферизированый поток ввода:

–readLine() – считывание строки в из файла;

–write() – запись в файл;

–close() – закрытие потока;

КлассBufferedWriter()– создает буфферизирований поток вывода:

–read() – считывание из файла;

КлассView1 – пользователь класс, отображающий параметры сети.

КлассView2 – пользовательский класс, отображающий информацию о дипломном проекте.

КлассView3 – пользовательский класс, отображающий информацию о программе.

ИнтерфейсRunnable– интерфейс, который содержит методыrun() иstart().

Любая концепция, которую необходимо реализовать на Javaдолжна быть инкапсулирована в класс.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]