Антиплагиат Малышев (1230559), страница 6
Текст из файла (страница 6)
2.1)2) Пользователь иниц иирует проц есс сбора данных о проектах и сваях от сервера (рис. 2.2)3) Пользователь отправляет данные на сервер2.5 Проектирование классовВ данном разделе рассматривается архитектура классов, реализованных в прилож ении.2.5.1 Модуль Interface2.5.1.1 Иерархия классовКаж дый класс данного модуля наследуется от класса Activity, который представляет собой базовое описание работы одногоэ крана прилож ения (рис.
2.4)2.5.1.2 Диаграмма классов модуля в порядке связи (переходов пользователя)2.5.2 Модуль DBHelper2.5.2.1 Модели данных, реализованных в прилож ении2.5.2.2 Вспомогательные классы для выполнения CRUD-операц ий [2.2]2.5.3 Модуль GetDataUDPListenerService — сервис для приема данных от датчиков. Иниц иализирует отдельный системный поток, занимающ ийсяприемом данных от датчиков.DrillingData — буферный класс, хранящ ий полученные данные в виде сериализуемогообъекта.DrillingBroadcastReceiver — класс для пересылки полученных данных о значении крутящ его момента на модуль Interface.2.5.4 Модуль PrepareData2.5.5 Модуль MathData2.5.6 Модуль Visual2.5.7 Модуль Notice2.5.8 Модуль SendServer2.5.9 Модуль ReceiveServer2.5.10 Модуль JSONHelper2.6 Реализац ия2.6.1 Этапы реализац ии проектаРеализац ия первичного варианта интерфейса, a именно интерфейса классов MainActivity, ProjectActivity, PileActivity,SettingsActivity, ServerActivity.Реализац ия серверной части комплекса: написание моделей, проектирование панели администрирование, подключениеСУБД Postgresql 9.1, реализац ия интерфейса редактирования проекта и свайного поля проекта;Реализац ия получения данных от сервера, класса JSONHelper;Реализац ия работы с базой данных.
Подключение ORM-системы, написание моделей и классов для выполнения CRUDзапросов к БД;Реализац ия получения данных от датчиков. Подключение датчиков в WiFi модулю, организац ия передачи данных на WiFiмодуль, реализац ия приема данных по беспроводному каналу и первичная обработка данных;Реализац ия классов DrillingActivity;Реализац ия модуляVisual, a именно графика полож ения сваи, a такж е графиков значения крутящ его момента;Проведение первичных испытаний работы датчиков и мобильного прилож ения. Испытание работы датчика полож ения сваии датчика крутящ его момента, проверка получения данных, проверка корректности получаемых данных, анализзависимости получаемых значений от полож ения датчиков и воздействия на них;Реализац ия вторичной обработки данных. Преобразование показаний датчиков акселерометра, магнитометра и гироскопаhttp://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.12731747&repNumb=113/2310.06.2015Антиплагиатв значение угла отклонения;Реализац ия модулей SendServer, Notice.
Рефакторинг и оптимизац ия кода. Обработка ошибок и исключений в работеприлож ения. Обработка нестандартных действий пользователя;Рассмотрим подробнее некоторые э тапы, и приведем примеры возникавших задач и пути их решения.2.6.2 Реализац ия первичного варианта интерфейсаВ проц ессе реализац ии классов, ответственных за реализац ию интерфейса пользователя, возникла задача передачиданных меж ду взаимодействующ ими объектами э тих классов. Рассмотрим на примере: пользователь в данный моментнаходится на э кране подробной информац ии о свае, т. е. PileActivity.
Следующ им его шагом будет запуск э крана бурения,т. е. DrillingActivity.Т.к. для сбора данных и записи их в базу данных необходимо знать, бурение какой именно сваи будетпроизводиться, то нуж но удостовериться, что DrillingActivity запущ ена именно для выбранной сваи.
Нуж но такж е помнить,что в Android-прилож ениях активности, т. е. объекты — наследники класса Activity (такие как DrillingActivity) по умолчаниюнезависимы, и не связаны меж ду собой. Таким образом, нуж но решить задачу связываемости активностей, и передачимеж ду ними некоторых минимально необходимых для функц ионирования прилож ения данных.Решением данной задачи выступил механизм намерений (Intent-ов), залож енный в Android SDK.
Этот механизм созданименно для трансляц ии сообщ ений, причем не только в рамках одного прилож ения, но по всей операц ионной системе,установленной на данном устройстве. Любое прилож ение способно зарегистрировать широковещ ательный приёмник иотслеж ивать э ти намерения с возмож ностью на них реагировать. Это позволяет создавать прилож ения, использующ иесобытийную модель, в основе которой леж ат внутренние, системные или сторонние события, передаваемые внешнимипрограммами.С помощ ью Intent-ов такж е происходит передача данных меж ду активностями прилож ения.В приведенном примере э топроисходит следующ им образом: пользователь, находясь в активности PileActivity, иниц иирует переход на активностьDrillingActivity, наж имая на кнопку «Начать бурение».
В э тот момент обработчик наж атия кнопки создает Intent запускаактивности, и добавляет в него дополнительный ц елочисленный параметр pile_id с определенным значением,обозначающ ий уникальный идентификатор сваи. Затем э тот Intent выполняется, и новая активность запускаетсяпредустановленным значением параметра pile_id.2.6.3 Реализац ия работы с базой данныхAndroid-прилож ения используют для работы с базами данных библиотеку SQLite.
С ее помощ ью мож но создаватьнезависимые реляц ионные базы данных, и с удобством с ними работать. SQLite показала себя как весьма надёж ная система,используемая во многих э лектронных устройствах и программах, включая некоторые МР3-проигрыватели, iPhone, iPodTouch,и других.По умолчанию, для работы с базой данных в Android-прилож ении необходимо создать класс помощ ника работы с БД (какправило производится наследование от стандартного DatabaseHelper), затем переопределить некоторое количествометодов, которые позволят контролировать поведение базыданных при обновлении и/или добавлении полей, таблиц идругих сущ ностей.
При э том для того, чтобы определить поведение стандартных запросов, нуж но создать SQL-код, и затем,в течение поддерж ки прилож ения, модернизировать его и оптимизировать. Кроме того, стандартный механизм обновленияБД не предусматриваем миграц ии структур данных и самих данных, валидац ию записи и предварительной обработкиданных, возлагая ответственность за э то на разработчика.
То есть в случае услож нения прилож ения будет слишкомактивно увеличиваться количество кода, который нуж но будет сопровож дать. Учитывая э ти важ ные для проектирования иразработки программного обеспечения аспекты, было принято решение использовать ORM — систему, которая быупростила разработку и сопровож дение программного продукта. После анализа сущ ествующ их решений для Java и/илиAndroid продуктов была выбрана ORM ORMLite. Это ORM со встроенной поддерж кой SQL-баз, созданная для языкапрограммирования Java, и, как следствие, её мож но использовать в Android — прилож ениях [2.3]. Кроме того, э то проект соткрытым исходным кодом, распространяемый под лиц ензией свободного программного обеспечения, что позволяетмодифиц ировать его в случае необходимости[2.4, 2.5].Ниж е, в листинге 1, приведён пример кода для определения таблиц ы Users, в котором используются механизмы ORMLite.Листинг 1.
Пример кода с использованием библиотеки ORMLite@DatabaseTable(tableName = "users")public class User {@DatabaseField(id = true)private String username;@ DatabaseFieldprivate String password;public[41]User() {// ORMLite needs a no-arg constructor}public User(String username, String password) {this.username = username;this.password = password;}//[41]Implementing getter and setter methodshttp://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.12731747&repNumb=114/2310.06.2015Антиплагиатpublic String getUserame() {return this.username;}public void setName( String username) {this.username = username;}public String getPassword() {return this. password;}public void setPassword(String password) {this.password = password;}}[41]Как видно из листинга 1, при использовании ORM работа с таблиц ами, CRUD — операц ии осущ ествляются на исходномязыке программирования (в данном случае Java), что значительно увеличивает удобство и читабельность кода, сокращ аетиздерж ки на разработку и сопровож дение продукта.В мобильном прилож ении Momentum ORMLite была использована следующ им образом.
Изначально были определеныструктуры моделей (таблиц ы) Pile, PileData, Project. PileType. Для каж дой из них разработаны методы представления,переопределены конструкторы и деструкторы (в нескольких вариантах). Затем для каж дой модели были разработанывспомогательные классы — контроллеры, ответственные за совершение операц ий записи, удаления, обновления и чтенияиз базы данных. И после был определён глобальный класс — контроллер, который осущ ествлял доступ к контроллераммоделей. Такая система позволяет вызывать код для работы с БД из любой части прилож ения.2.6.4 Реализац ия получения и первичной обработки данных от датчиковОтправка данных с датчиков полож ения сваи и крутящ его момента реализована следующ им образом.
Цифровые сигналыдатчиков поступают на проц ессор через проводное подключение. Проц ессор, используя запрограммированныеалгоритмы,преобразует приходящ ий сигнал в набор байт, которые могут транслироваться через беспроводную WiFi сеть. После э тогопреобразованные байты поступают на подключенный к проц ессору WiFi-модуль, через который по протоколу UDP идетпередача данных на удалённый UDP-сервер. Этот сервер мож ет как принимать сигналы от модуля с проц ессором, так ипередавать данные по запросу.
Запросы за данным шлются мобильным прилож ением.Мобильное прилож ение в проц ессе работы использует два типа UDP-датаграмм: отправляемые и принимаемые.Отправляемые датаграммы представляют собой набор байт следующ его содерж ания: идентификатор принадлеж ностидатаграммы комплексу Momentum (6 байт), номер запрашиваемого пакета с данными (2 байта), контрольная суммадатаграммы (2 байта), время отправки датаграммы (2 байта). Получаемые ж е датаграммы включают в себя намногобольший набор данных: идентификатор принадлеж ности датаграммы комплексу Momentum (6 байт), номер отправляемогопакета с данными (2 байта), контрольная сумма датаграммы (2 байта), время отправки датаграммы (2 байта), показаниедатчика крутящ его момента (2 байта), показания акселерометра (6 байт), показания гироскопа (6 байт), показаниямагнитометра(6 байт), остаток заряда аккумулятора питания проц ессора (2 байта).Работа модуля GetData разработанного мобильного прилож ения происходит следующ им образом.















