Автор Тема: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)  (Прочитано 877 раз)

Dk

  • Пользователь
  • *****
  • Сообщений: 4
Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« : 12 Октября 2018, 19:20 »
Добрый день!

Имеется в наличии:
1. Считыватель Z-2 USB MF
2. 1С:Предприятие 8.3 (8.3.10.2561)
3. Драйвер для работы с оборудованием из 1С версии 1.5.2 (файл - ZR1C_1.5.2.zip)

Использую метод ЧитатьMifareC (ReadMifareC) и получаю следующую ситуацию:
Если явный ключ авторизации (седьмой параметр, передаваемый в метод) меньше определенного числа в десятичном выражении (например, 1 миллион) - чтение данные происходит без проблем, но если ключ авторизации в десятичном выражении больше определенного числа (например, 1 миллиард) - получаю ошибку: "Неправильный тип параметра."

С методом WriteMifareC / ПисатьMifareC ситуация аналогичная.

Такое ощущение, что тип параметра "Явный ключ авторизации" не "UI8", а "UI4", либо перед использованием методов необходимо каким-то определенным образом настроить считыватель.

Можете помочь с этой проблемой?

gsa

  • Пользователь
  • *****
  • Сообщений: 93
Re: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« Ответ #1 : 12 Октября 2018, 20:29 »
Добрый день
Обновление https://yadi.sk/d/vxB6L4I13P5JXp. 1c не поддерживает 64-битные числа, поэтому изменил тип параметра "Явный ключ авторизации" на PWSTR
Компонента.ReadMifareC(DevId, 0, 0, blob, 4, 0, "0xFFFFFFFFFFFF", false);

Dk

  • Пользователь
  • *****
  • Сообщений: 4
Re: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« Ответ #2 : 18 Октября 2018, 17:20 »
Теперь другая проблема: при авторизации по явному ключу Б получаю ошибку "Ошибка авторизации ключа.". Авторизация по ключу А проходит.
На версии 1.5.2.1 проходит авторизация по обоим ключам

gsa

  • Пользователь
  • *****
  • Сообщений: 93
Re: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« Ответ #3 : 18 Октября 2018, 17:34 »
На версии 1.5.2.1 проходит авторизация по обоим ключам
В версии 1.5.2.1 неправильно работал параметр "ключ Б" методов ReadMifareC, WriteMifareC, всегда авторизация была по ключу А. В версии 1.5.3 эта ошибка исправлена.
Авторизовать сектор по ключу Б можно, когда в биты доступа для прицепа установлены в конфигурацию, в которой ключ Б не может быть прочитан (см. справку ZR1C_RUS.chm -> Ключи -> Mifare Classic 1K -> Работа с памятью).

Dk

  • Пользователь
  • *****
  • Сообщений: 4
Re: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« Ответ #4 : 18 Октября 2018, 17:55 »
Читаю сектор 6 (на приложенном рисунке). Биты установлены так, что "Чтение Б - никогда"
Читаю демо-программой из SDK Readers - читается и ключом А и ключом Б
Читаю драйвером 1С (точнее - ConfigZR1C.exe) - ключом А читается, ключом Б - нет

gsa

  • Пользователь
  • *****
  • Сообщений: 93
Re: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« Ответ #5 : 18 Октября 2018, 18:27 »
Читаю драйвером 1С (точнее - ConfigZR1C.exe) - ключом А читается, ключом Б - нет
Проверил чтение сектора карты Mifare 4K Classic с авторизацией по ключу B (биты доступа как были на скриншоте) с помощью ConfigZR1C.exe - авторизуется и читает правильно (ключ А = "0xAB9078563412", ключ Б = "0xFFFFFFFFFFFF"), как и Demo Sdk Readers.
Проверьте порядок параметров метода ReadMifareC в ConfigZR1C.exe:
#0: COM?
#1: 6
#2: 0
#3: пусто (EMPTY)
#4: 4
#5: 0
#6: "0xFFFFFFFFFFFF"
#7: 1
#8: 0
#9: -1
#10: пусто (EMPTY)

Проверьте правильный ли ключ Б, в Demo байты ключа отображаются слева направо (от младшего к старшему), в ConfigZR1C - справа налево, т.е. например значение ключа в Demo = 12.34.56.78.90.AB, а ConfigZR1C = "0xAB9078563412".

Метод GetLastError в ConfigZR1C.exe возвращает "Ошибка авторизации ключа"?

Dk

  • Пользователь
  • *****
  • Сообщений: 4
Re: Z-2 USB MF метод ЧитатьMifareC (ReadMifareC)
« Ответ #6 : 18 Октября 2018, 18:34 »
Цитировать
Demo байты ключа отображаются слева направо (от младшего к старшему), в ConfigZR1C - справа налево, т.е. например значение ключа в Demo = 12.34.56.78.90.AB, а ConfigZR1C = "0xAB9078563412"
Вот это поворот! (с)
Теперь чтение через ConfigZR1C заработало. Буду мучить 1С. Спасибо!