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



Для успешной реализации системы необходимо продумать на начальном этапе структуру приема данных из сокета на ком–порт, и визуализацию передачи пакетов. Полная схема алгоритма системы представлена на чертеже БрГТУ.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. Классы загружаются, верифицируются и инициализируются в тот момент, когда приложение ссылается на них в первый раз. Важно отметить, что данная операция может выполняться длительное время, а это в свою очередь, может повлиять критически на итоговую работу приложения. Например, классы, представляющие исключительные ситуации, которые могут быть не загружены на момент возникновения ошибочной ситуации, или если выполнилось редкое условие.

 

 

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

Терминальная программа написана на языке программирования Java. Программа оформлена в виде исполняемого файла для Java–машины TINI (TINI JVM), исрльзовалась среда программирования NetBeans IDE 7.0.1, версия JDK(Java Development Kit) 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 должна быть инкапсулирована в класс.


Дата добавления: 2018-02-18; просмотров: 441; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!