天天看點

Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址

Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址

文章目錄

  • ​​Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址​​
  • ​​1. 前言​​
  • ​​2. 确認onvif裝置提供的能力​​
  • ​​3. 部分代碼​​
  • ​​4. 最後​​

1. 前言

之前第4節配置網絡資訊中開源庫中通過device的能力可以配置ip位址,但是沒有設定網關位址,實際配置過程中往往是ip位址和網關一起配置的,是以算是漏掉了這部分内容,這裡補充一下,順便說一下我們如何檢視onvif标準裝置提供的裝置能力。

2. 确認onvif裝置提供的能力

​​http://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl​​

通過上述的wsdl檔案(相當于c/c++中的接口庫頭檔案,我們通過頭檔案可以知道該庫提供哪些接口)我們可以确認标準onvif裝置提供的裝置控制能力,通過關鍵詞搜尋是否有我們需要的能力,比如我們這裡需要的配置網關位址的能力:

擷取網關位址:

Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址

設定網關位址:

Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址

3. 部分代碼

那麼增加接口進行網關位址擷取和設定即可:

func (client *GoOnvifClient) getGateWayAddress() ReturnInfo {
    getGateWayAddressReq := device.GetNetworkDefaultGateway{}

    res := client.sendReqGetResp(GetGateWayAddressErr, getGateWayAddressReq)
    return res
}

func (client *GoOnvifClient) setGateWayAddress() ReturnInfo {
    setGateWayAddressReq := device.SetNetworkDefaultGateway{
        IPv4Address: onvif.IPv4Address(client.netWorkConfigInfo.IPV4GateWayAddress),
        IPv6Address: onvif.IPv6Address(client.netWorkConfigInfo.IPV6GateWayAddress),
    }

    res := client.sendReqGetResp(ConfigGateWayAddressErr, setGateWayAddressReq)
    return res
}

res, err = client.GetGateWayAddress()
fmt.Println(res)

//設定網絡資訊
networkInfo := &onvifClient.NetWorkConfigInfo{
    EnableIPV4NetworkConfig: true,
    IPV4Address:             "40.40.40.101",
    IPV4PrefixLen:           24,
    EnableIPV6NetworkConfig: false,
    IPV6Address:             "",
    IPV6PrefixLen:           120,
    IPV4GateWayAddress:      "40.40.40.100",
}
res, err = client.ConfigNetWork(networkInfo)
if err != nil {
    logger.Error(res)
} else {
    fmt.Println(networkInfo.IPV4Address)
}      

4. 最後