Отпечаток пальца биометрии дает чужую информацию - PullRequest
7 голосов
/ 07 января 2020

У меня есть эта биометрия, но она дает мне совершенно неверный вывод - другой идентификатор пользователя и дата проверки в 2132 году.

Что может быть причиной такая неверная информация? Я не мог найти подобную проблему на Inte rnet. Кто-нибудь еще сталкивался с такой же проблемой, как у меня?


C# Код:

            if (axCZKEM1.ReadGeneralLogData(GetMachineNumber()))
        {
            while (axCZKEM1.SSR_GetGeneralLogData(GetMachineNumber(), out sdwEnrollNumber, out idwVerifyMode,
                        out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute, out idwSecond, ref idwWorkcode))//get records from the memory
            {
                DataRow dr = dt_log.NewRow();
                dr["User ID"] = sdwEnrollNumber;
                dr["Verify Date"] = idwYear + "-" + idwMonth + "-" + idwDay + " " + idwHour + ":" + idwMinute + ":" + idwSecond;
                dr["Verify Type"] = idwVerifyMode;
                dr["Verify State"] = idwInOutMode;
                dr["WorkCode"] = idwWorkcode;
                dt_log.Rows.Add(dr);
            }
            ret = 1;
        }
        else
        {
            axCZKEM1.GetLastError(ref idwErrorCode);
            ret = idwErrorCode;

            if (idwErrorCode != 0)
            {
                lblOutputInfo.Items.Add("*Read attlog failed,ErrorCode: " + idwErrorCode.ToString());
            }
            else
            {
                lblOutputInfo.Items.Add("No data from terminal returns!");
            }
        }

VB. NET Код:

If axCZKEM1.ReadGeneralLogData(iMachineNumber) Then

            While axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, idwEnrollNumber, idwVerifyMode, idwInOutMode, idwYear, idwMonth, idwDay, idwHour, idwMinute, idwSecond, idwWorkCode)

                Dim newitem As New ListViewItem()

                    newitem.Text = idwEnrollNumber.ToString()
                    newitem.SubItems.Add(idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString())
                    newitem.SubItems.Add(idwVerifyMode.ToString)
                    newitem.SubItems.Add(idwInOutMode.ToString)
                    newitem.SubItems.Add(idwWorkCode.ToString)
                    lvLogs.Items.Add(newitem)

            End While
  End If

Модель устройства: MA300

Тип устройства: Контроль доступа


enter image description here

Ответы [ 2 ]

4 голосов
/ 17 января 2020

Это не то, как вы должны создавать объекты DateTime. Попробуйте использовать этот конструктор для создания объекта DateTime, а затем вызовите ToString в нужном формате. Если это не помогает, вы можете исключить, что:

newitem.SubItems.Add(New DateTime(idwYear, idwMonth, idwDay, idwHour, idwMinute, idwSecond).ToString("yyyy-MM-dd hh:mm:ss"))

Я бы также предложил установить точку останова при создании объекта DateTime и проверить значения idwYear / Month / et c. чтобы убедиться, что указанные переменные имеют ожидаемые значения.

Я дважды проверил документацию для этого метода и похоже, что подпись верна. Я также рекомендовал бы проверить, что ваши переменные объявлены как целочисленные переменные (просто чтобы убедиться).

0 голосов
/ 07 января 2020

Дата и время на машине должны быть неправильными.

...