Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.09.2024
Сообщений: 2
1
.NET 8

Помощь по работе с SDK для считывателя от HIKVISION

12.09.2024, 15:27. Показов 541. Ответов 7

Author24 — интернет-сервис помощи студентам
Доброго времени суток, ув. форумчане! Прошу помочь разобраться в моей проблеме. У меня считыватель от HIKVISION, а именно DS-K1F100-D8E. По-дефолту он умеет работать только с официальной программой от производителя - IVMS-400, либо же с программой для его прошивки - ClientDemo. Моя хотелка -- научить его работать в режиме эмуляции клавиатуры, чтобы после запуска программы он всегда находится в режиме считывания карты, а после считывания вставлял ее номер в текстовое поле, где сейчас установлен фокус курсора.
Вместе с программой ClientDemo (для прошивки) лежало много исходников на Си и Си++, если я правильно понял, а также сам SDK -- HCUsbSDK.dll. К SDK также идет документация, но она полностью на китайском языке.
Что удалось реализовать:
1. Инициализация SDK
2. Обновление и поиск устройств (enum)
3. Вход в устройство(login)

А вот с активацией (считыванием) считыванием карты проблема.
Некоторую часть кода я приложил внизу, а также полный вывод программы. Основная проблема в классе CardReader - ошибка 0xC0000005. Уже все перепробовал, может есть знатоки подобных вещей?

З.Ы. ниже еще прикладываю саму программу ClientDemo и все, что там в комплекте с ней шло(SDK, документация, исходники)
Заранее благодарен любой помощи!

Кликните здесь для просмотра всего текста
>dotnet run
Попытка инициализации SDK...
SDK успешно инициализирован.
Попытка перечисления устройств...
Устройство найдено: HIDI2C Device, Серийный номер: 9999
Устройство найдено: DS-K1F100-D8E, Серийный номер: FB2734385
Устройство найдено: HIDI2C Device, Серийный номер: 9999
Устройство найдено: HIDI2C Device, Серийный номер: 9999
Устройство найдено: USB Optical Mouse, Серийный номер:
Устройство найдено: HIDI2C Device, Серийный номер: 9999
Устройство найдено: HIDI2C Device, Серийный номер: 9999
Устройства успешно перечислены.
Попытка подключения к устройству...
Успешно подключено. UserID = 633054866347917313
Имя устройства: DS-K1F100-D8E
Серийный номер устройства: FB2734385
Версия ПО: 2010002
dwCondBufferSize: 32, dwInBufferSize: 32
dwOutBufferSize: 32
Содержимое входного буфера (Wait Info): 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Содержимое выходного буфера (Activate Res) до вызова: 00-00-00-00-00-00-00-00-00-00
Fatal error. 0xC0000005
at CardReader.USB_SDK_GetDeviceConfig(Int64, UInt32, USB_CONFIG_INPUT_INFO ByRef, USB_CONFIG_OUTPUT_INFO ByRef)
at CardReader.ActivateCard(Int64)
at Program.Main(System.String[])



Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Program.cs
using System;
 
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Попытка инициализации SDK...");
 
        if (!SDKManager.Initialize())
        {
            return;
        }
 
        var device = DeviceManager.EnumerateAndFindDevice("DS-K1F100-D8E");
        if (device == null)
        {
            Console.WriteLine("Устройство не найдено.");
            return;
        }
 
        var userId = DeviceManager.LoginToDevice(device.Value);
        if (userId == -1)
        {
            return;
        }
 
        // Вызов класса CardReader для активации карты
        CardReader.ActivateCard(userId);
 
        DeviceManager.LogoutAndCleanup(userId);
    }
}


Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//structures.cs
using System.Runtime.InteropServices;
 
public struct USB_SDK_DEVICE_INFO
{
    public uint dwSize;
    public uint dwVID;
    public uint dwPID;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string szManufacturer;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string szDeviceName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
    public string szSerialNumber;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 68)]
    public byte[] byRes;
}
 
public struct USB_SDK_USER_LOGIN_INFO
{
    public uint dwSize;
    public uint dwTimeout;
    public uint dwVID;
    public uint dwPID;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string szUserName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    public string szPassword;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
    public string szSerialNumber;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 80)]
    public byte[] byRes;
}
 
public struct USB_SDK_DEVICE_REG_RES
{
    public uint dwSize;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string szDeviceName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
    public string szSerialNumber;
    public uint dwSoftwareVersion;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
    public byte[] byRes;
}
 
public struct USB_SDK_WAIT_SECOND
{
    public uint dwSize;
    public byte byWait;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 27)]
    public byte[] byRes;
}
 
public struct USB_SDK_ACTIVATE_CARD_RES
{
    public uint dwSize;
    public byte byCardType;
    public byte bySerialLen;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
    public byte[] bySerial;
    public byte bySelectVerifyLen;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public byte[] bySelectVerify;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
    public byte[] byRes;
}
 
public struct USB_CONFIG_INPUT_INFO
{
    public IntPtr lpCondBuffer;
    public uint dwCondBufferSize;
    public IntPtr lpInBuffer;
    public uint dwInBufferSize;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
    public byte[] byRes;
}
 
public struct USB_CONFIG_OUTPUT_INFO
{
    public IntPtr lpOutBuffer;
    public uint dwOutBufferSize;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 56)]
    public byte[] byRes;
}


Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
//CardReader.cs
using System;
using System.Runtime.InteropServices;
 
public static class CardReader
{
    private const uint USB_SDK_GET_ACTIVATE_CARD = 0x0104;
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct USB_SDK_WAIT_SECOND
    {
        public uint dwSize;
        public byte byWait;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 27)]
        public byte[] byRes;
    }
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct USB_SDK_ACTIVATE_CARD_RES
    {
        public uint dwSize;
        public byte byCardType;
        public byte bySerialLen;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public byte[] bySerial;
        public byte bySelectVerifyLen;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bySelectVerify;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public byte[] byRes;
    }
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct USB_CONFIG_INPUT_INFO
    {
        public IntPtr lpCondBuffer;
        public uint dwCondBufferSize;
        public IntPtr lpInBuffer;
        public uint dwInBufferSize;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] byRes;
    }
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct USB_CONFIG_OUTPUT_INFO
    {
        public IntPtr lpOutBuffer;
        public uint dwOutBufferSize;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 56)]
        public byte[] byRes;
    }
 
    [DllImport("HCUsbSDK.dll", CallingConvention = CallingConvention.StdCall)]
    private static extern bool USB_SDK_GetDeviceConfig(long lUserID, uint dwCommand, 
        ref USB_CONFIG_INPUT_INFO pInputInfo, ref USB_CONFIG_OUTPUT_INFO pOutputInfo);
 
    [DllImport("HCUsbSDK.dll", CallingConvention = CallingConvention.StdCall)]
    private static extern int USB_SDK_GetLastError();
 
    [DllImport("HCUsbSDK.dll", CallingConvention = CallingConvention.StdCall)]
    private static extern IntPtr USB_SDK_GetErrorMsg(int iErrorCode);
 
public static void ActivateCard(long userId)
{
    if (userId <= 0)
    {
        Console.WriteLine("Invalid user ID.");
        return;
    }
 
    // Инициализация структуры ожидания
    var waitInfo = new USB_SDK_WAIT_SECOND
    {
        dwSize = (uint)Marshal.SizeOf(typeof(USB_SDK_WAIT_SECOND)),
        byWait = 5,
        byRes = new byte[27]
    };
 
    // Инициализация структуры результата активации карты
    var activateRes = new USB_SDK_ACTIVATE_CARD_RES
    {
        dwSize = (uint)Marshal.SizeOf(typeof(USB_SDK_ACTIVATE_CARD_RES)),
        bySerial = new byte[10],
        bySelectVerify = new byte[3],
        byRes = new byte[12]
    };
 
    // Выделение и инициализация указателей на буферы
    IntPtr ptrWaitInfo = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB_SDK_WAIT_SECOND)));
    Marshal.StructureToPtr(waitInfo, ptrWaitInfo, false);
 
    IntPtr ptrActivateRes = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB_SDK_ACTIVATE_CARD_RES)));
    Marshal.StructureToPtr(activateRes, ptrActivateRes, false);
 
    var inputInfo = new USB_CONFIG_INPUT_INFO
    {
        lpCondBuffer = ptrWaitInfo,
        dwCondBufferSize = (uint)Marshal.SizeOf(typeof(USB_SDK_WAIT_SECOND)),
        lpInBuffer = ptrWaitInfo,
        dwInBufferSize = (uint)Marshal.SizeOf(typeof(USB_SDK_WAIT_SECOND)),
        byRes = new byte[48]
    };
 
    var outputInfo = new USB_CONFIG_OUTPUT_INFO
    {
        lpOutBuffer = ptrActivateRes,
        dwOutBufferSize = (uint)Marshal.SizeOf(typeof(USB_SDK_ACTIVATE_CARD_RES)),
        byRes = new byte[56]
    };
 
    try
    {
        Console.WriteLine($"dwCondBufferSize: {inputInfo.dwCondBufferSize}, dwInBufferSize: {inputInfo.dwInBufferSize}");
        Console.WriteLine($"dwOutBufferSize: {outputInfo.dwOutBufferSize}");
 
        Console.WriteLine($"Содержимое входного буфера (Wait Info): {BitConverter.ToString(waitInfo.byRes)}");
        Console.WriteLine($"Содержимое выходного буфера (Activate Res) до вызова: {BitConverter.ToString(activateRes.bySerial)}");
 
        // Вызов функции SDK
        bool result = USB_SDK_GetDeviceConfig(userId, USB_SDK_GET_ACTIVATE_CARD, ref inputInfo, ref outputInfo);
        if (result)
        {
            Console.WriteLine("SUCCESS USB_SDK_GetDeviceConfig() Command = USB_SDK_GET_ACTIVATE_CARD");
 
            // Преобразование выходных данных
            var cardRes = Marshal.PtrToStructure<USB_SDK_ACTIVATE_CARD_RES>(outputInfo.lpOutBuffer);
 
            Console.WriteLine($"Тип: {GetCardTypeName(cardRes.byCardType)}");
            Console.WriteLine($"Длинна номера: {cardRes.bySerialLen}");
            Console.WriteLine($"Номер: {BitConverter.ToString(cardRes.bySerial, 0, cardRes.bySerialLen)}");
            //Console.WriteLine($"Select Verify Length: {cardRes.bySelectVerifyLen}");
            //Console.WriteLine($"Select Verify: {BitConverter.ToString(cardRes.bySelectVerify, 0, cardRes.bySelectVerifyLen)}");
        }
        else
        {
            int errorCode = USB_SDK_GetLastError();
            IntPtr errorMsgPtr = USB_SDK_GetErrorMsg(errorCode);
            string errorMsg = Marshal.PtrToStringAnsi(errorMsgPtr);
            Console.WriteLine($"FAILED USB_SDK_GetDeviceConfig() Command = USB_SDK_GET_ACTIVATE_CARD");
            Console.WriteLine($"ErrorCode = [{errorCode}], ErrorMsg = [{errorMsg}]");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Exception: {ex.Message}");
    }
    finally
    {
        // Освобождение выделенной памяти
        if (ptrWaitInfo != IntPtr.Zero)
            Marshal.FreeHGlobal(ptrWaitInfo);
        if (ptrActivateRes != IntPtr.Zero)
            Marshal.FreeHGlobal(ptrActivateRes);
 
        Console.WriteLine("Память успешно освобождена.");
    }
}
 
// Метод GetCardTypeName для преобразования типа карты
private static string GetCardTypeName(byte cardType)
{
    return cardType switch
    {
        0 => "A M1 Card",
        1 => "A CPU Card",
        2 => "B",
        3 => "125KHz ID Card",
        _ => "Unknown",
    };
}
 
}
Вложения
Тип файла: rar HCUsbSDKV1.0.2.5_build20180310 (1).rar (7.21 Мб, 0 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2024, 15:27
Ответы с готовыми решениями:

Работа с SDK от Hikvision
Доброго времени суток. Кто-нибудь работал с sdk от hikvision для подключения к камерам? Мне нужно...

Hikvision SDK c++, опрос ip камер
Добрый день, подскажите есть ли функция в hikvision SDK которая сможет уведомлять об прекращении...

Помощь SDK Tablet PC
уже неделю бьюсь не могу завязать M VS 2010 и reference Tablet PC Platform * установил SDK в нем...

Софт для считывателя ACR1281U-C1
Проблема в том, что есть считыватель и драйвер для него. Как записывать на карты MIFARE 1K...

7
Эксперт по электронике
3070 / 2122 / 548
Регистрация: 04.09.2018
Сообщений: 7,321
Записей в блоге: 4
12.09.2024, 15:40 2
SelUV98, эмм... дело в том, что приведенные коды и проект особого смысла не имеют для тех, у кого нет такого считывателя. А его нет ни у кого из здешних, скорее всего.
Поэтому, ближайший путь - это выяснить что за ошибка "0xC0000005" у самого производителя (из мануалов, и т.п.)..
0
0 / 0 / 0
Регистрация: 12.09.2024
Сообщений: 2
12.09.2024, 15:47  [ТС] 3
Если верить интернету , то ошибка 0xC0000005 -- это ошибка при работе с памятью. У в коде есть вывод ошибок от SDK через:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
 else
        {
            int errorCode = USB_SDK_GetLastError();
            IntPtr errorMsgPtr = USB_SDK_GetErrorMsg(errorCode);
            string errorMsg = Marshal.PtrToStringAnsi(errorMsgPtr);
            Console.WriteLine($"FAILED USB_SDK_GetDeviceConfig() Command = USB_SDK_GET_ACTIVATE_CARD");
            Console.WriteLine($"ErrorCode = [{errorCode}], ErrorMsg = [{errorMsg}]");
        }

Но, такой ошибки нет в документации. Когда была ошибка связанная с userID, оно конкретно мне выводило - ошибка 38.

Вот кстати список всех ошибок из китайском документации:
Очень много текста!
Кликните здесь для просмотра всего текста
5.1 错误码
#define USB_ERROR_BASE 0

#define USB_SUCCESS (USB_ERROR_BASE+0) // Success (no error)

//SDK内部错误码
#define USB_ERROR_INIT_SDK (USB_ERROR_BASE+1) //SDK Init Failed
#define USB_ERROR_SDK_NOT_INIT (USB_ERROR_BASE+2) //SDK Not Initialization
#define USB_ERROR_NO_DEVICE (USB_ERROR_BASE+3) //No such device (it may have been disconnected)
#define USB_ERROR_ACCESS (USB_ERROR_BASE+4) //Access denied (insufficient permissions)

#define USB_ERROR_OPEN (USB_ERROR_BASE+5) //Open Device failed
#define USB_ERROR_DEV_NOT_READY (USB_ERROR_BASE+6) //Device is Not Ready

#define USB_ERROR_IO (USB_ERROR_BASE+7) //Input/output error
#define USB_ERROR_WRITE (USB_ERROR_BASE+8) //Write Data to Device Failed
#define USB_ERROR_READ (USB_ERROR_BASE+9) //Read Data from device Failed
#define USB_ERROR_TIMEOUT (USB_ERROR_BASE+10) //Operation timed out
#define USB_ERROR_WRITE_TIMEOUT (USB_ERROR_BASE+11) //Write Data Timeout
#define USB_ERROR_READ_TIMEOUT (USB_ERROR_BASE+12) //Read Data Timeout

#define USB_ERROR_BUSY (USB_ERROR_BASE+13) //Resource busy
#define USB_ERROR_WRITE_BUSY (USB_ERROR_BASE+14) //Device is Busy for Write Data
#define USB_ERROR_READ_BUSY (USB_ERROR_BASE+15) //Device is Busy for Read Data

#define USB_ERROR_CLOSE (USB_ERROR_BASE+16) //Close Device Error

#define USB_ERROR_OVERFLOW (USB_ERROR_BASE+17) //Overflow
#define USB_ERROR_NO_MEM (USB_ERROR_BASE+18) //Insufficient memory
#define USB_ERROR_PIPE (USB_ERROR_BASE+19) //Pipe error
#define USB_ERROR_INTERRUPTED (USB_ERROR_BASE+20) //System call interrupted (perhaps due to signal)
#define USB_ERROR_NOT_SUPPORTED (USB_ERROR_BASE+21) //Operation not supported or unimplemented on this platform
#define USB_ERROR_WAIT_OBJ (USB_ERROR_BASE+22) //Wait obj Error
#define USB_ERROR_CREATE_OVERLAPPED (USB_ERROR_BASE+23) //Create IO Overlapped failed
#define USB_ERROR_OVERLAPPED (USB_ERROR_BASE+24) //IO Overlapped Event Invalid
#define USB_ERROR_RESET_EVENT (USB_ERROR_BASE+25) //Reset Overlapped Event Failed

#define USB_ERROR_SET_OUT_REPORT (USB_ERROR_BASE+26) //Set OutReport Error
#define USB_ERROR_RECV_PACK_TIMEOUT (USB_ERROR_BASE+27) //Timeout when Receive Package from Device
#define USB_ERROR_RECV_DATA_LEN (USB_ERROR_BASE+28) //The Length of the Data(form the Device) is Unexpect

#define USB_ERROR_PARAM_INVALID (USB_ERROR_BASE+29) //Param Invalid
#define USB_ERROR_PARAM_1_INVALID (USB_ERROR_BASE+30) //Param 1 Invalid
#define USB_ERROR_PARAM_2_INVALID (USB_ERROR_BASE+31) //Param 2 Invalid
#define USB_ERROR_PARAM_3_INVALID (USB_ERROR_BASE+32) //Param 3 Invalid
#define USB_ERROR_PARAM_4_INVALID (USB_ERROR_BASE+33) //Param 4 Invalid
#define USB_ERROR_PARAM_5_INVALID (USB_ERROR_BASE+34) //Param 5 Invalid
#define USB_ERROR_PARAM_6_INVALID (USB_ERROR_BASE+35) //Param 6 Invalid
#define USB_ERROR_PARAM_7_INVALID (USB_ERROR_BASE+36) //Param 7 Invalid
#define USB_ERROR_PARAM_8_INVALID (USB_ERROR_BASE+37) //Param 8 Invalid
#define USB_ERROR_INVALID_HANDLE (USB_ERROR_BASE+38) //Handle Invalid

#define USB_ERROR_INVALID_USER_ID (USB_ERROR_BASE+39) //Invalid User ID
#define USB_ERROR_INVALID_DEVICE_ID (USB_ERROR_BASE+40) //Device ID is Invalid
#define USB_ERROR_INVALID_SEESSION_ID (USB_ERROR_BASE+41) //Session ID is Invalid
#define USB_ERROR_CHECKSUM_FAILED (USB_ERROR_BASE+42) //Checksum Failed

#define USB_ERROR_INTER_STRUCT_SIZE (USB_ERROR_BASE+43) //Size of Inter Struct Error
#define USB_ERROR_EXTER_STRUCT_SIZE (USB_ERROR_BASE+44) //Size of Exter Struct Error
#define USB_ERROR_STRUCT_HEAD_VER (USB_ERROR_BASE+45) //Version of Struct Head is not Define

#define USB_ERROR_REG_SEESION (USB_ERROR_BASE+46) //Register Session Error
#define USB_ERROR_CONVERT_PARAM (USB_ERROR_BASE+47) //Convert Param Error

#define USB_ERROR_INTER_CMD_NOT_DEF (USB_ERROR_BASE+48) //Inter Command Not Define
#define USB_ERROR_EXTERNAL_CMD_NOT_DEF (USB_ERROR_BASE+49) //External Command Not Define

#define USB_ERROR_GET_DEV_ENCRY (USB_ERROR_BASE+50) //Get Device Encrypt Error
#define USB_ERROR_GET_DEV_AES (USB_ERROR_BASE+51) //Get AES from Device Error
#define USB_ERROR_DEV_NOT_SUPPOTR_AES (USB_ERROR_BASE+52) //Device do not support AES
#define USB_ERROR_DEV_NOT_SUPPOTR_CRC (USB_ERROR_BASE+53) //Device do not support CRC
#define USB_ERROR_SDK_AES_MOD (USB_ERROR_BASE+54) //SDK Set AES Mod Error
#define USB_ERROR_SDK_AES_KEY (USB_ERROR_BASE+55) //SDK Set AES Key Error
#define USB_ERROR_SDK_AES_KEY_LEN (USB_ERROR_BASE+56) //The Length of AES Key is Not Math with the Type
#define USB_ERROR_SDK_AES_KEY_TYPE (USB_ERROR_BASE+57) //Wrong AES Type
#define USB_ERROR_SDK_AES_PROCESS (USB_ERROR_BASE+58) //SDK AES Process Error
#define USB_ERROR_AES_INPUT_DATA_LEN (USB_ERROR_BASE+59) //AES Input Data Length Error

#define USB_ERROR_GET_DEV_AES_KEY (USB_ERROR_BASE+60) //Get Device AES Key Error
#define USB_ERROR_DEV_REG (USB_ERROR_BASE+61) //Register Device Error
#define USB_ERROR_LOGIN (USB_ERROR_BASE+62) //Login Error
#define USB_ERROR_RELOGIN (USB_ERROR_BASE+63) //ReLogin Error
#define USB_ERROR_LOGOUT (USB_ERROR_BASE+64) //Logout Error

#define USB_ERROR_RET_HEAD_LENGTH (USB_ERROR_BASE+65) //The Length of Ret Head is Error
#define USB_ERROR_RET_HEAD_VERSION (USB_ERROR_BASE+66) //The Version of Ret Head is not Support
#define USB_ERROR_RET_HEAD (USB_ERROR_BASE+67) //Ret Head Error
#define USB_ERROR_RET_DATA_LEN (USB_ERROR_BASE+68) //The Data Length in RetHead is Error

//设备相关错误码
#define USB_ERROR_DEV_OPER_FAILED (USB_ERROR_BASE+257) //Device say : Operator Failed
#define USB_ERROR_DEV_OPER_NOT_SUPPORT (USB_ERROR_BASE+258) //Device say : The Operator is Not Support in This Device
#define USB_ERROR_DEV_CHECK_SUM (USB_ERROR_BASE+259) //Dervice say : Device Checksum Failed
#define USB_ERROR_DEV_USER_ID (USB_ERROR_BASE+260) //Device say : Invalid UserID
#define USB_ERROR_DEV_SESSION_ID (USB_ERROR_BASE+261) //Device say : Invalid Session ID
#define USB_ERROR_DEV_OPER_TIMEOUT (USB_ERROR_BASE+262) //Device say : Operation Timeout

#define USB_ERROR_DEV_UNKNOW_OPER_RES (USB_ERROR_BASE+512) //Drvice Return Unknow Opreator Result

#define USB_ERROR_NOT_DEFINED (USB_ERROR_BASE+0x02FE) //Error code is not defined
#define USB_ERROR_OTHER (USB_ERROR_BASE+0x02FF) //Other error
5.2 操作提示码
#define USB_RET_SUCCESS 0x00 //操作成功
#define USB_RET_FAILED 0x01 //操作失败
#define USB_RET_OPER_NOT_SUPPORT 0x02 //设备不支持该操作
#define USB_RET_CHECK_SUM_ERROR 0x03 //校验和错误
#define USB_RET_INVALID_USER_ID 0x04 //非法的UserID
#define USB_RET_INVALID_SESSION_ID 0x05 //非法的SessionID
#define USB_RET_OPER_TIMEOUT 0x06 //设备操作超时

0
John Prick
12.09.2024, 15:58
  #4

Не по теме:

Цитата Сообщение от wizard41 Посмотреть сообщение
ближайший путь - это выяснить что за ошибка "0xC0000005"
Хех. Ну это ж классика!

0
Эксперт по электронике
3070 / 2122 / 548
Регистрация: 04.09.2018
Сообщений: 7,321
Записей в блоге: 4
12.09.2024, 16:00 5
Судя по стеку, исключение выбрасывается уже на этой строке:
C#
1
bool result = USB_SDK_GetDeviceConfig(userId, USB_SDK_GET_ACTIVATE_CARD, ref inputInfo, ref outputInfo);
в CardReader.ActivateCard(Int64)
и соответственно, до "вывод ошибок от SDK" дело не доходит.

Добавлено через 49 секунд
John Prick, ну наверное, всех их не упомнишь)
0
2328 / 1817 / 751
Регистрация: 27.07.2012
Сообщений: 5,366
12.09.2024, 16:03 6
wizard41, картинку удалили, которую я приложил.

Верный путь к этой ошибке:
C++
1
2
3
4
int main() {
    int* p = reinterpret_cast<int*>(100500);
    *p = 42;
}
Как вариант, автор где-то куда-то передал невалидный указатель.
0
Эксперт по электронике
3070 / 2122 / 548
Регистрация: 04.09.2018
Сообщений: 7,321
Записей в блоге: 4
12.09.2024, 16:09 7

Не по теме:

Цитата Сообщение от John Prick Посмотреть сообщение
картинку удалили, которую я приложил
я успел посмотреть )


Цитата Сообщение от John Prick Посмотреть сообщение
передал невалидный указатель
возможно..
0
L0ck4r
13.09.2024, 13:48     .NET 8 Помощь по работе с SDK для считывателя от HIKVISION
  #8

Не по теме:

Из личного опыта: лучше перевести доки от SDK. Как-то досталось мне что-то похожее, считыватель Regula 7024M. Пока не прошерстил доки к SDK, до сих пор бы с бубном танцевал. Так там один мануал был на русском языке, а второй, который описывал COM, был на инглише. С инглишом проблем нету, но все равно перевел, и мучения прекратились. Что и рекомендую 8-)

0
13.09.2024, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2024, 13:48
Помогаю со студенческими работами здесь

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

Виртульный COM порт для usb считывателя карт
Добрый день. Мне необходимо сделать подключение через виртуальный com порт usb кардридера POSIFLEX...

PhoneGap. Как его использовать? В чем его недостатки по сравнению с Android SDK, Windows Phone SDK, iOS SDK?
В вики написано, что PhoneGap &lt;&lt;позволяет создать приложения для мобильных устройств используя...

Генератор 433-960 МГц для RFID считывателя
Доброго времени суток. Появился интерес к RFID ридерам. Соответственно возник вопрос, на чем лучше...

Не могу написать программу для штрих код считывателя
На порт 3 поступает сигнал который заставляет светиться лазер. который с быстро двигается по штрих...

Что нужно купить для Arduino и считывателя RFID/NFC?
Всем привет! Мне понравились проекты на ардуино и возникло желание поработать с считывателями RFID...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru