Статья «РАЗРАБОТКА УНИВЕРСАЛЬНОГО КОННЕКТОРА ИНТЕГРАЦИИ ФИЗИЧЕСКОГО ОБОРУДОВАНИЯ ЧЕРЕЗ ТЕХНОЛОГИЮ COM-ПОРТОВ» в научном журнале
«Образование и наука в России и за рубежом»
научно-образовательное издание для преподавателей и аспирантов, реклама в соответствии с законодательством Российской Федерации о рекламе

Учредитель: Общество с ограниченной ответственностью «Московский Двор»
ПИ №ФС77-54347
ISSN 2221-4607
Выпускается ежемесячно.
Издается с 2010 года.
Тираж 1000 экз.
+7(910)445-77-88
gyrnal@bk.ru
Адрес редакции: 129366, г. Москва, ул. Ярославская, д.10, корп.2
Включение в eLibrary.ru: Лицензионный договор №114-03/2014
Отправить статью
Следующий выпуск
2 июля
Рассчитать стоимость
публикации статьи
График выпуска журнала
Поданные статьи авторов
Автор:
Максим Кириллович Быковский
Должность:
Студент, МГТУ им. Н.Э. Баумана, Москва, Российская Федерация
 
Получено:
17.05.2019
Статус:
принята к печати
Выход в печать:
Журнал №8 (Vol. 56), 2019,20.05.19

УДК 004.891.3

РАЗРАБОТКА УНИВЕРСАЛЬНОГО КОННЕКТОРА ИНТЕГРАЦИИ ФИЗИЧЕСКОГО ОБОРУДОВАНИЯ ЧЕРЕЗ ТЕХНОЛОГИЮ COM-ПОРТОВ

Максим Кириллович Быковский              SPIN-код: 6527-5828

Студент, МГТУ им. Н.Э. Баумана, Москва, Российская Федерация

 

Аннотация

В данной статье рассказывается о процессе разработки интерфейса на языке Java, который является оболочкой COM-порта при интеграции любого типа физического оборудования с исполняемым приложением проекта.

Ключевые слова: интерфейс интеграции, COM-порт, подключение оборудования.

Введение.

Физические устройства не работают сами по себе – ими нужно управлять, получать или передавать на них информацию, использовать для интеграций в более сложные системы. Многие устройства имеют библиотеки разработчиков (SDK), но те модели, которые лишены такой роскоши, работают на технологии COM-портов[1]. Работать с этой технологией напрямую из контроллера исполняемого приложения нелогично – требуется предусматривать методы сериализации и десериализации, контроль подключения, открытия и закрытия портов. Намного эффективнее использовать дополнительную оболочку, которая будет выступать новым слоем переопределения методов между портами и приложением. Описанная в данной работе разработка будет применена в крупном проекте, где количество схожего оборудования достигает 10 шт.

Разработка.

Предположим, что взаимодействие с устройством осуществляется через COM-порт. Как и любое другое оборудование, данное имеет уникальное имя, по которому можно установить порт, к которому подключено устройство. Для поиска порта по наименованию оборудования был написан универсальный пакет утилиты, применяемый и для других типов оборудования. Основной класс ComDetector размещаем в пакете ru.util и экспортируем из него три метода, применяемых для детектирования портов. В последней версии два метода считаются устаревшими и применяется только один метод, возвращающий массив портов, подключенные устройства которых имеют имена, соответствующее переданным. На Рисунке 1 показана диаграмма классов[2] разработанного пакета.

 

Рисунок 1 – Диаграмма классов разработанного пакета

Вызов требуемого метода осуществляется в формате:

class Main {
    public static void main(String[] args) {                System.out.println(Arrays.toString(ComDetector.getSerialPortsByDeviceName("Sili")));
    }
}

Вернемся к созданию подключения для оборудования. После вызова разработанного метода получаем COM-порт, к которому подключено устройство. Требуется разработать интерфейс, содержащий один метод получения информации с устройства. Для данного интерфейса будем использовать пакет ru.connect. Для работы с последовательными портами в Java предусмотрена библиотека jssc[3]. Именно она была применена для создания подключения. При реализации также предусматривается дополнительный класс, в котором переопределяется событие закрытия порта используемой библиотеки для безопасного закрытия после получения данных. Перед закрытием осуществлялась отправка соответствующей команды на устройство:

@Override
public void close() throws Exception {
    try {
        ReadData.logger.info("trying closing");
        writeByte((byte)0x41);
        if (isOpened()) {
            ReadData.logger.info("close port");
            closePort();
            ReadData.logger.info("closed");
        }
    } catch (Exception e) {
        e.printStackTrace();
        ReadData.logger.error("closing exception");
        for(StackTraceElement el: e.getStackTrace()) {
            ReadData.logger.error(el);
        }
    }
}

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

serialPort.openPort();
logger.info("open port");
serialPort.setParams(SerialPort.BAUDRATE_115200,
        SerialPort.DATABITS_8,
        SerialPort.STOPBITS_1,
        SerialPort.PARITY_NONE);
logger.info("setting params: 115200 8 1 NONE");

PortReader portReader = new PortReader(serialPort);
serialPort.addEventListener(portReader, SerialPort.MASK_RXCHAR);

logger.info("call port get output stream");
logger.info("call port 0x40");
serialPort.writeByte((byte)0x40);
logger.info("call port finish");

Для ожидания данных с порта используется метод portReader, вызываемый по событию поступления данных в порт. В данном методе выполняется сериализация получаемых данных и приведение их к интерперабельному виду. На Рисунке 2 представлена диаграмма классов разработанного интерфейса.

 

Рисунок 2 - Диаграмма классов разработанного интерфейса

Заключение.

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

Список используемой литературы.

[1] Последовательный порт // Википедия. [2019—2019]. Дата обновления: 20.04.2019. URL: https://ru.wikipedia.org/?oldid=99388725 (дата обращения: 20.04.2019).

[2] Отношения классов // Habr. [2019—2019]. Дата обновления: 21.04.2019. URL: https://habr.com/ru/post/150041/ (дата обращения: 21.04.2019).

[3] jSSC (Java Simple Serial Connector) // Google Code Archive. [2019—2019]. Дата обновления: 21.04.2019. URL: https://code.google.com/archive/p/java-simple-serial-connector/ (дата обращения: 21.04.2019).

Новости

ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 2 июля 2019 ГОДА. Уже 13 статей приняты.
Журнал №9 (Vol. 57) вышел в свет 10 июня 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 10 июня 2019 ГОДА. Уже 43 статьи приняты.
Журнал №8 (Vol. 56) вышел в свет 20 мая 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 20 мая 2019 ГОДА. Уже 34 статьи приняты.
Журнал №7 (Vol. 55) вышел в свет 1 мая 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 1 мая 2019 ГОДА. Уже 22 статьи приняты.
Журнал №6 (Vol. 54) вышел в свет 15 апреля 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 15 апреля 2019 ГОДА. Уже 34 статьи приняты.
Журнал №5 (Vol. 53) вышел в свет 1 апреля 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 1 апреля 2019 ГОДА. Статьи принимаются до 31 марта. Уже 85 статей приняты.
Журнал №4 (Vol. 52) вышел в свет 15 марта 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 15 марта 2019 ГОДА. Уже 100 статей приняты.
Журнал №3 (Vol. 51) вышел в свет 1 марта 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 1 марта 2019 ГОДА. Уже 114 статей приняты.
Журнал №2 (Vol. 50) вышел в свет 10 февраля 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 10 февраля 2019 ГОДА. Уже 99 статей приняты.
Журнал №1 (Vol. 49) вышел в свет 20 января 2019 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 20 января 2019 ГОДА. Уже 98 статей приняты.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 декабря 2018 ГОДА. Уже 102 статьи приняты.
Журнал №12 (Vol. 47) вышел в свет 3 декабря 2018 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 3 декабря 2018 ГОДА. Уже 87 статей приняты.
Журнал №11 (Vol. 46) вышел в свет 10 ноября 2018 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 10 ноября 2018 ГОДА. Уже 84 статьи приняты.
Журнал №10 (Vol. 45) вышел в свет 25 октября 2018 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 октября 2018 ГОДА. Уже 84 статьи приняты.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 сентября 2018 ГОДА. Уже 75 статей приняты.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 августа 2018 ГОДА. Уже 78 статей приняты.
Журнал №7 (Vol. 42) вышел в свет 25 июля 2018 года.
Электронная версия 6 выпуска (2018) журнала загружена на сайт научной электронной библиотеки eLIBRARY.RU
https://elibrary.ru/contents.asp?titleid=48986.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 июля 2018 ГОДА. Уже 54 статьи приняты.
Журнал №6 (Vol. 41) вышел в свет 25 июня 2018 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 июня 2018 ГОДА. Уже 47 статей приняты.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 мая 2018 ГОДА. Уже 22 статьи приняты.
Журнал №4 (Vol. 39) вышел в свет 25 апреля 2018 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 апреля 2018 ГОДА. Уже19 статей приняты.
В ближайшие дни журнал №3 (Vol. 38) будет размещен на сайте eLIBRARY.RU - крупнейшей в России электронной библиотеки научных публикаций. Библиотека интегрирована с Российским индексом научного цитирования (РИНЦ).
Журнал №3 (Vol. 38) вышел в свет 30 марта 2018 года.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 апреля 2018 ГОДА. Уже 2 статьи приняты.
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 30 марта 2018 ГОДА. Уже 14статей приняты.
Журнал №2 (Vol. 37) вышел в свет 25 февраля 2018 года
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 февраля 2018 ГОДА. Уже 3 статьи приняты.
Журнал №1 (Vol. 36) вышел в свет 25 января 2018 года
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 25 ЯНВАРЯ 2018 ГОДА. Уже 15 статей приняты.
Журнал №6 (Vol. 35) вышел в свет 20 декабря 2017 года
ПРИНИМАЮТСЯ СТАТЬИ ДЛЯ ОЧЕРЕДНОГО ВЫПУСКА ЖУРНАЛА, КОТОРЫЙ ВЫЙДЕТ 20 ДЕКАБРЯ 2017 ГОДА. Уже 26 статей приняты.
Журнал №5 (Vol. 34) вышел в свет 20 ноября 2017 года
СЛЕДУЮЩИЙ ВЫПУСК 20 НОЯБРЯ 2017 ГОДА. Уже 18 статей
Журнал №4 (Vol. 33) вышел в свет 30 сентября 2017 года
Журнал №3 (Vol. 32) вышел в свет 28 июля 2017 года
Журнал №2 (Vol. 31) вышел в свет 25 мая 2017 года
Журнал №1 (Vol. 30) вышел в свет 30 марта 2017 года
Журнал №6 вышел в свет 30 декабря 2016 года
Журнал №5 вышел в свет 28 октября 2016 года
Журнал №4 вышел в свет 17.08.16.
Тираж 1000 экз.
Журнал №3 (2016) Vol. 26
подписан 06.06.16.
Тираж 1000 экз.
Журнал №2 (2016) Vol. 25
подписан 24.04.16.
Тираж 1000 экз.
Набираем статьи для 2-го выпуска журнала в 2016 году.
Журнал №1 (2016) Vol. 24
подписан 25.02.16.
Тираж 1000 экз.
Набираем статьи для 1-го выпуска 2016 года.
Журнал №6 (Vol. 23) 2015 года подписан в печать 11.12.16
Тираж 1000 экз.
Набираем статьи для 6-го выпуска журнала.
Выпуск выйдет 15 января 2016 года
Журнал №5 (Vol. 22) 2015 года подписан в печать 24.11.15
Тираж 1000 экз.
Вышел в печать 5 выпуск журнала
Вниманию авторов: Продолжается набор статей для 5-го выпуска журнала.
Журнал №4 (Vol. 21) 2015 года подписан в печать 18.09.15
Тираж 1000 экз.
Журнал №3 (Vol. 20) 2015 года подписан в печать 08.07.15
Тираж 1000 экз.
Журнал №2 (Vol. 19) 2015 года подписан в печать 01.05.15
Тираж 1000 экз.
Журнал №1 (Vol. 18) 2015 года подписан в печать 17.03.15
Тираж 1000 экз.
Журнал №8 (Vol. 17) 2104 года подписан в печать 28.12.14.
Тираж 1000 экз.
Журнал №7 (Vol.16) подписан в печать 24.11.14. Тираж 1000 экз.
Журнал №6 подписан 28.08.14.
Тираж 1000 экз.
Журнал №5 подписан 22.05.14.
Тираж 1000 экз.
Журнал №4 подписан 20.03.14.
Тираж 1000 экз.
Журнал №3 подписан 12.02.14.
Тираж 1000 экз.
Журнал №2 подписан 10.01.14.
Тираж 1000 экз.
Журнал №1 подписан 05.11.13.
Тираж 1000 экз.
Журнал №3 (Vol. 38) вышел в свет 30 марта 2018 года.В ближайшие дни этот журнал будет размещен на сайте eLIBRARY.RU - крупнейшей в России электронной библиотеки научных публикаций. Библиотека интегрирована с Российским индексом научного цитирования (РИНЦ).
Индексируется в: