其他分享
首页 > 其他分享> > ONVIF客户端中预置位设置代码实现过程

ONVIF客户端中预置位设置代码实现过程

作者:互联网

上一篇文章和大家分享了我们安徽思蔷信息科技的simpleOnvif的协议客户端,以及部分开发过程。不了解的朋友可以参考以下链接。百度云盘下载地址:链接:https://pan.baidu.com/s/1QxKr6kC0A_wS2eMK1u18jg提取码:ydi9

今天我们来聊一聊有关于simpleOnvif的客户端中预置位设置代码的实现过程。

1.simpleOnvif的功能:提供支持Windows、Linux、arm、Android、iOS等各种平台的SDK库,方便集成,二次开发。

2.那我们先了解云台预置位的功能

云台预置位设置是球机控制中一个重要的命令,调用ONVIF协议中云台预置位设置接口。

3.注意事项

对应预置位名称的入参可以根据情况输入,字符编码必须是UTF-8格式,只是此时不给输入参数token赋值,因为当设置一个新的云台预置位时,Onvif服务端会返回一个预置位的token,如果我们需要调用这个设置的预置位时则需要使用服务端返回的这个token。 注意:如果服务要求鉴权,则以下接口就需要加上用户名密码进行鉴权

4.simpleOnvif具体代码

bool OnvifService::SetPreset(const std::string& presetName, const std::string& presetToken, const std::string& host, const std::string& username, const std::string& password, const std::string& deviceUrl)

{
bool ret = false;

ONVIF_DEVICE manualDevice;

ONVIF_DEVICE* device = getDevice(&manualDevice, host, username, password, deviceUrl);

if (!device || !device->profiles)

return false;

SetPreset_REQ req;

SetPreset_RES res;

memset(&req, 0, sizeof(req));

if (presetName.length() > 0)

{
req.PresetNameFlag = 1;

memcpy(req.PresetName, presetName.c_str(), ONVIF_NAME_LEN - 1 >= presetName.length() ? presetName.length() : ONVIF_NAME_LEN - 1);

}

printf("%s : PresetToken=%s, len=%d\n", __FUNCTION__, presetToken.c_str(), presetToken.length());

#if 1

if (presetToken.length() > 0)

{
req.PresetTokenFlag = 1;

strcpy(req.PresetToken, presetToken.c_str());

strcpy(req.ProfileToken, device->profiles->token);

}

else

{
strcpy(req.ProfileToken, device->profiles->token);

}

#else

strcpy(req.ProfileToken, device->profiles->token);

#endif

 

if (onvif_SetPreset(device, &req, &res))

{
ret = true;

printf("int %s Line:%d PresetName=%s, PresetToken=%s\n", __FUNCTION__,__LINE__, req.PresetName, res.PresetToken);

}

//printf("out %s Line:%d PresetName=%s, PresetToken=%s,local_ip = %d\n", __FUNCTION__, __LINE__, req.PresetName, res.PresetToken, manualDevice.local_ip);

 

if (manualDevice.local_ip != 0)

{
onvif_free_device(device);

}

 

return ret;

}

我们在接下来会陆续跟大家分享预置位的设置、预置位的调用、预置位的删除以及预置位的名称修改等。感兴趣的朋友可以随时咨询我,有问必答!
 

标签:预置,__,const,string,req,device,ONVIF,客户端
来源: https://blog.csdn.net/qinlin2018/article/details/117170224