Биометрические устройства Anviz с дверным замком (T5 Pro, C2)

27.09.15

Разработка - Разработка внешних компонент

Описывается мой опыт работы с дверными замками на отпечатках пальцев Anviz T5Pro и C2

 

Недавно мне в руки попало новое биометрическое устройство Anviz, интегрированное с дверным замком. Моей задачей было связать это устройство с 1С. Я начал изучать SDKи с удивлением обнаружил, что в нем отсутствуют функции распознавания. Оказывается, все распознавание ведется внутри устройства.

 

Благодаря такой реализации получаются следующие преимущества:

  1. Устройство может работать автономно, без связи с компьютером.
  2. Устройство подключается в локальную сеть по TCP/IP, один компьютер может обслуживать целую сеть устройств.
  3. Можно заводить базу отпечатков с помощью стандартной программы от AVIZ и копировать ее во все устройства.

 

Устройство, с которым я работал – AnvizT5 Pro, стоит в районе 250$:

Существует его более простая модификация – AnvizT5. Она работает только в режиме сканера отпечатков и не содержит функции распознавания, соответственно, требует постоянной онлайн-связи с обслуживающим компьютером.

Оба устройства поддерживают режим дополнительной верификации с помощью RFIDкарт.

 

Для параноиков существует еще более защищенное устройство – AnvizT50, оно содержит кнопки для ввода пин-кода и стоит в районе 350$:

 

У Anviz есть программа, которая занимается обслуживанием T5 Pro – заносит в него базу отпечатков, делает настройки сетевого адреса и т.п.

 

SDKдля подобных устройств бесплатное. Оно называется SDK_ALL, функции имеют префикс CKT. В состав SDKвходит множество примеров на различных языках программирования.

Выбор способа реализации

Для интеграции с 1С нужно только оперативно получать журнал устройства. Нужны только функции для чтения журнала прохода и установки соединения.  

 

Поэтому для решения я выбрал известный мне VisualBasic 6.

Подключение DLL к VisualBasic 6

SDKреализовано в файле tc400.dll

Модуль подключения к DLLпрописан в файле CKT_DLL.bas из SDK.

Используются функции системной библиотеки kernel32 для копирования участков памяти.

Подключение к устройству

При подключении к сетевому устройству Anviz обнаружено, что соединение происходит только по ID = 0. Поэтому в случае опроса нескольких устройств их надо подключать по очереди через этот ID.  Все демонстрационные программы не работают по ID, отличному от 0.

Подключение по выделенному IDдоступно только в режиме сервера. Я пока не разобрался с этим режимом. Решил не усложнять, если и так хорошо работает.

 

Если устройство не подключено к сети, то функция подключения из SDKждет с достаточно большим таймаутом, около 2х секунд.

Чтобы отключенное устройство не тормозило процесс перебора устройств, я предварительно пингую адрес с временем ответа 20 милисекунд. Если ответ получен, значит устройство в сети и можно читать журнал.

 

Опрос устройств идет раз в секунду, занимает одну секунду. В принципе, если устройств достаточно много, то можно запустить два приложения, чтобы они параллельно обслуживали устройства.

Чтение журнала проходов

Отпечатки пальцев привязываются к номеру сотрудника (StafferNo) – текстовой строке в программе настройки Anviz. По сути, основная цель интеграции Т5 Pro - считывание журнала проходов.

В тестовой программе XE2 окно чтения журнала выглядит так:

 

Записи хранятся в некотором буфере ограниченного размера (порядка 400-1000 записей).

Каждая запись имеет пометку, что она новая. Есть функции, которые считывают весь журнал, есть функции, которые считывают только новые записи.

 

Есть функция, которая очищает весь журнал и функция, которая снимает пометку со всех новых записей.

 

На практике для оперативной связи с устройством достаточно прочитать все новые записи и тут же, при успешном чтении, снять пометку о новых записях. Если удалось прочитать новые записи и удалить отметку о новых записях, транзакцию чтения можно считать успешно завершенной.

 

Записи в журнале имеют структуру:

 

Код по чтению журнала выглядит примерно так:

If CKT_GetClockingNewRecordEx(CurrDevice.sno, pLongRun) Then
    Do While True
        ret = CKT_GetClockingRecordProgress(pLongRun, RecordCount, RetCount, pClockings)
        If ret = 0 Then
            Exit Function
        End If
        If (ret <> 0) Then
            Dim ptemp As Long
            ptemp = pClockings
            For I = 1 To RetCount
                Call PCopyMemory(clocking, pClockings, CLOCKINGRECORDSIZE)
                pClockings = pClockings + CLOCKINGRECORDSIZE

                dsc.PersonID = clocking.PersonID
                dsc.Time = clocking.time
            Next
            If ptemp <> 0 Then
                Call CKT_FreeMemory(ptemp)
            End If
        End If
        
        If ret = 1 Then
            Exit Function
        End If
    Loop
End If

Файл проходов

При каждом получении информации о проходе я формирую отдельный CSV-файл. В случае длительного отсутствия связи в нем может присутствовать информация о нескольких проходах, но по одному файлу с каждого устройства.

В названии файла указывается текущая дата, номер устройства в списке устройств и порт устройства.

Расширение – CSV.

 

Файл содержит информацию вида:

ID;PersonID;Stat;BackupCode;WorkTyte;Time;Port;Serial;MajorVersion;MinorVersion;SpeakerVolume;Parameter;DefaultAuth;FixWGHead;WGOption;AutoUpdateAllow;KQRepeatTime;RealTimeAllow;RingAllow;DoorLockDelay
12280059;8;0;1;0;20140310211920;192.168.1.151;12280059;1;42;0;0;0;128;0;0;1;1;0;5

 

Файл конфигурации

Для управления списком устройств и параметрами программы используется файл конфигурации. Он называется «config.txt» и должен быть расположен в каталоге, откуда запускается приложение.

 

Пример файла:

//File contain config
Device
       IP:192.168.1.151
       Timeout:20
       Lic:839849KJKKJLDFDFDKFJLDFDLFDFLFLDKFJDLF
Device
       IP:192.168.1.157
       Timeout:30
       Lic:839849KJKKJLDFDFDKFJLDFDLFDFLFLDDFLUIUI
Output:$AppPath\output

Раздел Device описывает каждое устройство.

  • IP – это адрес устройства.
  • Timeout– это время в миллисекундах, в течение которого пингуется устройство перед подключением.
  • LIC – это строчка лицензии для устройства, если она требуется.

Output – это каталог, куда выводить файлы проходов.


Строки, не соответствующие формату, игнорируются.

Регистр букв в ключевых словах не важен.

Окно монитора

Приложение во время работы выводит на экран информацию о подключенных устройствах. Внизу отображается текущее время, для визуального понимания, что приложение работает и не висит.

 

При событии прохода выводится информация о последнем проходе и отображается до момента потери связи с устройством:

 

Если устройство потеряло связь, а потом опять вошло в сеть, оно тут же будет подключено и опрошено насчет свежих записей проходов.

Последние новости

Я ушел от EXE-прокладки, научился писать внешние компоненты и реализовал внешнюю компоненту для связи с дверным замком.

биометрия ANVIZ

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54135    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1177    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47407    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3662    3    0    

5

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77574    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    28784    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2279    bayselonarrend    14    

48

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4932    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ogre2007 302 03.02.16 10:53 Сейчас в теме
Добрый день.
Подскажите, а зачем писать "прокладку", если по идее можно работать из 1С напрямую с библиотекой tc400.dll ?
Или есть какие-то сложности на этом пути?
2. fixin 4277 03.02.16 16:25 Сейчас в теме
(1) потому что 1с напрямую с ДЛЛ не работает. Есть специальные внешние компоненты, которые умеют это делать, но они не от 1с, а любительские.
3. eskor 98 07.09.16 15:48 Сейчас в теме
Кстати, Рарус сделал свою прокладку, сейчас она включена в их пакет подключаемого оборудования. Точно видел, что работает со сканерами отпечатка, насчет Т5 не скажу, не тестировал. На ИС есть универсальная "прокладка" от Жолтокнижниг, она работает и и со сканером и с Т5
Оставьте свое сообщение