文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go语言开源库实现Onvif协议客户端设备搜索

2024-04-02 19:55

关注

1、前言

之前我们已经简单介绍过use-go的开源方案,其也是通过其它的开源方案进行的封装,提供了初步的接口,我们这里利用对onvif协议的学习,然后结合该开源库进行设备发现、设备IP设置、Profiles token获取、流媒体Uri地址获取、PTZ云台控制、预置点设置等功能进行进一步的实现和封装,以此加深对Onvif协议的了解和加深Go语言的使用。

2、设备搜索思路

这个不清楚原理的再去看一下我们Onvif学习时的设备搜索那里的内容,主要是通过WS-Discovery实现设备的搜索,你可以简单理解为局域网广播和组播说:我在找符合Onvif协议的设置,然后设备回复说:我是,并且会发送相关的设备ip等信息给到客户端。

这里我们使用的Go开源方案提供了对应接口用于搜索设备,我们直接使用就好了。

3、搜索设备Go源码

package client
import (
	"fmt"
	"github.com/beevik/etree"
	goonvif "github.com/use-go/onvif"
	"github.com/use-go/onvif/device"
	"github.com/use-go/onvif/gosoap"
	"github.com/use-go/onvif/media"
	"github.com/use-go/onvif/ptz"
	"github.com/use-go/onvif/xsd"
	"github.com/use-go/onvif/xsd/onvif"
	"io/ioutil"
	"log"
	"net/http"
	"strings"
)
type Code int32
const (
	OK				Code = 0
	SearchErr		Code = -1
	ConnectErr 		Code = -2
	CreateUserErr	Code = -20
	GetProfilesErr	Code = -30
	GetStreamUriErr Code = -40
	PTZErr			Code = -50
	SetPresetErr	Code = -70
	GotoPresetErr	Code = -71
	RemovePresetErr	Code = -72
	GetSnapShotUriErr	Code = -100
)
type returnInfo struct {
	//状态码
	Code Code
	//错误或者返回信息
	ErrInfo string
}

func (client *GoOnvifClient) SearchDevice() returnInfo {
	devices := goonvif.GetAvailableDevicesAtSpecificEthernetInterface("eth0")
	if devices == nil {
		return returnInfo{SearchErr, "search devices failed."}
	}
	client.Devices = devices
	return returnInfo{OK, "search device success"}
}

client是我们定义的调用者,是一个包含我们需要传递的各类信息的结构体,模拟面向对象思想创建的Onvif客户端,即创建一个Onvif客户端,客户端来处理外部调用参数和内部处理库的数据交互,简化对外展现的接口参数。

4、问题

一个主要问题就是当我们搜索到多个符合Onvif协议的设备后如何进行区分,目前我们先采用暴力轮询的方式对每个设备进行设备信息获取,然后解析返回的XML信息结合我们传递的搜索条件(比如设备类型、设备mac地址等)进行进一步的区分。

以上就是Go语言Onvif协议客户端设备搜索示例实现的详细内容,更多关于Onvif客户端设备搜索的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯