m0_61770108 2024-04-28 14:00 采纳率: 26.3%
浏览 6

ONVIF设置多个预置位

ONVIF设置多个预置位
设置预置位,ONVIF_SetPreset,返回值皆为1

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-28 14:00
    关注

    引自免费微信小程序:皆我百晓生

    从您提供的信息来看,您正在尝试使用ONVIF协议在C++中设置多个预置位,并且遇到了一些问题。ONVIF(Open Network Video Interface Forum)是一种用于网络视频产品的开放标准接口。

    根据您提供的代码片段,看起来您已经实现了基本的ONVIF Set Preset功能。然而,您可能想要为不同的预置位设置不同的名称并存储它们。为了实现这个目标,您可以考虑使用一个结构体数组或者容器(例如std::vector)来存储预置位的信息,包括其名称、Token以及其他的参数。

    首先,定义一个结构体来表示预置位:

    struct Preset {
        std::string name;
        char presetToken[ONVIF_MAX_PRESSET_NAME_LENGTH];
    };
    

    然后,创建一个std::vector<Preset>来存储预置位:

    std::vector<Preset> presets;
    

    每次调用ONVIF_SetPreset后,将新设置的预置位添加到向量中:

    void addPreset(const std::string& name, const char* presetToken) {
        presets.push_back({name, presetToken});
    }
    

    当您想设置新的预置位时,可以这样调用:

    addPreset("NewPreset1", stSetPresetRes.PresetToken);
    

    如果您想遍历并使用这些预置位,可以通过迭代器进行访问:

    for (const auto& preset : presets) {
        // 使用preset.name 和 preset.presetToken 进行相关操作
        printf("Setting preset '%s' with token '%s'\n", preset.name.c_str(), preset.presetToken);
        // 调用相应的 ONVIF 函数,比如 ONVIF_GoToPreset 或 ONVIF_GetPresetStatus 等
    }
    

    注意,在实际应用中,您可能还需要处理错误情况,例如检查soapcalltptzSetPreset函数的返回结果,确保预置位设置成功。同时,确保正确地初始化和清理SOAP库,以避免内存泄漏或其他资源管理问题。

    这是一个简化的示例,实际项目中可能需要更多的错误处理和代码组织。根据您的具体需求,您可能需要对代码进行适当的调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月28日

悬赏问题

  • ¥15 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?