Onvif備忘錄 2 裝置發現

2021-06-22 06:49:10 字數 1707 閱讀 3379

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

工程結構如下:

main.c**如下:   

#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可根據需要...

備忘錄模式

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