海康威视SDK控制台程序consoleDemo |
您所在的位置:网站首页 › 云台控制台 › 海康威视SDK控制台程序consoleDemo |
陈拓 2021/08/10-2020/08/10 1. 下载海康威视SDK见《海康威视SDK实例QtDemo显示NVR视频窗口(Linux+Qt)》 https://zhuanlan.zhihu.com/p/395178052 https://blog.csdn.net/chentuo2000/article/details/119299045 我的开发环境:PC机(Win10)+工控机(Ubuntu)+海康NVR+海康摄像头 lsb_release -a Win10操作Linux见《Win10命令窗口的SSH和SFTP操作》 https://zhuanlan.zhihu.com/p/403558589 https://blog.csdn.net/chentuo2000/article/details/119918637 和《Ubuntu18.04和Win10共享文件夹》 https://zhuanlan.zhihu.com/p/397913390 https://blog.csdn.net/chentuo2000/article/details/119539502 3. 复制consoleDemo到Ubuntu。如果所有者和组不是当前登录用户,要改变所有者和组: sudo chown -R ccdc:ccdc consoleDemo/ 查看consoleDemo目录 在构建源代码之前: 请将SDK/lib目录下所有的库文件(.so)拷贝到consoleDemo/Linux64/lib进入目录consoleDemo/Linux64/proj,执行make命令。 复制库文件tree linux64/ 进入目录consoleDemo/Linux64/proj 执行make命令 在lib目录下生成了可执行文件sdkTest: 为方便测试我们修改一下Makefile文件。 将EXE = ../lib/sdkTest改为:EXE = ./hkConsole 再编译make 这样生成的可执行文件就在本地了: 见《Ubuntu18.04网络配置》 https://zhuanlan.zhihu.com/p/398167001 https://blog.csdn.net/chentuo2000/article/details/119564109 设备可以是NVR或者DVR,我用NVR。 我的NVR参数 我的摄像头参数 海康威视DS-IPC-B12-I(4mm) 将连接参数设置成我们自己的。 C++程序修改网络连接参数: nano src/consoleMain.cpp 如图将下面3句: 改为 找到其他要修改的地方: grep -r "10.8.98.80" src 如同修改consolemain.cpp一样,一一修改。 nano src/Voice.cpp nano src/GetStream.cpp nano src/Alarm.cpp nano src/ConfigParams.cpp nano src/CapPicture.cpp nano src/playback.cpp nano src/playback.cpp 再编译make。 8. 运行Demo 运行./hkConsole 程序可以运行了。 登录设备:Login dev 192.168.137.2:8000. 界面上有太多的调试日志信息,可以改变信息显示等级,我的修改如下: 修改consoleMain.cpp 将NET_DVR_SetLogToFile(3, "./sdkLog");中的3改为0,保存。 日志的等级(默认为0):0-表示关闭日志,1-表示只输出ERROR错误日志,2-输出ERROR错误信息和DEBUG调试信息,3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所有信息。你可以根据自己的需要设置日志等级。 编译 警告,在"./sdkLog"前面加上类型。 再编译就没有警告了。 运行 画面干净。 程序虽然可以运行了,但是所列出的功能基本上都不能用,需要根据设备的具体情况修改。 9. 修改连接例子程序中多个功能程序单独初始化连接设备,下面我们把初始化放在主程序中,以后只要将用户ID作为参数传递到各个功能模块程序就可以了。 修改consoleMain.cpp #include #include #include "GetStream.h" #include "public.h" #include "ConfigParams.h" #include "Alarm.h" #include "CapPicture.h" #include "playback.h" #include "Voice.h" #include "tool.h" #include using namespace std; void Demo_SDK_Version(); void Demo_SDK_Ability(); char * iIP = (char *)"192.168.137.2"; WORD wPort = 8000; char * iUserName = (char *)"admin"; char * iPassword = (char *)"xxxxxxxx"; int lUserID = -1; // 初始化 int init() { NET_DVR_Init(); Demo_SDK_Version(); // 显示SDK版本 NET_DVR_SetLogToFile(0, (char*)"./sdkLog"); printf("\nIP %s\n", iIP); printf("Port %d\n", wPort); printf("UserName %s\n", iUserName); printf("Password %s\n", iPassword); //Login device NET_DVR_USER_LOGIN_INFO struLoginInfo = {0}; NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0}; struLoginInfo.bUseAsynLogin = false; // false=0,同步登录 struLoginInfo.wPort = wPort; memcpy(struLoginInfo.sDeviceAddress, iIP, NET_DVR_DEV_ADDRESS_MAX_LEN); memcpy(struLoginInfo.sUserName, iUserName, NAME_LEN); memcpy(struLoginInfo.sPassword, iPassword, NAME_LEN); lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40); //接口返回-1表示登录失败,其他值表示返回的用户ID值。用户ID具有唯一性,后续对设备的操作都需要通过此ID实现。 if (lUserID < 0) { printf("pyd---Login error, %d\n", NET_DVR_GetLastError()); if(NET_DVR_GetLastError() == 7) { printf("连接设备失败。设备不在线或网络原因引起的连接超时等。\n"); } NET_DVR_Cleanup(); return HPR_ERROR; } cout |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |