Добавлен: 28.06.2023
Просмотров: 46
Скачиваний: 3
Для входа данных и входа выбора канала задержка между внешними и внутренними тактовыми импульсами не имеет значения, т.к. она только увеличивает время установки действительных уровней сигнала. Основное значение имеет разница между временем распространения сигнала от передатчика и временем восстановления приемника для начала приема данных. [11]
Все временные требования специфицируются относительно периода тактовых импульсов или минимально допустимой длительности периода для интегральной схемы. Это означает, что в будущем возможно получение более высокой скорости передачи данных через интерфейс.
Спецификация интерфейса I2S определяет соответствие логических сигналов ‘0’ и ‘1’ уровням напряжения традиционной технологии производства интегральных схем ТТЛ (Транзисторно-Транзисторная Логика):
низкий уровень (логический ‘0’) на входе: менее 0.8В;
высокий уровень (логическая ‘1’) на входе: более 2.0В;
низкий уровень (логический ‘0’) на выходе: менее 0.4В;
уровень (логическая ‘1’) на выходе: более 2.4В.
(Нагрузочная способность выходов также соответствует ТТЛ-технологии: при низком уровне не менее -1.6мА, при высоком уровне не более 0.04мА.)
В настоящее время, однако, в результате гораздо более широкого распространения интегральных схем, выполненных по технологии КМОП (Комплементарная логика на транзисторах Металл-Оксид-Полупроводник), имеющих различное напряжение питания, уровни напряжения для логических сигналов интерфейса обычно соответствуют уровням напряжения всех остальных цифровых сигналов, которыми оперирует интегральная схема.
2.2 Универсальный графический интерфейс пользователя на примере системы акустического мониторинга
Рассмотрим наиболее популярные в настоящий момент способы построения интерфейсов клиентских приложений на языке C++ как наиболее используемом для разработки ПО, для ОС Microsoft Windows (MS Windows) и ОС Linux. Главным средством разработки ПО для MS Windows является MS Visual Studio [1].
Эта интегрированная среда разработки (IDE) позволяет разрабатывать ПО на разных язы- ках программирования, но основными языками, конечно, являются C++ и C#. Для разработки интерфейса приложения имеются два ос- новных средства – Windows Forms (WinForms) и Windows Presentation Foundation (WPF). Большая часть существующих приложений для MS Windows разработана с использованием WinForms, однако с по- явлением более современных версий ОС (MS Windows 7, 8) система WPF становится более популярной. Кроме того, последние версии MS Visual Studio позволяют использовать язык разметки HTML5 для построения интерфейсов, близких по стилю к нативным веб- приложениям.
Однако стоит заметить, что коммерческая лицензия MS Visual Studio является платной, как и лицензия MS Windows, что, несомненно, является недостатком для низкобюджетных проектов. Если говорить о низкобюджетных проектах, то тут наиболее подходящим вариантом является ОС Linux. Помимо того, что большинство дистрибутивов этой ОС является абсолютно бесплатным, в том числе и для коммерческого использования, также имеется ряд бесплатных средств для разработки качественного ПО для ОС Linux. 348 Самым распространенным средством для разработки ПО на языке С++ является кроссплатформенный инструментарий Qt [2]. Важно подчеркнуть, что Qt позволяет разрабатывать приложения не только для ОС Linux, но и для MS Windows, Mac OS X, Android и других UNIX-подобных ОС. Разработчики Qt предлагают как бесплатную для коммерческого использования, так и платную лицензию с дополнительными возможностями. Но, исходя из современной практики разработки ПО с помощью этого инструментария, бесплатной лицен- зии оказывается больше чем достаточно. Если проводить аналогию с MS Visual Studio, то в Qt мы имеем IDE Qt Creator.
Здесь альтернативой WinForms являются так назы- ваемые виджеты (Qt Widgets), а альтернатива для WPF – Qt Quick. Также в Qt Creator имеется возможность создания интерфейсов на основе HTML5. Но наиболее интересным модулем инструментария является встраиваемый веб-движок WebKit, который лежит в основе всех современных веб-браузеров. Подобный модуль имеется и в MS Visual Studio, но он имеет ряд ограничений, и тем более нас больше интересуют низкобюджетные средства, которые позволяют уменьшить издержки при создании программного продукта. Веб-движок – это ядро браузера, он отвечает за правильное отображение веб- страниц. Модуль Qt WebKit позволяет создавать интерфейс клиентского приложения с использованием техники разработки интерфейсов веб-приложений.
В основе создания интерфейса веб-приложения лежит устоявшийся стек технологий. Он включает язык разметки HTML (HTML 4, 5), каскадные таблицы стилей (CSS 2, 3) и скрипто-вый язык JavaScript с богатым выбором дополнительных библиотек (каркасов).
Отдельного внимания заслуживает тот факт, что скорость появления новых полезных каркасов для языка JavaScript стремительно растет, а это делает разработку насыщенных функционалом приложений более быстрой и удобной. Теперь решение проблемы создания универсального GUI лежит на поверхности, но это только на первый взгляд. Рассмотрим традиционный способ создания универсального GUI с помощью модуля Qt WebKit на примере модуля визуализации данных системы акустиче- ского мониторинга, разрабатываемой в рамках кандидатской диссерта- ционной работы [3].
Под системой акустического мониторинга подразумевается система, включающая аппаратную и программную части. Аппаратная часть системы состоит из сенсорной сети акустических датчиков, данные с которых обрабатываются на микроконтроллере и отправляются по какому-либо интерфейсу (UART, IEEE 802.X и др.) на персональный компьютер (ПК). Программная часть состоит из на- бора прикладных программ, работающих как на локальном ПК (клиентское ПО), так и на удаленном сервере (серверное ПО). Традиционный метод подразумевает использование межпроцессного взаимодействия посредством встроенного механизма Qt. Здесь подразумевается взаимодействие между основной логикой клиентского приложения, изображенной на рис. 4 как Обработчик данных, и GUI-элементом.
Рис. 4. Традиционный метод универсального GUI
Одним из недостатков такого подхода является то, что код для реализации GUI на языке JavaScript будет иметь специфические функции, которые будут актуальны только для клиентского Qt-приложения. Для серверного приложения, отвечающего за GUI, нужен будет другой, специфичный для серверной реализации, код. Напри- мер, в случае использования PHP-скрипта для реализации основной логики серверного приложения понадобится реализация межпроцессного взаимодействия с помощью какой-либо другой технологии (AJAX или WebSocket). Отсюда следует еще один недостаток, а имен- но использование дополнительного языка программирования для реализации основной логики серверного приложения и разработка нового алгоритма межпроцессного взаимодействия. Для решения этих проблем предлагается новый метод, основанный на использования упомянутой выше технологии WebSocket.
Суть метода заключается в том, чтобы унифицировать метод межпроцессного взаимодействия между основной логикой приложения и GUI как на клиентской стороне, так и на серверной. В этом случае появляется возможность использования JavaScript-кода для реализации универсального для обеих сторон GUI.
На рис. 5 видно, что теперь для межпроцессного взаимодействия как для клиентской, так и для серверной части используется технология WebSocket. Следовательно, теперь мы имеем один универсальный JavaScript-код для разных приложений.
Рис. 5. Новый метод реализации универсального GUI
В этом случае необходимым условием является серверное приложение, основная логика которого реализована с помощью Qt, на не совсем привычном для веб-разработчиков языке C++. С одной стороны, такой подход к реализации серверного приложения усложняет задачу для узкоспециализированного веб-разработчика. Но, с другой стороны, мы имеем универсальные части кода, которые позволяют нам сэкономить время на дублировании одних и тех же по смыслу алгоритмов на разных языках. Важно также подчеркнуть, что для использования технологии WebSocket необходима дополнительная библиотека, которая имеется в интернете в свободном доступе или включается по умолчанию в более поздние версии Qt.
Рис 6. Локальное и северное приложения
На рис. 6 приведен пример реализации нового метода создания универсального GUI для ОС Ubuntu 14.04. Как видно на рисунке, в конечном итоге мы получаем универсальный интерфейс как для локального приложения, запущенного в качестве исполняемого файла ОС, так и для серверного приложения, запущенного в современном веб-браузере. Так как для разработки ПО используются кросс- платформенные инструменты, это позволяет говорить о простой переносимости программного продукта на другие ОС в будущем.
ЗАКЛЮЧЕНИЕ
Понятие «интерфейс» сегодня имеет много разных аспектов, связанных со способами соединения чего-либо с чем-либо. Так, бывает интерфейс между устройствами, программный интерфейс, пользовательский интерфейс. Среди всех них, нас интересует пользовательский интерфейс, но что же это такое? Если кратко, то это способ общения конечного пользователя с программой. Естественно, он определяется создателем или чаще создателями программы, причем множественное число относится не к количеству писавших программу людей, а к количеству уровней, которыми пользуется проблемный программист.
Часть интерфейса определяется аппаратными средствами, часть - особенностями операционной системы и т.д., и каждый из этих уровней вносит свои ограничения в построение интерфейса. Но самая важная его часть, конечно, определяется тем, что делает проблемная программа, но здесь нас больше будет интересовать не ЧТО именно она делает, а КАК организовано её взаимодействие с пользователем.
Если программист создает интерфейс своей программы «с нуля», без использования каких-либо средств, то он обрекает себя на весьма трудоемкую работу, которую, как показывает опыт, ему вряд ли удастся довести до сколь-нибудь приличного вида. С другой стороны, на многих машинах существуют мощные средства организации интерфейса (в качестве примера, разумеется, годится ОС Windows), позволяющие строить довольно сложный интерфейс, не затрачивая на это больших усилий.
Однако использование стандартных средств создания интерфейса накладывает ограничения не только на способ общения программы с пользователем, что в общем-то полезно, но и на структуру самой программы, а тем самым осложняет построение программ, весьма простых при традиционных подходах.