Кибернетический контроллер

Этапы разработки приложения для android-устройства: дизайна, интерфейса, алгоритма передачи информационных команд. Прием, обработка видеопотока, подбор и обоснование используемого программного обеспечения. Алгоритм обеспечения безопасности, тестирование.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.06.2017
Размер файла 967,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

программный приложение android интерфейс

Кибернетический контроллер предназначен для управления роботами, беспилотными летательными аппаратами, средствами передвижения (включая балансирующие «сегвеи»), встраиваемыми устройствами и киберфизическими системами [1, 2].

Контроллер снабжен цветным сенсорным дисплеем, программируемыми кнопками, WiFi и Bluetooth, имеет встроенную защиту от перегрузки по току и от глубокой разрядки аккумулятора. Состав компонентов изображен на рис. 1.

Рис. 1. Все компоненты роботизированной системы

Контроллер совместим с широким спектром периферийных устройств, имеет в своем составе все необходимое оборудование для управления двигателями постоянного тока и сервоприводами, а также для приема и обработки информации от цифровых и аналоговых датчиков, микрофонов, видеосенсоров. Основные технические характеристики контроллера описаны на сайте производителя [3] (табл. 1).

Таблица 1. Основные технические характеристики контроллера

Характеристика

Значение

Центральный процессор (ЦП)

OMAP-L138 C6-Integra™ DSP+ARM® SoC, Texas Instruments

Тактовая частота ЦП

375 МГц

Процессорное ядро ЦП

ARM926EJ-S™ RISC MPU

DSP-ядро ЦП

C674x Fixed/Floating-Point VLIW DSP

Оперативная память

256 МБайт

FLASH - память

16 МБайт

Периферийный процессор (ПП)

MSP430F5510, Texas Instruments

Тактовая частота ПП

24 МГц

Интерфейсы пользователя

USB 2.0, WiFi b/g/n, BlueTooth, 2*UART, 2*I2C, Micro-SD, Mic in (stereo), Line out (mono)

Встроенный LCD монитор

2.4» TFT, цветной, сенсорный, разрешение 320*240 пикселей

Светодиодный индикатор

2-цветный, программно-управляемый

Данная система работает на UNIX подобной системе Linux и имеет соответственно журналируемую файловую систему ext4 [4]. Эта файловая система основана на ext3, ранее использовавшейся по умолчанию во многих дистрибутивах GNU/Linux. В ext4 была улучшена файловая система:

? увеличился максимальный размер одного раздела диска до 1 эксабайта;

? увеличился объем одного файла до 16 терабайт;

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

Android - популярная операционная система для большинства современных устройств, таких как смартфоны, планшеты, телевизоры, нетбуки, электронные книги, а в 2013 году еще и носимые устройства в виде наручных часов и в 2015 году и автомобильные развлекательные системы. Операционная система основана на ядре Linux и базируется на виртуальной машине Java собственной разработки Google. С помощью Android Native Development Kit разработчики могут портировать отдельные компоненты приложений и библиотеки, написанные на других языках программирования, отличных от Java, таких как Си, Python и другие.

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

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

Цели данной разработки:

1. собрать роботизированную систему, состоящую из шасси, четырех моторов, батареи, контроллера ТРИК и датчиков.

2. реализовать возможность управления роботизированной системой удаленно через сеть wi-fi;

3. реализовать возможность передвижения роботизированной системы;

4. реализовать возможность автономного передвижения системы по одному и двум датчикам линии;

5. реализовать возможность движения роботизированной системы по линии с использованием видеомодуля «Глаз»;

6. реализовать прием и передачу видеопотока на управляющее устройство;

7. протестировать конечный продукт, выявив факты некорректной работы.

Задачи данной разработки:

1. соединить воедино все элементы будущей конструкции из имеющихся компонентов сборки;

2. разработать android-приложение, которое позволит управлять удаленно роботизированной системой через сеть wi-fi;

3. разработать алгоритм движения роботизированной системы по рабочей поверхности;

4. разработать алгоритмы движения роботизированной системы по двум и одному датчикам линии;

5. разработать алгоритм движения роботизированной системы по видеомодулю «Глаз»;

6. разработать алгоритм приема и передачи видеопотока на android-смартфон с последующим его отображением на экране;

Результатом выполнения выпускной квалификационной работы является создание роботизированной системы на базе контроллера ТРИК, которая имеет хорошую функциональность, такую как перемещение системы с помощью удаленного пульта управления, движение по направляющей линии с использование датчика линии, видеомодуля «Глаз», а также захватывание видеопотока с помощью видеомодуля «Глаз», с последующей обработкой и отправкой готового изображения на удаленное устройство управления.

1. Индивидуальные задачи авторов для групповой работы

В ходе выполнения выпускной квалификационной работы студентами Горбуновым Александром Михайловичем, Капелинским Дмитрием Анатольевичем, Лазаренко Михаилом Олеговичем были достигнуты следующие результаты:

1) Горбунов Александр Михайлович:

a) обосновал выбор языков программирования для android-приложения и ТРИК контроллера;

b) создал современный дизайн приложения для смартфона под управление операционной системы Android и реализовал его с помощью инструментов разработчика в среде разработки приложений Android Studio;

c) разработал алгоритм передачи информационных команд от android-приложения ТРИК-контроллеру по wi-fi сети;

d) создал отдельные классы, реализующие корректные прием и обработку видеопотока, принимаемого по сети wi-fi с ТРИК-контроллера;

e) разработал и внедрил цифровой стик для управления направлением и скоростью передвижения роботизированной системы на базе ТРИК-контроллера;

f) спроектировал и реализовал настройки приложения для увеличения гибкости пользования;

g) разработал алгоритм обеспечения безопасности android-приложения;

h) протестировал итоговое программное обеспечение для android-смартфона на наличие недочетов и некорректной работы приложения.

i) программно реализовал алгоритм записи и воспроизведения маршрута роботизированной системы;

j) протестировал android-приложение на наличие ошибок в работе приложения.

2) Капелинский Дмитрий Анатольевич:

a) разработал алгоритм движения роботизированной системы по линии расположенной на горизонтальной поверхности с пропорционально-дифференциальным регулятором движения используя видеомодуль «Глаз».

b) разработал алгоритм обнаружения препятствий с помощью ультразвукового датчика с последующим использованием расчетов для определения препятствий, мешающих дальнейшему движению.

c) разработал алгоритм реакции роботизированной системы на поступающие сигналы с пульта управления.

d) протестировал разработанное программное обеспечение, для выявления ошибок в работе программного обеспечения для контроллера ТРИК.

3) Лазаренко Михаил Олегович:

a) разработал метод обнаружения линии на поверхности с помощью датчика линии;

b) разработал и реализовал алгоритм при срабатывании датчика касания;

c) разработал метод реализации передвижения для роботизированной системы на базе контроллера ТРИК;

d) протестировал разработанное программное обеспечение для контроллера ТРИК.

2. Обоснование выбора языков программирования

Перед тем, как начать разработку программного обеспечения, необходимо выбрать нужный язык программирования, учитывая некоторые параметры (от наиболее значимого параметра к менее):

1. основные доступные языки программирования для разработки конечного программного обеспечения;

2. какими языками программирования владеет разработчик конкретного программного обеспечения;

3. под какие языки программирования доступно больше всего документации на сайте производителя и иных информационных источниках, а также доступны алгоритмы и другие функциональные средства от сообщества.

Для полноценной разработки проекта по созданию роботизированной системы на базе контроллера ТРИК необходимо выбрать подходящие языки программирования для приложения под android-смартфон и программы по контроллер ТРИК.

Android - популярная операционная система для большинства современных устройств, таких как смартфоны, планшеты, телевизоры, нетбуки, электронные книги, а в 2013 году еще и носимые устройства в виде наручных часов и в 2015 году и автомобильные развлекательные системы. Операционная система основана на ядре Linux и базируется на виртуальной машине Java собственной разработки Google. С помощью Android Native Development Kit разработчики могут портировать отдельные компоненты приложений и библиотеки, написанные на других языках программирования, отличных от Java, таких как Си, Python и другие. Однако, основным языком программирования, установленным компанией Google, которая на сегодняшний день владеет Android, является Java. Также большинство когда-либо разработанных приложений под операционную систему Android были написаны именно на языке Java. И последним важным фактором, определяющим конечный выбор языка программирования, является поддержка сообщества, т.е. на языке Java есть большое многообразие книг, курсов, пособий по написанию современных приложений на языке Java, что оказывая существенную помощь при написании приложений.

В итоге конечный выбор языка программирования был сделан в пользу Java, основываясь на трех важнейших факторах:

1. основным языком программирования написания android-приложений является Java;

2. основным выбором разработчиков ПО для приложений на android является именно язык Java;

3. в сети интернет и других информационных источниках существует большое количество всевозможной информации, которая поможет при написании конечного программного обеспечения для android-смартфона.

Контроллер ТРИК - современное российское устройство для управления роботами, средствами передвижения, беспилотными летательными аппаратами. ТРИК - это совокупность мощной современной электроники и надежность периферии. Группа отечественных квалифицированных специалистов разработала данный алгоритм ориентировочно для робототехнических задач. В список задач, выполняемых контроллером, входят:

1. управление моторами и сервоприводами;

2. обработка видео- и аудиопотока;

3. синтез речи;

4. навигация;

5. обмен данными через беспроводную связь;

6. сбор показаний всевозможных датчиков.

Контроллер ТРИК работает под управлением операционной системы Linux, что означает доступность моторов и всевозможных датчиков на борту роботизированной системы даже из shell скриптов. Поэтому стало возможным программирование с помощью большинства языков программирования, а именно:

1. Си или С++/Qt;

2. JavaScript;

3. C# (.Net);

4. F# (.Net);

5. Python;

6. Java.

Также создание программ возможно с помощью среды визуального программирования TRIK Studio для начинающих разработчиков (например, для школьников).

Для разработки конечного программного обеспечения для контроллера ТРИК был выбран язык программирования JavaScript. Выбор обуславливается наличием информативных руководств, а также необходимых примеров, которые помогут в разработке приложения для контроля и взаимодействия с роботизированной системой и всеми модулями в целом [5].

Для удобной разработки android-приложения на выбранном языке программирования Java была выбрана среда разработки Android Studio, так как она имеет несколько важных для данной разработки факторов:

1. официальная поддержка данной IDE от компании Google, что означает своевременное обновление самой IDE до самой последней;

2. наличие самых новых библиотек и наборов инструментов разработчика, что дает возможность использования всех необходимых инструментов для разработки приложения на всех версиях android;

3. встроенная поддержка ProGuard и утилиты подписывания приложений, которая обеспечивает защищенность и безопасность всего приложения от третьих лиц;

4. наличие большого количества инструментов для разработки современного адаптивного дизайна android-приложения;

Для того чтобы начать разработку программного обеспечения, необходимо понять каким образом загружать и исполнять код, написанный на JavaScript. С представленной проблемой может помочь справиться TRIK Studio, разработанное компанией ООО «КиберТех». Данная программа предоставляет возможность разрабатывать и отправлять на ТРИК контроллер готовые программы на тестирование. Также возможно отслеживать то, как изменяются переменные на контроллере, и отлаживать работу самих программ. Также на контроллере есть сервер Samba, с помощью которого можно просматривать, изменять и добавлять доступные файлы, если имеется подключение к ТРИК-контроллеру. Samba - это стандартный набор оперативной совместимости Windows для Linux и Unix [6]. Samba является свободно распространяемым программным обеспечением, лицензированным по лицензии GNU General Public License, проект Samba является членом Consolidation Freedom Conservancy. В итоге был выбран вариант загрузки кода программного обеспечения с использованием сервера Samba и последующей отладкой на самом контроллере.

Еще одним важным сервером ТРИК-контроллера является DHCP-сервер. При использовании данного инструмента становится возможным подключение android-устройств к ТРИК-контроллеру. DHCP-сервер выделяет свободный IP-адрес смартфону и подключает его к локальной сети ТРИК-контроллера. Данная возможность позволяет управлять ТРИК-контроллером со специального приложения, установленного на android-устройстве [7].

3. Разработка программного обеспечения для android-устройства

3.1 Разработка современного дизайна приложения

Как уже было сказано, разработка данного приложения начинается с создания и реализации дизайна этого приложения. Дизайн разрабатываемого приложения (рис. 2) будет основываться на material design [8], разработанный компанией Google.

Рис. 2. Интерфейс главного экрана приложения

На переднем плане должен размещаться блок видеопроигрывателя, расположенный на всей поверхности дисплея android-смартфона. Это позволит пользователю в полной мере наблюдать за видеопотоком, захватываемым дополнительным видеомодулем «Глаз», и своевременно вносить корректировку в направление и скорость движения самой роботизированной системы. Вторым важным компонентом разрабатываемого приложения выступает интерактивный джойстик, расположенный в правой части экрана (в настройках также предусмотрено изменение положения джойстика на левую сторону). Третьим компонентом данного приложения является блок функциональных кнопок [9], расположенных внизу экрана. Данное расположение позволит пользователю быстро прикасаться пальцем до необходимой кнопки. Имеется пять функциональные кнопок. На них возложены дополнительные функции управления роботизированной системы на базе контроллера ТРИК, такие как:

1. включение / отключение функции адаптивного движения по заданной траектории с помощью одного и двух датчиков линии;

2. включение / отключение функции движения по линии с помощью видеомодуля «Глаз», включенного в режиме датчика линии;

3. включение / отключение функции движения по предварительно записанной в файл траектории;

4. отключение смартфона от роботизированной системы.

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

3.2 Разработка алгоритма передачи информационных команд

Возможность передачи команд по 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).

3.3 Прием и обработка видеопотока

Другой особенностью данной разработки является возможность передачи и приема видеопотока с ТРИК-контроллера на android-смартфон. Отображение видеопотока, захватываемого с видеомодуля «Глаз», поможет пользователю лучше ориентироваться на местности, а также даст пользователю возможность увидеть труднодоступные места. Чтобы реализовать данную возможность, необходимо разработать соответствующий алгоритм.

Для начала необходимо создать свой класс (MjpegView) для отрисовки полученных по сети wi-fi кадров. Данный класс наследуется от стандартного класса в системе android - SurfaceView. Для начала нам необходим конструктор по умолчанию, который запустит главный метод этого класса - init (context). Метод init (Context context) создает новый объект класса MjpegViewThread, принимает в локальные переменные размеры области, где будет располагаться отрисованный кадр и инициализирует объект класса Paint. Метод private void init (Context context) (рис. 6):

Рис. 6. Метод private void init (Context context)

Теперь необходимо написать новый класс MjpegViewThread, который подготовит рабочую поверхность к отрисовке первого и последующих кадров. Когда класс убедится в отсутствии ошибок, от запустит еще один поток MjpegRenderThread, который получает на вход битовую информацию о кадре (frame), обрабатывает ее и рисует стандартными методами на «холсте» рабочей поверхности (DrawToCanvas). Ниже представлен главный метод потока public void run() (рис. 7), который делает всевозможные проверки на отсутствие ошибок, а также запускает все необходимые подчиненные функции.

Рис. 7. метод public void run()

Ниже представлен метод private void DrawToCanvas (@NonNull Canvas canvas, @NonNull Rect destRect) (рис. 8), который отрисовывает на переданном «холсте» определенный bitmap [12].

Следующим шагом в реализации отображения видеопотока на дисплее android-смартфона - реализация своего класса MjpegInputStream, который будет унаследован от DataInputStream. Сначала, необходимо написать главный метод класса, а именно readMjpegFrame ().

Рис. 8. метод private void DrawToCanvas (@NonNull Canvas canvas, @NonNull Rect destRect)

Данный метод принимает на вход результат деятельности другого написанного нами функционального класса и делает необходимые проверки на целостность и точность пришедших по сети wi-fi данных, а также в случае обнаружения критических и иных ошибок выкидывает exception, сигнализирующий об обработанной ошибке (JPG stream is totally broken or this is extremely huge image), что означает, что данный jpg-последовательность символов имеет неправильную кодировку или слишком большая, чтобы ее обработать. Итогом работы данного разработанного класса является объект класса BoundedInputStream, который впоследствии будет кадром для отрисовки на холсте. Реализация отрисовки есть в вышеупомянутом классе. и И последний важный компонент в этом приложении для отображения видеопотока на экране смартфона представляет собой отдельный класс StartReadMjpegAsync, который является наследником AsyncTask. Это указывает на то, что данный наследованный класс является асинхронной задачей, т.е. программный код, написанный в этом классе будет выполняться в отдельном потоке, что положительно скажется на производительности и быстродействии приложения. Данный класс будет заниматься захватом видеопотока с определенного URL (в этом случае он указан в настройка приложения) с последующим его транспортировкой в другой класс для дальнейшей обработки и отображения на экране смартфона. В данном классе два главных метода: doInBackground и onPostExecute (рис. 9). В первом методе открывается http-соединение с ранее указанным URL, получаются необходимые данные и отправляются в onPostExecute. Во втором методе осуществляется перезапись результата в кеш видеопроигрывателя и запускается видеопоток.

Рис. 9. doInBackground и onPostExecute

На этом этапе закончена реализация отображения видеопотока на рабочей площади главного экрана приложения.

3.4 Разработка цифрового стика

Стик - устройство управления, предназначенное для контролирования направлением и скоростью перемещения управляемого объекта (в представленном проекте это роботизированная система).

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

Для реализации данной функции разрабатываемой системы было принято решение использовать наработки сообщества по созданию каркаса самого стика, добавить функциональности и возможностей размещения.

В начале необходимо скачать с удаленного репозитория github.com библиотеку Damien Brun - virtual joystick android. Так как была выбрана среда разработки Android Studio, достаточно написать одну строчку в сборщике Gradle: compile 'io.github.controlwear:virtualjoystick:1.0.0'

Далее необходимо создать отдельный класс, который будет унаследован от класса JoystickView. Затем написать главный в этом классе метод init (). В этом методе происходит считывание положения указателя джойстика относительно центра. Метод setOnMoveListener (new JoystickView. OnMoveListener() класса JoystickView возвращает два значения - целочисленные значения угла и силы. Так как ТРИК-контроллер принимает значения x и y значение координаты, необходимо преобразовать полученные данные к правильному виду с помощью тригонометрических функций.

Функция get_quarter (int angle) (рис. 10) принимает на вход угол, на который был оттянут цифровой стик, а на выходе выдает целочисленное значение угла.

Рис. 10. Функция get_quarter (int angle)

Функция get_total_string_command (int quarter, int strength, int angle) (рис. 11) получает на вход результат работы предыдущей функции, т.е. номер четверти, где в данный момент располагается цифровой стик, а на выходе выдает результирующую строку, содержащую команду ТРИК-контроллеру.

Рис. 11 get_total_string_command (int quarter, int strength, int angle)

Последней значимой функцией является send (String command), которая принимает на вход команду, необходимую послать ТРИК-контроллеру и затем пересылает ее в специальный класс, занимающийся непосредственной отправкой сообщения.

В конце необходимо в конструкторе по умолчанию настроить запуск главного метода init().

В связи с ограниченностью функционала ТРИК-контроллера невозможно реализовать алгоритм отображения оповещения при возможном столкновении роботизированной системы с препятствием. ТРИК-контроллер может принимать команды по сети для дальнейших их исполнений, однако не имеет возможности передачи информации на управляющее устройство. Таким образом, ТРИК-контроллер не способен послать сообщение android-смартфону о возможном столкновении с препятствием.

3.5 Реализация настроек приложения

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

Для этого необходимо создать новый класс, унаследовать его от стандартного в android класса PreferenceActivity [13], и создать свой собственный xml-файл с разметкой будущих настроек. В этом xml-файле будет храниться необходимая информация о всех пунктах настроек и их значениях, а также занимаемое ими положение и разделение на категории. В данном программном продукте (android-приложение) реализованы категории, на которые поделены все пункты меню: основные настройки, настройки уведомления, настройки джойстика и настройки безопасности.

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

Главные аспекты разрабатываемого xml-файла:

1. категория «Основные настройки»:

a. EditTextPreference - hostAddress;

b. EditTextPreference - hostPort;

c. EditTextPreference - videoURI;

2. категория «Настройки уведомления»:

a. EditTextPreference - timeout_alert_message;

b. ListPreference - alert_color;

3. категория «Настройки джойстика»:

a. EditTextPreference - joystick_size отвечает за размер джойстика;

b. ListPreference - joystick_position отвечает за положение джойстика;

c. ListPreference - joystick_pointer_color отвечает за цвет указателя джойстика;

d. ListPreference - joystick_border_color отвечает за цвет границы джойстика.

e. EditTextPreference - showPads;

4. категория «Настройки безопасности»:

a. CheckBoxPreference - chbx_password;

b. EditTextPreference - txt_password;

Подробное описание назначения каждого пункта меню приложения:

1. hostAddress: в данное поле записывается IP-адрес роботизированной системы в формате 192.168.xx.xx. На данный адрес android-приложение отправляет информационные команды, а также принимает видеопоток. Стандартное значение - 192.168.77.1;

2. hostPort: в данное поле записывается порт роботизированной системы, через который будет осуществляться коммуникация android-приложения и ТРИК-контроллера. Стандартное значение - 4444;

3. videoURI: данное поле отвечает за конечный путь, по которому android-приложение будет принимать видеопоток и обрабатывать. Стандартное значение - http:// 192.168.77.1:8080/? action=stream;

4. timeout_alert_message: данное поле предназначено для хранения переменной, отвечающей за время, через которое всплывающее уведомление будет убрано. Стандартное значение - 5;

5. alert_color: данное поле настроек хранит информацию о цвете всплывающего уведомления. Стандартное значение - желтый;

6. showPads: в данное поле записана степень прозрачности цифрового стика;

7. joystick_size: в данном поле записан размер джойстика. Стандартное значение - 900;

8. joystick_position: данная переменная отвечает за позицию джойстика, будет ли он находиться слева или справа. Также эта переменная отвечает за позицию группы кнопок (движение по датчику линии, по показания видеомодуля и др.). Если в меню выбрано положение цифрового стика справа, то группа функциональных кнопок будет располагаться слева таким образом, чтобы сам стик не перекрывал кнопки. И наоборот: если стик слева - кнопки справа. Стандартное значение - справа;

9. joystick_pointer_color: в данную переменную записывается выбранный цвет указателя джойстика из предварительно представленных. Возможные цвета:

a. желтый;

b. красный;

c. черный;

d. синий;

e. зеленый;

f. серый;

g. коричневый;

h. белый.

Стандартное значение - белый;

10. joystick_border_color: в данную переменную также записывается цвет, но уже границы самого цифрового стика. Предварительно выбранные цвета такие же, как и цвета указателя стика. Стандартное значение - белый;

11. chbx_password: данное поле отвечает за включение / отключение ввода пин-кода при запуске приложения. По умолчанию включен пин-код;

12. txt_password: данное поле хранит в себе информацию о пин-коде. Стандартное значение - 0000;

Открытие окна настроек будет осуществляться при нажатии на кнопку на главном экране, расположенную справа вверху экрана. Итоговый интерфейс окна настроек приложения приведен на рис. 12.

Рис. 12. Интерфейс настроек приложения

Чтобы в других классах получить значения переменных настроек приложения, необходимо сначала инициализировать объект класса SharedPreferences данными, полученными стандартный методом класса PreferenceManager - PreferenceManager.getDefaultSharedPreferences (getBaseContext()). Затем в соответствующие переменные (int, string, float, и другие) записать значения, полученные методами getInt(), getString(), getFloat и т.д. Например,

final String addr=sharedPreferences.getString (SettingsActivity.SK_HOST_ADDRESS, «192.168.77.1»).

После этого необходимо убедиться в корректности полученных данных, применив конструкцию try/catch (рис. 13). Например,

Рис. 13. Конструкцию try/catch

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

Разработанные настройки дают возможность пользователю гибко изменять стандартные настройки интерфейса, чтобы комфортнее и эффективнее взаимодействовать с роботизированной системой.

3.6 Разработка алгоритма обеспечения безопасности

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

В данном android-приложении было решено использовать распространенный элемент безопасности - пин-код. Данное средство безопасности рассчитано на то, чтобы не дать третьим лицам взять на себя управление роботизированной системой.

Чтобы реализовать в приложении механизм проверки правильно введенного пин-кода с заранее сохраненным, был спроектирован следующий алгоритм:

1. открыть окно с десятью цифрами и полем ввода пин-кода, состоящего из четырех цифр;

2. сравнить введенный пин-код с заранее сохраненным в памяти устройства четырехзначным числом;

3. в зависимости от правильности введенного пароля запустить основное окно приложения или вывести сообщение о некорректном пин-коде.

Чтобы программно реализовать разработанный алгоритм, необходимо проделать несколько шагов. Сначала необходимо разработать интерфейс отдельного окна, расположив все необходимые элементы на переднем плане (иконка приложения вверху, под ним поле ввода пин-кода, далее десять кнопок в центре, отвечающих за набор цифр и всплывающее уведомление, сообщающее о правильности введенного пин-кода). Данную информацию необходимо представить в виде xml-разметки и поместить в xml-файл директории «layout». Когда интерфейс спроектирован и записан в соответствующий файл, необходимо создать новое активити для отображения готового интерфейса, а также вся остальная работа. Основной код написан в файле PinSplashScreen.java. Все объявления и инициализация переменных происходит в методе onCreate (final Bundle savedInstanceState). Здесь же происходит проверка, включил ли пользователь пин-код на входе в приложение или нет и на основании этих данных происходит либо запрос этого пин-кода или вызов основного окна приложения. Также написан метод verify_pincode (String code), который проверяет введенные четыре цифры с четырьмя цифрами, записанными во внутреннюю память устройства. Итоговый интерфейс окна ввода пин-кода изображен на рис. 14.

Рис. 14. окна ввода пин-кода

3.7 Алгоритм записи и воспроизведения маршрута роботизированной системы

Еще одной немаловажной функцией разрабатываемой роботизированной системы является возможность передвижения без вмешательства извне. Это может быть полезным в случаях, когда пользователь управляет роботизированной системой по одному и тому же маршруту. Чтобы избавить пользователя от многократного повторения одних и тех же действий, в разработатываемой системе присутствует алгоритм, позволяющий один раз записать требуемый маршрут и в дальнейшем воспроизводить его без участия самого пользователя по нажатию нескольких функциональных клавиш.

Алгоритм состоит из:

1. пользователь, будучи подключенным к ТРИК-контроллеру, нажимает кнопку начала записи маршрута;

2. проезжает весь маршрут от начальной точки до конечной;

3. нажимает кнопку окончания записи маршрута;

4. когда возникает необходимость проехать по заданному маршруту без помощи извне, пользователь нажимает кнопку воспроизведения маршрута.

Данный алгоритм программно реализуется путем написания методов в двух классах - основном MainActivity и классе джойстика MyJoystickView. MainActivity ждет, когда пользователь нажмет на кнопку начала записи маршрута (рис. 15) и передает данные в MyJoystickView.

Рис. 15. Кнопка начала записи маршрута

В свою очередь MyJoystickView, после пришедших данных, начинает записывать все действия пользователя в файл /storage/emulated/0/robotic_route.txt. Когда пользователь нажмет на кнопку остановки записи маршрута, MyJoystickView прекращает запись действий, и система будет готова воспроизвести его.

Первоначально необходимо вписать разрешение приложению использовать запись и чтение из файла:

<uses-permission android:name= «android.permission.WRITE_EXTERNAL_STORAGE»/>

<uses-permission android:name= «android.permission.READ_EXTERNAL_STORAGE»/>

Одним из основных методов алгоритма является set_writable (boolean b_write). Этот метод обрабатывает нажатия пользователем на кнопки начала и окончания записи маршрута, и запускает соответствующий метод. Когда пользователь нажал на кнопку начала записи маршрута, все действия пользователя записываются в предварительно созданный список private List<String> string_list = new LinkedList<String>(). Данные записываются как x- и y-координата положения джойстика относительно его центра и время в миллисекундах, которое он оставался в этом положении. Когда пользователь нажал на кнопку завершения записи маршрута, все элементы списка записываются в заранее созданный файл. Когда все данные запишутся в файл на внутреннем хранилище устройства, пользователю будет доступна кнопка воспроизведения маршрута (рис. 16).

Рис. 16. Кнопка воспроизведения маршрута

Robotic_route.setOnClickListener (new View. OnClickListener() {…}) занимается отслеживанием нажатия на кнопку воспроизведения маршрута и запускает механизм управления роботизированной системой без помощи пользователя. Для этого вначале скрывается цифровой стик, чтобы пользователь случайно не нажал на него, затем запускается новый поток, чтобы интерфейс приложения работал корректно и эффективно, в котором открывается файл с маршрутом на чтение, построчно считываются данные и далее, посылаются необходимые сигналы ТРИК-контроллеру через сеть wi-fi. После каждой отсылки команды поток, выполняющий данные действия, «засыпает» на определенное количество миллисекунд, определенное в файле маршрута (рис. 17).

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

Таким образом в приложении предоставлена пользователю возможность записать свой маршрут в файл и воспроизвести его, когда возникнет соответствующая необходимость.

Рис. 17. Файле маршрута

3.8 Тестирование android-приложения

Конечное программное обеспечение для android-смартфона было протестировано на наличие ошибок в работе. Тестирование проводилось на android-смартфоне Samsung galaxy s5 mini.

В ходе тестирования были выявлены следующие недочеты:

1. проблема с воспроизведением заранее записанного маршрут;

2. проблема с передачей на ТРИК-контроллер данных, не соответствующих требуемым;

3. проблема с передачей на ТРИК-контроллер данных, неправильно выведенных, используя тригонометрические функции.

Первая проблема заключалась в использовании в неправильном месте функции string_list.clear(). Из-за этого при записи нового маршрута в тот же файл, что и предыдущий, новый записывался к старому, из-за чего после нажатия кнопки воспроизведения маршрута воспроизводились сразу оба. Решение данной проблемы заключалось в постоянной очистке списка команд, записываемых в файл на внутреннем носителе устройства, при каждой последующей записи нового маршрута.

Вторая проблема заключалась в передаче команды в неправильном формате. Например, посылалась команда «pad 1 00», отображающее действие пользователя по остановке роботизированной системы. Однако, чтобы ТРИК-контроллер остановил систему, необходима команда «pad 1 0 0». Решением данной проблемы стало изменение функции формирования итоговой команды таким образом, чтобы между координатами отклонения цифрового стика ставился пробел.

Третья проблема заключалась в неправильном преобразовании отклонения указателя джойстика от центра в координаты отклонения. Решением данной проблемы стало усовершенствование ранее созданного алгоритма.

Также была протестирована скорость работы приложения, а также потребляемые ресурсы. За время работы приложения были получены следующие данные:

1. Использование процессора было на уровне 10%, что не превышает установленных значений. Были замечены кратковременные скачки до 25%;

2. Использование оперативной памяти было в пределах 22 мегабайт. Потребление оперативной памяти также находится на стандартном уровне;

3. Нагрузка на сеть была 10 килобайт в секунду отдача и 320 килобайт в секунду загрузка. Отдача обуславливается легковесными командами, отсылаемыми ТРИК-контроллеру, а загрузка - необходимо загружать 20 изображений в секунду, чтобы отобразить видеопоток.

4. Сборка и настройка роботизированной системы на базе контроллера ТРИК

Первым действием для достижения поставленной цели ВКР является сборка конечного корпуса роботизированной системы (рис. 18). В сборку системы входит:

1. сборка шасси, на которое будут крепиться моторы для обеспечения движения самой системы;

2. расположение по углам четыре мотора, чтобы итоговая система получилась полноприводной;

3. размещение в центральной части корпуса батареи, которая будет питать все электрические приборы;

4. расположение в легкодоступном месте ТРИК-контроллер, чтобы можно было свободно управлять настройками самого контроллера;

5. закрепление по периметру корпуса необходимых датчиков;

6. подсоединение всех необходимых проводов от датчиков и моторов к ТРИК-контроллеру.

Рис. 18. Собранная роботизированная система

Сборка корпуса роботизированной системы - это сочетание творческого процесса и правильного расположения всех элементов. Инструменты для сборки итоговой модели были приложены в комплекте к контроллеру ТРИК, что позволяет беспрепятственно провести все необходимые работы по сборке роботизированной системы.

Для того чтобы начать разрабатывать и тестировать программное обеспечение на роботизированной системе, необходимо загрузить последнюю версию прошивки на ТРИК-контроллер. Для осуществления данного пункта настройки системы необходима SD карта размером минимум 2 Гб, картридер и программное обеспечение Disk Imager, установленное на персональный компьютер, с которого будет осуществлена сама прошивка. Эта утилита может производить чтение и запись на SD-карты и USB-устройства [14]. Данное программное обеспечение является модификацией стандартной windows-утилиты Win32DiskImager, разработанное с использованием программной платформой.NET и реализует несколько дополнительных функций:

1. запись образов прошивки на несколько SD-карт одновременно;

2. считывание / запись прошивки из/в сжатых форматов файлов: ZIP, TGZ, GZ, XZ;

3. возможность записи последнего файла, который считывается/ записывается;

4. отключение дисков после записи;

5. предоставление большого количества файловых фильтров в диалоговом окне файла для типичных файлов прошивки (.img.bin.sdcard);

6. DiskImager также может быть немного быстрее при работе с несжатым чтением/ записью.

С помощью данной программы на SD карту записывается, заранее скачанная прошивка для контроллера, последняя версия которой находится на официальном сайте компании ООО «КиберТех». После подключения источника питания к ТРИК-контроллеру загрузка операционной системы будет производиться только с SD карты.

Следующим шагом является настройка силовых моторов. Чтобы моторы пришли в движение, необходимо соединить провода, идущие от силовых моторов к контроллеру, к портам M1-M4, а в коде программы необходимо указать мощность моторов в процентах. Для программной остановки моторов необходимо либо указать моторам нулевую мощность, либо вызвать функцию stop.

Датчики. Чтобы считывать показания датчиков, прикрепленных к роботизированной системе, необходимо соединить датчик проводом с контроллером, при этом аналоговые датчики должны подключаться к портам A1-A6, а цифровые датчики подключаются соответственно к портам D1-D2. Порты A выдают различные значения в зависимости от номера порта. Порты A1 и A2 выдают значения от 6 до 8000, порты A3 и A4 выдают значения от 0 до 1, порты A5 и A6 выдают значения от 100 до 1. Видеомодуль подключается к портам Video1-Video2.

На самом контроллере есть семь кнопок:

1. 4 кнопки для управления;

2. кнопка подтверждения;

3. кнопка отмены;

4. кнопка питания.

При необходимости возможно подключение управляющего компьютера через порт последовательного интерфейса (UART), либо через порт интерфейса USB. Для подключения к контроллеру по UART и USB используются специальные кабели хост интерфейсов.

Для доступа к интерфейсу ТРИК-контроллера можно воспользоваться утилитой PuTTY и проводом типа UART.

PuTTY - это SH и telnet клиент, разработанный первоначально Саймоном Татемом для платформы Windows [15]. PuTTY - это программное обеспечение с открытым исходным кодом, которое представляет собой SH и telnet клиент, разработанный первоначально Саймоном Татемом для платформы Windows.

Uart - универсальный асинхронный приемопередатчик, который передает преобразованные в последовательный вид данные таким образом, чтобы они могли корректно считаться другому устройству через физическую цифровую линию. Чтобы UART провод успешно начал передавать нужные данные, необходимо скачать драйвера с сайта разработчика ТРИК-контроллера. Далее настроить PuTTY таким образом, чтобы был указан порт Serial и COM-порт выбранного USB, а также установлена скорость равная 115200, сделать неактивными последовательный паритет (Serial Parity) и управление потоком (Flow Control) на вкладке подключения (Connection).

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

5. Разработка программного обеспечения для ТРИК-контроллера

5.1 Алгоритм движения по линии

Для реализации алгоритма движения по линии с пропорционально-дифференциальным регулятором, используя видеомодуль «Глаз», необходимо присоединить этот модуль так, чтобы сам модуль смотрел на поверхность движения перед роботизированной системой. Далее включить видеокамеру в режиме сенсора линии и с его помощью записывать отклонение от центра линии в переменную [16]. В зависимости от отклонения от центра, необходимо регулировать мощность силовых моторов пропорционально отклонению, т.е. чем больше отклонение, тем меньше скорость моторов и тем больше разность между скоростью правой и левой парой моторов. Это является пропорционально-дифференциальным регулятором (ПД-регулятор). ПД-регулятор - это параллельно соединенные пропорциональное и идеальное дифференцирующее звено [17]. Выходной сигнал ПД-регулятора зависит от ошибки регулирования и от скорости изменения ошибки.

5.2 Алгоритм обнаружения препятствий

Для реализации алгоритма обнаружения препятствий с помощью ультразвукового датчика и последующим использованием расчетов для определения препятствий, мешающих дальнейшему движению, необходимо подключить сам датчик к порту D1 и снимать с него показания расстояния до найденного препятствия. Работа программы заключается в том, чтобы посылать стоп сигнал на силовые моторы, когда расстояние будет равно половине корпуса роботизированной системы. Проблема заключается в том, что край корпуса роботизированной системы может столкнуться с препятствием из-за маленького угла измерения ультразвукового датчика [18]. Если препятствие находится так, что край роботизированной системы наезжает на это преграда, но угол измерения ультразвукового модуля не способен детектировать расстояние до объекта на всем протяжении движения, то при приближении робота к объекту, сенсор может потерять его из виду до минимального расстояния в половину корпуса и врезаться в объект. С помощью тригонометрической формулы можно рассчитать расстояние, при котором роботизированная система при вышеуказанных условиях столкнется с препятствием.

(2)

где X - двойное расстояние между препятствием и серединой роботизированной системы; D - расстояние до препятствия.

При условии, что X больше чем ширина роботизированной системы, она проедет, не задев препятствие.

5.3 Алгоритм движения по поступающим сигналам с пульта управления

Для реализации алгоритма обработки полученных сигналов требуется Android-устройство с установленным приложением, разработанным Горбуновым Александром TRIK joystick. Чтобы смартфон мог присоединиться к ТРИК-контроллеру необходимо включить точку доступа на контроллере и произвести подключение к сети «trik-6953ba». Чтобы подключение к контроллеру в приложении прошло успешно, необходимо ввести в настройках приложения локальный IP-адрес, который высвечивается при включении точки доступа на контроллере.

Также, чтобы на смартфоне воспроизводился видеопоток с видеомодуля, необходимо написать URI этого видео в настройках приложения. Далее, чтобы начать отправление видеопотока с модуля «Глаз» на смартфон, необходимо включить данный модуль и запустить два скрипта. Один из них отвечает за сохранение видеоряда в формате JPEG в fifo, а второй берет кадры из fifo, запускает http-сервер и на данный сервер посылает видеоряд с видеомодуля.

Для обработки нажатия на кнопки и джойстик было создано шесть параллельных потоков, каждый из которых отвечает за свою кнопку. Координаты положения джойстика с помощью разработанного алгоритма преобразовываются в мощность силовых моторов. Поворачивать данная роботизированная система может только одним способом: разностью подачи мощностей к моторам в правой и левой частях роботизированной системы. Соответственно, чтобы из координат нажатия на джойстик получить мощность моторов, необходимо на правую часть подать разность координат, а на левую часть силовых моторов подать сумму координат.

Различные действия будут происходить при нажатии на функциональные кнопки на пульте управления:

1. при нажатии на первую кнопку роботизированная система издает звуковой сигнал «beep.wav»;

2. при нажатии на вторую кнопку роботизированная система выполняет алгоритм движения по линии с помощью двух датчиков света;

3. при нажатии на третью кнопку роботизированная система выполняет алгоритм движения по линии с помощью видеомодуля «Глаз»;

4. при нажатии на пятую кнопку роботизированная система завершает выполнение программы.

5.4 Описание алгоритма датчика касания

Следующим пунктом разработки программного обеспечения является разработка алгоритма действий при срабатывании датчика касания.

Датчик касания (контактный, аналоговый) служит для формирования сигнала в случае прикосновения к предмету или препятствию. Широко применяется для конструирования роботов различного назначения.

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

...

Подобные документы

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Общий обзор проблемы безопасности ОС Android. Развитие индустрии по борьбе с вредоносным и мошенническим ПО. Разработка Системы ранжирования уровней опасности Android приложений. Выбор производителя и типа СУБД. Тестирование программного обеспечения.

    дипломная работа [2,7 M], добавлен 13.02.2016

  • Тестирование и отладка программного обеспечения: понятие, принципы, этапы, цели и задачи. Тестирование методом сандвича как компромисс между восходящим и нисходящим подходами. Сущность метода "белого и черного ящика", отладки программного обеспечения.

    курсовая работа [36,9 K], добавлен 21.07.2012

  • Основания для выбора контроллера, который подключается по IDE-шине к устройству CD-ROM. Принцип действия устройства, описание структурной и принципиальной схемы. Выбор элементной базы. Алгоритм работы устройства, разработка программного обеспечения.

    курсовая работа [136,0 K], добавлен 23.12.2012

  • Подбор игрового движка и описание его основных характеристик. Разработка структуры, алгоритма и интерфейса программы. Проектирование иерархии классов. Выделение типового приема визуализации. Тестирование правильности работы программного обеспечения.

    курсовая работа [3,1 M], добавлен 19.01.2017

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.04.2017

  • Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.

    дипломная работа [4,1 M], добавлен 24.04.2013

  • Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.

    дипломная работа [1,5 M], добавлен 09.11.2016

  • Развитие аппаратных компьютерных средств - задача первых трех десятилетий компьютерной эры. Процесс тестирования как составляющая процесса обеспечения качества разработки ПО. Принципы и критерии, предъявляемые к тестированию программного обеспечения.

    курсовая работа [319,5 K], добавлен 25.05.2009

  • Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.

    курсовая работа [41,2 K], добавлен 19.12.2010

  • Несоответствие процессов разработки программного обеспечения международным стандартам. Фазы, развитие вычислительной инфраструктуры. История развития компьютерных систем. Этапы разработки программ и их тестирование. Ошибки в программном обеспечении.

    реферат [176,2 K], добавлен 27.08.2009

  • Создание программного обеспечения в среде Visual Basic for Applications для проведения теста по работе полушарий мозга человека. Описание команд. Разработка интерфейса и тестирование программы. Листинг приветствия и задаваемых пользователю вопросов.

    курсовая работа [387,1 K], добавлен 09.03.2014

  • Знакомство с особенностями и этапами разработки приложения для платформы Android. Рассмотрение функций персонажа: бег, прыжок, взаимодействие с объектами. Анализ блок-схемы алгоритма генерации платформ. Способы настройки функционала рабочей области.

    дипломная работа [3,4 M], добавлен 19.01.2017

  • Проектирование программного обеспечения Web-приложений информационных систем сайта, которое будет обеспечивать продажу декоративных постеров, а также обеспечивать распространение рекламы и информации о деятельности компании TOO "ILLUSTRATE studio".

    дипломная работа [1,6 M], добавлен 14.07.2014

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.

    курсовая работа [35,4 K], добавлен 12.05.2013

  • Выбор инструментальной среды разработки программного обеспечения системы. Алгоритм создания теста и ввода его исходных данных. Анализ экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию".

    дипломная работа [3,2 M], добавлен 11.09.2014

  • Тестирование как составляющая часть процесса отладки программного обеспечения, его роль для обеспечения качества продукта. Обнаружение ошибок в программах, выявление причин их возникновения. Подходы к формулированию критериев полноты тестирования.

    курсовая работа [1,6 M], добавлен 20.12.2012

  • Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.

    дипломная работа [2,7 M], добавлен 03.04.2015

  • Дизайн интерфейса приложения как связь человека и персонального компьютера. Adobe Photoshop и его возможности, анализ функциональности и содержание главных операций. Используемые инструменты для разработки дизайна интерфейса текстового редактора.

    контрольная работа [407,5 K], добавлен 12.10.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.