ajownme Ответов: 2

Как десериализовать шаблон сериализации отпечатка пальца из базы данных?


Я использую считыватель отпечатков пальцев digitalpersona u.are.u 4500.

Это коды, которые я использовал для сохранения шаблона отпечатка пальца в базе данных:
Dim str как Новый Поток памяти
Регистратор.Шаблон.Ул. сериализовать()
Dim serializedTemplate As Byte() = str.Метод toArray()
Dim bytes() as Byte = serializedTemplate
связь.Параметры.AddWithValue("@Emp_FPrint", байты)


Проблема в том , что когда я пытаюсь извлечь отпечаток пальца из базы данных и десериализовать его, у меня возникает эта ошибка:

"Преобразование из типа Byte() в тип Byte недопустимо."

Что я уже пробовал:

Суб OnComplete(захват бывал как объект, ReaderSerialNumber бывал, как струна, образец бывал как DPFP.Образец) Реализует DPFP.Захватить.EventHandler.OnComplete
MakeReport("образец отпечатка пальца был захвачен.")
SetPrompt("сканировать одни и те же отпечатки пальцев снова.")
Процесс(Образец)

CheckTemplate()
Если ds1MaxRow > 0, то
Для i = 0 до ds1MaxRow - 1
'byteArray = CType(ds1VerifyFPrintp.Таблицы("TestImage").Строки(i).Пункт(1), Байт())
con1 = новое соединение SqlConnection
вы видите con1.Параметр connectionString = "источник данных=ERSERVER;начальный каталог=хронометража;идентификатор пользователя=СА;пароль=СА"
Затемните запрос Как строку = "Select Emp_FPrint from TestImage "
вы видите con1.Открыть()
Дим УМК как sqlcommand объект = новый sqlcommand, который(запрос, вы видите con1)
Dim rsBioData As SqlDataReader = cmd.Метода executereader

Dim byteTemplate как байт
Dim memStreamTemplate как MemoryStream
Если rsBioData.HasRows, то
Пока rsBioData.Read
byteTemplate = rsBioData("Emp_FPrint") """"ошибка здесь : преобразование из типа 'Byte()' в тип 'Byte' недопустимо. '''''''
memStreamTemplate = новый MemoryStrea(byteTemplate)
Меня.Шаблон.Десериализация(memStreamTemplate)
Конец Пока
Конец, если "" "застрял на этой линии"""""

Тусклые характеристики как DPFP.FeatureSet = ExtractFeatures(Sample, DPFP.Обработка.DataPurpose.Проверка)

- Проверьте качество образца и начните проверку, если он хорош
Если не имеется ничего
- Сравните набор функций с нашим шаблоном
Тусклый результат как DPFP.Verification.Проверка.Результат = новый DPFP.Verification.Проверка.Результат()
"Верификация пула".Проверка(функции, шаблон, результат)
'UpdateStatus(результат.Фарахиев)
Если результат.Значит Проверено
MakeReport("отпечаток пальца был проверен.")
Еще
MakeReport("отпечаток пальца не был проверен.")
Конец, Если
Конец, Если

Затем я
Конец, Если
Конец Подводной Лодки

2 Ответов

Рейтинг:
1

Richard MacCutchan

Dim byteTemplate As Byte

Сообщение об ошибке совершенно ясно. Вы не можете десериализовать массив байтов в один байт.


ajownme

Я пробую и это . но я получил ошибку: "System.NullReferenceException". Дополнительная информация: ссылка на объект не установлена на экземпляр объекта."


Dim byteTemplate() как байт
Dim memStreamTemplate как MemoryStream
Если rsBioData.HasRows, то
Пока rsBioData.Read
byteTemplate = rsBioData("Emp_FPrint")
memStreamTemplate = новый MemoryStrea(byteTemplate)
Меня.Шаблон.Десериализация(memStreamTemplate) """ЗДЕСЬ ОШИБКА""""""
Конец Пока
Конец, Если

Richard MacCutchan

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

Рейтинг:
1

Member 14047522

я думаю, что это должно быть так

Dim byteTemplate как байт()