- •Пояснительная записка
- •«Разработка программного средства эмуляции pos-терминала»
- •Содержание
- •Специальный раздел
- •Технологический раздел
- •Организационно-экономический раздел
- •Раздел по производственной и экологической безопасности
- •Перечень сокращений
- •Введение
- •Специальный раздел
- •1.Специальный раздел
- •1.1.Исследовательская часть
- •1.1.1.Типы программных средств эмуляции
- •1.1.2.Обзор программных средств эмуляции Microsoft Device Emulator и Android Emulator
- •Системные требования Microsoft Device Emulator
- •1.1.3.Эмуляция аппаратных модулей pos-терминала
- •Сравнительная характеристика программных средств эмуляции
- •1.2.Конструкторская часть
- •1.2.1.Состав выполняемых функций
- •1.2.2.Требования к надежности
- •1.2.3.Требования к информационной и программной совместимости
- •1.2.4.Требования к составу и параметрам технических средств
- •1.2.5.Организация входных и выходных данных
- •1.2.6.Выбор платформы для разработки
- •1.2.7.Выбор среды разработки
- •Сравнительная характеристика средств разработки
- •1.2.8.Алгоритмы работы программного средства
- •1.2.9.Иерархия классов прикладной программы пс эт
- •1.2.10.Описание логической структуры программного средства
- •Список создаваемых специальных файлов устройств
- •1.2.11.Пользовательский интерфейс. Экранные формы
- •1.2.12.Методика и результаты испытаний программного средства
- •Технологический раздел
- •2.Технологический раздел
- •2.1.Технология программирования пс эт
- •2.1.1.Основные определения
- •2.1.2.Этапы разработки и использованная модель жизненного цикла
- •2.1.3.Объектно-ориетированный подход
- •2.2.1.Обзор возможностей языка Си
- •2.3.Разработка драйверов в ос Linux
- •2.3.1.Особенности ос Linux
- •2.3.2.Принципы работы драйверов в ос Linux
- •2.3.3.Специальные файлы устройств
- •2.3.4.Структура, инициализация и выгрузка драйверов
- •2.3.5.Отладка драйверов
- •2.4.Сценарии в ос Linux
- •2.4.1.Основы разработки сценариев на языке оболочки bash
- •2.4.2.Переменные и области видимости
- •Стандартные переменные окружения и оболочки bash
- •2.4.3.Средства ввода-вывода
- •2.4.4.Команды ветвления if-else, case
- •2.4.5.Организация циклов
- •2.4.6.Определение функций
- •2.4.7.Отладка сценариев
- •Опции запуска сценариев
- •2.4.8.Makefile – управление компиляцией
- •2.5.Использование библиотек в ос Linux
- •2.5.1.Статические и динамические библиотеки
- •2.5.2.Графическая библиотека fltk
- •Элементы библиотеки fltk
- •2.5.3.Библиотека pcsc для работы с электронными картами
- •2.5.4.Библиотека TinyXml для работы с xml-файлами
- •Основные классы библиотеки TinyXml
- •2.6.Средства отладки в ос Linux
- •2.6.1.Технологии отладки
- •2.6.2.Отладочные сообщения
- •2.6.3.Стандарт syslog
- •2.6.4.Удаленная отладка с помощью gdbserver
- •2.6.5.Отладка в среде SlickEdit 2009
- •2.7.Виды тестирования
- •2.7.1.Классификация видов тестирования
- •2.7.2.Уровни тестирования
- •2.7.3.Тестирование методом «белого» ящика
- •2.7.4.Тестирование методом «черного» ящика
- •Организационно-экономический раздел «Определение целевого сегмента рынка pos-терминалов»
- •3.Организационно-экономический раздел
- •3.1.Сегментация рынка и позиционирование товара
- •3.1.1.Разделение рынка на сегменты
- •3.1.2.Принципы рыночной сегментации
- •3.1.3.Методы выделения сегментов
- •3.1.4.Критерии рыночной сегментации
- •3.1.5.Выбор целевого рынка
- •3.1.6.Выбор целевого сегмента
- •3.1.7.Позиционирование товара
- •3.1.8.Метод Чекановского
- •3.2.Сегментация рынка платежных pos-терминалов
- •3.2.1.Особенности рынка pos-терминалов
- •3.2.2.Выделение групп конечных пользователей
- •3.2.3.Выделение основных характеристик pos-терминала «ярус»
- •3.2.4.Диаграмма Чекановского
- •3.2.5.Выбор целевого сегмента и позиционирование pos-терминала «ярус»
- •Раздел по производственной и экологической безопасности «Инженерный расчет воздухообмена на рабочем месте инженера-программиста»
- •4.Раздел по производственной и экологической безопасности
- •4.1.Введение
- •4.2.Рабочее место инженера-программиста
- •4.2.1.Особенности и характеристики
- •4.2.2.Основные опасности и вредности
- •4.2.3.Оценка тяжести труда
- •Классы условий труда по показателям тяжести трудового процесса
- •4.3.Воздухообмен в помещении
- •4.3.1.Классификация систем вентиляции
- •4.3.2.Инженерный расчет воздухообмена в зависимости от числа людей в помещении
- •4.3.3.Инженерный расчет воздухообмена по избыткам тепла
- •Значения коэффициента Кост
- •Плотность теплового потока солнечной радиации в июле, Вт/м2
- •4.3.4.Выбор вентиляционной системы
- •4.4.Пожарная безопасность
- •4.5.Экологическая безопасность (утилизация компьютеров)
- •Заключение
- •Список литературы
- •Введение
- •Назначение и условия применения пс эт
- •Состав выполняемых функций
- •Требования к надежности
- •Требования к составу и параметрам технических средств
- •Характеристика пс эт
- •Обращение к пс эт
- •Входные и выходные данные пс эт
- •Сообщения
Требования к составу и параметрам технических средств
Для корректной работы данного программного средства эмуляции необходимы следующие технические средства:
персональный компьютер с предустановленной операционной системой Linux Ubuntu версии 9.04 и выше;
считыватель электронных карт, подключаемый через интерфейс USB;
последовательный порт RS232 или его эмулятор, подключаемый через интерфейс USB;
подключение к сети через интерфейс Ethernet.
К работе с программным средством допускаются пользователи, знающие методы и особенности работы в операционной системе Linux, а также особенности устройства и работы POS-терминала.
Характеристика пс эт
Первый запуск ПС ЭТ может занимать большее количество времени, в течение которого осуществляется:
установка необходимых пакетов и библиотек;
компиляция загрузочных модулей под текущую версию ядра Linux.
Обращение к пс эт
Запуск и завершение работы программного средства осуществляется с помощью специальных сценариев на языке оболочки Bash. Cценарий «start.sh» предназначен для запуска программного средства и выполняет следующие действия:
проверку и установку в случае необходимости требуемых для нормального функционирования пакетов и библиотек;
компиляцию загрузочных модулей и их загрузку в оперативную память;
создание специальных файлов устройств;
запуск сервера для работы со считывателем электронных карт через интерфейс USB;
запуск прикладной программы ПС ЭТ.
Завершение работы ПС ЭТ осуществляется с помощью сценария «stop.sh», который:
завершает работу всех приложений, использующих какой-либо эмуляционный драйвер;
осуществляет выгрузку драйверов из оперативной памяти;
завершает работу прикладной программы.
Входные и выходные данные пс эт
Взаимодействие с ПС ЭТ может производиться как со стороны пользователя через графический интерфейс прикладной программы (см. рис. Рис. П4. 1), так и со стороны программного обеспечения через интерфейс системных вызовов.
Рис. П4. 1. Пользовательский интерфейс прикладной программы ПС ЭТ.
ПС ЭТ обеспечивает эмуляцию основных аппаратных модулей POS-терминала и предоставляет следующий набор драйверов для обращения к ним:
драйвер звукового устройства;
драйвер кадрового буфера;
драйвер идентификации аппаратного обеспечения;
драйвер клавиатуры;
драйвер текстового дисплея;
драйвер считывателя магнитных карт;
драйвер защищенной памяти;
драйвер принтера чеков;
драйвер считывателя электронных карт;
драйвер последовательного порта RS232.
Обращение к каждому драйверу производится через соответствующий интерфейс системных вызовов, предоставляемых драйвером. Набор системных вызовов для каждого драйвера представлен в табл. Таблица П4. 1 (в таблице не указаны системные вызовы open и close, которые определены для всех драйверов и предназначены для получения и закрытия файлового дескриптора соответственно). Подробное описание аргументов каждого из них может быть найдено в документации Linux.
Таблица П4. 1
Интерфейс системных вызовов драйверов ПС ЭТ
Драйвер |
Системный вызов |
Описание |
|||
Драйвер звукового устройства («/dev/buzz») |
ioctl |
BUZZ_START |
Включение звукового устройства на установленной частоте |
||
BUZZ_STOP |
Выключение звукового устройства |
||||
BUZZ_SET_FREQ |
Установка частоты звучания |
||||
BUZZ_SET_DUTY |
Установка скважности звучания (фиктивная команда) |
||||
Драйвер кадрового буфера («/dev/xb») |
ioctl |
FB_SETRATE |
Установить частоту обновления |
||
FB_GETRATE |
Считать частоту обновления |
||||
FB_REFRESH |
Установить флаг обновления |
||||
FB_NEEDREFRESH |
Считать флаг обновления |
||||
mmap |
Отображение кадрового буфера в виртуальную память. |
||||
Драйвер идентификации аппаратного обеспечения («/dev/id») |
ioctl |
ID_GET_BD_TYPE |
Получение типа аппаратного обеспечения (терминал) |
||
ID_GET_PUBKEY_3 |
Получение открытой части основного ключа RSA. |
||||
read |
Аналогично вызову ioctl с командой ID_GET_PUBKEY_3. |
||||
Драйвер клавиатуры («/dev/pin», «/dev/kpd») |
ioctl («/dev/pin») |
PIN_MODE_DISABLE |
Выключение режима ввода PIN-номера |
||
PIN_MODE_STATUS |
Получение статуса PIN-режима (вкл./выкл.) |
||||
HEX_PIN_MODE_ENABLE |
Включение ввода цифр PIN-номер в шестнадцати- ричной системе счисления |
||||
PIN_MODE_ENABLE |
Включение режима ввода PIN-номера |
||||
read («/dev/pin») |
Получение событий истечения времени ввода, нажатия кнопки «ENTER», «CANCEL» или «CLEAR» |
||||
read («/dev/kpd») |
Считывание кода нажатой кнопки или символа «*» в режиме ввода PIN-номера |
||||
Драйвер текстового дисплея («/dev/lcd») |
ioctl |
DISPLAY_SETTEXTPOS |
Установка позиции курсора (младшие два байта – номер столбца, старшие – номер строки) |
Таблица П4. 1 (продолжение)
|
|
DISPLAY_CLEAR |
Очистка дисплея |
||||
DISPLAY_GET_COLS |
Получения количества текстовых столбоцов |
||||||
DISPLAY_GET_ROWS |
Получение количества текстовых строк |
||||||
DISPLAY_BACKLIGHT |
Фиктивные команды, поддерживаются с целью совместимости ПО |
||||||
DISPLAY_CONTRAST |
|||||||
DISPLAY_SHOW |
|||||||
write |
Запись текстовой строки для отображения на экране. |
||||||
Драйвер считывателя магнитных карт («/dev/emcr») |
ioctl |
EMCR_RESET |
Фиктивные команды, поддерживаются с целью совместимости ПО |
||||
EMCR_VERIFYDEVKEY |
|||||||
GET_KEYLOCKPPT |
|||||||
GET_ENCRYPTIONPPT |
|||||||
GET_SWID |
Вернуть версию считывателя |
||||||
GET_DEVSERIALNUM |
Вернуть серийный номер |
||||||
SET_DEVSERIALNUM |
Установить серийный номер |
||||||
SET_EMCRTRACK |
Установить номер считываемой дорожки |
||||||
EMCR_SWIPED |
Проверка того, что была проведена карточка |
||||||
poll |
Ожидание магнитной карточки (появления данных) |
||||||
read |
Считывание данных с дорожки, установленной командой SET_EMCRTRACK |
||||||
Драйвер защищенной памяти («/dev/mmd») |
ioctl |
MMD_GET_SEC_MEM_SIZE |
Вернуть размер защищенной памяти в байтах |
||||
mmap |
Отображение области защищенной памяти в виртуальную память |
||||||
Драйвер принтера чеков («/dev/prn») |
ioctl |
PRN_FEED_PAPER |
Прокрутка бумаги на заданное число строк |
||||
PRN_SET_CONTRAST |
Фиктивная команда установки яркости печати |
||||||
PRN_HAS_PAPER |
Проверка наличия бумаги |
||||||
PRN_GET_WIDTH |
Получение ширины бумаги в пикселях |
||||||
write |
Запись двоичных данных на печать |
||||||
Драйвер считывателя электронных карт («/dev/sc0», «/dev/sc1», «/dev/sc2», «/dev/scs») |
ioctl |
SC_SET_EMV_MODE |
Фиктивная команда |
||||
SC_GET_VERSION |
Получение версии считывателя |
||||||
SC_WAIT_STATE_ CHANGE |
Ожидание изменения состояния карты |
||||||
SC_STATUS |
Получение статуса карты |
||||||
SC_SWORD |
Получение ответа на последнюю команду |
Таблица П4. 1 (продолжение)
|
|
SC_RESET |
Сброс состояния карты |
|
SC_GET_ATR |
Получение ATR последовательности байт |
|||
write |
Отправление команды или данных на карту |
|||
read |
Чтение данных с карты |
|||
Драйвер последовательного порта RS232 («/dev/uart0», «/dev/uart1», «/dev/uart2») |
ioctl |
UART_START |
Фиктивные команды для поддержки совместимости ПО |
|
UART_STOP |
||||
UART_BUFF_SIZE |
||||
UART_MODEM_STATUS |
||||
UART_MODEM_CONTROL |
||||
UART_DATABITS |
Установка количества передаваемых бит данных (от 5 до 8) |
|||
UART_STOPBITS |
Установка количества стоповых бит (1 или 2) |
|||
UART_PARITY |
Установка четности (0 – выкл., 1 – нечетная, 2 – четная) |
|||
UART_FLOWCTRL |
Установка типа управления потоком данных (0 – выкл., 1 – RTS/CTS, 2 – XON/XOFF) |
|||
UART_BAUD |
Установка скорости передачи данных (бод/сек) |
|||
write |
Отправление команды или данных на карту |
|||
read |
Чтение данных с карты |