Принципы построения многоуровневых сетей
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
сти для симуляции и отладки проекта:
Отладка в кодах Си и ассемблера;
Различные точки останова;
Язык описания периферии и операций ввода/вывода;
Просмотр областей CODE, DATA, EEPROM и регистров ввода/вывода;
Обработка прерываний с предсказанием;
Контроль любых переменных и стека;
Комплексные типы данных.
5.2 Настройки проекта
Для соединения программной части с технической и реализации максимальной производительности необходимо правильно настроить проект.
Выбираем тип микроконтроллера (рисунок 5.2).
Рисунок 5.2 - Выбор микроконтроллера
Выделяем необходимый объем памяти стека - для хранения до десяти холстов (таблиц размещения элементов). Необходимы нестойки наведены на рисунке 5.3:
Рисунок 5.3 - Определения объема стека
В связи с малым количеством памяти - в настройках компилятора выбираем максимальный уровень оптимизации, что наглядно показано на рисунке 5.4:
Рисунок 5.4 - Выбор максимальной оптимизации компилятора
Выбираем программатор JTAGICE для возможности программирования флэш-памяти (рисунок 5.5).
Рисунок 5.5 - Выбор программатора
В настройках программатора JTAGICE выбираем порт, через который будет осуществляться соединение с компьютером (рисунок 5.6).
Рисунок 5.6 - Выбор порта компьютера для соединения с программатором
5.3 Меню и блок кнопок
Меню - представляет собой объект класса Menu, который отвечает за предоставления выбора активного элемента. Вызов меню осуществляется в любой момент нажатием на кнопку 10, при этом выводится приглашение выбрать активный элемент. Доступными элементами меню являются: компьютер(computer), сеть(net), здание(building), сервер(server), линия (line), коммутатор(switch), курсор (pointer).
Все операции в программе делятся на три типа: opt_menu, opt_navigation и opt_line; которые хранятся в файле operationType.h. Первый из них переключает раскладку клавиш в режим Меню - каждая клавиша выступает номером элемента меню. По нажатию на определенную клавишу создается выбранный элемент и раскладка клавиш переход в режим Навигация (второй тип операций). В этом режиме клавиши служат курсором, который помогает перемещать объект в заданное место. Третий тип операций предназначен для рисования соединительной линии.
Для обработки нажатий клавиш создан метод Timer3_overflow являющийся обработчиком по прерыванию. При каждом входе в функцию идет проверка каждой стоки и каждого символа на нажатие. В соответствии от выбранного режима клавиатуры осуществляется его обработка.
5.4 Система классов
Программа написана на языке Си с использованием таких известных технологий как объектно-ориентированное программирование (ООП) и паттерны проектирования. Часть программы написана с помощью классов, а часть с помощью процедур. Все классы можно условно поделить на три категории: классы для отображения сетевых объектов, классы для управления системой и классы для взаимодействия с выбранным устройством.
.4.1 Классы взаимодействия с выбранным устройством
Рассмотрим классы взаимодействия с выбранным устройством на примере класса TIC_149 (рисунок 5.7), который предоставляет основные функции для работы с ЖК-дисплеем:
Инициализация (Init);
Очистка ЖК-дисплея (Clear);
Вывод символов на ЖК-дисплей (Print) - параметром передаем указатель на выводимою строку;
Установка активного курсора (SetStartPoint) - устанавливает начальную точку для прорисовки, параметром является шестнадцатеричный символ отвечающий за ось абсцисс или за ось ординат;
Установка активного холста (SetHolst) - установка таблицы отвечающей за расположение элементов на определенном уровне. Параметром передается объект класса Holst. Концепция холста и управления уровнями вложенности будет рассмотрена ниже;
Получение активного холста (GetHolst) - данная функция возвращает указатель на текущий активный холст;
Изменение расположения активного курсора на одну клетку вверх (goUp);
Изменение расположения активного курсора на одну клетку вправо (goRight);
Изменение расположения активного курсора на одну клетку вниз (goDown);
Изменение расположения активного курсора на одну клетку влево (goLeft).
Рисунок 5.7 - UML диаграмма класса TIC_149
Данный класс построен с использованием паттерна одиночка Singleton - который обеспечивает единственность объекта класса в которым он используется. Для реализации данного паттерна в защищенной части класса был создан статический объект с типом этого же класса и определен конструктор, а в открытую часть был добавлен статический метод GetDisplay, который по запросу всегда возвращает указатель на единственный объект этого класса.
Пример получения объекта дисплея:
_149* display = TIC_149::GetDisplay();
Рассмотрим более подробно некоторые из методов класса TIC_149:
Инициализация (Init) - с помощью функций TWI (функции работы с шиной I2C) осуществляется задание основных настроек ЖК-дисплея - установка режима отображения, включение/выключение зеркал, установка умножителя частоты, яркости, температуры, начальных точек по оси абсцисс и оси ординат.
Очистка экрана (Clear) - с помощью функций TWI сначала задается первая точка заполнения и в цикле 1064 раза подается сигнал 0x00.
Вывод символов на ЖК-дисплей (Print) - данный метод после задания первой точки заполнения в цикле выводит каждый символ. Для этого в массиве font (массив с шестнадцатери?/p>