Разработка алгоритма передачи информационных команд
Возможность передачи команд по wi-fi сети — основная функция разрабатываемого приложения, которое создано для контроля роботизированной системы. Каждое действие, совершаемое пользователем, должно иметь свой отклик, т. е. формировать необходимую команду и отправлять ее на обработку и выполнение контроллеру ТРИК. Это сделает отдельный класс, специально спроектированный таким образом, чтобы… Читать ещё >
Разработка алгоритма передачи информационных команд (реферат, курсовая, диплом, контрольная)
Возможность передачи команд по wi-fi сети — основная функция разрабатываемого приложения, которое создано для контроля роботизированной системы. Каждое действие, совершаемое пользователем, должно иметь свой отклик, т. е. формировать необходимую команду и отправлять ее на обработку и выполнение контроллеру ТРИК. Это сделает отдельный класс, специально спроектированный таким образом, чтобы принимать все внутренние действия с главного экрана, формировать команды по ранее спланированному стилю и отправлять на определенный IP-адрес роботизированной системы, заданный в настройках приложения.
Для написания данного класса необходимо вначале определить блок импортов, показанный на рис. 3.
Рис. 3. Блок импортов SenderService
Главный метод класса SenderService — private void connectAsync (), который запускает все необходимые зависимые функции. Также он делает всевозможные проверки, и, при появлении каких-либо ошибок, уведомляет пользователя. К тому же данный метод привязывает нужные lisner’ы. Результатом таких уведомлений является информационное сообщение слева вверху экрана. Это те случаи, когда выводится сообщение об успешном подключении (рис. 4) и о безуспешном (рис. 5).
Рис. 4. Экран приложения, когда соединение установлено
Рис. 5. Экран приложения, когда соединение не установлено
Далее, чтобы интерфейс будущего приложения не тормозил, надо запустить новый поток и выполнять все последующие команды в этом вновь созданном потоке, а не в UI-потоке. В этом потоке в основном теле мы вызываем новую функцию connectToTRIK (). Здесь создается новый сокет [10] для создания канала между контроллером ТРИК и смартфоном. Также данному сокету надо выставить необходимые приоритеты:
- 1. setTcpNoDelay — необходимый флаг, когда нужно передать маленький пакет через tcp соединение;
- 2. setKeepAlive — флаг, который не позволяет прервать соединение, когда нет пакетов данных;
- 3. setSoLinger — включение / отключение SO_LINGER с указанным временем задержки в секундах;
- 4. setTrafficClass — высокий приоритет трафика в системе android.
Далее идет структура try/catch, которая пытается на указанный IP-адрес через определенный в настройках порт соединения послать тестовое сообщение. Если соединение установлено, функция заканчивает свою работу, но если по какой-либо причине не удалось послать тестовое сообщение, то на экран пользователя будет выведено сообщение об ошибке.
Следующим важным методом класса является void send (final String command). Данный метод класса занимается непосредственной отправкой специальных команд контроллеру.
Работа метода начинается с проверки на null pointer exception потока вывода команды на контроллер. Если проверка пройдена, данная функция создает новый поток (asyncTask [11]) и пишет в этот исходный поток необходимую команду. Если произойдут ошибки при передаче, пользователь немедленно будет оповещен с уровнем уведомления 2 (error).