TSINGSEE青犀视频智能分析开发中大华设备搜索和批量重置密码的代码实现

之前我们讲到了TSINGSEE青犀视频团队在开发大华SDK当中的一些流程,本文我们分享下大华设备搜索和批量重置密码的代码实现。

主要流程图如下:

分布介绍:

1、调用 CLIENT_Init 完成 SDK 初始化流程。
2、调用 CLIENT_StartSearchDevices 搜索局域网内的设备,获取设备信息(不支持多线程调用)。
3、调用 CLIENT_GetDescriptionForResetPwd 获取重置密码的描述信息。
(可选)指定方式扫描上一步骤中获取的二维码,获取重置密码的安全码,通过CLIENT_CheckAuthCode 校验安全码。
(可选)使用 CLIENT_GetPwdSpecification 获取密码规则。
4、使用 CLIENT_ResetPwd 重置密码。
5、调用 CLIENT_StopSearchDevices 停止设备的搜索。
6、调用 CLIENT_LoginEx2,使用 admin 帐户和已重置的密码登录设备。
7、业务使用完后,调用 CLIENT_Logout 登出设备。
8、SDK 功能使用完后,调用 CLIENT_Cleanup 释放 SDK 资源。

示例代码:

//首先调用接口 CLIENT_StartSearchDevices,在回调函数中获取设备信息 
//获取密码重置的描述信息 
NET_IN_DESCRIPTION_FOR_RESET_PWD stIn = {sizeof(stIn)}; 
strncpy(stIn.szMac, szMac, sizeof(stIn.szMac) - 1); //设置 mac 值 
strncpy(stIn.szUserName, szUserName, sizeof(stIn.szUserName) - 1);//设置用户名 
stIn.byInitStatus = bStstus; //bStstus 为搜索设备接口(CLIENT_SearchDevices、CLIENT_StartSearchDevices的回调函数和 CLIENT_SearchDevicesByIPs)返回字段 byInitStatus 的值 
NET_OUT_DESCRIPTION_FOR_RESET_PWD stOut = {sizeof(stOut)}; 
char szTemp[360]; 
stOut.pQrCode = szTemp; 
CLIENT_GetDescriptionForResetPwd(&stIn, &stOut, 3000, NULL);//在单网卡的情况下最后一个参数可以不 
填;在多网卡的情况下,最后一个参数填主机 IP。接口执行成功后,stOut 会输出一个二维码,二维码信息地址为 stOut.pQrCode,扫描此二维码,获取重置密码的安全码,此安全码会发送到预留手机号或者邮箱 
//(可选)校验安全码 
NET_IN_CHECK_AUTHCODE stIn1 = {sizeof(stIn1)}; 
strncpy(stIn1.szMac, szMac, sizeof(stIn1.szMac) - 1); //设置 mac 
strncpy(stIn1.szSecurity, szSecu, sizeof(stIn1.szSecurity) - 1); // szSecu 为上一步骤中发送到预留手机号或者邮箱里的安全码 
NET_OUT_CHECK_AUTHCODE stOut1 = {sizeof(stOut1)}; 
bRet = CLIENT_CheckAuthCode(&stIn1, &stOut1, 3000, NULL); //在单网卡的情况下最后一个参数可以不填; 
在多网卡的情况下,最后一个参数填主机 IP 
//获取密码规则 
NET_IN_PWD_SPECI stIn2 = {sizeof(stIn2)}; 
strncpy(stIn2.szMac, szMac, sizeof(stIn2.szMac) - 1); //设置 mac 
NET_OUT_PWD_SPECI stOut2 = {sizeof(stOut2)}; 
CLIENT_GetPwdSpecification(&stIn2, &stOut2, 3000, NULL);//在单网卡的情况下最后一个参数可以不填; 
在多网卡的情况下,最后一个参数填主机 IP。获取成功的情况下,可根据获取出的设备密码规则设置符合规则的密码,此步骤主要是防止客户设置一些设备不支持的密码格式 
//重置密码 
NET_IN_RESET_PWD stIn3 = {sizeof(stIn3)}; 
strncpy(stIn3.szMac, szMac, sizeof(stIn3.szMac) - 1); //设置 mac 值 
strncpy(stIn3.szUserName, szUserName, sizeof(stIn3.szUserName) - 1); //设置用户名 
strncpy(stIn3.szPwd, szPassWd, sizeof(stIn3.szPwd) - 1); //szPassWd 为符合密码规则的重置密码 
strncpy(stIn3.szSecurity, szSecu, sizeof(stIn1.szSecurity) - 1); // szSecu 为扫描二维码后发送到预留手机号或者邮箱里的安全码 
stIn3.byInitStaus = bStstus; //bStstus 为搜索设备接口(CLIENT_SearchDevices、CLIENT_StartSearchDevices的回调函数和 CLIENT_SearchDevicesByIPs)返回字段 byInitStatus 的值stIn3.byPwdResetWay = bPwdResetWay; //bPwdResetWay 为搜索设备接口(CLIENT_SearchDevices、 
CLIENT_StartSearchDevices 的回调函数和 CLIENT_SearchDevicesByIPs)返回字段 byPwdResetWay 的值NET_OUT_RESET_PWD stOut3 = {sizeof(stOut3)}; 
CLIENT_ResetPwd(&stIn3, &stOut3, 3000, NULL);// 在单网卡的情况下最后一个参数可以不填;在多网卡的情况下,最后一个参数填主机 IP
posted on 2021-10-09 11:32  TSINGSEE  阅读(317)  评论(0编辑  收藏  举报