Пример схемы подключения модуля перехвата

Краткое описание модуля перехвата внешний вид - чуть меньше пачки сигарет
1. шнур - для перехвата данных с модулей шифрации
2. 1 USB шнур - для подачи питания
3. Разъем RJ45 - для подключения к локальной сети и передачи, перехваченных данных программе Logger.
Модуль перехвата данных подсоединяется к интерфейсной плате жд принтера. Затем по локальной сети эти данные передаются программе Logger, запущенной на компе под управление Windows. Logger получает данные от платы перехвата и скидывает все в файл
Подключенный модуль перехвата

Варинаты регистрации
Есть 2 варината регистрации:
1. Глобальный ключ - без привязки к мас-адресу, генериться на основании PID программы. Данный ключ необходимо, в случае если модуль перехвата работает за NAT
2. Индивид. ключ - привязан к мас-адресу модуля перехвата
Краткое описание logger.ini файла
# после символа "#" обязательно в начале строки, можно писать комментарии
# общий лицензионный ключ на несколько каналов (устройств), распространяется на первые от 0 до N каналов.
# Возможные опции: Разбивка на листы по отдельным файлам, разрешение декодирования при загрузке из Flash
# по умолчанию поддержка 4 устройств, 0, 1, 2, 3 - будут декодироваться, соответсвенно - 4, 5, 6, и т.д. - нет
KEY=1234567890123456
debuglevel=1			режим записи лог файла
logdir=C:\Program Files\Logger	директория с установленной программой
# ------ параметры первого модуля перехвата ---------
CFG[0].host=192.168.0.75	ip адрес модуля перехвата
CFG[0].port=4001		порт модуля перехвата, зависит от модели принтера
CFG[0].enable=1			включение(1) или отключение(0) перехвата жд данных
CFG[0].decoder=1		режим декодирования от 1 и т.д., зависит от модели принтера,
				если существующие режимы декодирования не подошли, необходимо отключить
				декодирование - установить 0 и отправить полученный файл разработчику
CFG[0].key=535C4B55DC07E77A	ключ привязанный к мас-адресу модуля перехвата
CFG[0].file=log0.txt		локальный путь к файлу, куда будут падать жд данные
				(по умолчанию – c:\Program Files\Logger\ ) Сетевой путь – не поддерживается.
*** Индивидуальные переменные каналов: ***
"CFG[0]."
Элемент конфигурации канала, в данном случае 0
Номер канала может быть 0 - 999
При конфигурированнии надо учитывать возможности и ограничения ОС, а так же "железа".
Каждый канал, если он разрешён, открывает один сокет и поток, а так же потребляет память системы.
"CFG[0].host=127.0.0.1"
Хост удалённого устройства, может быть указанно доменное имя.
"CFG[0].port=4001"
Порт удалённого устройства. Для обычного режима это порт TCP,
для загрузки из Flash, порт можно не указывать, по умолчанию будет использован порт 23 UDP.
Если не указывать, будет задан по умолчанию 4000 для TCP, и 23 для UDP.
Список стандартных портов для устройства
23 UDP - Flash интерфейс (интерфейс для записи данных во Flash определяется конфигурацией устройства)
4000 TCP - параллельный интерфейс (использование определяется аппаратным подключением к устройству)
4001 TCP - последовательный интерфейс 1 (использование определяется аппаратным подключением к устройству)
4002 TCP - последовательный интерфейс 2 (использование определяется аппаратным подключением к устройству)
4003 TCP - последовательный интерфейс 3 (использование определяется аппаратным подключением к устройству)
"CFG[0].enable=1"
Разрешение/Запрещение канала
0 - запрещён
1 - разрешён
"CFG[0].decoder=1"
Режим декодирования
0 - Нет декодирования, используется для отладки
1 - Стандартный режим, фильтр (Olivetti).
2 - Копия режима 1, другой набор фильтров (Star).
3 - Другая кодировка, другой набор фильтров (Olivetti).
4 - Копия режима 1, но с заменой кодов перевода строки 0D<->0A
5 - Для Olivetti с димплеем.
6 - Копия режима 3,  но с заменой кодов перевода строки 0D<->0A
7 - Копия режима 6, без обрезания "штрих кода".
8 - Модификация режима 4, иначе детектируется конец листа.
9 - Модификация режима 8, новый способ определения начала листа и окончания, фильтрация мусора.(для принтеров использующих в работе 2 интерфейса)
10 - Модификация режима 5, новый способ определения окончания листа.
"CFG[0].key=1234567890123456"
Необязательная опция.
Индивидуальный ключ канала, привязанный к MAC адресу устройства.
Если устройство находится в другой подсети, MAC прочитать не возможно, следовательно ключ работать не будет.
Существует устройство передающее свой MAC, его возможно размещать в другой подсети, при условии доступности его порта 23 UDP.
Если на канал распространяют своё действия оба ключа, общий и индивидуальный, то используется последний.
"CFG[0].file=log0.txt"
Необязательная опция.
Путь и имя файла, для сохранения декодированной информации канала.
Если опция не указана, будет сгенерированно автоматически.
Если путь не указан, используется путь переменной logdir.
В случае использования опции разбивки по листам, для сохранения листов используется тот же путь, имя файла генерируется автоматически.
"CFG[0].disablemainlog=1"
Необязательная опция.
Запрет ведения основного файла CFG[0].file, бывает необходимо при наличии опции разбивки по листам.
Начиная с версии 1.3.2.20, в целях предотвращения потери информации, данная опция игнорируется если ключ регистрации опции разбивки на листы не был принят.
"CFG[0].loadmode=2"
Необязательная опция, если не указано, используется режим 0.
Режим загрузки данные из устройства.
0 - По протоколу TCP, в режиме OnLine, в случае пропадания связи или больших потерь пакетов в сети, возможны потери данных.
        Вероятность потерь растёт в случаях
        А) больших потерь данных в сети
        Б) задержек более 100мс
        В) если используется параллельный интерфейс совместно с ситуациями А и/или Б.
1 - По протоколу UDP (порт 23) в режиме OffLine, Периодическая загрузка сохранённых данных из Flash памяти устройства,
        возможны длительные проблемы и перерывы в канале связи.
        При первом запуске читаются все сектора Flash устройства. Затем фиксируется текущий сектор в файле "L0.pos".
2 - По протоколу UDP (порт 23) в режиме OffLine, Периодическая загрузка сохранённых данных из Flash памяти устройства,
        возможны длительные проблемы и перерывы в канале связи.
        При первом запуске фиксируется текущий сектор в файле "L0.pos", затем при появлении новых данных они будут прочитаны.
В файле "L0.pos" сохраняется последний прочитанный сектор устройства. Путь для этого файла используется из опции "CFG[0].file",
в случае изменения данной опции необходимо перенести этот файл в новое место, в противном случае в соответствии с режимом, будет отработан алгоритм "первого запуска".
"CFG[1].loadinterval=3"
Данная опция используется в режимах loadmode=1,2.
Необязательная опция, если не указано, используется 3 минуты.
Минимальное значение 3, если указано меньше, будет использовано 3.
Период (интервал) в минутах, с которым производить попытки загрузки из устройства в режимах 1,2.
При запуске сервиса, производится первая попытка загрузки, затем через указанный интервал.
"CFG[1].udptimeout=300"
Время ожидания ответа от устройства, в некоторых случаях (перегрузка) система не может вовремя обработать запрос.
Необязательная опция, если не указано, используется 300 миллисекунд.
Данная опция используется в режимах loadmode=1,2, в других игнорируется.
Необязательная опция, если не указано, используется 300 миллисекунд, минимальное значение 100, максимальное 2000.
Если указано недопустимое значение, используется либо 100, либо 2000.
Формирование логов
Уровень вывода отладочной информации, состоит из суммы значащих бит
1  - Критические ошибки
2  - Ошибки
4  - Предупреждения
8  - Информация
16 - Дополнительная информация
32 - Вывод
1+2+4+8+16+32 = 63 (полный лог)
если логи не нужны, их можно отключить в ini файл добавить строку
debuglevel=1
-------------------------------------------------------------------------------
Ошибки в логе ERROR: L0 WSAIoctl=10022
Если раньше работало, а потом перестало, смотреть в сторону firewall, антивирусов итп Если сразу не работало, туда же, проверить настройки безопасности на паранойю, понизить уровень паранойи для данного сервиса. Программа не может модифицировать/задать для своих сокетов некоторые настройки таймауйтов. Про все ошибки можно узнать набрав в поиске "winsock error код_ошибки" например здесь

Ошибки в логе ERROR: L2 FD_CONNECT 10060 и L2 WAIT_FAILED
Ошибка с кодом 10060, 10061 может возникать из-за антивируса, файрвола и подобного софта, который некорректно настроен. Для этого надо смотреть логи на наличие срабатываний и внести сервис в исключения. Подробности здесь

Ошибки в логе ERROR: L4 FD_CLOSE 10053
Насчет данной ошибки - можно почитать здесь
-------------------------------------------------------------------------------
По какому принципу формируется названия файлов при разбивке по билетам
Имя файла состоит из двух основных частей:
L1 - это номер "канала"
BC913F6F029 - это время и дата создания(условно) в секундах переведённая в HEX(BCD).
-------------------------------------------------------------------------------
вопрос
В логе встречается запись, но на диске такого файла нет
INFO: L0 Create New Ticket: C:\tickets\rzd\L0-BD99B355479.txt
ответ
Генериться имя файла, сам файл будет создан только при появлении первых данных, так сделано чтоб не захламлять папку пустыми файлами.
-------------------------------------------------------------------------------
Обратное преобразование на языке Си
int time;
char *hex; /* указатель на строку HEX */
sscanf(hex,"%X",&time); /* получим время */
Далее с помощью вункции WinAPI FileTimeToSystemTime можете получить дату и время в удобном для вас формате.
Дату и время создания файла также можно получить из свойств самого файла.
-------------------------------------------------------------------------------
Назад