續上篇,框架**生成之後,就可以進行基於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可根據需要...
備忘錄模式
先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...