SDK и все что связанно с программированием
|
|
iTuneDVR | Дата: Воскресенье, 07.05.2017, 21:55 | Сообщение # 41 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Так библиотека должна быть соответствующей!
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|
jtag | Дата: Воскресенье, 07.05.2017, 22:58 | Сообщение # 42 |
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
| Цитата P7 ( ) Под Ubuntu x64 всё работает. Вы наверно туже библиотеку 64 бита толкаете в armv7 32 битный. Скачайте 32 битный sdk.
Добавлено (07.05.2017, 22:58) --------------------------------------------- Доброй ночи всем, подскажите пожалуйста, подключился к nvr, залогинился, считываю параметры серийник, статус камер и т.д., однако не получается считать файлы записей в нвр на hdd, измучился уже неделю, функция возвращает значение -1,. Незнаю к кому обратится. Сделал все как в примере Qt. Функция NET_DVR_FindFile_V30(LONG lUserID, LPNET_DVR_FILECOND pFindCond);
Код LPNET_DVR_FILECOND struFileCond = {0}; struFileCond = (LPNET_DVR_FILECOND)malloc(sizeof(NET_DVR_FILECOND)); memset(struFileCond,0x0,sizeof(NET_DVR_FILECOND)); struFileCond->dwFileType = 0xFF; struFileCond->lChannel = 1; struFileCond->dwIsLocked =0xFF; struFileCond->dwUseCardNo = 0; struFileCond->struStartTime.dwYear = 2017; struFileCond->struStartTime.dwMonth = 5; struFileCond->struStartTime.dwDay = 2; struFileCond->struStartTime.dwHour = 2; struFileCond->struStartTime.dwMinute = 0; struFileCond->struStartTime.dwSecond = 0; struFileCond->struStopTime.dwYear = 2017; struFileCond->struStopTime.dwMonth = 5; struFileCond->struStopTime.dwDay = 2; struFileCond->struStopTime.dwHour = 11; struFileCond->struStopTime.dwMinute = 7; struFileCond->struStopTime.dwSecond = 0;
LONG lFindHandle = NET_DVR_FindFile_V30(lUserID, struFileCond);
if(lFindHandle < 0) { printf("find file fail ,last error %d\n", NET_DVR_GetLastError());
} else { printf("Success!!!\n"); }
Сообщение отредактировал jtag - Воскресенье, 07.05.2017, 23:21 |
|
|
|
P7 | Дата: Понедельник, 08.05.2017, 00:16 | Сообщение # 43 |
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Offline
| Цитата jtag ( ) Цитата P7 ()Под Ubuntu x64 всё работает. Вы наверно туже библиотеку 64 бита толкаете в armv7 32 битный. Скачайте 32 битный sdk. Изначально пробывал 32 бит, просто Ubuntu у меня 64. В целом пробывал обе библиотеки
|
|
|
|
iTuneDVR | Дата: Понедельник, 08.05.2017, 01:43 | Сообщение # 44 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Так речь же велась про ведроид ведь!!!
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|
jtag | Дата: Понедельник, 08.05.2017, 11:45 | Сообщение # 45 |
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
| ldd вывод что пишет?
|
|
|
|
P7 | Дата: Понедельник, 08.05.2017, 12:57 | Сообщение # 46 |
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Offline
| Цитата iTuneDVR ( ) Так речь же велась про ведроид ведь!!! Raspberry pi3 CPU 32 bit ARMv7 - это где нужно скомпелировать сдк. Ubuntu 64 другой пк, который использовал для проверки. Естесвенно что пробывал на raspberry sdk32 bit, а на ubuntu 64bit sdk.
Цитата jtag ( ) ldd вывод что пишет? По отношению к библиотеке ? ldd libchnetsdk.so not a dynamic executable
Сообщение отредактировал P7 - Понедельник, 08.05.2017, 12:59 |
|
|
|
jtag | Дата: Среда, 10.05.2017, 14:55 | Сообщение # 47 |
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
| Цитата P7 ( ) Raspberry pi3 CPU 32 bit ARMv7 https://raspberrypi.stackexchange.com/questions/9441/how-to-known-if-an-arm-library-so-is-compatible-with-the-raspberry-pi
Добавлено (10.05.2017, 14:55) --------------------------------------------- Сегодня установил клиентскую прогу ivms - 4200. В директории находятся дополнительные библиотеки одна из них PlaybackLogical.dll. С помощью которой скорее всего осуществляется просмотр записей удаленно. И которая отсутствует в SDK ((( Буду пробывать через javascript, web sdk. устал уже извращаться.
Сообщение отредактировал jtag - Среда, 10.05.2017, 15:34 |
|
|
|
P7 | Дата: Среда, 10.05.2017, 16:59 | Сообщение # 48 |
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Offline
| Цитата jtag ( ) Спасибо, тут отлично описана эта проблема. Вывод - не подходят библиотеки для арм архитектуры. Только что в поиске наткнулся на объявление для фрилансера, написать сдк для арм
https://www.freelancer.com.au/project....ary-For
|
|
|
|
iTuneDVR | Дата: Среда, 10.05.2017, 19:46 | Сообщение # 49 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Цитата P7 ( ) Спасибо, тут отлично описана эта проблема. Вывод - не подходят библиотеки для арм архитектуры. Так об этом было выше сказано
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|
jtag | Дата: Четверг, 11.05.2017, 11:03 | Сообщение # 50 |
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
| Цитата iTuneDVR ( ) Вывод - не подходят библиотеки для арм архитектуры. Попробуйте web sdk для браузеров. web sdk хоть и основан на тех же библиотеках, но мне кажется должно заработать. У меня кстати получилось запустить за небольшое время. И работают сразу все интерфейсы, которые не получалось настроить несколько недель на сях. К сожалению заработало только в internet explorer через activex на винде.
Сообщение отредактировал jtag - Четверг, 11.05.2017, 11:09 |
|
|
|
iTuneDVR | Дата: Четверг, 11.05.2017, 11:09 | Сообщение # 51 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Цитата jtag ( ) Попробуйте web sdk для браузеров. web sdk хоть и основан на тех же библиотеках, но мне кажется должно заработать. ;)
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|
l_vv | Дата: Понедельник, 15.01.2018, 23:25 | Сообщение # 52 |
Группа: Проверенные
Сообщений: 1
Репутация: 0
Статус: Offline
| Добрый день! Есть камеры DS-2CD264FWD-IS, используя SDK: NET_DVR_Init -> NET_DVR_Login_V30 -> NET_DVR_RealPlay_V40 без проблем получаю поток непосредственно с камер. Далее для проверки функциональных возможностей настроил нескольких клиентов iVMS-4200 к одной камере, указав в настройках получать данные от Сервера потоковой передачи мультимедиа в составе ПО iVMS-4200. Убедился, по счетчикам Incoming/Outgoing Stream в Stream Media Server, что поток идет через медиасервер (Incoming=1, Outgoing=2). Т.е. родные клиенты iVMS-4200 могут получать данные от потокового сервера. Как программно сделать то же самое в моем клиенте? Какую функцию SDK использовать, чтобы указать, что медиапоток забирать не напрямую от камеры, а используя медиасервер?
Пробовал после NET_DVR_Login_V30 вызывать NET_DVR_SetDVRConfig c разными параметрами, но получаю "Device does not support this function"
|
|
|
|
Alisukov | Дата: Воскресенье, 18.02.2018, 05:08 | Сообщение # 53 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| Добрый день, подскажите как открыть (расшифровать) файл конфигурации камеры Hikvision DS-2CD2032-I прошивка V5.1.2. Спасибо.
Сообщение отредактировал Alisukov - Воскресенье, 18.02.2018, 05:08 |
|
|
|
Alexandr | Дата: Среда, 21.03.2018, 19:30 | Сообщение # 54 |
Группа: Администраторы
Сообщений: 5345
Репутация: 113
Статус: Offline
| Hikvision packer/unpacker for 5.3.x and newer firmware
|
|
|
|
Virus_v | Дата: Среда, 22.05.2019, 02:23 | Сообщение # 55 |
Группа: Проверенные
Сообщений: 1
Репутация: 0
Статус: Offline
| Всем добрый день
Пытаюсь написать .Net (c#) обёртку библиотеки для работы с камерами Hikvision. Использую HCNetSDK.dll. При вызове метода из библиотеки выпадает необработанное исключение
Цитата System.AccessViolationException: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Вот моя обёртка
Код public class HCNetSDK { private const string origDllName = @"C:\docs\HCNetSDK.dll";
#region structs [StructLayout(LayoutKind.Sequential)] public struct NET_DVR_DEVICEINFO_V30 { public Byte[] sSerialNumber;//[48]; public Byte byAlarmInPortNum; public Byte byAlarmOutPortNum; public Byte byDiskNum; public Byte byDVRType; public Byte byChanNum; public Byte byStartChan; public Byte byAudioChanNum; public Byte byIPChanNum; public Byte byZeroChanNum; public Byte byMainProto; public Byte bySubProto; public Byte bySupport; public Byte bySupport1; public Byte bySupport2; public UInt16 wDevType; public Byte bySupport3; public Byte byMultiStreamProto; public Byte byStartDChan; public Byte byStartDTalkChan; public Byte byHighDChanNum; public Byte bySupport4; public Byte byVoiceInChanNum; public Byte byStartVoiceInChanNo; public Byte bySupport5; public Byte bySupport6; public Byte byMirrorChanNum; public UInt16 wStartMirrorChanNo; public Byte bySupport7; public Byte byRes2; } #endregion
[DllImport(origDllName)] public static extern Boolean NET_DVR_Init();
[DllImport(origDllName)] public static extern Boolean NET_DVR_SetConnectTime(UInt32 dwWaitTime, UInt32 dwTryTimes);
[DllImport(origDllName)] public static extern Boolean NET_DVR_SetReconnect(UInt32 dwInterval, Boolean bEnableRecon);
[DllImport(origDllName)] public static extern Int32 NET_DVR_Login_V30(string sDVRIP, UInt16 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 DeviceInfo);
[DllImport(origDllName)] public static extern UInt32 NET_DVR_GetLastError(); [DllImport(origDllName)] public static extern Boolean NET_DVR_Cleanup(); }
И использование:
Код static void Main(string[] args) { Camera.HCNetSDK.NET_DVR_Init(); Camera.HCNetSDK.NET_DVR_SetConnectTime(2000, 1); Camera.HCNetSDK.NET_DVR_SetReconnect(10000, true);
Int32 lUserID; Camera.HCNetSDK.NET_DVR_DEVICEINFO_V30 struDeviceInfoV30 = new Camera.HCNetSDK.NET_DVR_DEVICEINFO_V30(); lUserID = Camera.HCNetSDK.NET_DVR_Login_V30("ip", 8000, "login", "pass", ref struDeviceInfoV30);
if (lUserID < 0) { Console.WriteLine("Login failed, error code: {0}\n", Camera.HCNetSDK.NET_DVR_GetLastError()); Camera.HCNetSDK.NET_DVR_Cleanup(); Console.ReadKey(); return; } Console.WriteLine("The max number of analog channels: {0}\n", struDeviceInfoV30.byChanNum); Console.WriteLine("The max number of IP channels: {0}\n", struDeviceInfoV30.byIPChanNum + struDeviceInfoV30.byHighDChanNum * 256); Console.WriteLine("Done!"); Console.ReadKey(); }
Вместо NET_DVR_DEVICEINFO_V40 я пока использую NET_DVR_DEVICEINFO_V30, потому что в V40 использована дополнительная структура, с call-back методами и эта функция возвращала ошибку о неправильных типах данных. Я решил сначала попробовать на более простом примере, а потом уже усложняться.
Исключение возникает именно при попытке вызвать NET_DVR_Login_V30. Если я, например, изменю ip адрес, чтобы вызвать другую ошибку, то этот метод вернёт -1 и NET_DVR_GetLastError() любезно расскажет, что у меня ошибка номер 7, Failed to connect to the device. The device is off-line, or connection timeout caused by network. Но если всё, вроде хорошо, то программа вылетает с необработанным исключением System.AccessViolationException: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt." Гуглинг показал, что возможно дело в том, что либо основная dll (что вряд ли, потому что если так даже первая строчка бы не выполнилась), либо dll, на которую она ссылается скомпилирована под другой архитектурой. Я компилирую под x64. Попытался собрать под x86: при вызове первого же метода выбрасывает с исключением System.BadImageFormatException: "Была сделана попытка загрузить программу, имеющую неверный формат. (Exception from HRESULT: 0x8007000B)" О чем гугл говорит так же: попытка собрать программу не в той разрядности, что и используемая dll.
Если переделать строки в Unicode Код [DllImport(origDllName, CharSet = CharSet.Unicode)] public static extern Int32 NET_DVR_Login_V30(string sDVRIP, UInt16 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 DeviceInfo);
То исключение перестаёт вываливаться, но сама функция возвращает ошибку Цитата Failed to connect to the device. The device is off-line, or connection timeout caused by network.
Хотя доступ к камере есть.
А если поставить Ansi, но вместо строк взять массив символов Код [DllImport(origDllName, CharSet = CharSet.Ansi)] public static extern Int32 NET_DVR_Login_V30(char[] sDVRIP, UInt16 wDVRPort, char[] sUserName, char[] sPassword, ref NET_DVR_DEVICEINFO_V30 DeviceInfo);
то происходит что-то совсем странное. Метод раз через раз возвращает то ошибку 1 Цитата User name or password error. То ошибку 7Цитата Failed to connect to the device. The device is off-line, or connection timeout caused by network
ОТ чего это зависит - я вообще не понимаю.
Что я делаю не так и как мне всё-таки законнектиться к камере?Добавлено (22.05.2019, 02:24) --------------------------------------------- Virus_v, простите, разметка съехала...
|
|
|
|
Kenesg12 | Дата: Четверг, 03.10.2019, 07:41 | Сообщение # 56 |
Группа: Проверенные
Сообщений: 1
Репутация: 0
Статус: Offline
| Добрый день всем! Тоже использую библиотеку HCNetSDK.dll для видеокамеры с ANPR. Подскажите как можно вытащить с камеры историю распознанных номеров. Какую команду нужно применять? За ранее спасибо.
|
|
|
|
iTuneDVR | Дата: Пятница, 04.10.2019, 23:58 | Сообщение # 57 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Цитата Kenesg12 ( ) Добрый день всем! Тоже использую библиотеку HCNetSDK.dll для видеокамеры с ANPR. Подскажите как можно вытащить с камеры историю распознанных номеров. Какую команду нужно применять?За ранее спасибо. А какой софт делает это?Добавлено (04.10.2019, 23:59) ---------------------------------------------
Цитата Virus_v ( ) ---------------------------------------------Virus_v, простите, разметка съехала... Вот не видел этой темы. Чем закончилось?
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|
GhostII | Дата: Суббота, 08.01.2022, 01:05 | Сообщение # 58 |
Группа: Проверенные
Сообщений: 5
Репутация: 0
Статус: Offline
| Вопрос по SDK. Есть поворотная камера DS-2DF7232IX-AELW, у нее 3 канала. Есть и обычные "пули", старые и новые. Для подключения использую функции NET_DVR_Login_V30 и NET_DVR_Login_V40. Забегая вперед - результат одинаков для них. Использую SDK 5.1.6.2. Все камеры работают, была проблема получить с поворотки 3-ий канал. Поэтому попробовал скачать новый SDK. SDK 6.1.6.45. Тут очень интересно. Поворотка не работает, выдает ошибку 29 (Device operation failed) при подключении, а часть пуль работает, часть - нет (с той же ошибкой). Что интересно - работают только "старые" пули, у которых еще пароль 12345, а новые, у которых пароль 1234567a, уже нет. Аналогично с повороткой - она новая, пароль 12345 на ней уже не сделать. С версией SDK 6.0.2.2 еще интереснее. Логин без ошибок на всех камерах, NET_DVR_RealPlay_V40 тоже проходит без ошибок, но CALLBACK функция не вызывается - то есть, данные не идут. Вот что я делаю не так? В итоге решил проблему с 3-им каналом на старом SDK, но вот понять, почему новый SDK не работает, так и не смог. P.S. Да, использую версию под Linux_64.
Сообщение отредактировал GhostII - Суббота, 08.01.2022, 01:33 |
|
|
|
iTuneDVR | Дата: Суббота, 08.01.2022, 16:19 | Сообщение # 59 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Цитата GhostII ( ) Вопрос по SDK. Есть поворотная камера DS-2DF7232IX-AELW, у нее 3 канала. Есть и обычные "пули", старые и новые.Для подключения использую функции NET_DVR_Login_V30 и NET_DVR_Login_V40. Забегая вперед - результат одинаков для них. Использую SDK 5.1.6.2. Все камеры работают, была проблема получить с поворотки 3-ий канал. Поэтому попробовал скачать новый SDK. SDK 6.1.6.45. Тут очень интересно. Поворотка не работает, выдает ошибку 29 (Device operation failed) при подключении, а часть пуль работает, часть - нет (с той же ошибкой). Что интересно - работают только "старые" пули, у которых еще пароль 12345, а новые, у которых пароль 1234567a, уже нет. Аналогично с повороткой - она новая, пароль 12345 на ней уже не сделать. С версией SDK 6.0.2.2 еще интереснее. Логин без ошибок на всех камерах, NET_DVR_RealPlay_V40 тоже проходит без ошибок, но CALLBACK функция не вызывается - то есть, данные не идут. Вот что я делаю не так? В итоге решил проблему с 3-им каналом на старом SDK, но вот понять, почему новый SDK не работает, так и не смог. P.S. Да, использую версию под Linux_64. Возможно, что все так, но для ответа на вопрос, мало самого вопроса. Какой-то софт вообще работает с третьим потоком? Старый, новый? Если это ivms, то может быть там есть лог некий и можно немного подглядеть, как это делается правильно. Есть так же вариант с clientDemo посмотреть, как свежим, так и старым.
Если немного порассуждать, то метод авторизации как с коротким, так и с длинным вопросом это лишь метод авторизации и влиять на дальнейший функционал это не должно. Все там работает на том, есть права, доступен тот или иной функционал и не должно быть преград. Как там сделано на самом деле, тут гадать не надо, а разматывать код с любой камеры и вникать в суть работы их движка, чтобы пытаться понимать их логику. Возможно, что можно установить пароль менее 8-ми символов. Раз проблема решена на старом SDK, то это или баг или фича нового или ... Тут целое исследование нужно проводить.
Без дизассемблера не разобраться вообщем.
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|
GhostII | Дата: Суббота, 08.01.2022, 17:33 | Сообщение # 60 |
Группа: Проверенные
Сообщений: 5
Репутация: 0
Статус: Offline
| Спасибо за ответ! Я разобрался, хоть и не сразу. Но может кому будет интересно/полезно, напишу, в чем причина была. Чтобы работать с 3-им каналом, надо использовать NET_DVR_RealPlay_V40 с соответствующей структурой, там можно выбрать и 3-ий канал, и больше. NET_DVR_RealPlay_V30 максимум 2 канала. Дальше, почему не работало SDK версии 6. Начиная с этой версии, в отличие от 5.1.6.2, используются дополнительные библиотеки libcrypto, libz и другие. Я по началу, по аналогии с SDK 5-ой версии, их не копировал в системный каталог, а использовал свои, какие у меня были. Так вот, не работает. Как скопировал вообще все, что шло с SDK, так и "процесс пошел". Наверное, со стороны SDK надо было "предупредить" об этом, но вот нет. Короче, все заработало. Но, повторюсь, пришлось повозиться.
Сообщение отредактировал GhostII - Суббота, 08.01.2022, 17:33 |
|
|
|
iTuneDVR | Дата: Воскресенье, 09.01.2022, 15:58 | Сообщение # 61 |
Группа: Проверенные
Сообщений: 3922
Репутация: 141
Статус: Offline
| Контроль библиотек это конечно важно и нужно, ну все же все что идет с новыми версиями с ними и работает... Главное, разобрался.
Мотивация, направление, посыл ;) "Вспоминание" паролей Dahua SmartPSS, Hikvision iVMS4200, генерация временного для Uniview. Исследования IT. www.iTuneDVR.ru
|
|
|
|