首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

onvif轨范的实现:server端Discovery实现,通过OnvifTestTool12.06测试

2012-11-23 
onvif规范的实现:server端Discovery实现,通过OnvifTestTool12.06测试说明:网上关于ONVIF开发的文章并不多,

onvif规范的实现:server端Discovery实现,通过OnvifTestTool12.06测试

说明:网上关于ONVIF开发的文章并不多,也更找不到具体的实例来入门学习。只能靠翻阅各种Specification摸索中前进,下面是最近几天的成果。调通了服务端(或者说设备端)的Discovery,使用OnvifTestTool12.06能够搜到我的设备。【来自http://blog.csdn.net/ghostyu】

1、在使用wsdl2h产生头文件前需要修改typemap.dat,

修改的依据在这里:http://www.cs.fsu.edu/~engelen/soap.html,在FAQ页面下的How do I use gSOAP for the ONVIF specifications?


结合上图再分析代码就亲切多了。在ONVIF Core Specification的7.3.2.2  Scopes 一节描述了onvif需要的Scopes,这个是需要在程序里填充,具体填充什么,文档里说的很明确:

onvif轨范的实现:server端Discovery实现,通过OnvifTestTool12.06测试

注意点是在太多,随便漏掉一个都可能会导致搜不到设备,下图是非常重要的一个:

onvif轨范的实现:server端Discovery实现,通过OnvifTestTool12.06测试

SOAP1.1和SOAP1.2所使用的SOAP-ENV是不同的,ONVIF使用的是SOAP1.1,如果soapcpp2产生的nsmap文件中的SOAP-ENV是SOAP1.2版本的话,那么OnvifTestTool是不会识别设备发出的SOAP消息的。

5、该main函数登场了


然后,在OnvifTestTool中会搜索到我的设备

onvif轨范的实现:server端Discovery实现,通过OnvifTestTool12.06测试

响应Discover Devices的SOAP消息如下:

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsdd="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:ns1="http://www.onvif.org/ver10/network/wsdl/RemoteDiscoveryBinding" xmlns:ns2="http://www.onvif.org/ver10/network/wsdl/DiscoveryLookupBinding" xmlns:ns3="http://www.onvif.org/ver10/network/wsdl/DiscoveryLookupBinding" xmlns:tdn="http://www.onvif.org/ver10/network/wsdl"><SOAP-ENV:Header><wsa:MessageID>uuid:2419d68a-2dd2-21b2-a205-010101010101</wsa:MessageID><wsa:RelatesTo>uuid:88a3958a-6155-4510-8279-69aeafd31681</wsa:RelatesTo><wsa:To SOAP-ENV:mustUnderstand="true">urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:To><wsa:Action SOAP-ENV:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action></SOAP-ENV:Header><SOAP-ENV:Body><wsdd:ProbeMatches><wsdd:ProbeMatch xmlns:_0="http://www.onvif.org/ver10/device/wsdl"><wsa:EndpointReference><wsa:Address>urn:uuid:2419d68a-2dd2-21b2-a205-010101010101</wsa:Address><wsa:ReferenceProperties></wsa:ReferenceProperties><wsa:ReferenceParameters></wsa:ReferenceParameters><wsa:PortType>ttl</wsa:PortType></wsa:EndpointReference><wsdd:Types>_0:Device</wsdd:Types><wsdd:Scopes>onvif://www.onvif.org/type/NetworkVideoTransmitter</wsdd:Scopes><wsdd:XAddrs>http://192.168.1.233/onvif/device_service</wsdd:XAddrs><wsdd:MetadataVersion>1</wsdd:MetadataVersion></wsdd:ProbeMatch></wsdd:ProbeMatches></SOAP-ENV:Body></SOAP-ENV:Envelope>

资料下载

上述完整的代码包在这里,有需要的就去下载吧:http://download.csdn.net/detail/ghostyu/4766025

另外我参考的部分文档可以再这里下载

ONVIF-Core-Spec-v210.pdf:http://download.csdn.net/detail/ghostyu/4766067

gSOAP手册:http://download.csdn.net/detail/ghostyu/4766075

OnvifTestTool12.06测试工具网上有的,我就不上传了。

2楼haokaihaohe110昨天 15:09
写的太好了。非常感谢。希望多一些关于ONVIF的文章。
1楼mugualiu_20124天前 13:57
good ,very nice,thank you for your share

热点排行