Onvif備忘錄 2 裝置發現

2021-07-28 03:47:49 字數 1857 閱讀 3692

續上篇,框架**生成之後,就可以進行基於onvif的開發了,先實現乙個簡單的裝置發現的例子。 visualstudio中新建乙個空白工程,將上篇中生成的框架**新增進來,但soapserver.c檔案中定義了許多要實現的函式,直接新增編譯會報一大堆錯誤,且本例中只需要用到client的功能,so 。。。 刪掉soapserver.c, 留下soapclient.c即可。

工程結構如下:

main.c**如下:   

[cpp]view plain

copy

#include "wsdd.h"

#include 

static

struct soap* onvif_initsoap(struct soap_env__header *header, const

char *was_to, const

char *was_action, int timeout)  

soap_set_namespaces( soap, namespaces);  

if (timeout > 0)  

else

soap_default_soap_env__header(soap, header);  

// create sessionid randomly

srand((int)time(0));  

flagrand = rand()%9000 + 8888;   

macaddr[0] = 0x1; macaddr[1] = 0x2; macaddr[2] = 0x3; macaddr[3] = 0x4; macaddr[4] = 0x5; macaddr[5] = 0x6;  

sprintf(_hwid,"urn:uuid:%ud68a-1dd2-11b2-a105-%02x%02x%02x%02x%02x%02x",   

flagrand, macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]);  

header->wsa__messageid =(char *)malloc( 100);  

memset(header->wsa__messageid, 0, 100);  

strncpy(header->wsa__messageid, _hwid, strlen(_hwid));  

if (was_action != null)  

if (was_to != null)  

soap->header = header;  

return soap;  

}   

int onvif_clientdiscovery( )  

else

//we find a device

}  }  else

if (soap->error)    

else

break;  

}    

}  soap_destroy(soap);   

soap_end(soap);   

soap_free(soap);  

return retval;  

}  int main(void )  

return 0;  

}  

onvif相機接上路由器,執行程式之後,成功檢測到該camera,詳細資訊如下圖:(整個工程已經上傳,需要的請狂點

Onvif備忘錄 2 裝置發現

續上篇,框架 生成之後,就可以進行基於onvif的開發了,先實現乙個簡單的裝置發現的例子。visualstudio中新建乙個空白工程,將上篇中生成的框架 新增進來,但soapserver.c檔案中定義了許多要實現的函式,直接新增編譯會報一大堆錯誤,且本例中只需要用到client的功能,so 刪掉so...

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...

備忘錄模式

先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...