前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TSINGSEE青犀视频智能分析开发中大华设备搜索和批量重置密码的代码实现

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

原创
作者头像
TSINGSEE青犀视频
修改2021-10-09 10:20:29
6140
修改2021-10-09 10:20:29
举报
文章被收录于专栏: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 资源。

示例代码:

代码语言:javascript
复制
//首先调用接口 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

代码截图:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档