Создание программного эмулятора газоанализатора с интерфейсом Bluetooth
Журнал: Научный журнал «Студенческий форум» выпуск №28(121)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №28(121)
Создание программного эмулятора газоанализатора с интерфейсом Bluetooth
В данной статье описан процесс разработки приложения для смартфона, которое способно эмулировать информационный обмен между смартфоном пользователя и стационарным газоанализатором.
Разрабатываемый эмулятор необходим для имитации работы газоанализатора ДАК производства ФГУП СПО «Аналитприбор» и представляет собой приложение для смартфона под управлением ОС «Android» начиная с версии 4.4.2 «KitKat». Для работы приложения необходимо, чтобы устройство было обеспечено аппаратурой для работы с интерфейсом Bluetooth. Приложение разрабатывалось на языке Java [2] с использованием интегрированной среды разработки от компании Google Android Studio. Данная среда разработки создана с целью максимально упростить процесс разработки приложений для устройств под управлением ОС Android. На данный момент - это единственная специализированная среда разработки для ОС Android с полной поддержкой всех особенностей операционной системы и продвинутым отладчиком.
Целевой газоанализатор использует протокол обмена Modbus RTU в режиме ведомого устройства [3, с. 5]. Граф работы ведомого устройства показан на рисунке 1. Как видно из графа, устройство после инициализации находится в режиме ожидания запроса. После поступления запроса, происходит проверка контрольной суммы и адреса, запрос или принимается, или игнорируется. Широковещательные запросы используются для шины данных (в случае, если используется проводной интерфейс RS-485). Мы будем работать с устройством в режиме P2P (point-to-point). Так же, опустим реализацию проверки контрольной суммы, так как эту задачу будет выполнять программная оболочка радиомодема Bluetooth.
Рисунок 1. Граф работы ведомого устройства в протоколе Modbus RTU [3, с. 8]
Модульная структура разрабатываемого приложения представлена на рисунке 2.
Рисунок 2. Модульная структура приложения
Контекст – java класс, который реализует весь функционал активности (графического представления интерфейса пользователя в системе Android).
- Контекст главной активности отвечает за взаимодействие с пользователем и вывод основной информации в графическое представление;
- Модуль вывода в json используется для сохранения и загрузки сохранённых параметров эмулируемого устройства;
- Трансформатор ASCII кода используется для преобразования стандартных символов java (кодируются unicode) в понятные для целевого устройства ASCII символы;
- Модуль контроллер управляет данными приложения. Через данный модуль происходит управление потоками приёма и передачи данных;
- Модуль параметров устройства используется для хранения параметров как единой структуры (объекта) и удобного взаимодействия с ними.
В процессе работы, приложение формирует случайные значения концентрации и состояния устройства. Это необходимо для демонстрации правильности отображения информации в клиентском приложении. Формирование происходит в отдельном потоке. Алгоритм работы данного потока представлен на рисунке 4. Работа с интерфейсом Bluetooth осуществляется с помощью специального сервиса, реализованного в виде отдельного потока. Для передачи данных из сервиса в основной поток используется механизм handler (обработчик), который принимает сообщения от сервиса и обрабатывает их в основном потоке, не приводя к ошибкам доступа. Схема алгоритма работы обработчика сообщений показана на рисунке 5.
Рисунок 4. Схема алгоритма работы потока генератора
Рисунок 5.1. Схема алгоритма обработчика
Рисунок 5.2. схема алгоритма обработчика (продолжение)
Итак, можно сделать вывод, что описанный принцип работы разрабатываемого приложения, эмулирующего работу газоанализатора, работоспособен. В результате выполнения работ над приложением, удалось зафиксировать, что клиентское приложение может корректно взаимодействовать с эмулятором и обмен данными происходит корректно.