pretorean/DrvFR
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
packet drvfr
author Igor V. Youdytsky <Pitcher@gw.tander.ru>, <Pitcher@newmail.ru>
file README
language Russian
encoding koi8-r
copyright GPL
This file contains information about drvfr packet.
Содержание:
1. Описание принципов работы драйвера
2. Требования для установки
1. Описание принципов работы драйвера
Данная программа драйвера базируется на собственной разработке драйвера компании Штрих-М для фискального регистратора Штрих-ФР-Ф под ОС Windows.
В основу работы драйвера под Windows положена технология OLE сервера, что позволяет легко работать сосвойствами и методами драйвера.
Структура драйвера (drvfr) построена для максимальной совместимости с версией для Windows и облегчением адаптации прикладных программ под ОС GNU/Linux.
Основой для работы является указатель на структуру данных fr_func, возвращаемый функцией инициализации drvfrInintialize().
Использование структуры объясняется попыткой упрощения, при потере надежности. В данном случае возможно изменение любого свойства драйвера
из пользовательской программы.
Следующая стабильная версия драйвера будет содержать нормальный класс C++ и работа будет осуществляться с методами и свойствами
(только чнение или чтение/запись) класса.
При инициализации драйвера происходит выделение необходимой памяти для переменных. Соединение с устройством не осуществляется.
Ошибки выделения памяти не контролируются.
При инициализации драйвера происходит поиск и чтение конфигурационного файла в следующем порядке:
/etc/drvfrrc
$HOME/.drvfrrc
Соответственно настройки в домашнем каталоге пользователя приоритетнее общих настроек.
Файл настройки может содержать следующие данные:
#config file for drvfr
portnum=1
passwd=30
boudrate=115200
timeout=50
где:
portnum - номер коммуникационного порта COM1,COM2...
passwd - пароль пользователя
boudrate - скорость обмена по порту, пишется в виде: 2400, 4800 ... 115200
timeout - таймаут при ожидании ответа от устройства
Примеры rc файлов находятся в каталоге rc исходников.
При отсутствии обоих конфигурационных файлов в поток stderr будет выведено сообщение:
Failed reading drvfrrc file
При этом перед вызовом функции Connect(), необходимо указать в свойствах ComPortNumber, BaudRate и Timeout значения для установки соединения.
Структура fr_func содержит указатели на интерфейсные функции с прототипом int function(void) и указатель на структуру свойств драйвера fr_prop.
Наименования функций и свойств соответствуют методам драйвера производителя.
Возвращаемые значения функций - код ошибки от ККМ или -1 при невозможности выполнения функции. Исключение составляет функция запроса дампа,
которая возвращает количество блоков данных при успешном выполнении или -1 при ошибке.
Что бы инициализировать драйвер, произвести подключение к устройству и послать команду гудок, необходимо сделать следующее:
fr_func* fr;
/* Инициализация драйвера */
fr = drvfrInintialize();
if(fr == NULL)
{
perror("Could not initialize drvfr");
return;
}
/* Установление связи с ккм */
fr->prop->ComPortNumber = 1; // COM1
fr->prop->BaudRate = 6; // 115200
fr->prop->Timeout = 50;
if(fr->Connect() == -1)
{
perror("Could not initialize drvfr");
return;
}
fr->Beep();
...
Для упрощения можно использовать отдельный указатель на структуру свойств драйвера.
Например тот же код:
fr_func* fr;
fr_prop* prop;
/* Инициализация драйвера */
fr = drvfrInintialize();
if(fr == NULL)
{
perror("Could not initialize drvfr");
return;
}
prop = fr->prop;
/* Установление связи с ккм */
prop->ComPortNumber = 1; // COM1
prop->BaudRate = 6; // 115200
prop->Timeout = 50;
if(fr->Connect() == -1)
{
perror("Could not initialize drvfr");
return;
}
fr->Beep();
...
Далее при работе с драйвером свойства записываются в структуру fr->prop или prop (см. примеры), функции вызываются через указатели в структуре fr.
Сообщения, возвращаемые в свойстве ResultCodeDescription на английском языке и не зависят от локали.
2. Требования для установки и установка драйвера
Проект составлен с использованием Trolltech Qt 3.0.1 файла проекта (drvfr.pro) для обработки утилитой qmake и создания Makefile.
Драйвер написан с использованием GNU C библиотек и на данный момент является непереносимым на не GNU системы.
Соответственно для компиляции необходимо наличие установленных пакетов glibc-2.2.4 и glibc-devel-2.2.4.
Для компиляции необходимо сделать следующее:
# cd drvfr
# qmake (или qmake drvfr.pro)
# make
После компиляции будет создан файл динамической библиотеки:
libdrvfr.so.1.0.0
и символические ссылки
libdrvfr.so
libdrvfr.so.1
libdrvfr.so.1.0
Для дальнейшего использования драйвера эти файлы необходимо поместить в каталог /usr/lib или /usr/local/lib и запустить утилиту ldconfig.
При создании пользовательских программ, использующих динамическую библиотеку драйвера необходимо в пользовательский проект
включать файл заголовка drvfr.h, описывающий структуры функций (методов) и свойств драйвера, а так же функцию инициализации drvfrInitialize().
При линковании проекта необходимо указывать опцию -ldrvfr динамической библиотеки драйвера.
По всем вопросам обращаться к автору.