日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

集成海康威视Sadp SDK实现重置密码

發布時間:2023/12/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 集成海康威视Sadp SDK实现重置密码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面將介紹集成SadpSDK的接口調用流程,以及使用到的接口功能說明。如有疑問歡迎留言探討。

?

?圖中橘黃色部分為程序外部操作。

?

  • 判斷設備支持的重置方式

    ?????? 導出導入文件重置密碼,設備基本上都支持?重置密碼?或者?重置密碼方式2 ,由于重置密碼方式2方案更安全所以如果支持的話優先選擇使用重置密碼方式2

???????????????? SADP_DEVICE_INFO結構體中

????????????????????????? (bySupport & 0x40 ) == 1,表示支持重置密碼

????????????????????????? (bySupport1 & 0x01 ) == 1,表示支持重置密碼方式2

?

  • 獲取設備碼

    ?????? 獲取接口?SADP_GetDeviceConfig, 命令碼為SADP_GET_DEVICE_CODE。獲取到設備碼后將字符串保存到一個本地文件中(例如:Device.xml)。然后將這個文件發送給海康技術支持,他們會返回一個設備重置口令文件給你,該文件中的字符串將作為重置密碼接口的一個輸入參數

    ?

    ?

  • 獲取解密串

    ?????? 獲取接口?SADP_GetDeviceConfig, 命令碼為?SADP_GET_ENCRYPT_STRING。獲取到加密串后將字符串保存到一個本地文件中(例如:Device.xml)。然后將這個文件發送給海康技術支持,他們會返回一個設備重置口令文件給你,該文件中的字符串將作為重置密碼接口的一個輸入參數

?

  • 重置密碼

    ?????? 重置接口?SADP_ResetPasswd_V40。該接口最重要的就是需要?設備重置口令

?

?

  • ?示例代碼

?

#include <stdio.h> #include <windows.h> #include "Sadp.h"//設備信息回調函數 void CALLBACK SadpDataCallBack(const SADP_DEVICE_INFO_V40 *lpDeviceInfoV40, void* pUserData) {printf("\r\n----------------------------------------\r\n");printf(" IP %s\r\n", lpDeviceInfoV40->struSadpDeviceInfo.szIPv4Address); //設備ipprintf(" Mac %s\r\n", lpDeviceInfoV40->struSadpDeviceInfo.szMAC); //設備Mac地址printf("SerialNO %s\r\n", lpDeviceInfoV40->struSadpDeviceInfo.szSerialNO); //設備序列號printf(" Result %d\r\n", lpDeviceInfoV40->struSadpDeviceInfo.iResult); //消息類型: 1.設備上線, 2.設備更新, 3.設備下線printf("\r\n----------------------------------------\r\n"); }//導出導入文件重置密碼 int main(void) {//開啟sadp日志 3(打印所以日志) "C:\\SadpLog"(日志目錄) false(保留所有日志文件)SADP_SetLogToFile(3, "C:\\SadpLog", false);//開啟sadp服務int iRet = SADP_Start_V40(SadpDataCallBack);if (iRet == 0){//開啟失敗,獲取錯誤碼int iError = SADP_GetLastError();printf("SADP_Start_V40 Failed! Err(%d)\r\n", iError);}//等待一會,修改網絡參數前需要SDK搜索到被修改設備才行Sleep(10000);//這里以重置密碼方式2為例SADP_ENCRYPT_STRING struEncryptString;iRet = SADP_GetDeviceConfig("DS-2CD2622FWD-IZS20180312BBWR681619114", SADP_GET_ENCRYPT_STRING, NULL, 0, &struEncryptString, sizeof(struEncryptString));if (iRet == 0){int iError = SADP_GetLastError();char szTemp[100] = { 0 };if (iError == SADP_NOT_ACTIVATED){printf("設備未激活!");}else if (iError == SADP_TIMEOUT){printf("獲取超時!");}else if (iError == SADP_DEVICE_DENY){printf("設備拒絕處理!");}else{printf("Get device code failed, Error code%d", iError);}//釋放資源SADP_Stop();return 0;}printf("Get device code succ, [%s]", struEncryptString.szEncryptString);//將加密串寫入本地文件FILE *pFile = fopen("C:\\Device.xml", "wb");if (NULL == pFile){printf("Open File failed");//釋放資源SADP_Stop();return 0;}int iWriteLen = fwrite(struEncryptString.szEncryptString, sizeof(BYTE), strlen(struEncryptString.szEncryptString), pFile);if (0 == iWriteLen){printf("Write 0 Byte Data");//釋放資源SADP_Stop();return 0;}else{if (NULL != pFile){fclose(pFile);pFile = NULL;}}//---------------------------------------------------------------------------------------------------------------------------------------- //待拿到設備重置口令后,執行下面代碼流程 //----------------------------------------------------------------------------------------------------------------------------------------SADP_RESET_PARAM_V40 struResetParamV40 = { 0 };struResetParamV40.dwSize = sizeof(struResetParamV40);struResetParamV40.byResetType = 2; //導出導入文件方式strcpy(struResetParamV40.szPassword, "hik12345");strcpy(struResetParamV40.szAuthFile, "C:\\Encrypt_681619114_o2.xml"); //設備重置口令文件SADP_RET_RESET_PARAM_V40 struRetResetParamV40 = { 0 };//導出導入文件重置密碼 參數1:設備序列號 參數2:重置密碼參數結構體 參數3:鎖定信息結構體iRet = SADP_ResetPasswd_V40("DS-2CD2622FWD-IZS20180312BBWR681619114", &struResetParamV40, &struRetResetParamV40);if (iRet == 0){//開啟失敗,獲取錯誤碼int iError = SADP_GetLastError();printf("SADP_ResetPasswd_V40 Failed! Err(%d)\r\n", iError);if (iError == SADP_LOCKED){printf("設備已鎖定,鎖定時間:%d 分鐘.", struRetResetParamV40.bySurplusLockTime);}else if (iError == SADP_PASSWORD_ERROR){printf("密碼錯誤,剩余嘗試修改次數:%d 次.", struRetResetParamV40.byRetryGUIDTime);}else if (iError == SADP_NOT_ACTIVATED){printf("設備未激活");}}else{printf("SADP_ResetPasswd_V40 Succ!\r\n");}//釋放資源SADP_Stop(); }

?

總結

以上是生活随笔為你收集整理的集成海康威视Sadp SDK实现重置密码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。