ПЗ (1190607), страница 3
Текст из файла (страница 3)
– поддерживает не только Java или какой-то один язык;
– свободно распространяемый и с открытым кодом, но с полной поддержкой;
– по-настоящему расширяемый и конфигурируемый;
– промышленный уровень.
2.3.2.5 PyCharm
PyCharm это интегрированная среда разработки для языка программирования Python. Предоставляет средства для анализа кода, графический отладчик, инструмент для запуска юнит-тестов и поддерживает веб-разработку на Django. PyCharm разработана компанией JetBrains на основе IntelliJ IDEA. Среда разработки является платной, но существует бесплатная версия Community Edition доступная для скачивания на официальном сайте. Не смотря на усеченный набор возможностей с помощью PyCharm Community Edition можно решить поставленные задачи.
Данная IDE имеет следующие возможности:
– статический анализ кода, подсветка синтаксиса и ошибок;
– навигация по проекту и исходному коду: отображение файловой структуры проекта, быстрый переход между файлами, классами, методами и использованиями методов;
– рефакторинг: переименование, извлечение метода, введение переменной, введение константы, подъём и спуск метода и т. д.
– инструменты для веб-разработки с использованием фреймворка Django;
– встроенный отладчик для Python;
– встроенные инструменты для юнит-тестирования;
– разработка с использованием Google App Engine;
– поддержка систем контроля версий: общий пользовательский интерфейс для Mercurial, Git, Subversion, Perforce и CVS с поддержкой списков изменений и слияния.
В качестве языка программирования выбран язык Python. Выбранный язык удобен при написании программ взаимодействующих с контроллером Arduino. Кроссплатформенность языка также важный пункт, так как на микрокомпьютер установлена операционная система Rasbian, сделанная на базе Linux.
Из приведенных сред разработки выбрана PyCharm. Qt creator и Eclipse отсеяны из-за большого веса данных продуктов это связано с наличием большого количества дополнительных модулей. Эти модули не требуются для решения поставленных задач, а остальной функционал очень схож. PyCharm также является очень популярной средой разработки поэтому имеет хорошо написанную документацию и множество статей по использованию самой программы.
2.3.3 Программное обеспечение для связи Raspberry Pi с компьютером
Программа должна представлять из себя удобный интерфейс для просмотра показаний с датчиков и отправки команд роботу. Данная задача может быть решена приведенными выше средами разработки, такими как Qt и NetBeans. Помимо языков С++ и Python можно использовать язык программирования C#.
Это язык программирования, предназначенный для разработки самых разнообразных приложений, предназначенных для выполнения в среде .NET Framework. Язык C# прост, типобезопасен и объектно-ориентирован. Благодаря множеству нововведений C# обеспечивает возможность быстрой разработки приложений, но при этом сохраняет выразительность и элегантность, присущую языкам C [25]. Рассмотрим три основные среды разработки программного обеспечения для данного языка. Это Visual Studio. MonoDevelop и SharpDevelop.
2.3.3.1 Visual Studio
Microsoft Visual Studio – средство для разработчиков ПО, которое позволяет решать основные задачи разработки: система упрощает создание, отладку и развёртывание приложений на различных платформах, включая SharePoint и облачную среду. Данная линейка продуктов позволяет разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight. Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных [28].
Преимуществами данной IDE являются:
– использование вычислительных мощностей локального компьютера и облака;
– простая реализация общих задач и индивидуальный подход;
– быстрое создание высококачественного кода;
– функция поддержки нескольких мониторов;
– возможность реализации идей и решений для широкого спектра платформ, включая Windows, Windows Server, веб-среду, облачную среду, Office и SharePoint;
– пользование данной IDE может вызвать затруднения у новичков.
2.3.3.2 MonoDevelop
Cвободная среда разработки, предназначенная для создания приложений C#, Java, Boo, Nemerle, Visual Basic .NET, Vala, CIL, C и C++. MonoDevelop позволяет разработчикам быстро создавать кроссплатформенные приложения на Linux. Windows и Max OS.
Преимуществами являются:
– кроссплатформенность;
– продвинутое редактирование текста;
– настраиваемые окна, слои и горячие клавиши;
– поддержка различных языков программирования;
– встроенный отладчик;
– визуальный конструктор форм (GTK#);
– ASP.NET.
Данная среда разработки изначально была портом SharpDevelop на Mono/GTK+, но со временем далеко ушел от своего начального состояния.
2.3.3.3 SharpDevelop
Свободная среда разработки для C#, Visual Basic .NET, Boo, IronPython, IronRuby, F#, C++.
– написана полностью на C#;
– подсветка синтаксиса для C#, IronPython, HTML, ASP, ASP.NET, VBScript, VB.NET, XML, XAML;
– визуальный редактор для WPF и форм Windows Forms (COM-компоненты не поддерживаются);
– интегрированная поддержка NUnit, MbUnit и NCover;
– интегрированная поддержка анализатора сборок FxCop;
– интегрированный отладчик;
– интегрированный профайлер;
– интегрированная поддержка SVN, Mercurial и Git;
– конвертор кода между языками C#, VB.NET, IronPython и Boo;
– предпросмотр документации, полученной из документирующих комментариев;
– расширяемость внешними инструментами;
– расширяемость на основе механизма Add-Ins.
Для программы на компьютер решено использовать язык С#, данный язык программирования позволяет создать удобный графический интерфейс и подходит для решения поставленной задачи – дать возможность пользователю обмениваться информацией с роботом. В качестве среды разработки программного обеспечения выбрана среда Visual Studio. Выбранная IDE позволяет решать множество задач и имеет обширную документацию, что позволяет быстро решать возникающие проблемы. Наличие удобного интерфейса IDE и возможности быстро создавать формы для графического интерфейса программы также облегчат работу при разработке ПО.
Со стороны Raspberry Pi программа написана на выбранном до этого языке Python.
3 Реализация аппаратно-программного модуля
3.1 Разработка интерфейса пользователя
Интерфейс пользователя необходим для взаимодействия с роботом, то есть отправки различных команд и получение ответов со стороны робота. Решено использовать четыре типа команд. Это запрос на получение данных с выбранного датчика. Команды на перемещение в заданном направлении на заданное расстояние. Команды на управления механической рукой. И последний тип это команда, загружающая выбранную прошивку в плату робота.
После отправки запроса на получение данных, необходимо принять ответ и вывести его на экран.
Учитывая требования, разработан простой интерфейс удовлетворяющий им всем. Получившийся результат показан на рисунке 7.
Рисунок 7 – Разработанный пользовательский интерфейс
Как видно из рисунка интерфейс разбит на три основных блока. Первый блок отвечает за работу с датчиками. Пользователь, выбрав необходимый датчик, нажимает на кнопку получить данные с датчика. Ответ, отправленный по данному запросу, выводится в окне справа.
Второй блок необходим для управления сервоприводами и состоит из 2 подблоков. В первом подблоке располагаются четыре кнопки и поле, в которое необходимо ввести расстояние. Это поле необходимо, чтобы в дальнейшем задавать расстояние, на которое переместится лабораторный макет, в заданном направлении.
Второй подблок имеет аналогичное строение. Состоит из трех кнопок и поля для ввода данных. Данные кнопки позволят подключить еще три сервопривода и управлять ими, задавая угол поворота.
Третий блок представляет из себя поле для вывода изображения и кнопку вкл/выкл камеру. По нажатию кнопки видеопоток с камеры передается в программу и выводится на экран.
В верхней части интерфейса находится поле показывающее статус подключения. Если установить соединение между компьютером и микрокомпьютером не удалось, то данное поле будет показывать ошибку, которая возникла при подключении.
Две кнопки вверху справа предназначены для выбора программы для микроконтроллера и её загрузки на электронную плату. Для удобства путь к выбранному файлу выводится в соседнее поле. Так как после загрузки начнется автоматическое перепрограммирование микроконтроллера, то имеется поле в которое после завершения всех операций выводится слово выполнено.
Интерфейс имеет достаточно свободного места для добавления дополнительных блоков, которые могут понадобиться студентам использующих модуль для обучения.
Листинг программы приведен в приложении А.
3.2 Программная часть интерфейса
Взаимодействие между Raspberry Pi и компьютером осуществляется программой с использованием сокетов. Сокеты это программный интерфейс, обеспечивающий обмен данными между процессами, был впервые реализован в операционной системе Berkley UNIX. Сейчас этот программный интерфейс доступен практически в любой модификации Unix, в том числе в Linux. Хотя все реализации чем-то отличаются друг от друга, основной набор функций в них совпадает. Изначально сокеты использовались в программах на C/C++, но в настоящее время средства для работы с ними предоставляют многие языки (Perl, Java и др.). При таком обмене процессы могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокеты предоставляют весьма мощный и гибкий механизм межпроцессного взаимодействия (IPC).
Они могут использоваться для организации взаимодействия программ на одном компьютере, по локальной сети или через Internet, что позволяет создавать распределённые приложения различной сложности. Кроме того, с их помощью можно организовать взаимодействие с программами, работающими под управлением других операционных систем. Например, под Windows существует интерфейс Window Sockets, спроектированный на основе socket API.
Сокеты поддерживают многие стандартные сетевые протоколы (конкретный их список зависит от реализации) и предоставляют унифицированный интерфейс для работы с ними. Наиболее часто сокеты используются для работы в IP-сетях. В этом случае их можно использовать для взаимодействия приложений не только по специально разработанным, но и по стандартным протоколам - HTTP, FTP, Telnet и т. д.
Чтобы использовать сокеты, необходимо подключить библиотеки System.Net и System.Net.Sockets. В них представлен широкий набор методов и свойств для сетевых взаимодействий.
Чтобы создать сокет в программе необходимо задать три атрибута, это домен, тип и протокол. Домен определяет пространство адресов, в котором располагается сокет, и множество протоколов, которые используются для передачи данных. Чаще других используются домены Unix и Internet, задаваемые константами AF_UNIX и AF_INET соответственно (префикс AF означает address family – семейство адресов). При задании AF_UNIX для передачи данных используется файловая система ввода/вывода Unix. В этом случае сокеты используются для межпроцессного взаимодействия на одном компьютере и не годятся для работы по сети. Константа AF_INET соответствует Internet-домену. Сокеты, размещённые в этом домене, могут использоваться для работы в любой IP-сети. Существуют и другие домены (AF_IPX для протоколов Novell, AF_INET6 для новой модификации протокола IP - IPv6 и т.д.).
Тип сокета определяет способ передачи данных по сети. Чаще других применяются:
– SOCK_STREAM передача потока данных с предварительной установкой соединения;
– SOCK_DGRAM передача данных в виде отдельных сообщений (датаграмм);
– SOCK_RAW используется для низкоуровневых сокетов.
В программе используется тип SOCK_STREAM так как он обеспечивается надёжный канал передачи данных, при котором фрагменты отправленного блока не теряются, не переупорядочиваются и не дублируются, также данный тип является самым распространенным.















