IronLogic СКУД
Считыватели => Другие считыватели => Тема начата: log01 от 06 Мая 2020, 23:32
-
Здравствуйте. Есть вопрос по описанному в справке к драйверу ZR1C методу:
ЧитатьMifareC (
PWSTR,
UI4,
UI4,
BLOB,
UI4,
UI4=0,
PWSTR="0xFFFFFFFFFFFF",
BOOL=false,
BOOL=false,
UI4=0xFFFFFFFF),
I4=NULL
Не совсем понятно какие параметры являются обязательными/необязательными, также их тип.
Не могу прочитать данные, результат выполнения метода - Ложь. Использую Z-2 USB MF, карточки Mifare Classic 1K/ Mifare Classic 4K
Пример кода:
Перем DevId;
Перем BLOB;
ОписаниеРезультатаВыполненияТеста = "";
ОписаниеОграниченийДемонстрационногоРежима = "";
BLOB = "";
ZR1CExtension = Новый("AddIn.Comp.ZR1CExtension");
ZR1CExtension.Порт = "COM3";
DevID = Неопределено;
ZR1CExtension.Подключить(DevID);
//Предварительно вызываю метод ТестУстройства, который успешно выполняется и возвращает описание устройства.
ZR1CExtension.ТестУстройства(ОписаниеРезультатаВыполненияТеста, ОписаниеОграниченийДемонстрационногоРежима);
//Подбирал разные варианты, результат тот же.
Считано = ZR1CExtension.ReadMifareC(DevId, 0, 0, BLOB, 2, 0, "0xFFFFFFFFFFFF", false, true, -1, 0);
Считано = ZR1CExtension.ReadMifareC(DevId, 0, 0, BLOB, 2, 0, "0xFFFFFFFFFFFF", false, true, -1, Null);
Считано = ZR1CExtension.ReadMifareC(DevId, 0, 0, BLOB, 2, 0, "0xFFFFFFFFFFFF", false, true, -1);
Считано = ZR1CExtension.ReadMifareC(DevId, 0, 0, BLOB, 2, 0, "0xFFFFFFFFFFFF", false, true);
Считано = ZR1CExtension.ReadMifareC(DevId, 0, 0, BLOB, 2);
Скажите, что делаю не так, буду очень благодарен.
-
ЧитатьMifareC (
PWSTR,
UI4,
UI4,
BLOB,
UI4,
UI4=0,
PWSTR="0xFFFFFFFFFFFF",
BOOL=false,
BOOL=false,
UI4=0xFFFFFFFF),
I4=NULL
Не совсем понятно какие параметры являются обязательными/необязательными, также их тип.
Параметры, у которых указаны значения в объявлении функции, являются необязательными, т.е. у этой функции только первые 5 параметров обязательные.
PWSTR - строка, UI4 - беззнаковое 4-байтное целое число, BLOB - байты, BOOL - флаг, I4 - знаковое 4-байтное целое число.
Не могу прочитать данные, результат выполнения метода - Ложь. Использую Z-2 USB MF, карточки Mifare Classic 1K/ Mifare Classic 4K
Проверил 1С Предприятие v8.3 (в режиме толстого клиента) + ZR1C v1.7.6.4 + Z-2 USB MF v1.8 + Mifare Classic 1K - всё работает нормально.
Пример кода:
Перем Компонента;
Перем DevId;
ПодключитьВнешнююКомпоненту("c:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.Comp.ZR1CExtension");
Компонента.Порт = "Com3";
// Компонента.Лог = true;
DevId = Неопределено;
Компонента.Подключить(DevId);
Перем blob;
Перем s;
blob = "";
Компонента.ReadMifareC(DevId, 0, 0, blob, 2, 0, "0xFFFFFFFFFFFF", false, true, -1);
// Компонента.ReadMifareC(DevId, 0, 0, blob, 2);
Если (Компонента.GetLastError(s) <> 0) Тогда
s = "";
Сообщить(s);
КонецЕсли;
Сообщить(ЗначениеВСтрокуВнутр(blob));
В окно "Служебные сообщения" выводится это:
{"#",87126200-3e98-44e0-b931-ccb1d7edc497,
{1,
{#base64:klCT8aAIBABiY2RlZmdoadSFezUdaygO4SkCPlurLac=}
}
}
Какое сообщение об ошибке возвращает функция GetLastError?
Пришлите, пожалуйста, лог файл "%APPDATA%\IronLogic\ZR1C\ZR1C.log" (нужно включить запись лога Компонента.Лог = true).
-
Параметры, у которых указаны значения в объявлении функции, являются необязательными, т.е. у этой функции только первые 5 параметров обязательные.
PWSTR - строка, UI4 - беззнаковое 4-байтное целое число, BLOB - байты, BOOL - флаг, I4 - знаковое 4-байтное целое число.
Огромное спасибо за уточнение. После нескольких новых тестов, считывание прошло успешно. Данные блоков и секторов карты в виде строки, ещё можно получить с помощью функции 1С ПолучитьHexСтрокуИзДвоичныхДанных(BLOB)
Какое сообщение об ошибке возвращает функция GetLastError?
Пришлите, пожалуйста, лог файл "%APPDATA%\IronLogic\ZR1C\ZR1C.log" (нужно включить запись лога Компонента.Лог = true).
Не разобрался как получить описание ошибки, описаных в таблице справки.
Функция GetLastError (ZR1CExtension.ПолучитьОшибку(ОписаниеОшибки)) возвращала число в десятичном виде, например "-2147220969", параметр ОписаниеОшибки после выполнения функции остаётся пустой строкой. Записи лог файла:
11:46:40.808 [I00144 COM3]
11:46:40.808 [I00145 COM3]
11:46:40.855 [I00144 COM3]
11:46:40.855 [I00144 COM3]
11:46:40.983 [I00145 COM3]
Также имею следущие вопросы:
1.По обработке внешнего события: при считывании карты, в обработку внешнего события передаётся событие "TracksData" с параметром "041,57734".
Как можно настроить устройство, чтобы в обработку попадали данны карты с блоков и секторов (BLOB) и возможно ли это.
2. Какая оптимальная скорость считывания с карты, методом "ReadMifareC" например 10ти блоков.
Благодарю за Вашу помощь.
-
Не разобрался как получить описание ошибки, описаных в таблице справки.
Функция GetLastError (ZR1CExtension.ПолучитьОшибку(ОписаниеОшибки)) возвращала число в десятичном виде, например "-2147220969", параметр ОписаниеОшибки после выполнения функции остаётся пустой строкой. Записи лог файла:
11:46:40.808 [I00144 COM3]
Похоже, что zr1c.dll почему-то не может загрузить строку из своих ресурсов.
Попробуйте эту версию пожалуйста https://yadi.sk/d/vxB6L4I13P5JXp (https://yadi.sk/d/vxB6L4I13P5JXp)
1.По обработке внешнего события: при считывании карты, в обработку внешнего события передаётся событие "TracksData" с параметром "041,57734".
Как можно настроить устройство, чтобы в обработку попадали данны карты с блоков и секторов (BLOB) и возможно ли это.
Можно установить формат так:
Компонента.ОчиститьФорматы();
Компонента.ВставитьФормат(0, "GuardSaaS", "%.3u,%.5u", "b2 w01", 0, 0);
или в ConfigZR1C.exe на вкладке "Форматы" настроить/выбрать формат и на вкладке "Основное" -> в группе "Настройки ZR1C" -> установить флаг "Загрузить при старте ZR1C".
Кстати подобрать параметры для формата можно и в PlaceCard https://ironlogic.ru/il.nsf/pages/PlaceCard (https://ironlogic.ru/il.nsf/pages/PlaceCard).
2. Какая оптимальная скорость считывания с карты, методом "ReadMifareC" например 10ти блоков.
10 блоков читает за 0,296 сек (тестировал в ConfigZR1C.exe -> вкладка "Тест" -> вкладка "Методы" -> дв.клик ЛКМ по ReadMifareC, использовал старую прошивку v1.8 ).
Чтобы данные "TracksData" читались из блока Mifare нужно в ConfigZR1C.exe на вкладке "Чтение ключей" в группе "Чтение номера из блока Mifare Classic 1K/4K" установить флаг "Включено", выбрать сектор, блок, и нажать кнопку "Сохранить".